Thanks to visit codestin.com
Credit goes to github.com

Skip to content
/ Exo Public
forked from debuggyo/Exo

A Material 3 inspired desktop shell for Niri and Hyprland created with Ignis.

Notifications You must be signed in to change notification settings

chinatsu/Exo

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Exo

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!

Automatic Install Script (recommended)

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 Arch
curl -sSL https://raw.githubusercontent.com/debuggyo/Exo/main/exoinstall.py -o exoinstall.py && python3 exoinstall.py

Updating and Uninstalling

You 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.

Uninstalling

Select the "Uninstall Exo" option from the script's main menu. The uninstaller will:

  • Remove the ~/.config/ignis and ~/.config/matugen configuration folders.
  • Remove the exoupdate command 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/Wallpapers directory.

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 .bak backup files created during previous updates.

Manual Install Instructions

First install the dependencies.

Dependencies

  • Niri or Hyprland
  • Ignis (git/dev)
  • ignis-gvc
  • gpu-screen-recorder (optional for screen recording)
  • slurp (optional for region recording)
  • Material Symbols Font
  • matugen
  • swww
  • gnome-bluetooth
  • adw-gtk3 Theme
  • dart-sass

Dependency Notes:

  • Arch-based: Most dependencies are available in the AUR. Use your preferred AUR helper to install them (e.g., paru -S <package_name>). Ignis is available as python-ignis-git.
  • Fedora-based: Use dnf install <package_name> to install dependencies. Some packages may have slightly different names (e.g., gnome-bluetooth-libs instead of gnome-bluetooth).
  • Ubuntu-based: Use apt install <package_name> to install dependencies. Some packages may have slightly different names (e.g., libgnome-bluetooth-3.0-13 instead of gnome-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.json

In 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!

Matugen

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

Recommended Hyprland/Niri Settings

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.

Screenshots/Videos

image image image image image image

recording_2025-08-29_15.58.30.mp4
recording_2025-08-30_13-49-58.mp4

Credits

About

A Material 3 inspired desktop shell for Niri and Hyprland created with Ignis.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 78.1%
  • SCSS 21.4%
  • CSS 0.5%