{"id":46707220,"url":"https://github.com/lazarh/niri-noctalia-debian-script","last_synced_at":"2026-03-09T08:13:00.008Z","repository":{"id":327175840,"uuid":"1107137770","full_name":"lazarh/niri-noctalia-debian-script","owner":"lazarh","description":"Niri / Quickshell Installer in Debian 13","archived":false,"fork":false,"pushed_at":"2026-03-02T16:22:06.000Z","size":56,"stargazers_count":14,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-03-02T19:49:55.944Z","etag":null,"topics":["debian","niri","noctalia","quickshell"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/lazarh.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-30T16:45:48.000Z","updated_at":"2026-03-02T16:24:06.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/lazarh/niri-noctalia-debian-script","commit_stats":null,"previous_names":["lazarh/niri-noctalia-debian-script"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/lazarh/niri-noctalia-debian-script","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lazarh%2Fniri-noctalia-debian-script","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lazarh%2Fniri-noctalia-debian-script/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lazarh%2Fniri-noctalia-debian-script/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lazarh%2Fniri-noctalia-debian-script/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/lazarh","download_url":"https://codeload.github.com/lazarh/niri-noctalia-debian-script/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/lazarh%2Fniri-noctalia-debian-script/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30287507,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T02:57:19.223Z","status":"ssl_error","status_checked_at":"2026-03-09T02:56:26.373Z","response_time":61,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["debian","niri","noctalia","quickshell"],"created_at":"2026-03-09T08:12:59.921Z","updated_at":"2026-03-09T08:12:59.987Z","avatar_url":"https://github.com/lazarh.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Niri + Noctalia-QS + Noctalia Installation Script\n\nAutomated installation script for setting up Niri compositor, Noctalia-QS, and Noctalia shell on Debian-based systems.\n\n## Overview\n\nThis script provides a complete installation workflow for:\n- **Niri**: A scrollable-tiling Wayland compositor\n- **Noctalia-QS**: A fork of [Quickshell](https://git.outfoxxed.me/quickshell/quickshell) — a QtQuick-based Wayland shell toolkit, maintained by the Noctalia team as a hard dependency since Noctalia v4.6\n- **Noctalia**: A desktop shell built on Noctalia-QS\n\n## Prerequisites\n\n- **Debian 13 (Trixie)** or **Debian Forky** (minimal installation recommended)\n- Root/sudo access\n- Internet connection\n- **At least 16GB of free space in /tmp** (required for Noctalia-QS build)\n  - The Noctalia-QS compilation process requires significant temporary space\n  - If /tmp has less than 16GB, the build will likely fail with out-of-space errors\n  - You can check available space with: `df -h /tmp`\n- **Minimal Debian installation without graphical environment** (recommended)\n  - This script is designed to run on a fresh, minimal Debian installation\n  - It will install all necessary components to create a complete Wayland desktop environment\n  - If you have an existing desktop environment (GNOME, KDE, etc.), you may want to remove it first using `--remove-gnome` or manually\n\n## Usage\n\n### Basic Installation\n\nRun the script to install all core components automatically:\n\n```bash\nchmod +x install.sh\n./install.sh\n```\n\n### Interactive Menu\n\nUse the `--menu` flag to select which components to install:\n\n```bash\n./install.sh --menu\n```\n\nThis shows an interactive menu where you can choose:\n- Core components (1-4): System dependencies, Niri, Noctalia-QS, Noctalia\n- Upgrade options (U1-UA): Upgrade individual components or all at once\n- Optional components (5-13): VS Code, Oh My Zsh, document viewers, office tools, network fixes, GNOME removal, wallpaper changer, wayland-session desktop entry, Yazi file manager\n\n### Interactive Mode\n\nUse the `--ask-step` flag to get prompted before each installation step:\n\n```bash\n./install.sh --ask-step\n```\n\nThis allows you to skip specific components if already installed or not needed.\n\n### Command-Line Options\n\nInstall specific optional components directly:\n\n```bash\n# Upgrade components\n./install.sh --upgrade niri           # Upgrade only Niri\n./install.sh --upgrade quickshell     # Upgrade only Noctalia-QS (quickshell fork)\n./install.sh --upgrade noctalia       # Upgrade only Noctalia configuration\n./install.sh --upgrade all            # Upgrade all components\n\n# Install VS Code with Wayland support\n./install.sh --install-vscode\n\n# Install Oh My Zsh\n./install.sh --install-omz\n\n# Install document viewers (zathura, loupe)\n./install.sh --install-docs\n\n# Install office tools (patat, gnumeric, abiword)\n./install.sh --install-office\n\n# Apply network \u0026 hardware fixes\n./install.sh --apply-fixes\n\n# Install random wallpaper changer (systemd timer)\n./install.sh --install-wallpaper\n\n# Install wayland-session desktop entry for display managers (NOT installed by default)\n./install.sh --install-desktop-entry\n\n# Install Yazi terminal file manager (builds from source)\n./install.sh --install-yazi\n\n# Remove GNOME/GDM3 (WARNING: removes desktop environment)\n./install.sh --remove-gnome\n\n# Combine multiple options\n./install.sh --install-vscode --install-omz --apply-fixes\n```\n\nFor a full list of options, run:\n\n```bash\n./install.sh --help\n```\n\n## Installation Steps\n\nThe script performs the following steps:\n\n### [1/4] System Dependencies\nInstalls all required build tools and libraries:\n- Build essentials (cmake, ninja-build, clang, libclang-dev, gcc, git, curl, etc.)\n- Qt6 development packages (base, declarative, wayland with private headers, gtk platform theme)\n- Wayland libraries (protocols, client, scanner)\n- Graphics libraries (libdrm, libgbm, EGL)\n- Additional dependencies (PAM, polkit, jemalloc, CLI11, libseat, libpipewire, libpango, libdisplay-info)\n- Wayland desktop tools (alacritty, fuzzel, waybar, xdg-desktop-portal-gtk, xwayland, nwg-look)\n- **Rust toolchain** (installed via rustup if not already present)\n\n\n\n### [2/4] Niri Compositor\nBuilds and installs the Niri Wayland compositor from source:\n- Clones from the official repository\n- Builds with Cargo in release mode\n- Installs binary and session files\n\n### [3/4] Noctalia-QS\nBuilds and installs Noctalia-QS from source:\n- Noctalia-QS is a fork of [Quickshell](https://git.outfoxxed.me/quickshell/quickshell), maintained by the Noctalia team\n- Since Noctalia v4.6, Noctalia-QS is a hard dependency — the upstream Quickshell is no longer supported by Noctalia\n- Clones from [noctalia-dev/noctalia-qs](https://github.com/noctalia-dev/noctalia-qs)\n- Builds using the bundled `./bin/build.sh` script\n- Verifies installation\n\n### [4/4] Noctalia Shell Configuration\nClones the Noctalia shell configuration to `~/.config/quickshell/noctalia-shell`.\n\n### Post-Installation\n\nThe Noctalia step automatically copies `config.kdl` (if present next to the script) to `~/.config/niri/config.kdl`. If Niri was installed and `config.kdl` exists, you'll also be prompted again to apply or skip it.\n\n## Optional Components\n\n### Visual Studio Code (`--install-vscode`)\n- Adds Microsoft apt repository\n- Installs VS Code\n- Configures Wayland support via desktop file modification\n- Adds shell alias for Wayland flag\n\n### Oh My Zsh (`--install-omz`)\n- Installs zsh package\n- Offers to change default shell to zsh\n- Installs Oh My Zsh framework\n\n### Document Viewers (`--install-docs`)\n- Installs zathura (PDF viewer)\n- Installs zathura-pdf-poppler (PDF backend)\n- Installs loupe (image viewer)\n\n### Office Tools (`--install-office`)\n- Installs patat (terminal-based presentation tool)\n- Installs gnumeric (spreadsheet application)\n- Installs abiword (word processor)\n\n### Network \u0026 Hardware Fixes (`--apply-fixes`)\n- Installs NetworkManager, bluez, brightnessctl, upower\n- Installs pipewire audio libraries\n- Installs firmware packages (iwlwifi, realtek, etc.)\n- Installs wlsunset (screen color temperature)\n- Installs nwg-look (GTK theme switcher)\n- Adds user to netdev, bluetooth, and video groups\n- Updates NetworkManager configuration to managed mode\n- Comments out wlan0 entries in `/etc/network/interfaces`\n- Backs up configuration files before modifying\n\n### Random Wallpaper Changer (`--install-wallpaper`)\n- Creates a script at `~/.local/bin/noctalia-random-wallpaper.sh`\n- Sets up systemd service and timer files\n- Automatically rotates wallpaper every 30 minutes\n- Uses Noctalia IPC to change wallpaper\n- Timer starts on boot and runs continuously\n\n### Wayland Session Desktop Entry (`--install-desktop-entry`)\n- **NOT installed by default** - must be explicitly requested\n- Creates `/usr/share/wayland-sessions/niri.desktop`\n- Allows selecting Niri from display manager login screen (GDM, SDDM, LightDM, etc.)\n- Useful if you have an existing graphical environment and want to add Niri as a session option\n- Not needed for minimal installations that boot directly to console\n\n### Yazi Terminal File Manager (`--install-yazi`)\n- Installs apt prerequisites: `ffmpeg`, `7zip`, `jq`, `poppler-utils`, `fd-find`, `ripgrep`, `fzf`, `zoxide`, `imagemagick`\n- Clones [sxyazi/yazi](https://github.com/sxyazi/yazi) and builds from source with Cargo\n- Installs `yazi` and `ya` binaries to `/usr/local/bin/`\n- Requires Rust toolchain (install core components first, or have Rust already)\n\n### Remove GNOME/GDM3 (`--remove-gnome`)\n- **WARNING**: This removes your desktop environment\n- Stops GDM3 service\n- Purges GNOME packages (gnome-core, gnome-shell, gdm3, etc.)\n- Runs autoremove to clean up dependencies\n- Sets system to boot to multi-user target (console mode)\n- Requires typing \"yes\" to confirm\n\n## Upgrading Components\n\nThe script includes an upgrade mode to update already-installed components:\n\n```bash\n# Upgrade individual components\n./install.sh --upgrade niri           # Rebuilds Niri from latest source\n./install.sh --upgrade quickshell     # Rebuilds Noctalia-QS from latest source\n./install.sh --upgrade noctalia       # Pulls latest Noctalia configuration\n\n# Upgrade everything at once\n./install.sh --upgrade all            # Updates all three components\n```\n\n**Note**: When using `--upgrade`, only the specified components are updated. Other installation options are ignored.\n\n## Configuration\n\n### Niri Configuration\n\nPlace a `config.kdl` file next to the install script to have it automatically copied to `~/.config/niri/config.kdl` during installation.\n\n## Starting Niri\n\nAfter installation completes, you have two options:\n\n### Option 1: Start from Console (Default)\n```bash\nniri\n```\n\n### Option 2: Select from Display Manager\nIf you have a display manager (GDM, SDDM, LightDM, etc.) and want to select Niri from the login screen:\n\n1. Install the wayland-session desktop entry:\n   ```bash\n   ./install.sh --install-desktop-entry\n   ```\n\n2. Log out and select \"Niri\" from the session menu at your login screen\n\n**Note**: The desktop entry is **not installed by default**. It's only needed if you're using a display manager and want Niri as a selectable session option.\n\n## Dependencies Installed\n\n### Build Tools\n- cmake, ninja-build, build-essential\n- clang, libclang-dev (required by bindgen for FFI binding generation)\n- pkg-config, spirv-tools\n- Rust toolchain (via rustup)\n\n### Qt6 Packages\n- qt6-base-dev, qt6-base-private-dev\n- qt6-declarative-dev, qt6-declarative-private-dev\n- qt6-wayland-dev, qt6-wayland-private-dev\n- qt6-shadertools-dev\n- qt6-gtk-platformtheme\n\n### System Libraries\n- libwayland-dev, wayland-protocols\n- libdrm-dev, libgbm-dev, libegl1-mesa-dev\n- libpolkit-agent-1-dev\n- libpam0g-dev\n- libjemalloc-dev\n- libcli11-dev\n- libseat-dev\n- libpipewire-0.3-dev\n- libpango1.0-dev\n- libdisplay-info3, libdisplay-info-dev (downloaded from Debian repos)\n\n### Wayland Desktop Tools\n- alacritty, fuzzel, waybar\n- xdg-desktop-portal-gtk, xwayland\n- nwg-look (GTK theme switcher)\n\n## Troubleshooting\n\n### Build Failures\nIf the Noctalia-QS build fails due to missing dependencies, ensure all Qt6 private development packages are installed:\n```bash\nsudo apt install qt6-base-private-dev qt6-declarative-private-dev qt6-wayland-private-dev\n```\n\n### Noctalia-QS (quickshell) Not Found\nAfter installation, if `quickshell` is not found, ensure the installation directory is in your PATH, or log out and back in.\n\n## Repository Structure\n\n```\n.\n├── install.sh          # Main installation script\n├── config.kdl          # Optional Niri configuration\n└── README.md           # This file\n```\n\n## License\n\nThis installation script is provided as-is. Individual components (Niri, Noctalia-QS, Noctalia) have their own licenses.\n\n## Credits\n\n- **Niri**: [YaLTeR/niri](https://github.com/YaLTeR/niri)\n- **Noctalia-QS**: [noctalia-dev/noctalia-qs](https://github.com/noctalia-dev/noctalia-qs) (fork of [Quickshell](https://git.outfoxxed.me/quickshell/quickshell))\n- **Noctalia**: [noctalia-dev/noctalia-shell](https://github.com/noctalia-dev/noctalia-shell)\n- **Yazi**: [sxyazi/yazi](https://github.com/sxyazi/yazi)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flazarh%2Fniri-noctalia-debian-script","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flazarh%2Fniri-noctalia-debian-script","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flazarh%2Fniri-noctalia-debian-script/lists"}