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

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 AGS/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.

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 Integration: Built specifically for the Hyprland compositor
  • 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 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

  • 🎯 App Launcher - Fast fuzzy search application access

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


⛓️ Dependencies

Show dependency list

Required:

  • aylurs-gtk-shell-git
  • libastal-hyprland-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
  • hyprland
  • 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
    • image-hct (optional; for additional chroma/tone based theming)

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

I am using a shell script to set a new wallpaper and matugen theme. It uses a custom cli utility that you can use to dynamically choose the scheme and mode. Otherwise just pin to one of your liking (e.g., matugen -t "scheme-vibrant" -m "dark" image "$wallpaper_path"). The color generation works better with wallpapers that have a bit of chroma.

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, but their toggles can also be disabled if the matshell controls alone are sufficient for you. Defaults are overskride and gnome-control-center.

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. For a NixOS implementation and example script for use with hyprpaper, matugen, and the custom cli utility to get chroma/tone, you can enable dedicated options in the home-manager module:

# ...

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

programs.matshell= {
  # Enable the basic shell
  enable = true; 
  # Enable a systemd service for matshell
  autostart = true;
  # Enable matugen theming via custom random wallpaper setter script and rust utility
  # used to base theme and scheme on the HCT properties of the main color.
  # Run this via "wal_set"
  matugenThemeSetter = true;
  # This also 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:


Video Demo Desktop

matshell.mp4

🌚 Dark Theme (Desktop)

Floating mode

2025-04-19T03:27:33,093645867+02:00

Full bar mode & cava in bar

2025-04-19T03:22:32,664157108+02:00

🌞 Light Theme (Desktop)

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. Built with Astal / AGS.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •