From af23c899fa687b4fe745d2b64bab7434921b0fda Mon Sep 17 00:00:00 2001 From: littleblack111 Date: Mon, 7 Oct 2024 16:10:27 +0800 Subject: refactor(rules): made all generic rules use tags fix(spotify): spotify -> spotify.* --- dot-config/hypr/rules.conf | 225 +++++++++++++++++++++------------------------ 1 file changed, 104 insertions(+), 121 deletions(-) diff --git a/dot-config/hypr/rules.conf b/dot-config/hypr/rules.conf index 7c493103..0ba599c9 100644 --- a/dot-config/hypr/rules.conf +++ b/dot-config/hypr/rules.conf @@ -7,147 +7,136 @@ windowrulev2 = suppressevent maximize, class:.* # You'll probably like this. -# Terminal applications on workspace 1 -windowrulev2 = workspace 1, class:(Alacritty|Xfce4-terminal|Kitty) +# Tag +# workspaces +windowrulev2 = workspace 1, tag:terminal +windowrulev2 = workspace 2, tag:web +windowrulev2 = workspace 3, tag:file +windowrulev2 = workspace 4, tag:code +windowrulev2 = workspace 5, tag:office +windowrulev2 = workspace 6, tag:communication +windowrulev2 = workspace 7, tag:media +windowrulev2 = workspace 8, tag:games +windowrulev2 = workspace 9, tag:system +windowrulev2 = workspace 10, tag:misc + +# GUI Utils +windowrulev2 = opacity 0.85 0.75, tag:gui-utils +windowrulev2 = pin, tag:gui-utils +windowrulev2 = size 53% 60%, tag:gui-utils +windowrulev2 = move 46.5% 5%, tag:gui-utils +windowrulev2 = animation slide right top, tag:gui-utils + +# media contents +windowrulev2 = float, tag:media-contents +windowrulev2 = pin, tag:media-contents +windowrulev2 = move 100%-w-$outer_gaps, tag:media-contents +windowrulev2 = noinitialfocus, tag:media-contents +windowrulev2 = noshadow, tag:media-contents + +# fake fullscreen +windowrulev2 = fullscreenstate 0 2, tag:fakefullscreen -# Web browsers on workspace 2 -windowrulev2 = workspace 2, class:($browser|Brave-browser|chromium|firefox) +# Games +windowrulev2 = fullscreen, tag:games +# Tearing (for better gaming performance) +windowrulev2 = immediate, tag:games + +# time-sensitive app rules +windowrulev2 = stayfocused, tag:time-sensitive +windowrulev2 = pin, tag:time-sensitive +windowrulev2 = dimaround, tag:time-sensitive +windowrulev2 = center, tag:time-sensitive +windowrulev2 = float, tag:time-sensitive + +# cli util apps +windowrulev2 = float, tag:cli-utils +windowrulev2 = pin, tag:cli-utils +windowrulev2 = dimaround, tag:cli-utils -# File managers on workspace 3 -windowrulev2 = workspace 3, class:($fileManager|Pcmanfm|Thunar|qBittorrent|Caja) +# hidden +windowrulev2 = movetoworkspacesilent, special:minimized, tag:hidden -# Code editors on workspace 4 -windowrulev2 = workspace 4, class:(Geany|code|code-url-handler|cursor-url-handler|code-oss|Code - OSS|install4j-burp-StartBurp|burp-StartBurp|Unity|jetbrains-pycharm-ce|Postman) +# Group +# windowrule = group, ^virt-manager$ -# Office applications on workspace 5 -windowrulev2 = workspace 5, class:(Gucharmap|Atril|Evince|libreoffice-writer|libreoffice-calc|libreoffice-impress|libreoffice|Soffice|Typora|obsidian|figma-linux|anytype|craft-nativefier-e0958b) +# Terminal applications +windowrulev2 = tag terminal, class:^(Alacritty|Xfce4-terminal|Kitty)$ -# Communication apps on workspace 6 -windowrulev2 = workspace 6, class:(Thunderbird|TelegramDesktop|Hexchat|discord|vesktop|VencordDesktop|Chat-gpt|Whatsapp-for-linux|Chatbox) +# Web browsers +windowrulev2 = tag web, class:^($browser|Brave-browser|chromium|firefox)$ -# Media applications on workspace 7 -windowrulev2 = workspace 7, class:(Audacity|Music|MPlayer|Lxmusic|Inkscape|Gimp|Blender|obs|zoom|Zoom|Pitivi|kdenlive|openshot|vlc|cider|Cider|shotwell|Shotwell|fr.handbrake.ghb) -windowrulev2 = workspace 7, title:(Spotify|Spotify Premium) +# File managers +windowrulev2 = tag file, class:^($fileManager|Pcmanfm|Thunar|qBittorrent|Caja)$ -# Games on workspace 8 -windowrulev2 = workspace 8, class:(Minecraft|Badlion|War|steam_proton|steam|csgo_linux64|minecraft-launcher|lutris|genshinimpact.exe|moe.launcher.an-anime-game-launcher|lunarclient|zenlesszonezero.exe|moe.launcher.sleepy-launcher|sober) +# Code editors +windowrulev2 = tag code, class:^(Geany|code|code-url-handler|cursor-url-handler|code-oss|Code - OSS|install4j-burp-StartBurp|burp-StartBurp|Unity|jetbrains-pycharm-ce|Postman)$ + +# Office applications +windowrulev2 = tag office, class:^(Gucharmap|Atril|Evince|libreoffice-writer|libreoffice-calc|libreoffice-impress|libreoffice|Soffice|Typora|obsidian|figma-linux|anytype|craft-nativefier-e0958b)$ + +# Communication apps +windowrulev2 = tag communication, class:^(Thunderbird|TelegramDesktop|Hexchat|discord|vesktop|VencordDesktop|Chat-gpt|Whatsapp-for-linux|Chatbox)$ + +# Media applications +windowrulev2 = tag media, class:^(Audacity|Music|MPlayer|Lxmusic|Inkscape|Gimp|Blender|obs|zoom|Zoom|Pitivi|kdenlive|openshot|vlc|cider|Cider|shotwell|Shotwell|fr.handbrake.ghb)$ +windowrulev2 = tag media, title:^(Spotify.*)$ + +# Games +windowrulev2 = tag games, class:^(Minecraft|Badlion|War|steam_proton|steam|csgo_linux64|minecraft-launcher|lutris|genshinimpact.exe|moe.launcher.an-anime-game-launcher|lunarclient|zenlesszonezero.exe|moe.launcher.sleepy-launcher|sober)$ -# System/Settings applications on workspace 9 -windowrulev2 = workspace 9, class:(virt-manager|blueman-adapters|GParted|Xdm-app|timeshift-gtk|com.nextcloud.desktopclient.nextcloud|gearlever|Lxappearance|Lxtask|Lxrandr|Arandr|System-config-printer.py|Pavucontrol|Exo-helper-1|Protonvpn|Xfce4-power-manager-settings|Mysql-workbench-bin|Grub-customizer|Nitrogen|archlinux-tweak-tool.py|pamac-manager|helvum|Vmware|btrfs-assistant|Bitwarden|wootility-lekker|nwg-look|com.github.wwmm.easyeffects|kvantummanager) +# System/Settings applications +windowrulev2 = tag system, class:^(virt-manager|blueman-adapters|GParted|Xdm-app|timeshift-gtk|com.nextcloud.desktopclient.nextcloud|gearlever|Lxappearance|Lxtask|Lxrandr|Arandr|System-config-printer.py|Pavucontrol|Exo-helper-1|Protonvpn|Xfce4-power-manager-settings|Mysql-workbench-bin|Grub-customizer|Nitrogen|archlinux-tweak-tool.py|pamac-manager|helvum|Vmware|btrfs-assistant|Bitwarden|wootility-lekker|nwg-look|com.github.wwmm.easyeffects|kvantummanager)$ -# Miscellaneous applications on workspace 10 -windowrulev2 = workspace 10, class:(maxautoclicker|os_server|Os_server) +# Miscellaneous applications +windowrulev2 = tag misc, class:^(maxautoclicker|os_server|Os_server)$ # floating applications -windowrulev2 = float, class:(alacritty-float|Pcmanfm|Onboard|Yad|zoom|Xdm-app|wechat|WeChat|sxiv|Sxiv|Firefox:Places|Viewnior|feh|Nm-connection-editor|install4j-burp-StartBurp|thorium-app.shortwave.com__-Default|thorium-mdpkiolbdkhdjpekfbkbmhigcaggjagi-Profile_1|float|thorium-lnachpgegbbmnnlgpokibfjlmppeciah-Default|Beeper|electron) -windowrulev2 = float, title:(Steam Settings) +windowrulev2 = float, class:^(alacritty-float|Pcmanfm|Onboard|Yad|zoom|Xdm-app|wechat|WeChat|sxiv|Sxiv|Firefox:Places|Viewnior|feh|Nm-connection-editor|install4j-burp-StartBurp|thorium-app.shortwave.com__-Default|thorium-mdpkiolbdkhdjpekfbkbmhigcaggjagi-Profile_1|float|thorium-lnachpgegbbmnnlgpokibfjlmppeciah-Default|Beeper|electron)$ +windowrulev2 = float, title:^(Steam Settings)$ # specificly sized -windowrulev2 = size 40% 40%, class:(alacritty-float) +windowrulev2 = size 40% 40%, class:^(alacritty-float)$ # Sticky applicationsp -# App that have menu on top for stayfocused +# App that have menu on top for stayfocused, without this, menus will dissappear when you move ur mouse windowrulev2 = stayfocused, title:(menu) - # GUI Utils applications -windowrulev2 = opacity 0.85 0.75, class:^Beeper$ -windowrulev2 = opacity 0.85 0.75, class:(thorium-app.shortwave.com__-Default|thorium-mdpkiolbdkhdjpekfbkbmhigcaggjagi-Profile_1|thorium-lnachpgegbbmnnlgpokibfjlmppeciah-Default|Beeper) -windowrulev2 = pin, class:(thorium-app.shortwave.com__-Default|thorium-mdpkiolbdkhdjpekfbkbmhigcaggjagi-Profile_1|thorium-lnachpgegbbmnnlgpokibfjlmppeciah-Default|Beeper) -windowrulev2 = size 53% 60%, class:(thorium-app.shortwave.com__-Default|thorium-mdpkiolbdkhdjpekfbkbmhigcaggjagi-Profile_1|thorium-lnachpgegbbmnnlgpokibfjlmppeciah-Default|Beeper) # custom animation -windowrulev2 = move 46.5% 5%, class:(thorium-app.shortwave.com__-Default|thorium-mdpkiolbdkhdjpekfbkbmhigcaggjagi-Profile_1|thorium-lnachpgegbbmnnlgpokibfjlmppeciah-Default|Beeper) -windowrulev2 = animation slide right top, class:(thorium-app.shortwave.com__-Default|thorium-mdpkiolbdkhdjpekfbkbmhigcaggjagi-Profile_1|thorium-lnachpgegbbmnnlgpokibfjlmppeciah-Default|Beeper|blobdrop|dragon) +windowrulev2 = tag gui-utils, class:^(thorium-app.shortwave.com__-Default|thorium-mdpkiolbdkhdjpekfbkbmhigcaggjagi-Profile_1|thorium-lnachpgegbbmnnlgpokibfjlmppeciah-Default|Beeper)$ +windowrulev2 = animation slide right top, tag:gui-utils # bitwarden chrome extension popup -windowrulev2 = pin, class:(thorium-nngceckbapebfimnlniiiahkandclblb-Default) -windowrulev2 = float, class:(thorium-nngceckbapebfimnlniiiahkandclblb-Default) -windowrulev2 = stayfocused, class:(thorium-nngceckbapebfimnlniiiahkandclblb-Default) +windowrulev2 = pin, class:^(thorium-nngceckbapebfimnlniiiahkandclblb-Default)$ +windowrulev2 = float, class:^(thorium-nngceckbapebfimnlniiiahkandclblb-Default)$ +windowrulev2 = stayfocused, class:^(thorium-nngceckbapebfimnlniiiahkandclblb-Default)$ -# for hyprshot -windowrulev2 = float, class:(blobdrop|dragon) -windowrulev2 = pin, class:(blobdrop|dragon) -windowrulev2 = move 100%-w-$outer_gaps, class:(blobdrop|dragon) -windowrulev2 = noinitialfocus, class:(blobdrop|dragon) +# for media contents +windowrulev2 = tag media-contents, class:^(blobdrop|dragon)$ +# PIP +windowrulev2 = tag media-contents, title:^(Picture in picture)$ +windowrulev2 = size 25% 25%, title:^(Picture in picture)$ # removes title/border -windowrulev2 = fullscreenstate 0 2, class:(thorium-mdpkiolbdkhdjpekfbkbmhigcaggjagi-Profile_1|thorium-lnachpgegbbmnnlgpokibfjlmppeciah-Default) +windowrulev2 = tag fakefullscreen, class:^(thorium-mdpkiolbdkhdjpekfbkbmhigcaggjagi-Profile_1|thorium-lnachpgegbbmnnlgpokibfjlmppeciah-Default) # Full screen applications - -# Games -windowrulev2 = fullscreen, class:(genshinimpact.exe) -windowrulev2 = fullscreen, class:(zenlesszonezero.exe) -windowrulev2 = fullscreen, class:(sober) - -# Special rules for Conky and stalonetray -windowrulev2 = float, class:(Conky), manage=off -windowrulev2 = float, class:(stalonetray), manage=off - -# PIP -windowrulev2 = pin, initialClass:^()$, title:^(Picture in picture)$ -windowrulev2 = move 100%-w-$outer_gaps, initialClass:^()$, title:^(Picture in picture)$ -windowrulev2 = size 25% 25%, initialClass:^()$, title:^(Picture in picture)$ -windowrulev2 = noinitialfocus, initialClass:^()$, title:^(Picture in picture)$ -windowrulev2 = float, title:^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$ -windowrulev2 = noshadow, title:^([Pp]icture[-\s]?[Ii]n[-\s]?[Pp]icture)(.*)$ - # time-sensitive app rules -windowrulev2 = float, class:^(org.freedesktop.impl.portal.desktop.kde)$ -windowrulev2 = stayfocused, class:^polkit-gnome-authentication-agent-1$ -windowrulev2 = stayfocused, class:^(pinentry.*) -windowrulev2 = float, class:^(pinentry.*) -windowrulev2 = stayfocused, class:^(xdg-desktop-portal.*)$ -windowrulev2 = stayfocused, class:^(hyprland-share-picker.*)$ -windowrulev2 = stayfocused, class:^(org.freedesktop.impl.portal.desktop.kde)$ -windowrule = stayfocused, title:^(Open File)(.*)$ -windowrule = stayfocused, title:^Open$ -windowrule = stayfocused, title:^(Select a File)(.*)$ -windowrule = stayfocused, title:^(Choose wallpaper)(.*)$ -windowrule = stayfocused, title:^(Open Folder)(.*)$ -windowrule = stayfocused, title:^(Save As)(.*)$ -windowrule = stayfocused, title:^(Save File)(.*)$ -windowrule = stayfocused, title:^(Library)(.*)$ -windowrule = stayfocused, title:^(File Upload)(.*)$ -windowrulev2 = pin, class:^polkit-gnome-authentication-agent-1$ -windowrulev2 = pin, class:^(pinentry-) -windowrulev2 = pin, class:^(xdg-desktop-portal.*)$ -windowrulev2 = pin, class:^(hyprland-share-picker.*)$ -windowrulev2 = pin, class:^(org.freedesktop.impl.portal.desktop.kde)$ -windowrulev2 = dimaround, class:^polkit-gnome-authentication-agent-1$ -windowrulev2 = dimaround, class:^(pinentry-) -windowrulev2 = dimaround, class:^(xdg-desktop-portal.*)$ -windowrulev2 = dimaround, class:^(hyprland-share-picker.*)$ -windowrule = center, title:^(Open File)(.*)$ -windowrule = center, title:^Open$ -windowrule = center, title:^(Select a File)(.*)$ -windowrule = center, title:^(Choose wallpaper)(.*)$ -windowrule = center, title:^(Open Folder)(.*)$ -windowrule = center, title:^(Save As)(.*)$ -windowrule = center, title:^(Save File)(.*)$ -windowrule = center, title:^(Library)(.*)$ -windowrule = center, title:^(File Upload)(.*)$ -windowrulev2 = float, class:^(xdg-desktop-portal.*)$ -windowrule=float,title:^(Open File)(.*)$ -windowrule=float,title:^Open$ -windowrule=float,title:^(Select a File)(.*)$ -windowrule=float,title:^(Choose wallpaper)(.*)$ -windowrule=float,title:^(Open Folder)(.*)$ -windowrule=float,title:^(Save As)(.*)$ -windowrule=float,title:^(Save File)(.*)$ -windowrule=float,title:^(Library)(.*)$ -windowrule=float,title:^(File Upload)(.*)$ +windowrulev2 = tag time-sensitive, class:^(org.freedesktop.impl.portal.desktop.kde|polkit-gnome-authentication-agent-1|pinentry-|xdg-desktop-portal.*|hyprland-share-picker.*)$ +windowrulev2 = tag time-sensitive, title:^(Open File|Open|Select a File|Choose wallpaper|Open Folder|Save As|Save File|Library|File Upload)$ +windowrulev2 = dimaround, tag:time-sensitive + # rofi -# windowrulev2 = float, class:(Rofi) -# windowrulev2 = pin, class:(Rofi) -# windowrulev2 = dimaround, class:(Rofi) +# windowrulev2 = float, class:^(Rofi) +# windowrulev2 = pin, class:^(Rofi) +# windowrulev2 = dimaround, class:^(Rofi) # util apps -windowrulev2 = float, title:(nmd|cliphist|pulsemixer|ranger|btop) -windowrulev2 = stayfocused, title:(btop) -windowrulev2 = pin, title:(nmd|cliphist|pulsemixer|ranger|btop) -windowrulev2 = dimaround, title:(nmd|cliphist|pulsemixer|ranger|btop) +windowrulev2 = tag cli-utils, title:^(nmd|cliphist|pulsemixer|ranger|btop)$ +windowrulev2 = dimaround, tag:cli-utils +windowrulev2 = stayfocused, title:^(btop)$ -# windowrulev2 = stayfocused, title:(rofi - Command|rofi - Confirmation|rofi - ArchLinux (hyprland)) +# windowrulev2 = stayfocused, title:^(rofi - Command|rofi - Confirmation|rofi - ArchLinux (hyprland)) # No shadow for tiled window windowrulev2 = noshadow,floating:0 @@ -169,7 +158,8 @@ windowrulev2 = opacity 0.85 0.75, class:^discord$ windowrulev2 = opacity 0.90 0.80, class:^Caja$ windowrulev2 = opacity 0.80 0.70, class:^polkit-gnome-authentication-agent-1$ windowrulev2 = opacity 0.80 0.70, title:^Open$ -windowrulev2 = opacity 0.8 0.5, title:New Tab +windowrulev2 = opacity 0.8 0.5, title:^New Tab - Thorium$ +# windowrulev2 = ignorezero, title:Annotation - Zoom # Layer rules/blur @@ -206,14 +196,7 @@ windowrulev2 = maxsize 1 1, class:^(xwaylandvideobridge)$ windowrulev2 = noblur, class:^(xwaylandvideobridge)$ # Tearing (for better gaming performance) -windowrule = immediate,.*\.exe -windowrulev2 = immediate,class:(steam_app) -windowrulev2 = immediate,class:(steam) -windowrulev2 = immediate,class:(Minecraft.*) -windowrulev2 = immediate,class:(genshinimpact.exe) -windowrulev2 = immediate,class:(zenlesszonezero.exe) -windowrulev2 = immediate,class:(sober) -windowrulev2 = immediate,class:(Lunar Client.*) -windowrulev2 = immediate,class:(lunarclient) +windowrule = tag games, .*\.exe +# No transparency for fullscreen windows windowrulev2 = plugin:chromakey,fullscreen:0 -- cgit v1.2.3