Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .github/workflows/androsh-help.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ name: AndroSH Help Docs Generator

on:
push:
branches: [ "main" ]
workflow_dispatch:
inputs:
reason:
Expand Down Expand Up @@ -137,7 +136,7 @@ jobs:
fi
mv AndroSH_Help.md Assets/docs/AndroSH_Help.md
git add Assets/docs/AndroSH_Help.md
git commit -m "docs: update AndroSH command line reference [skip ci]
git commit -m "docs: update AndroSH command line reference

Co-authored-by: ${{ github.actor }} <${{ github.actor }}@users.noreply.github.com>"
git push
2 changes: 0 additions & 2 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,7 @@ name: Tests

on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
workflow_dispatch: # Added manual trigger
inputs:
reason:
Expand Down
8 changes: 4 additions & 4 deletions Assets/docs/AndroSH_Help.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@ Complete Linux workstations with Android system integration - no root required

```
usage: main.py setup [-h] [-f ROOTFS]
[-d {alpine,debian,ubuntu,kali-nethunter,archlinux,fedora,void,manjaro,chimera}]
[-d {alpine,debian,ubuntu,kali-nethunter,archlinux,fedora,void,manjaro,chimera,opensuse}]
[-t TYPE] [--hostname HOSTNAME] [--resetup] [--force]
name

Expand All @@ -82,7 +82,7 @@ options:
-f ROOTFS, --rootfs ROOTFS
Custom rootfs file, when used you don't need to add
-d/-t arguments
-d {alpine,debian,ubuntu,kali-nethunter,archlinux,fedora,void,manjaro,chimera}, --distro {alpine,debian,ubuntu,kali-nethunter,archlinux,fedora,void,manjaro,chimera}
-d {alpine,debian,ubuntu,kali-nethunter,archlinux,fedora,void,manjaro,chimera,opensuse}, --distro {alpine,debian,ubuntu,kali-nethunter,archlinux,fedora,void,manjaro,chimera,opensuse}
Linux distribution (default: alpine)
-t TYPE, --type TYPE Distribution variant (minimal, full, stable) - depends
on distro (default: alpine-minirootfs)
Expand Down Expand Up @@ -207,10 +207,10 @@ options:

```
usage: main.py download [-h] --type TYPE [--file FILE]
{alpine,debian,ubuntu,kali-nethunter,archlinux,fedora,void,manjaro,chimera}
{alpine,debian,ubuntu,kali-nethunter,archlinux,fedora,void,manjaro,chimera,opensuse}

positional arguments:
{alpine,debian,ubuntu,kali-nethunter,archlinux,fedora,void,manjaro,chimera}
{alpine,debian,ubuntu,kali-nethunter,archlinux,fedora,void,manjaro,chimera,opensuse}
Distribution to download

options:
Expand Down
22 changes: 20 additions & 2 deletions Core/distro_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -381,6 +381,22 @@ def supports_architecture(self, arch: str) -> bool:
termux_arch = self._map_architecture(arch)
return super().supports_architecture(termux_arch)

class OpenSUSE_Distribution(TermuxDistribution):
def get_name(self) -> str:
return "opensuse"


def _map_architecture(self, arch: str) -> str:
"""Map standard architecture to Termux-specific names"""
termux_arch_map = {
'arm64': 'aarch64',
'x86_64': 'x86_64'
}
return termux_arch_map.get(arch, arch)

def supports_architecture(self, arch: str) -> bool:
termux_arch = self._map_architecture(arch)
return super().supports_architecture(termux_arch)

class AlpineDistribution(Distribution):
"""Alpine Linux distribution"""
Expand Down Expand Up @@ -881,7 +897,8 @@ def __init__(self, fm: PyFManager, downloader: FileDownloader, console,
"fedora",
"void",
"manjaro",
"chimera"
"chimera",
"opensuse"
]
self.termux_distros_list = [
DebianDistribution,
Expand All @@ -890,7 +907,8 @@ def __init__(self, fm: PyFManager, downloader: FileDownloader, console,
FedoraDistribution,
VoidDistribution,
ManjaroDistribution,
ChimeraDistribution
ChimeraDistribution,
OpenSUSE_Distribution
]

self.distributions: Dict[str, Distribution] = self._initialize_distributions()
Expand Down
9 changes: 5 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
[![License](https://img.shields.io/badge/license-GPLv3-orange)](LICENSE)
[![Verified Binaries](https://img.shields.io/badge/binaries-verified-success)](#-technical-components--trust)
[![Platform](https://img.shields.io/badge/platform-Android-success)](https://www.android.com)
[![Distributions](https://img.shields.io/badge/distros-9+-yellow)](https://github.com/ahmed-alnassif/AndroSH)
[![Distributions](https://img.shields.io/badge/distros-10+-yellow)](https://github.com/ahmed-alnassif/AndroSH)
[![Status](https://img.shields.io/badge/status-active-brightgreen)](https://github.com/ahmed-alnassif/AndroSH)

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

## 🚀 Quick Start

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

## ⚡ Quick Features

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

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

| Capability | AndroSH | Traditional Solutions |
|------------|---------|---------------------|
| **Multi-Distribution Architecture** | ✅ **Archlinux, Fedora, Alpine, Debian, Ubuntu, Kali NetHunter, Void Linux, Manjaro, and Chimera Linux** | ❌ Single distribution |
| **Multi-Distribution Architecture** | ✅ **Archlinux, Fedora, Alpine, Debian, Ubuntu, Kali NetHunter, Void Linux, Manjaro, OpenSUSE, and Chimera Linux** | ❌ Single distribution |
| **Management** | ✅ SQLite database + professional CLI | ❌ Manual file management |
| **Android System Integration** | ✅ Full system command execution via ADB/Shizuku | ❌ Isolated containers only |
| **Scalable Environments** | ✅ Multiple isolated instances | ❌ Single instance limitation |
Expand Down
3 changes: 2 additions & 1 deletion main.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,8 @@ def __init__(self):
"fedora",
"void",
"manjaro",
"chimera"
"chimera",
"opensuse"
]


Expand Down