https://github.com/Neurarian/matshell
Astal / AGS desktop & laptop shell config for Hyprland.
https://github.com/Neurarian/matshell
ags astal dotfiles gtk4 hyprland linux linux-rice material-design nix
Last synced: about 1 year ago
JSON representation
Astal / AGS desktop & laptop shell config for Hyprland.
- Host: GitHub
- URL: https://github.com/Neurarian/matshell
- Owner: Neurarian
- License: gpl-3.0
- Created: 2024-06-01T21:09:31.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2025-04-13T01:17:55.000Z (about 1 year ago)
- Last Synced: 2025-04-13T01:28:48.278Z (about 1 year ago)
- Topics: ags, astal, dotfiles, gtk4, hyprland, linux, linux-rice, material-design, nix
- Language: TypeScript
- Homepage:
- Size: 682 KB
- Stars: 11
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Matshell
### A GTK4 Material Design desktop shell powered by [Astal](https://github.com/Aylur/astal)





Matshell is a Material Design inspired desktop shell built with [Astal](https://github.com/Aylur/astal) for [Hyprland](https://github.com/hyprwm/Hyprland). This project draws heavy inspiration from [fufexan's](https://github.com/fufexan/dotfiles) AGSv1 config, with design influences from [saimoomedits](https://github.com/saimoomedits/eww-widgets), 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 shipped with some configurable options*** via autogenerated config.json.
## 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](https://github.com/end-4/dots-hyprland) or via [matugen](https://github.com/InioX/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)

______________________________________________________________________
### βοΈ 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](https://github.com/Neurarian/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:
```console
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β**
```console
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:
```console
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](https://github.com/end-4/dots-hyprland) like this:
```console
$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](https://github.com/Neurarian/matshell/blob/master/nix/hm-module.nix) for use with hyprpaper, matugen, and a [custom cli utility](https://github.com/Neurarian/image-hct) to get chroma/tone, you can enable dedicated options in the home-manager module exposed by the flake (see below).
You can generally test out matshell via the flake exposed package `nix run github:Neurarian/matshell` , 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 overwrites the ags options with the following:
```nix
# ...
imports = [
inputs.matshell.homeManagerModules.default
];
programs.ags = {
matshell = {
# Enable the basic shell
enable = true;
# Enable a systemd service for matshell
service = 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;
};
};
#...
```
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 your 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 for now. 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:
- [fufexan's dotfiles](https://github.com/fufexan/dotfiles) for the initial inspiration and foundation
- [end-4's dots-hyprland](https://github.com/end-4/dots-hyprland) for the color generation scripts
- [matugen](https://github.com/InioX/matugen) for the amazing Material Color theming utility
- [saimoomedits' eww-widgets](https://github.com/saimoomedits/eww-widgets) for design influence
- [kotontrion](https://github.com/kotontrion/kompass) for the GTK4 CAVA Catmull-Rom spline widget
- [ARKye03](https://github.com/ARKye03) for the GTK4 circular progress widget which is currently still on its way to be merged into Astal
- [Astal](https://github.com/Aylur/astal) for the powerful widget toolkit
______________________________________________________________________
## Screenshots
### π Dark Theme (Desktop)
Floating Mode

Full Bar Mode & Cava in Bar

### π Light Theme (Desktop)


### Video Demo (quite outdated)