Skip to content

Neurarian/matshell

Repository files navigation

Matshell

A Material Design desktop shell powered by Astal

GitHub repo size GitHub commit activity GitHub last commit (branch) GitHub Repo stars

Neurarian_Matshell_round-2

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.

Features

  • 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)

2025-03-23T18:37:29,615714672+01:00

  • Desktop (Dark)

2025-03-23T18:53:49,228938439+01:00

  • App Launcher
  • Light

2025-03-23T18:41:51,470421774+01:00

  • Dark

2025-03-23T18:56:24,165287965+01:00

  • Logout Menu
  • Light

2025-03-23T19:00:49,303694058+01:00

  • Dark

2025-03-23T18:40:10,844462569+01:00

  • Music Player with CAVA

2025-03-23T18:53:13,488130463+01:00

  • Notifications
  • Light

2025-03-23T18:42:09,143344616+01:00

  • Dark

2025-03-23T19:05:38,240008405+01:00

  • On Screen Display
  • Light

2025-03-23T18:47:25,513704415+01:00

  • Dark

2025-03-23T19:06:59,375609741+01:00

  • System Menu
  • Laptop (Light)

2025-03-23T18:38:30,002859605+01:00

  • Desktop (Dark)

2025-03-23T19:09:22,826684018+01:00


⛓️ Dependencies

Show dependency list

Required:

  • 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)

Not required but launched by Astal widgets:

  • gnome-control-center
  • mission-center
  • overskride
  • pwvucontrol

🛠️ Installation

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.

❄️ Nix

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.

Acknowledgements

This project wouldn't be possible without:


Screenshots

🌚 Dark Theme (Desktop)

2025-03-21T22:42:06,141625834+01:00 2025-03-21T23:02:56,372784904+01:00

🌞 Light Theme (Desktop)

2025-03-21T22:37:54,320570898+01:00 2025-03-21T22:52:59,913307252+01:00

Video Demo

recording.mp4