This project need your help. See here #117
πΉοΈThis is a toy for Hyprland.
This app automatically rename workspaces with icons of started applications - tested with waybar and eww.
You have to set the config file with your prefered rules based on class and title. Regex (match and captures) are supported.
https://github.com/hyprland-community/hyprland-autoname-workspaces/wiki/FAQ
Available as AUR package under the program name hyprland-autoname-workspaces-git.
You can then use the service systemctl --user enable --now hyprland-autoname-workspaces.service.
Package available here https://copr.fedorainfracloud.org/coprs/solopasha/hyprland/.
Available in nixpkgs as hyprland-autoname-workspaces.
You can add it to your systemPackages or try it without installing it with nix run.
$ nix run nixpkgs#hyprland-autoname-workspaces$ cargo install --locked hyprland-autoname-workspaces$ hyprland-autoname-workspacesFirst, you have to set your waybar for example, with the good module hyprland/workspaces. The module wlr/workspaces is deprecated.
You have to use hyprland/workspaces module with as config "format" = "{name}".
"hyprland/workspaces": {
"format": "{name}",
}
For all parameters, check the config.toml.example in this repository.
The config file can be specified using the -c <CONFIG> option, otherwise it defaults to ~/.config/hyprland-autoname-workspaces/config.toml. If you specify a path that doesn't exist, a default configuration file will be generated.
You can use regex everywhere, and its case sensitive by default
Edit the mapping of applications with class = "icon" in the [icons] part.
In icons value, you can use the placeholders {class}, {title} and {match1}, {match2} if you use regex captures.
Example:
[class]
DEFAULT = "{class}: {title}"
...
- You can exclude applications in the
[exclude]withclass = title.
In the exclude part, the key is the window class, and the value the title.
You can use "" in order to exclude window with empty title and ".*" as value to match all title of a class name.
Example:
...
[exclude]
"(?i)fcitx" = ".*" # will match all title for fcitx
"[Ss]team" = "Friends list.*"
"[Ss]team" = "^$" # will match and exclude all Steam class with empty title (some popups)
- You can match on title with
[title_in_class.classname]and[title_in_class_active.class]with"a word in the title" = "icons".
Hint: There is also title_in_initial_class, initial_title_in_class, initial_title_in_initial_class and so on.
Example:
...
[title."(xterm|(?i)kitty|alacritty)"]
"(?i)neomutt" = "mail"
ncdu = "file manager"
[title."(firefox|chrom.*)"]
youtube = "yt"
google = "gg"
[title_active."(firefox|chrom.*)"]
youtube = "<span color='red'>yt</span>"
google = "<span color='blue'>{icon}</span>"
...
- You can deduplicate icons with the
dedupparameter in therootsection of config file.
dedup = true
dedup_inactive_fullscreen = true
...
[title."(xterm|(?i)kitty|alacritty)"]
"(?i)neomutt" = "mail"
ncdu = "file manager"
...
- You can also redefine all the default formatter with those
[format]section formatters parameters. The available list of{placeholder}is:
workspace:
- client
- id (or id_long)
- name (use value from
[workspaces_name]mapping) - delim
clients:
- icon
- counter_s, counter_unfocused_s, counter, counter_unfocused
- class, iitle
- delim
- match1, match2, match3, matchN (for regex captures)
[format]
# max_clients = 10 (default: usize::MAX)
dedup = true
dedup_inactive_fullscreen = true
delim = "β―" # NARROW NO-BREAK SPACE
workspace = "<span color='red'>{id}:</span>{delim}{clients}"
workspace_empty = "<span color='red'>{id}</span>"
client = "{icon}{delim}"
client_active = "<span color="red">{icon}</span>{delim}"
client_dup = "{icon}{counter_sup}{delim}"
client_dup_fullscreen = "[{icon}]{delim}{icon}{counter_unfocused_sup}"
client_fullscreen = "[{icon}]{delim}"
...
See config.toml.example and the wiki for more example, feel free to share your config !
No need to restart the applications then, there is an autoreload.
Hint: You can use glyphsearch and copy the unicode icon of your font for example https://glyphsearch.com/?query=book©=unicode
Hint: You can find hyprland class names for currently running apps using: hyprctl clients | grep -i class, or you can also use hyprland-autoname-workspaces --verbose.
Hint: Feel free to adapt and use this script to generate your config file. This is untested for the moment.
Hint: You can bootstrap your [icons] with the contrib/generate_icons.py script.
Hint: All styling param that you can use with <span> are here: https://docs.gtk.org/Pango/pango_markup.html