A Material 3 inspired desktop shell for Niri and Hyprland created with Ignis.
For support or showcasing your Exo setup, you can join the Exo Discord server!
The installer script will automatically clone the repository to a temporary folder and copy the configuration files to the correct locations.
Automatic dependency installation is supported on Arch-based, Fedora-based, and Ubuntu-based distributions. The rest of the installation process should work on any distro, but you will have to manually install dependencies if your distro is not officially supported.
The script can also be used to update Exo on any distribution.
sudo apt install curl git python3 # For Debian/Ubuntu
sudo dnf install curl git python3 # For Fedora
sudo pacman -S curl git python3 # For Archcurl -sSL https://raw.githubusercontent.com/debuggyo/Exo/main/exoinstall.py -o exoinstall.py && python3 exoinstall.pyYou can run the installer script again at any time to update or remove Exo. If you installed it as a system command, simply run exoupdate in your terminal. Otherwise, re-run the script with python3 exoinstall.py.
Select the "Uninstall Exo" option from the script's main menu. The uninstaller will:
- Remove the
~/.config/ignisand~/.config/matugenconfiguration folders. - Remove the
exoupdatecommand from/usr/local/bin/. - Remove specific Niri (
config.kdl) and Hyprland (hyprland.conf) config files copied by the installer. - Remove the default wallpaper from your
~/Pictures/Wallpapersdirectory.
The uninstaller will NOT:
- Remove any installed dependencies (like Ignis, Niri, Hyprland, etc.). You must remove these yourself using your system's package manager if desired.
- Remove any
.bakbackup files created during previous updates.
First install the dependencies.
- Niri or Hyprland
- Ignis (git/dev)
ignis-gvcgpu-screen-recorder(optional for screen recording)slurp(optional for region recording)- Material Symbols Font
matugenswwwgnome-bluetoothadw-gtk3Themedart-sass
- Arch-based: Most dependencies are available in the AUR. Use your preferred AUR helper to install them (e.g.,
paru -S <package_name>).Ignisis available aspython-ignis-git. - Fedora-based: Use
dnf install <package_name>to install dependencies. Some packages may have slightly different names (e.g.,gnome-bluetooth-libsinstead ofgnome-bluetooth). - Ubuntu-based: Use
apt install <package_name>to install dependencies. Some packages may have slightly different names (e.g.,libgnome-bluetooth-3.0-13instead ofgnome-bluetooth).
Create an ignis folder in your .config if it's not already there.
git clone https://github.com/debuggyo/Exo
cd Exo
cp -r ignis ~/.config/
cp -r matugen ~/.config/
touch ~/.config/ignis/user_settings.jsonIn your Niri or Hyprland config add the following keybinds, bind them to anything you would like.
| Function | Command |
|---|---|
| Opens App Launcher | ignis open-window Launcher |
| Opens Settings Window | ignis open-window Settings |
| Opens Power Menu | ignis open-window PowerMenu |
| Record the screen | ignis run-command recorder-record-screen |
| Record a selected region | ignis run-command recorder-record-region |
| Record a window (Niri only) | ignis run-command recorder-record-portal |
Set up matugen (see below) and run matugen image /path/to/wallpaper to set a wallpaper and color scheme before starting ignis.
Set the gtk theme to adw-gtk3 by running gsettings set org.gnome.desktop.interface gtk-theme "adw-gtk3" or by setting the theme in your preferred gtk settings program.
Add ignis init and swww-daemon to auto start in your Niri/Hyprland config and you're ready to go!
In ~/.config/matugen/templates/ (create if it doesn't exist) create a new file called colors.scss with the following contents:
<* for name, value in colors *>
${{name}}: {{value.default.hex}};
<* endfor *>
In ~/.config/matugen/config.toml (create if it doesn't exist) add this to the bottom of the file:
[config.wallpaper]
command = "swww"
arguments = ["img", "--transition-type", "simple"]
set = true
[templates.ignis]
input_path = './templates/colors.scss'
output_path = '~/.config/ignis/colors.scss'
Then if you want you can install more Matugen Themes
| Option | Value |
|---|---|
| Outer Margin | 5 |
| Border Radius | 20 |
This is to make sure that the window corners match the screen/bar corners.
These can be set to any value, though looks better when the radius is set to 25 - Margin
If you don't use bar or screen corners, these don't matter and you can pick your own values.
I intend to make this automatic when I implement Niri/Hyprland configuration in the settings window.
recording_2025-08-29_15.58.30.mp4
recording_2025-08-30_13-49-58.mp4
- Ignis
- linkfrg's dotfiles
- Material 3 Guidelines
- Illogical Impulse (inspiration)