Scrollable-tiling Wayland compositor written in Rust with a unique window management approach.
Highly customizable and dynamic Wayland compositor focused on performance and aesthetics.
Lightweight Wayland compositor with fast builds and rich functionality.
Trackpad-first Wayland compositor with an infinite canvas approach.
Consistent across all listed Wayland compositors. Check each compositor's config file for the full list.
| Key Combination | Action |
|---|---|
| Super + T | Open Terminal (Kitty) |
| Super + Space | Open App Launcher (Rofi) |
| Super + Q | Quit focused window |
| Super + B | Open Browser (Zen) |
| Super + N | Open File Manager (Yazi) |
| Super + P | Power Menu (Wlogout) |
| Super + Ctrl + E | Exit Wayland compositor |
| Desktop |
|---|
![]() |
| Launcher |
|---|
![]() |
| Clipboard History |
|---|
![]() |
| Wallpaper Picker |
|---|
![]() |
| Power Menu |
|---|
![]() |
Important
Please review the pkglist before executing install.sh so you have an idea of what will be installed. By default, you will get Niri and Hyprland, with Niri set as the default session.
Warning
The Installation script uses GNU Stow under the hood, so do not delete or move ~/dotfiles/, otherwise all Stow-based symlinks will break.
- Arch Linux clean install (recommended) or an Arch-based distro
sudo pacman -Syu --needed --noconfirm gitcd ~ && git clone https://github.com/irfanihbro/dotfiles.gitbash ~/dotfiles/install.shsudo pacman -Syu --needed --noconfirm git && cd ~ && git clone https://github.com/irfanihbro/dotfiles.git && bash ~/dotfiles/install.shIf GNU Stow reports conflicts, use the helper directly:
bash ~/dotfiles/stow-configs.sh --dry-runbash ~/dotfiles/stow-configs.sh --backup-conflictsbash ~/dotfiles/stow-configs.sh --adopt--adopt can overwrite existing files, so only use it when you intend to merge local state into the repo.
Configs/
├── alacritty
│ └── alacritty.toml
├── bash
│ └── bashrc
├── bat
│ └── config
├── btop
│ ├── themes
│ └── btop.conf
├── cava
│ ├── shaders
│ │ ├── bar_spectrum.frag
│ │ ├── eye_of_phi.frag
│ │ ├── northern_lights.frag
│ │ ├── pass_through.vert
│ │ ├── spectrogram.frag
│ │ └── winamp_line_style_spectrum.frag
│ ├── themes
│ │ ├── solarized_dark
│ │ └── tricolor
│ └── config
├── driftwm
│ └── config.toml
├── fastfetch
│ ├── Arch.png
│ └── config.jsonc
├── fish
│ ├── completions
│ │ └── awww.fish
│ ├── functions
│ │ ├── cd.fish
│ │ ├── clean.fish
│ │ ├── fish_prompt.fish
│ │ ├── gacp.fish
│ │ ├── y.fish
│ │ └── ydl.fish
│ │ └── yt.fish
│ ├── config.fish
│ └── fish_variables
├── foot
│ ├── foot_for_cava.ini
│ ├── foot_for_smassh.ini
│ └── foot.ini
├── ghostty
│ └── config
├── gtk-3.0
│ └── settings.ini
├── gtk-4.0
│ └── settings.ini
├── hypr
│ ├── hyprland_modules
│ │ ├── Animations
│ │ │ └── Animations_End4.lua
│ │ ├── Autostart.lua
│ │ ├── Decorations.lua
│ │ ├── Generals.lua
│ │ ├── Gestures.lua
│ │ ├── Input.lua
│ │ ├── Keybinds.lua
│ │ ├── Layouts.lua
│ │ ├── Misc.lua
│ │ ├── Monitors.lua
│ │ └── Rules.lua
│ ├── hyprlock_themes
│ │ ├── hyprlock_1.conf
│ │ ├── hyprlock_2.conf
│ │ ├── hyprlock_3.conf
│ │ └── hyprlock_4.conf
│ └── hyprland.lua
│ └── sound-daemon.sh
├── installed-pkg
│ └── pkglist.txt
├── kdedefaults
│ ├── kcminputrc
│ ├── kdeglobals
│ ├── ksplashrc
│ ├── kwinrc
│ ├── package
│ └── plasmarc
├── kitty
│ └── kitty.conf
│ └── sound_watcher.py
├── klassy
│ ├── klassyrc
│ └── windecopresetsrc
├── mako
│ └── config
├── mango
│ ├── Modules
│ │ ├── Animations.conf
│ │ ├── Autostart.conf
│ │ ├── Blur.conf
│ │ ├── Dwindle_layout.conf
│ │ ├── Environments.conf
│ │ ├── General.conf
│ │ ├── Keybinds.conf
│ │ ├── Master-Stack.conf
│ │ ├── Monitors.conf
│ │ ├── Rules.conf
│ │ ├── Scroller_layout.conf
│ │ ├── Shadows.conf
│ │ └── Tagrules.conf
│ └── config.conf
├── mpv
│ ├── fonts
│ │ └── modernz-icons.ttf
│ ├── script-opts
│ │ ├── modernz.conf
│ │ └── modernz-locale.json
│ ├── scripts
│ │ └── modernz.lua
│ ├── input.conf
│ └── mpv.conf
├── niri
│ ├── Modules
│ │ ├── Animations.kdl
│ │ ├── Autostart.kdl
│ │ ├── Blur.kdl
│ │ ├── Cursor.kdl
│ │ ├── Input.kdl
│ │ ├── Keybinds.kdl
│ │ ├── Layout.kdl
│ │ ├── Others.kdl
│ │ ├── Outputs.kdl
│ │ ├── Overview.kdl
│ │ └── Rules.kdl
│ └── config.kdl
│ └── sound-daemon.sh
├── nvim
│ ├── lua
│ │ ├── configs
│ │ │ ├── conform.lua
│ │ │ ├── lazy.lua
│ │ │ └── lspconfig.lua
│ │ ├── plugins
│ │ │ └── init.lua
│ │ ├── autocmds.lua
│ │ ├── chadrc.lua
│ │ ├── mappings.lua
│ │ └── options.lua
│ ├── .stylua.toml
│ ├── init.lua
│ └── lazy-lock.json
├── quickshell
│ └── power_menu
│ └── shell.qml
├── Resources
│ ├── fonts
│ │ ├── Betterlett.ttf
│ │ ├── GoogleSansCodeNF-Bold.ttf
│ │ ├── GoogleSansCodeNF-Medium.ttf
│ │ ├── GoogleSansCodeNF-Regular.ttf
│ │ ├── GoogleSansFlex-VariableFont_GRAD,ROND,opsz,slnt,wdth,wght.ttf
│ │ ├── SF Pro Display Bold.otf
│ │ └── SF Pro Display Regular.otf
│ └── images
│ ├── PFP.jpg
│ └── red_dots.png
├── rofi
│ ├── clipboard.rasi
│ ├── config.rasi
│ ├── glass_minimal.rasi
│ ├── launchpad.rasi
│ └── wallpaper-selector.rasi
├── Scripts
│ ├── animation_switcher.sh
│ ├── auto_detect_terminal.sh
│ ├── bashfix.sh
│ ├── clipboard.sh
│ ├── clipboard_toggle.sh
│ ├── dashboard.sh
│ ├── dashboard_toggle.sh
│ ├── full_screenshot.sh
│ ├── kde-send.sh
│ ├── launcher.sh
│ ├── launcher_toggle.sh
│ ├── lockscr_greet.sh
│ ├── partial_screenshot.sh
│ ├── powermenu.sh
│ ├── powermenu_toggle.sh
│ ├── random_wall_on_home.sh
│ ├── random_wall_on_lockscr.sh
│ ├── rofi_clipboard.sh
│ ├── rofi_powermenu.sh
│ ├── screen_recorder.sh
│ ├── smassh.sh
│ ├── structure_update.py
│ ├── wallpaper_switcher.sh
│ ├── yazi_wall_setter.sh
│ └── ydl.py
├── smassh
│ └── smassh.json
├── swayimg
│ └── init.lua
├── systemd
│ └── user
│ ├── default.target.wants
│ │ └── niri.service -> /home/irfan/.config/systemd/user/niri.service
│ └── niri.service
├── waybar
│ ├── DriftWM
│ │ ├── config.jsonc
│ │ └── style.css
│ ├── Hyprland
│ │ └── config.jsonc
│ ├── MangoWM
│ │ └── config.jsonc
│ ├── Modules
│ │ ├── Backlight.jsonc
│ │ ├── Battery.jsonc
│ │ ├── Bluetooth.jsonc
│ │ ├── Center.jsonc
│ │ ├── Clock.jsonc
│ │ ├── Cpu.jsonc
│ │ ├── Disk.jsonc
│ │ ├── Memory.jsonc
│ │ ├── Mpris.jsonc
│ │ ├── Network.jsonc
│ │ ├── Power.jsonc
│ │ ├── Pulseaudio.jsonc
│ │ ├── Right.jsonc
│ │ ├── Temperature.jsonc
│ │ └── Tray.jsonc
│ ├── Niri
│ │ └── config.jsonc
│ └── style.css
├── wezterm
│ └── wezterm.lua
├── wlogout
│ ├── icons
│ │ ├── hibernate.png
│ │ ├── lock.png
│ │ ├── logout.png
│ │ ├── power.png
│ │ ├── restart.png
│ │ └── sleep.png
│ ├── layout
│ └── style.css
├── xsettingsd
│ └── xsettingsd.conf
└── yazi
├── flavors
│ └── dracula.yazi
│ ├── flavor.toml
│ ├── LICENSE
│ ├── LICENSE-tmtheme
│ ├── preview.png
│ ├── README.md
│ └── tmtheme.xml
├── plugins
│ └── full-border.yazi
│ ├── LICENSE
│ ├── main.lua
│ └── README.md
├── init.lua
├── keymap.toml
├── package.toml
├── theme.toml
└── yazi.toml
Originally created by: BlackSparkz
This fork contains additional modifications:
- Fixed Overview wallpaper not showing in startup
- Added sound effects on window open/close
- Added fade effect for wlogout
- Added additional packages to be installed
- Fixed random wallpaper logic
Modified by: irfanihbro (me)




