Skip to content

Neurarian/matshell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Matshell

A GTK4 Material Design desktop shell powered by AGS, Astal, Gnim, and Matugen

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

Neurarian_Matshell_round-2


2025-10-08T22:57:51,980193463+02:00

Matshell is a GPU-accelerated Material Design inspired desktop shell built with AGS/Astal for Hyprland and River. 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.

Now using AGSv3.

✨ 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 via matugen templates
  • Multi-monitor Support: Designed with multi-monitor setups in mind
  • Hyprland & River Support: Automatic compositor detection
  • Cava Visualizer Library: Ships with an extensive lib of optional Cava visualizers to enjoy your music to
  • Multimodal Fuzzy & Frecency Picker: Apps, clipboard, wallpapers - all ranked by frequency + recency, loosely based on gnofi.
  • Nix Support: Support for NixOS / Home-Manager with dedicated module
  • Configurable: Includes option menu to hot-reload styles and components
Show detailed components list

βš™οΈ Components

  • πŸ“Œ Status Bar - Sleek, informative main bar with system information

    • Workspace Management - Themed Hyprland or River workspace integration
    • System Tray
    • Visual Performance Monitoring - CPU & memory
    • Simple Clock
  • 🎧 Music Player - Media controls, music cover themed

    • Audio Visualization - Extensive library of CAVA visualizer styles to choose from
  • πŸ”§ System Menu - Minimalistic core system integration

    • Network Management - WiFi scanning, connection management, and status monitoring
    • Bluetooth Support - Device pairing, management, and status indicators
    • Brightness Controls
    • Audio Controls
    • Battery Metrics
    • Power Profiles
    • Notification Center - Intuitive notification management system & DND mode
  • πŸ’€ Logout Menu - wlogout-like but ags

  • 🎯 Multimodal Launcher - Fast fuzzy search application access and frecency default items

  • πŸ’» On-Screen Display - Tracks Audio, Brightness, and Bluetooth connections

⛓️ Dependencies

Show dependency list

Required:

  • aylurs-gtk-shell-git
  • libastal-hyprland-git or libastal-river-git
  • libastal-tray-git
  • libastal-notifd-git
  • libastal-apps-git
  • libastal-wireplumber-git
  • libastal-mpris-git
  • libastal-network-git
  • libastal-bluetooth-git
  • libastal-cava-git
  • libastal-battery-git
  • libastal-powerprofiles-git
  • libgtop
  • libadwaita
  • libsoup3
  • glib-networking
  • hyprland or river
  • wl-clipboard
  • cliphist
  • coreutils
  • dart-sass
  • imagemagick
  • networkmanager
  • wireplumber
  • bluez & bluez-utils (will also run fine without, but throws some non-critical errors on startup)
  • adwaita-icon-theme
  • ttf-material-symbols-variable-git
  • ttf-firacode-nerd
  • For matugen theming:
    • matugen
    • swww or hyprpaper
    • image-hct (optional; for proper chroma/tone based theming. Uses imagemagick as fallback)

Not required but useful for laptop device features:

  • upower
  • brightnessctl

πŸ› οΈ Installation

Note

If you're using an old version of matshell and want to update or you're using your own setup, you will need to move your old config out of ~/.config/ags/ or delete the folder before running the script, as I am not overwriting existing configs. If the Arch install below is broken please open an issue as I don't run Arch and only test this in a VM from time to time.

Run the installation script (Currently supports Arch-based with yay only):

 bash <(curl -s https://raw.githubusercontent.com/Neurarian/matshell/refs/heads/master/scripts/install.sh)

... and implement the colors into your hyprland config to your liking.

Tip

Use Hyprland layerrules to add some blur to the shell for smoother visuals.

layerrule=blur, bar
layerrule=blur, gtk4-layer-shell
layerrule=ignorealpha 0.2, bar
layerrule=ignorealpha 0.2, gtk4-layer-shell

Note

After a first launch, edit the autogenerated config.json in ~/.config/ags/ to add the shell commands for your terminal, file-manager, browser, resource monitor, and audio control apps to the shell. Defaults are Wezterm, Nautilus, Zen, Resources, and pwvucontrol. You can also add more advanced bluetooth and wifi apps to the config.json. Their toggles can also be disabled if the matshell controls alone are sufficient for you. Defaults are overskride and gnome-control-center. Add your wallpaper directory to the config.json to pick wallpapers either randomly via matshell wall-rand or from the wp picker.

Manual install

...Or do it manually by installing the dependencies above and 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/"

Finally, add this to your matugen config:

[templates.gtk3]
input_path = "~/.config/ags/matugen/templates/gtk.css"
output_path = "~/.config/gtk-3.0/gtk.css"

[templates.gtk4]
input_path = "~/.config/ags/matugen/templates/gtk.css"
output_path = "~/.config/gtk-4.0/gtk.css"

[templates.ags]
input_path = "~/.config/ags/matugen/templates/ags.scss"
output_path = "~/.config/ags/style/abstracts/_variables.scss"

[templates.hypr]
input_path = "~/.config/ags/matugen/templates/hyprland_colors.conf"
output_path = "~/.config/hypr/hyprland_colors.conf"

[templates.hyprlock]
input_path = "~/.config/ags/matugen/templates/hyprlock_colors.conf"
output_path = "~/.config/hypr/hyprlock_colors.conf"

❄️ Nix

You can generally test out matshell via the flake exposed package nix run github:Neurarian/matshell (nix run github:Neurarian/matshell#matshell-river for the River version). To integrate matshell into your home-manager config you can enable dedicated options from the module:

# ...

imports = [
  inputs.matshell.homeManagerModules.default
];

programs.matshell= {
  # Enable the basic shell
  enable = true; 
  # Enable a systemd service for matshell
  autostart = true;
  # Compositor you are using. Defaults to hyprland.
  compositor = "hyprland";
  # This sets up the entire matugen config & templates.
  # If you already have matugen set up you may want to omit this.
  # To use the hyprland/hyprlock templates, you would still need to
  # import the generated files and add the color aliases to your config as desired.
  matugenConfig = true;
};
#...

Note

As I don't want to overwrite changes people potentially apply to the stylesheets in ~/.config/ags/ or even their current configs, I do not replace config files already present at ~/.config/ags/ on rebuild. This means, If a new version of matshell changed something style related, you may need to delete the old ~/.config/ags/ folder manually and rebuild again for the stylesheets to be up-to-date.

Acknowledgements

This project wouldn't be possible without:

More Showcases

Video Demo Desktop

matshell.mp4

🌚 Dark Theme (Desktop)

Floating mode

20251013_224915

Full bar mode & cava in bar

20251010_003407

🌞 Light Theme

Square bar with rounded screen corners & Hyprland blur

2025-09-18T19:08:46,034329229+02:00

Detailed Widget List

  • Main Status Bar

2025-04-10 18-58-06

2025-04-10 23-47-32

  • 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-04-10T00:02:06,878048376+02:00 2025-04-10 18-22-52-8

  • 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

About

Material Design themed GTK4 desktop & laptop shell / bar for Hyprland and River. Built with Astal / AGS.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published