Skip to content

Commit d68c31d

Browse files
committed
wayland-only: remove X11/i3/sway, fix SDDM session, skwd-wall integration
- Remove all X11 packages (xorg-server, xorg-xwayland, xorg-xinit) - Remove sway, i3-fallback, swaync, swaydesktop hooks - Remove detect-legacy-hardware (blocks modern GPU path) - Remove cage, weston, and other X11/wayland fallback compositors - Add DisplayServer=wayland + SessionCommand to SDDM conf - mados-auto-session: force hyprland path, remove sway-session fallback - mados-sddm-env: detect GPU and switch SDDM rendering mode - skwd-wall: add daemon wrapper, sources sync helper, install module - mados-wallpaper-picker: point to mados-skwd-wall-daemon - Wallpaper assets: copy to /usr/share/backgrounds too - mados-shellbar-start: clean session detection and quickshell launch - Add missing customize_airootfs modules (imperative-dots, mados-apps, etc.) - profiledef.sh: add permissions for new scripts, remove i3-session entries - run-qemu.sh: SSH_PORT default 2244, hostfwd configurable - packages.x86_64: remove xorg, i3, sway, cage, weston, xdotool - tests: remove obsolete X11/sway/i3 tests
1 parent d05f525 commit d68c31d

84 files changed

Lines changed: 1700 additions & 10403 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/agents/docs.agent.md

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,8 @@ You are the documentation specialist for the madOS project, an Arch Linux distri
1919
### Project Docs (`docs/`)
2020

2121
- `docs/README.md` — Main documentation index
22-
- `docs/PERSISTENCE.md` — Persistent USB storage user guide
23-
- `docs/PERSISTENCE_TESTING.md` — Persistence testing procedures
24-
- `docs/DEBUGGING.md` — Troubleshooting and debugging guide
22+
- `docs/HARDWARE_QUIRKS.md` — Hardware-specific configurations
23+
- `docs/SEQUENCE_DIAGRAMS.md` — System sequence diagrams
2524
- `docs/AUDIO_QUALITY.md` — Audio quality system documentation
2625
- `docs/INSTRUCTIONS.md` — General instructions
2726

@@ -64,9 +63,8 @@ You are the documentation specialist for the madOS project, an Arch Linux distri
6463

6564
### Key Project Details for Documentation
6665

67-
- **Hardware target**: 1.9GB RAM systems with Intel Atom processors
68-
- **Desktop**: Sway compositor with Nord color scheme
66+
- **Hardware target**: Modern hardware with GPU acceleration
67+
- **Desktop**: Hyprland compositor with Nord color scheme
6968
- **AI assistant**: OpenCode (installed via npm)
7069
- **Installer**: External GTK installer (in `/usr/local/bin/mados-installer`)
71-
- **Persistence**: Dynamic USB persistence with ext4 partition
7270
- **Services**: earlyoom, iwd, systemd-timesyncd, ZRAM

.github/copilot-instructions.md

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
## Project Overview
44

5-
madOS is an Arch Linux distribution built using `archiso`. It targets low-RAM systems (1.9GB) with Intel Atom processors and integrates OpenCode as an AI assistant. The project produces a custom live/installer ISO with a GTK graphical installer and pre-configured Sway desktop environment.
5+
madOS is an Arch Linux distribution built using `archiso`. It targets modern hardware with GPU acceleration and integrates OpenCode as an AI assistant. The project produces a custom live/installer ISO with a GTK graphical installer and pre-configured Hyprland desktop environment.
66

77
## Build Commands
88

@@ -35,9 +35,6 @@ python3 -m pytest tests/test_boot_scripts.py -v
3535
### Integration Tests (require Docker with Arch Linux container)
3636

3737
```bash
38-
# USB Persistence tests
39-
docker run --privileged --rm -v $(pwd):/build archlinux:latest bash /build/tests/test-liveusb-persistence.sh
40-
4138
# First-boot simulation
4239
docker run --privileged --rm -v $(pwd):/build archlinux:latest bash /build/tests/test-first-boot-simulation.sh
4340

@@ -62,9 +59,8 @@ docker run --privileged --rm -v $(pwd):/build archlinux:latest bash /build/tests
6259

6360
### Boot Configuration
6461

65-
- `grub/` — GRUB bootloader config (UEFI)
6662
- `syslinux/` — Syslinux config (BIOS)
67-
- `efiboot/` — EFI boot loader configuration
63+
- `efiboot/` — EFI boot loader configuration (systemd-boot)
6864

6965
### Root Filesystem (`airootfs/`)
7066

@@ -75,13 +71,12 @@ docker run --privileged --rm -v $(pwd):/build archlinux:latest bash /build/tests
7571
### Key Scripts
7672

7773
- `airootfs/usr/local/bin/mados-installer-autostart` — Launcher for external installer
78-
- `airootfs/usr/local/bin/setup-persistence.sh` — Persistent storage setup
7974

8075
### Documentation
8176

8277
- `docs/` — Project documentation and GitHub Pages site
83-
- `docs/PERSISTENCE.md`Persistent storage documentation
84-
- `docs/DEBUGGING.md`Debugging guide
78+
- `docs/HARDWARE_QUIRKS.md`Hardware-specific configurations
79+
- `docs/SEQUENCE_DIAGRAMS.md`System sequence diagrams
8580

8681
## Code Style and Conventions
8782

@@ -107,8 +102,7 @@ GitHub Pages deployment is in `.github/workflows/pages.yml`.
107102
## Important Guidelines
108103

109104
- Keep `python`, `python-gobject`, and `gtk3` in `packages.x86_64` (required for the installer)
110-
- RAM optimizations target 1.9GB systems — avoid adding heavy packages without justification
111105
- When adding new scripts to `airootfs/usr/local/bin/`, update `profiledef.sh` with proper permissions
112106
- When modifying the installer, update tests in `tests/test_installer_config.py`
113-
- Desktop configs live in `airootfs/etc/skel/.config/` (Sway, Waybar, Foot, Wofi)
107+
- Desktop configs live in `airootfs/etc/skel/.config/` (Hyprland, Waybar, Foot, Wofi)
114108
- ZRAM and kernel tuning configs are in `airootfs/etc/sysctl.d/` and `airootfs/etc/systemd/`

AGENTS.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,14 @@
22

33
## Project Overview
44

5-
madOS is an Arch Linux distribution built using `archiso`. It targets low-RAM systems (1.9GB) with Intel Atom processors and integrates OpenCode as an AI assistant. The project produces a custom live/installer ISO with a GTK graphical installer and pre-configured Sway desktop environment.
5+
madOS is an Arch Linux distribution built using `archiso`. It targets modern hardware with GPU acceleration and integrates OpenCode as an AI assistant. The project produces a custom live/installer ISO with a GTK graphical installer and pre-configured Hyprland desktop environment.
6+
7+
### imperative-dots Live/Local Workflow
8+
9+
- `../theme-imperative-dots` is the canonical working repository used to iterate on imperative-dots theme fixes.
10+
- The same theme is consumed by madOS during build/install under `/usr/share/mados/themes/imperative-dots`.
11+
- Development flow: edit and test behavior live from `theme-imperative-dots` against the local madOS environment, validate fixes in-session, then commit changes back to `theme-imperative-dots`.
12+
- When investigating visual mismatches, compare all theme files between the local runtime copy and `theme-imperative-dots` before fixing issues.
613

714
---
815

@@ -242,8 +249,8 @@ docker run --privileged --rm -v $(pwd):/build archlinux:latest bash /build/tests
242249
### Documentation
243250

244251
- `docs/` — Project documentation and GitHub Pages site
245-
- `docs/PERSISTENCE.md`Persistent storage documentation
246-
- `docs/DEBUGGING.md`Debugging guide
252+
- `docs/HARDWARE_QUIRKS.md`Hardware-specific configurations
253+
- `docs/SEQUENCE_DIAGRAMS.md`System sequence diagrams
247254

248255
---
249256

README.md

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,30 @@
11
# madOS
22

3-
Arch Linux distribution built with `archiso`. Targets low-RAM systems (1.9GB) with Intel Atom processors, featuring OpenCode AI assistant, Sway/Hyprland desktop environments, and a GTK graphical installer.
3+
Arch Linux distribution built with `archiso`. Targets modern hardware with GPU acceleration, featuring OpenCode AI assistant, Hyprland desktop environment, and a GTK graphical installer.
44

55
## Features
66

7-
- **Low RAM optimized**: Runs on systems with as little as 1.9GB RAM
8-
- **Dual Compositors**: Sway (software rendering) and Hyprland (modern GPU)
7+
- **Modern GPU Acceleration**: Hyprland compositor with Vulkan/OpenGL support
8+
- **Multi-GPU Support**: NVIDIA, AMD, and Intel drivers included
9+
- **CUDA Support**: NVIDIA CUDA toolkit for GPU computing
910
- **AI Assistant**: OpenCode integrated out-of-the-box
10-
- **Persistence**: Dynamic USB persistence with ext4 partition
11-
- **Multi-GPU Support**: Intel, AMD, and NVIDIA drivers included
1211
- **GTK Installer**: External installer (`/usr/local/bin/mados-installer`) for disk installation
1312

13+
## Hardware Targets
14+
15+
- **Minimum**: Intel/AMD integrated graphics, 2GB+ RAM
16+
- **Recommended**: Dedicated GPU (NVIDIA/AMD), 4GB+ RAM
17+
18+
## Differences from madOS-lite
19+
20+
| Feature | madOS | madOS-lite |
21+
|---------|-------|------------|
22+
| Compositor | Hyprland only | Sway only |
23+
| Display Manager | SDDM | greetd + tuigreet |
24+
| GPU Support | NVIDIA, AMD, Intel (modern) | Software rendering only |
25+
| RAM Target | 2GB+ | 1.5GB+ |
26+
| CUDA |||
27+
1428
## Quick Start
1529

1630
```bash
@@ -32,19 +46,18 @@ Build requirements:
3246

3347
## Package Profiles
3448

35-
- `packages.x86_64` is the default low-RAM profile used for ISO builds
49+
- `packages.x86_64` is the main profile with GPU acceleration and CUDA support
3650
- `packages.optional-heavy.x86_64` contains optional desktop-heavy extras
3751
- To install extras on an installed system: `sudo pacman -S --needed - < packages.optional-heavy.x86_64`
3852
- Base profile includes Steam + LibreOffice for Word/Excel/PowerPoint support
39-
- ONLYOFFICE is available as `onlyoffice-bin` from AUR (not in official Arch repos used by archiso)
4053

4154
## Project Structure
4255

4356
```
4457
.
4558
├── airootfs/ # Root filesystem for the ISO
4659
│ ├── etc/ # System configuration
47-
│ │ ├── skel/ # User skeleton files (.config for Sway/Hyprland)
60+
│ │ ├── skel/ # User skeleton files (.config for Hyprland)
4861
│ │ └── systemd/ # Systemd units
4962
│ └── usr/local/bin/ # Custom scripts
5063
│ └── mados-* # madOS utilities

THIRD_PARTY_LICENSES.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ The madOS repository license applies to madOS code and assets, not automatically
1919
- `alsa-firmware` (firmware blobs)
2020
- `sof-firmware` (firmware blobs)
2121
- `steam` (proprietary client/software distribution platform)
22-
- `code` (official Visual Studio Code build)
2322

2423
These components are included for hardware compatibility and user experience, but they may not satisfy strict "100% free software" criteria.
2524

airootfs/etc/gtk-3.0/settings.ini

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[Settings]
2-
gtk-theme-name=Nordic
2+
gtk-theme-name=adw-gtk-theme-dark
33
gtk-icon-theme-name=Papirus
44
gtk-font-name=FreeSans 11
55
gtk-cursor-theme-name=Adwaita

airootfs/etc/mados/ventoy-persist.conf

Lines changed: 0 additions & 9 deletions
This file was deleted.

airootfs/etc/pacman.d/hooks/sway-desktop-override.hook

Lines changed: 0 additions & 12 deletions
This file was deleted.

airootfs/etc/profile.d/mados-media-links.sh

100644100755
Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,24 +3,27 @@
33
# Creates symlinks from /usr/share/music/* -> ~/Music/
44
# and /usr/share/video/* -> ~/Videos/
55

6+
set -euo pipefail
7+
68
# Only run for interactive sessions with a real home
7-
[[ -z "$HOME" || "$HOME" == "/" ]] && return 0
8-
[[ ! -t 0 || ! -t 1 ]] && return 0
9+
[[ -z "$HOME" || "$HOME" == "/" ]] && exit 0
910

10-
MARKER="$HOME/.cache/.mados-media-linked"
11+
MARKER="${HOME}/.cache/.mados-media-linked"
1112

1213
# Only run once per user
13-
[[ -f "$MARKER" ]] && return 0
14+
[[ -f "$MARKER" ]] && exit 0
1415

1516
# Ensure user directories exist
16-
mkdir -p "$HOME/Music" "$HOME/Videos" "$HOME/.cache"
17+
mkdir -p "${HOME}/Music" "${HOME}/Videos" "${HOME}/.cache"
1718

1819
# Link music files
1920
if [[ -d /usr/share/music ]]; then
2021
for f in /usr/share/music/*; do
2122
[[ -f "$f" ]] || continue
2223
base="$(basename "$f")"
23-
[[ -e "$HOME/Music/$base" ]] || ln -s "$f" "$HOME/Music/$base" 2>/dev/null
24+
if [[ ! -e "${HOME}/Music/$base" ]]; then
25+
ln -s "$f" "${HOME}/Music/$base" 2>/dev/null || true
26+
fi
2427
done
2528
fi
2629

@@ -29,7 +32,9 @@ if [[ -d /usr/share/video ]]; then
2932
for f in /usr/share/video/*; do
3033
[[ -f "$f" ]] || continue
3134
base="$(basename "$f")"
32-
[[ -e "$HOME/Videos/$base" ]] || ln -s "$f" "$HOME/Videos/$base" 2>/dev/null
35+
if [[ ! -e "${HOME}/Videos/$base" ]]; then
36+
ln -s "$f" "${HOME}/Videos/$base" 2>/dev/null || true
37+
fi
3338
done
3439
fi
3540

airootfs/etc/skel/.gtkrc-2.0

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
gtk-theme-name="Nordic"
1+
gtk-theme-name="adw-gtk-theme-dark"
22
gtk-icon-theme-name="Papirus"
33
gtk-font-name="Sans 10"
44
gtk-cursor-theme-name="Adwaita"

0 commit comments

Comments
 (0)