Niri Overview |
Decoration Apps |
Niri Binds |
Yazi Floating |
A unified, reproducible dotfiles setup for Fedora Workstation featuring:
- Niri - Scrollable-tiling Wayland compositor
- WezTerm - GPU-accelerated terminal emulator
- Rofi - Highly customizable application launcher
- Waybar - Highly customizable status bar
- Mako - Lightweight notification daemon
- Fish shell with Hydro prompt
Run this command in your terminal:
bash -c "$(curl -fsSL https://raw.githubusercontent.com/abbesm0hamed/dofs/fedora-niri/bootstrap.sh)"This will:
- Install all packages from lists (system, desktop, wayland, etc.)
- Stow dotfiles into your home directory (including
~/.config) - Apply the unified default theme
If you prefer to clone the repository manually, follow these steps:
# Clone the repository
git clone --branch fedora-niri https://github.com/abbesm0hamed/dofs.git ~/dofs
cd ~/dofs
./install.sh
# Run the installer
# Use APPLY_ETC=1 to also apply system-level configs (e.g., lid suspend behavior)
# This will require sudo password.
APPLY_ETC=1 ./install.shIf you don't want to run the installer directly on your machine, you can validate the bootstrap in a clean Fedora container.
git clone --branch fedora-niri https://github.com/abbesm0hamed/dofs.git ~/dofs
cd ~/dofs
bash tests/test-install.shNotes:
- The test prefers
podmanif available, otherwise it usesdocker. - The test runs
./install.sh --non-interactiveand then./scripts/setup/verify.shinside the container.
rebootThis setup includes:
- xwayland-satellite for X11 app compatibility (Discord, Steam, etc.)
- xdg-desktop-portal-gnome for better screen sharing
- GDM (GNOME Display Manager) with Niri session support
- Optimized autostart with proper service ordering
- Hyprlock with blur effects for secure screen locking
- One command installs everything
- Automatic validation before completion
- Declarative package management
- Reproducible setup
- Base development tools, git, network manager
- Fish shell, Hydro prompt
- Bluetooth, SSH, power management tools...
- Node.js (fnm), Python, Rust, Go
- Docker, Kubernetes, Terraform
- Neovim, code quality tools, debuggers...
- Chromium, Zen Browser
- Nautilus file manager
- Slack, Discord
- Zathura PDF viewer
- And many more...
- Niri compositor
- Waybar status bar
- Mako notifications
- Screenshot, recording, clipboard tools
- Steam with Wayland optimizations
- Gamescope for compositing and scaling
- MangoHUD for performance overlays
- Proton for Windows game compatibility
Steam Wayland Fix: Steam is configured with -system-composer -no-cef-sandbox flags in ~/.local/share/applications/steam.desktop to fix black screen issues on Wayland. The gaming.sh setup script automatically applies these flags to the Steam desktop entry and all its actions (Store, Community, Library, etc.).
This setup includes a central manager script dofs (symlinked to ~/.local/bin/dofs) to simplify everyday tasks:
# Run the full installation or a specific setup script (e.g., 'shell')
dofs install [script]
# Update everything (DNF, Flatpak, Nvim, Fish plugins)
dofs update
# Run a comprehensive health check (symlinks, services, PATH, etc.)
dofs doctor
# Verify your configuration symlinks and health
dofs verify
# Run installation test in a clean container (Fedora)
dofs test
# Uninstall configurations and symlinks managed by dofs
dofs uninstallEdit the relevant file in packages/:
# Add to development tools
echo "my-new-package" >> packages/development.txt
# Reinstall
./install.sh- Check if Wayland is supported:
echo $WAYLAND_DISPLAY - Verify Niri is installed:
which niri - Check logs:
journalctl -u niri
- Check internet connection
- Try manual install:
sudo dnf install package-name - For Flatpak apps:
flatpak install package-name
For a detailed and auto-generated list of all keybindings for Niri and Neovim, please see the KEYBINDINGS.md file.
Press ALT + L to open the power menu, which provides options for:
- Logout
- Reboot
- Hibernate
- Sleep
- Keyboard Layout: Toggle between US and Arabic layouts using
Super + Alt + Shift + Space - Auto-tiling: Dynamic tiling layout
- Workspace Auto Back and Forth: Enabled
- Smooth Animations: Advanced animation system
This setup uses rclone bisync to keep a local copy of your notes synchronized bidirectionally with Google Drive.
- Authenticate: Run
rclone configand create a remote namedgdrive. For best results, create your own Google OAuth Client ID in the Google Cloud Console to avoid rate limiting. (Path: APIs & Services > Credentials > Create Credentials > OAuth client ID). - Enable API: Ensure the Google Drive API is enabled in your Google Cloud Console.
- Setup: Run
bash ~/dofs/scripts/setup/obsidian.sh. This initializes the vault and enables background sync. - Use:
- Manual Sync: Press
<leader>ozin Neovim to trigger an immediate sync. - Search: Use
<leader>osto search your notes using the Snacks picker. - Quick Note: Use
<leader>onto create a new note from anywhere.
- Manual Sync: Press
- Performance: Since notes are stored locally in
~/vaults/google-drive, the picker is instant. Background sync runs every 30 minutes via a systemd timer. - Reliability: Uses
rclone bisyncwithsizeandmodtimecomparison for fast, reliable updates.



