nix-conf/home/user/hypr/windowrule.nix
2025-11-24 20:27:02 +08:00

120 lines
4.3 KiB
Nix

{ ... }:
let
top = "60";
right = "100%-w-10";
notransTag = "notrans";
in
{
wayland.windowManager.hyprland.settings = {
windowrule = [
"match:class ^(org.fcitx.), pseudo true"
"match:class file_progress, float true"
"match:class confirm, float true"
"match:class dialog, float true"
"match:class download, float true"
"match:class notification, float true"
"match:class error, float true"
"match:class splash, float true"
"match:class confirmreset, float true"
"match:title Open File, float true"
"match:title branchdialog, float true"
"match:class pavucontrol-qt, float true"
"match:class pavucontrol, float true"
"match:class file-roller, float true"
"match:title wlogout, fullscreen true"
"match:title wlogout, float true"
"match:title wlogout, fullscreen true"
"match:title ^(Media viewer)$, float true"
"match:title ^(File Operation Progress)$, float true"
"match:class ^(it.mijorus.smile), float true"
"match:class ^(xdg-desktop-portal-gtk)$, float true"
"match:title ^(Steam Settings)$, float true"
"fullscreen true, match:initial_class ^(cs2)$"
# Zen browser
"opacity 0.9999 override, match:initial_class ^(zen)(.*)"
# Ghostty
"opacity 0.9999 override, match:initial_class ^(com.mitchellh.ghostty)$"
# Picture in picture windows
"float true, match:title ^(Picture-in-Picture)$"
"pin true, match:title ^(Picture-in-Picture)$"
"float true, match:class ^(vesktop)$, match:title ^(Discord Popout)$"
"pin true, match:class ^(vesktop)$, match:title ^(Discord Popout)$"
"float true, match:class ^(steam)$, match:title ^(Friends List)$"
# Meidia control
"move ${right} ${top}, match:class ^(org.pulseaudio.pavucontrol)$"
"size 30% 33%, match:class ^(org.pulseaudio.pavucontrol)$"
# Local Send (File Sharing)
"move ${right} 8%, match:class ^(localsend_app)$"
"size 20% 80%, match:class ^(localsend_app)$"
# Bluetooth
"move ${right} ${top}, match:class ^(blueberry.py)$"
"size 25% 45%, match:class ^(blueberry.py)$"
# Media Control
"float true, match:class ^(org.pulseaudio.pavucontrol)$"
"pin true, match:class ^(org.pulseaudio.pavucontrol)$"
"animation slide top 20%, match:class ^(org.pulseaudio.pavucontrol)$"
# Local Send (File Sharing)
"float true, match:class ^(localsend_app)$"
"pin true, match:class ^(localsend_app)$"
"animation slide right 20%, match:class ^(localsend_app)$"
# Airplay
"move ${right} 10%, match:class ^(GStreamer)$"
"size 21% 80%, match:class ^(GStreamer)$"
"pin true, match:class ^(GStreamer)$"
"float true, match:class ^(GStreamer)$"
"opacity 1.0 override 1.0 override, match:class ^(GStreamer)$"
"no_blur true, match:class ^(GStreamer)$"
"animation slide right 20%, match:class ^(GStreamer)$"
"keep_aspect_ratio true, match:class ^(GStreamer)$"
# Bluetooth
"float true, match:class ^(blueberry.py)$"
"pin true, match:class ^(blueberry.py)$"
"animation slide top 20%, match:class ^(blueberry.py)$"
# Steam
"workspace 7 silent, match:class ^(steam)$"
"workspace unset, match:class ^(steam)$, match:float true"
# steam game
"workspace 7 silent, match:class ^(steam_app_)(.*)"
# VLC
"workspace 3, match:initial_class ^(vlc), match:float false"
# discord
"workspace 4 silent, match:initial_class ^(discord), match:float false"
# Davinci resolve
"center 1, match:initial_class ^(resolve), match:float true"
# Disable Tansparent
"opacity 1.0 override 1.0 override, match:tag ${notransTag}"
"no_blur true, match:tag ^(${notransTag})$"
];
layerrule = [
"match:namespace waybar, blur on"
"match:namespace logout_dialog, blur on"
"match:namespace rofi, blur on"
"match:namespace rofi, ignore_alpha 0"
"match:namespace swaync-control-center, blur on"
"match:namespace swaync-notification-window, blur on"
"match:namespace swaync-control-center, ignore_alpha 0"
"match:namespace swaync-notification-window, ignore_alpha 0"
"match:namespace swaync-control-center, ignore_alpha 0.1"
"match:namespace swaync-notification-window, ignore_alpha 0.1"
];
};
}