Zacharias-Brohn e31fb851fa test
2026-03-04 22:28:25 +01:00
2026-02-25 14:19:27 +01:00
2026-03-04 22:28:25 +01:00
2026-03-02 13:38:58 +01:00
2026-03-04 22:25:12 +01:00
2026-02-26 14:26:20 +01:00
2026-03-02 18:43:16 +01:00
2026-02-24 23:20:11 +01:00
2026-03-04 22:25:12 +01:00
2025-12-11 12:57:51 +01:00
2026-03-04 22:25:12 +01:00
2026-02-26 16:27:05 +01:00
2026-02-24 23:20:11 +01:00
2026-02-27 14:46:09 +01:00
2026-03-04 20:08:24 +01:00
2026-02-21 18:32:03 +01:00
2026-02-21 18:32:03 +01:00
2026-02-25 17:29:14 +01:00
2026-02-23 16:38:38 +01:00
2026-02-21 21:33:25 +01:00
2026-02-21 18:32:03 +01:00
2026-02-24 23:20:11 +01:00

ZShell

A feature-rich desktop shell for Hyprland built with Quickshell and Qt6/QML. Provides a modern, Material Design 3 inspired status bar, application launcher, notification center, wallpaper manager with dynamic color theming, and lock screen.

Features

  • Status Bar - Configurable top panel with workspace indicators, audio controls, system resource monitors (CPU/RAM/GPU), system tray, clock with calendar, and notification bell
  • Application Launcher - Fuzzy search with app frequency tracking, special search prefixes for filtering by category, description, keywords, etc.
  • Notification Center - Full notification daemon with grouped notifications, popups, persistent storage, and Do Not Disturb mode
  • Wallpaper Manager - Browse and select wallpapers with live preview carousel
  • Dynamic Color Theming - Automatic Material Design 3 color palette generation from wallpapers
  • Lock Screen - Secure session lock with PAM authentication
  • Hyprland Integration - Deep integration with Hyprland for workspaces, window focus, keyboard state, and more

Dependencies

  • Qt 6.9+
  • Quickshell
  • Hyprland
  • Python 3 with materialyoucolor and Pillow (for dynamic color generation)
  • PipeWire (for audio)
  • Aubio
  • DDCUtil
  • Mpris

Installation

Arch Linux

For arch-based distros, there is a pkgbuild available at

cmake -B build -G Ninja
ninja -C build
sudo ninja -C build install

This installs the QML plugin to /usr/lib/qt6/qml.

NixOS

In your flake.nix file, add the following in your inputs.

inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    z-bar-qt = {
        url = "github:Zacharias-Brohn/z-bar-qt/";
        inputs.nixpkgs.follows = "nixpkgs";
    };
};

Below a full example of what it could look like.

{
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
    z-bar-qt = {
        url = "github:Zacharias-Brohn/z-bar-qt/";
        inputs.nixpkgs.follows = "nixpgks";
    };
  };

  outputs =
    inputs@{
      nixpkgs,
      self,
      ...
    }:
    let
      system = "x86_64-linux";
      pkgs = import nixpkgs { inherit system; };
    in
    {
      nixosConfigurations.nixos = nixpkgs.lib.nixosSystem {
        specialArgs = {
          inherit inputs;
          inherit system;
        };
        modules = [
          ./configuration.nix
        ];
      };
    };
}

Now you can add z-bar-qt as a nixpkg in environment.systemPackages (or optionally in your homePackages).

{ pkgs, inputs, ... }:

{
    environment.systemPackages = with pkgs; [
    inputs.z-bar-qt.packages.${system}.zshell
    inputs.z-bar-qt.packages.${system}.zshell-cli
    ];
}

You can now run zshell to run the bar. zshell-cli can be used for additional options.

Configuration

Configuration is stored in ~/.config/z-bar/config.json. Options include:

Option Description
appCount Max apps shown in launcher
wallpaperPath Directory containing wallpapers
baseBgColor / baseBorderColor Fallback colors when dynamic colors disabled
accentColor Custom accent color override
useDynamicColors Enable Material Design 3 theming from wallpaper
barConfig Enable/disable widgets and configure popouts
transparency UI transparency levels
baseFont System font
animScale Animation speed multiplier
gpuType GPU type for resource monitoring (amd, nvidia, intel)

Launcher Search Prefixes

Prefix Filter
>i App ID
>c Categories
>d Description/comment
>e Exec command
>w WM class
>g Generic name
>k Keywords
>t Terminal apps only
>wallpaper Wallpaper picker

Project Structure

├── shell.qml          # Main entry point
├── Bar.qml            # Status bar
├── Wallpaper.qml      # Wallpaper display layer
├── Components/        # Reusable UI components
├── Config/            # Configuration singletons
├── Modules/           # Main functional modules (Launcher, NotificationCenter, etc.)
├── Daemons/           # Background services (notifications, audio)
├── Helpers/           # Utility singletons
├── Plugins/ZShell/    # Native C++ plugins
└── scripts/           # Helper scripts (color generation, fuzzy search)

Inspiration and Acknowledgements

This project was inspired by the following repositories and resources, which helped me learn both Quickshell and QML:

Thank you to the maintainers and contributors of these projects for sharing their work.

License

See repository for license information.

S
Description
No description provided
Readme GPL-3.0 110 MiB
Languages
QML 77.5%
C++ 11.7%
JavaScript 7.3%
Python 2.2%
Nix 0.6%
Other 0.6%