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
987 downloads per month
1.5MB
5K
SLoC
Hyprshell
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
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