#hyprland #generate #unused #hyprshell

app hyprshell

hyprshell is a Rust-based GUI designed to enhance window management in hyprland

12 releases (6 breaking)

new 0.7.0 May 10, 2025
0.6.3 May 10, 2025
0.5.0 May 5, 2025
0.4.2 May 1, 2025
0.1.1 Apr 20, 2025

#247 in Web programming

Download history 445/week @ 2025-04-19 275/week @ 2025-04-26 267/week @ 2025-05-03

987 downloads per month

MIT and GPL-3.0-or-later

1.5MB
5K SLoC

Hyprshell

crates.io Docs

image.png

Overview

Hyprshell (previously hyprswitch) is a Rust-based GUI designed to enhance window management in Hyprland. It provides a powerful and customizable interface for switching between windows using keyboard shortcuts and GUI. The application also includes a launcher for running applications directly from the GUI.

Features

  • Window Switching: Switch between windows using keyboard shortcuts in a GUI.
  • Customizable Keybindings: Define your own keybindings for window switching and GUI interactions.
  • Config: Interactive config file generation for easy setup.
  • Launcher Integration: Launch applications directly from the GUI, sorted by usage frequency.
  • Sorting and Filtering: windows sorted by position, can be filtered by class, workspace, or monitor.
  • Theming: Customize the GUI appearance using CSS.
  • Dynamic Configuration: Automatically reloads configuration/style changes without restarting the application.

Installation

From Source

gtk4, gtk4-layer-shell[1.1.1] and socat must be installed

cargo install hyprshell

Arch Linux (TODO Add)

paru -S hyprshell
# or
yay -S hyprshell

NixOS

  • Supported Architectures: x86_64-linux, aarch64-linux

With Flakes

flake.nix:

{
  inputs = {
    nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
    hyprshell.url = "github:H3rmt/hyprswitch?ref=hyprshell";
  };

  outputs = { nixpkgs, hyprshell }: {
    nixosConfigurations.hostname = nixpkgs.lib.nixosSystem {
      system = "x86_64-linux";
      modules = [{ environment.systemPackages = [ hyprshell.packages.x86_64-linux.default ]; }];
    };
  };
}

Without Flakes

configuration.nix:

{pkgs, ...}: let
  flake-compat = builtins.fetchTarball "https://github.com/edolstra/flake-compat/archive/master.tar.gz";
  hyprshell = (import flake-compat {
    src = builtins.fetchTarball "https://github.com/H3rmt/hyprswitch/archive/hyprshell.tar.gz";
  }).defaultNix;
in {
   environment.systemPackages = [hyprshell.packages.${pkgs.system}.default];
}

Usage

Run hyprshell --help to see available commands and options.

Config generation

To generate a default configuration file, run:

hyprshell config generate

This launches an interactive prompt to set up your configuration. The generated file will be located at ~/.config/hypr/hyprshell.conf.

If you want to modify these settings look at the Documentation for the config file.

Config validation

To validate your configuration file, run:

hyprshell config check

This checks for any syntax errors or issues in your configuration file and shows a explanation of how to use hyprshell.

Initialization

Add the following to your Hyprland configuration (~/.config/hypr/hyprland.conf):

exec-once = hyprshell run &

Or enable the systemd service (generated with hyprshell config generate):

systemctl --user enable --now hyprshell.service

image.png image.png

Env Variables

  • HYPRSHELL_NO_LISTENERS: Disable all config listeners (config file, css file, hyprland config, monitor count)
  • HYPRSHELL_SOCAT_PATH: Override the path to socat set during build-time.
  • HYPRSHELL_SHOW_OUTPUT: Show the output of an opened application in the terminal.

Feature Flags

  • default: ["toml_config", "generate_config_command", "launcher_calc"]
  • generate_config_command: Adds the hyprshell config generate command to interactively generate a config file.
  • toml_config: Adds support for a toml config file.
  • launcher_calc: Adds support for the calc plugin in the launcher.
  • debug_command: Adds the hyprshell debug command to debug icons in the window mode.
  • bar: Unused

Dependencies

~27–40MB
~757K SLoC