2026-02-14 15:30:40 +01:00
2026-02-05 15:47:32 +01:00
2026-02-05 15:47:32 +01:00
2026-02-14 00:14:18 +01:00
2026-02-14 00:14:18 +01:00
2026-02-14 00:14:18 +01:00
2026-01-20 16:59:16 +01:00
2025-12-11 12:57:51 +01:00
2026-02-07 01:13:49 +01:00
2025-11-19 17:01:20 +01:00
2026-02-11 17:09:04 +01:00
2026-02-11 22:57:20 +01:00
2025-12-11 12:57:51 +01:00
2026-02-14 12:54:19 +01:00
2026-02-12 14:31:33 +01:00
nix
2026-02-06 17:17:38 +01:00
nix
2026-02-06 17:44:02 +01:00
2026-02-07 01:13:49 +01:00
2025-12-06 00:04:24 +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)

Installation

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 nixpkgs in environment.systemPackages (or optionally in your homePackages).

{ pkgs, inputs, ... }:

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

You can now run zshell to run the bar.

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

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%