Matshell is a Material Design inspired desktop shell built with Astal for Hyprland. This project draws heavy inspiration from fufexan's AGSv1 config, with design influences from saimoomedits, tailored for both multi-monitor desktop setups and laptops.
This setup tries to achieve sleek, "MacOS-esque" looks with a little bit of rice sprinkled on top.
- Adaptive Layout: Automatically adapts to desktop or laptop environments by conditionally rendering notebook-specific widgets
- Dynamic Material Design Theming: Change themes on-the-fly using either scripts I botched from end-4 or via matugen templates
- Multi-monitor Support: Designed with multi-monitor setups in mind
- Hyprland Integration: Built specifically for the Hyprland compositor
- Nix Support: Support for NixOS / Home-Manager with dedicated module
Widget List
- Main Status Bar
- Laptop (Light)
- Desktop (Dark)
- App Launcher
- Light
- Dark
- Logout Menu
- Light
- Dark
- Music Player with CAVA
- Notifications
- Light
- Dark
- On Screen Display
- Light
- Dark
- System Menu
- Laptop (Light)
- Desktop (Dark)
Show dependency list
- astal
- ags
- glibtop
- hyprland
- adw-gtk3-git
- adwaita-icon-theme
- coreutils
- dart-sass
- imagemagick
- Material Symbols Outlined Font
- Fira Code Nerd Font
- For the end-4 scripts:
- python-materialyoucolor-git
- gradience-git
- python-libsass
- python-material-color-utilities
- python-build
- python-pillow
- python-pywal
- python-setuptools-scm
- python-wheel
- For matugen:
- matugen
- image-hct (optional; for additional chroma/tone based theming)
- gnome-control-center
- mission-center
- overskride
- pwvucontrol
Run the installation script:
bash <(curl -s https://raw.githubusercontent.com/Neurarian/matshell/refs/heads/master/install.sh)
Manual install
...Or do it manually by cloning this repo...
❗Make sure to create a backup of your current config if you want to keep it❗
git clone --depth 1 "https://github.com/Neurarian/matshell" "$XDG_CONFIG_HOME/ags/"
For the color generation with the end-4-scripts to work, run this command to create the necessary additional directories:
mkdir -p $XDG_STATE_HOME/astal/{scss,user} $XDG_CACHE_HOME/astal/user/generated
After using hyprpaper or some other means to set your wallpaper, run the script from end-4 like this:
$HOME/.config/astal/scripts/colorgen.sh "$HOME/.cache/current_wallpaper.jpg" --apply --smart
The color generation works better with wallpapers that have a bit of chroma.
For a NixOS implementation and example script for use with hyprpaper, matugen, and a custom cli utility to get chroma/tone, check my NixOS-config.
On Nix you can test the config via the flake exposed package, but I would recommend to also imperatively copy or symlink this repo to your dotfiles to circumvent nix-store immutability. Otherwise the dynamic theming will not work. One way to do this would be via the home-manager module which adds the following enable option to the set of ags options:
# ...
imports = [
inputs.matshell.homeManagerModules.default
];
programs.ags = {
matshell.enable = true;
};
#...
This will simply clone the repo for you to .config/ags if that dir does not exist, build ags wrapped with all dependencies for matshell, and start a systemd service. You will have to remove the ags home-manager module from you config, as enabling matshell will handle everything ags-related for you.
This is absolutely hacky, probably unsafe, and not the nix way to do it, but it gets the job done. To get the latest version of matshell, you would have to pull the updates manually or delete .config/ags and rebuild the system/home-manager profile.
This project wouldn't be possible without:
- fufexan's dotfiles for the initial inspiration and foundation
- end-4's dots-hyprland for the color generation scripts
- saimoomedits' eww-widgets for design influence
- Astal for the powerful widget toolkit