Skip to content

Commit 37c0cbe

Browse files
chore: merge pull request #21 from ahmed-alnassif/feat/new-distro
feat(Distro): add OpenSUSE support
2 parents 787af10 + 54bff94 commit 37c0cbe

6 files changed

Lines changed: 32 additions & 15 deletions

File tree

.github/workflows/androsh-help.yml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ name: AndroSH Help Docs Generator
22

33
on:
44
push:
5-
branches: [ "main" ]
65
workflow_dispatch:
76
inputs:
87
reason:
@@ -137,7 +136,7 @@ jobs:
137136
fi
138137
mv AndroSH_Help.md Assets/docs/AndroSH_Help.md
139138
git add Assets/docs/AndroSH_Help.md
140-
git commit -m "docs: update AndroSH command line reference [skip ci]
139+
git commit -m "docs: update AndroSH command line reference
141140
142141
Co-authored-by: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>"
143142
git push

.github/workflows/tests.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@ name: Tests
55

66
on:
77
push:
8-
branches: [ "main" ]
98
pull_request:
10-
branches: [ "main" ]
119
workflow_dispatch: # Added manual trigger
1210
inputs:
1311
reason:

Assets/docs/AndroSH_Help.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ Complete Linux workstations with Android system integration - no root required
7070

7171
```
7272
usage: main.py setup [-h] [-f ROOTFS]
73-
[-d {alpine,debian,ubuntu,kali-nethunter,archlinux,fedora,void,manjaro,chimera}]
73+
[-d {alpine,debian,ubuntu,kali-nethunter,archlinux,fedora,void,manjaro,chimera,opensuse}]
7474
[-t TYPE] [--hostname HOSTNAME] [--resetup] [--force]
7575
name
7676
@@ -82,7 +82,7 @@ options:
8282
-f ROOTFS, --rootfs ROOTFS
8383
Custom rootfs file, when used you don't need to add
8484
-d/-t arguments
85-
-d {alpine,debian,ubuntu,kali-nethunter,archlinux,fedora,void,manjaro,chimera}, --distro {alpine,debian,ubuntu,kali-nethunter,archlinux,fedora,void,manjaro,chimera}
85+
-d {alpine,debian,ubuntu,kali-nethunter,archlinux,fedora,void,manjaro,chimera,opensuse}, --distro {alpine,debian,ubuntu,kali-nethunter,archlinux,fedora,void,manjaro,chimera,opensuse}
8686
Linux distribution (default: alpine)
8787
-t TYPE, --type TYPE Distribution variant (minimal, full, stable) - depends
8888
on distro (default: alpine-minirootfs)
@@ -207,10 +207,10 @@ options:
207207

208208
```
209209
usage: main.py download [-h] --type TYPE [--file FILE]
210-
{alpine,debian,ubuntu,kali-nethunter,archlinux,fedora,void,manjaro,chimera}
210+
{alpine,debian,ubuntu,kali-nethunter,archlinux,fedora,void,manjaro,chimera,opensuse}
211211
212212
positional arguments:
213-
{alpine,debian,ubuntu,kali-nethunter,archlinux,fedora,void,manjaro,chimera}
213+
{alpine,debian,ubuntu,kali-nethunter,archlinux,fedora,void,manjaro,chimera,opensuse}
214214
Distribution to download
215215
216216
options:

Core/distro_manager.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -381,6 +381,22 @@ def supports_architecture(self, arch: str) -> bool:
381381
termux_arch = self._map_architecture(arch)
382382
return super().supports_architecture(termux_arch)
383383

384+
class OpenSUSE_Distribution(TermuxDistribution):
385+
def get_name(self) -> str:
386+
return "opensuse"
387+
388+
389+
def _map_architecture(self, arch: str) -> str:
390+
"""Map standard architecture to Termux-specific names"""
391+
termux_arch_map = {
392+
'arm64': 'aarch64',
393+
'x86_64': 'x86_64'
394+
}
395+
return termux_arch_map.get(arch, arch)
396+
397+
def supports_architecture(self, arch: str) -> bool:
398+
termux_arch = self._map_architecture(arch)
399+
return super().supports_architecture(termux_arch)
384400

385401
class AlpineDistribution(Distribution):
386402
"""Alpine Linux distribution"""
@@ -881,7 +897,8 @@ def __init__(self, fm: PyFManager, downloader: FileDownloader, console,
881897
"fedora",
882898
"void",
883899
"manjaro",
884-
"chimera"
900+
"chimera",
901+
"opensuse"
885902
]
886903
self.termux_distros_list = [
887904
DebianDistribution,
@@ -890,7 +907,8 @@ def __init__(self, fm: PyFManager, downloader: FileDownloader, console,
890907
FedoraDistribution,
891908
VoidDistribution,
892909
ManjaroDistribution,
893-
ChimeraDistribution
910+
ChimeraDistribution,
911+
OpenSUSE_Distribution
894912
]
895913

896914
self.distributions: Dict[str, Distribution] = self._initialize_distributions()

README.md

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
[![License](https://img.shields.io/badge/license-GPLv3-orange)](LICENSE)
1212
[![Verified Binaries](https://img.shields.io/badge/binaries-verified-success)](#-technical-components--trust)
1313
[![Platform](https://img.shields.io/badge/platform-Android-success)](https://www.android.com)
14-
[![Distributions](https://img.shields.io/badge/distros-9+-yellow)](https://github.com/ahmed-alnassif/AndroSH)
14+
[![Distributions](https://img.shields.io/badge/distros-10+-yellow)](https://github.com/ahmed-alnassif/AndroSH)
1515
[![Status](https://img.shields.io/badge/status-active-brightgreen)](https://github.com/ahmed-alnassif/AndroSH)
1616

1717
<img src="https://raw.githubusercontent.com/ahmed-alnassif/AndroSH/refs/heads/main/Assets/Screenshots/AndroSH-mobile.png" alt="AndroSH Mobile Showcase" width="90%" />
@@ -20,7 +20,7 @@
2020

2121
## 🚀 Quick Start
2222

23-
>[!Note]
23+
>[!Important]
2424
>Ensure Shizuku is installed and running before proceeding.
2525
>
2626
>New users should follow the [📥 Detailed Installation](#-detailed-installation) guide.
@@ -89,7 +89,7 @@ androsh launch demo
8989

9090
## ⚡ Quick Features
9191

92-
- 🐳 **Multi-Distro**: Run multiple Linux distributions simultaneously (Arch, Fedora, Alpine, Debian, Ubuntu, Kali, Void, Manjaro, Chimera)
92+
- 🐳 **Multi-Distro**: Run multiple Linux distributions simultaneously (Arch, Fedora, Alpine, Debian, Ubuntu, Kali, Void, Manjaro, Chimera, OpenSUSE)
9393
- 🔧 **Shizuku**: Full Android system integration without root
9494
- 💾 **SQLite Backed**: Fast, reliable environment management
9595
- 🚀 **Optimized**: 40% faster startup than alternatives
@@ -108,6 +108,7 @@ androsh launch demo
108108
![Void Linux](https://img.shields.io/badge/Void-Supported-478061?logo=voidlinux&logoColor=white)
109109
![Manjaro](https://img.shields.io/badge/Manjaro-Supported-35BF5C?logo=manjaro&logoColor=white)
110110
![Chimera Linux](https://img.shields.io/badge/Chimera-Supported-000000?logo=linux&logoColor=white)
111+
![OpenSUSE](https://img.shields.io/badge/OpenSUSE-Supported-35BF5C?logo=opensuse&logoColor=white)
111112

112113
All listed distributions are fully supported using verified rootfs sources
113114
and run in isolated proot environments without requiring root access.
@@ -120,7 +121,7 @@ AndroSH is a deployment platform that enables seamless execution of **multiple L
120121

121122
| Capability | AndroSH | Traditional Solutions |
122123
|------------|---------|---------------------|
123-
| **Multi-Distribution Architecture** |**Archlinux, Fedora, Alpine, Debian, Ubuntu, Kali NetHunter, Void Linux, Manjaro, and Chimera Linux** | ❌ Single distribution |
124+
| **Multi-Distribution Architecture** |**Archlinux, Fedora, Alpine, Debian, Ubuntu, Kali NetHunter, Void Linux, Manjaro, OpenSUSE, and Chimera Linux** | ❌ Single distribution |
124125
| **Management** | ✅ SQLite database + professional CLI | ❌ Manual file management |
125126
| **Android System Integration** | ✅ Full system command execution via ADB/Shizuku | ❌ Isolated containers only |
126127
| **Scalable Environments** | ✅ Multiple isolated instances | ❌ Single instance limitation |

main.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,8 @@ def __init__(self):
9595
"fedora",
9696
"void",
9797
"manjaro",
98-
"chimera"
98+
"chimera",
99+
"opensuse"
99100
]
100101

101102

0 commit comments

Comments
 (0)