diff --git a/.config/environment b/.config/environment index fc75632..5ea1d56 100644 --- a/.config/environment +++ b/.config/environment @@ -37,12 +37,8 @@ export MOZ_ENABLE_WAYLAND=1 export PASSWORD_STORE_GENERATED_LENGTH='64' export PS1='\$ ' -export QT_QPA_PLATFORM="wayland;xcb" -#export QT_QPA_PLATFORM="xcb" export QT_QPA_PLATFORMTHEME="qt5ct" -#export SDL_VIDEODRIVER="wayland" - export TERMINAL="alacritty" export TIME_STYLE="long-iso" diff --git a/.config/hypr/base.conf b/.config/hypr/base.conf index f5ed44c..d54803c 100644 --- a/.config/hypr/base.conf +++ b/.config/hypr/base.conf @@ -1,89 +1,7 @@ source = ~/.config/hypr/dracula.conf - -# See https://wiki.hyprland.org/Configuring/Monitors/ -#monitor=,preferred,auto,auto - -# See https://wiki.hyprland.org/Configuring/Keywords/ for more - -# Execute your favorite apps at launch -# exec-once = waybar & hyprpaper & firefox - -# Some default env vars. -env = XCURSOR_SIZE,24 - -# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ -input { - kb_layout = de - kb_variant = - kb_model = - kb_options = - kb_rules = - numlock_by_default = true - - follow_mouse = 1 - mouse_refocus = false - accel_profile = flat - - touchpad { - natural_scroll = no - } - - sensitivity = 0 # -1.0 - 1.0, 0 means no modification. -} - -general { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - - gaps_in = 3 - gaps_out = 6 - border_size = 1 - - cursor_inactive_timeout = 3 - no_cursor_warps = true - - layout = master -} - -decoration { - # See https://wiki.hyprland.org/Configuring/Variables/ for more - - rounding = 3 - blur = yes - blur_size = 3 - blur_passes = 1 - blur_new_optimizations = true -} - -animations { - enabled = true - - # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more - - bezier = overshot, 0.05, 0.9, 0.1, 1.1 - - animation = windows, 1, 3, overshot, slide - animation = fade, 0, 6, default - animation = border, 1, 6, default - animation = workspaces, 1, 6, overshot, slide -} - -dwindle { - # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more - pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below - preserve_split = yes # you probably want this - - no_gaps_when_only = yes -} - -master { - # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more - new_is_master = true - mfact = 0.5 - - no_gaps_when_only = yes -} - +source = ~/.config/hypr/env.conf +source = ~/.config/hypr/vars.conf source = ~/.config/hypr/binds.conf source = ~/.config/hypr/rules.conf diff --git a/.config/hypr/binds.conf b/.config/hypr/binds.conf index 6620a8e..ef3fd61 100644 --- a/.config/hypr/binds.conf +++ b/.config/hypr/binds.conf @@ -1,19 +1,19 @@ $main_mod = SUPER -# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more bind = $main_mod, return, exec, $TERMINAL +bind = $main_mod SHIFT, return, exec, [float] $TERMINAL + bind = $main_mod, Q, killactive, -bind = $main_mod, M, exit, bind = $main_mod, S, togglefloating, bind = $main_mod, F, fullscreen, + bind = $main_mod, D, exec, j4-dmenu-desktop --dmenu="$DMENU" -bind = $main_mod, P, pseudo, # dwindle -bind = $main_mod, J, togglesplit, # dwindle bind = $main_mod, Pause, exec, menu-shutdown bind = $main_mod, Print, exec, screenshot bind = $main_mod SHIFT, R, exec, autostart-manage run-wayland + # Move focus with mainMod + hjkl keys bind = $main_mod, h, movefocus, l bind = $main_mod, j, movefocus, d @@ -28,6 +28,7 @@ bind = $main_mod SHIFT, l, movewindow, r # Move focus between windows bind = $main_mod, c, layoutmsg, swapwithmaster master + # Switch workspaces with mainMod + [0-9] bind = $main_mod, 1, workspace, $ws01 bind = $main_mod, 2, workspace, $ws02 diff --git a/.config/hypr/env.conf b/.config/hypr/env.conf new file mode 100644 index 0000000..031d95b --- /dev/null +++ b/.config/hypr/env.conf @@ -0,0 +1,8 @@ +# Some default env vars. +env = XCURSOR_SIZE,24 +env = XCURSOR_THEME,Dracula-cursors + +env = GDK_BACKEND,wayland,x11 +env = QT_QPA_PLATFORM,wayland;xcb +env = SDL_VIDEODRIVER,wayland +env = CLUTTER_BACKEND,wayland diff --git a/.config/hypr/handler.sh b/.config/hypr/handler.sh index f0a98e5..706cbe7 100755 --- a/.config/hypr/handler.sh +++ b/.config/hypr/handler.sh @@ -1,35 +1,65 @@ #!/usr/bin/env nix-shell #!nix-shell -i sh -p socat jq +# Config ws_media="[08]" ws_voip="[09]" ws_media_at="[ 0, 0 ]" + +# Debug code +debug_enabled="false" +if [ "$1" == "--debug" ]; then + debug_enabled="true" +fi + +debug() { + if [ "$debug_enabled" == "true" ]; then + echo "$1" >&2 + fi +} + + +# Main code +all_clients="[]" + +_handler_update_all_clients() { + all_clients=$(hyprctl clients -j) +} + _handler_check_ws_media_empty() { # split at ">>" and get the second part and take first part of that + event=$(echo "$1" | cut -d'>' -f1) win_id=$(echo "$1" | cut -d'>' -f3 | cut -d',' -f1) - event_on_media="false" + win_client=$(echo "$all_clients" | jq ".[] | select(.address == \"0x$win_id\")") - moved_from_media=$(hyprctl clients -j | jq ".[] | select(.address == \"0x$win_id\") | .workspace.name == \"$ws_media\"") - closed_on_media=$(hyprctl clients -j | jq ".[] | select(.address == \"0x$win_id\") | .at == $ws_media_at") - - if [ "$moved_from_media" == "true" ] || [ "$closed_on_media" == "true" ]; then - event_on_media="true" + if [ "$event" == "closewindow" ]; then + event_on_media="$(echo "$win_client" | jq ".workspace.name == \"$ws_media\"")" + fi + if [ "$event" == "movewindow" ]; then + event_on_media="$(echo "$win_client" | jq ".at == $ws_media_at")" fi has_zero_windows=$(hyprctl workspaces -j | jq ".[] | select(.name == \"$ws_media\") | .windows == 0") + debug "event: $event" + debug "win_id: $win_id" + debug "client: $win_client" + debug "event_on_media: $event_on_media" + debug "has_zero_windows: $has_zero_windows" + if [ "$has_zero_windows" == "true" ] && [ "$event_on_media" == "true" ]; then hyprctl dispatch workspace "$ws_voip" fi - } handle() { + debug "----- $1 -----" case $1 in + openwindow*) _handler_update_all_clients "$1" ;; movewindow*) _handler_check_ws_media_empty "$1" ;; closewindow*) _handler_check_ws_media_empty "$1" ;; esac diff --git a/.config/hypr/rules.conf b/.config/hypr/rules.conf index 6e79fb9..f6aa66f 100644 --- a/.config/hypr/rules.conf +++ b/.config/hypr/rules.conf @@ -24,5 +24,17 @@ windowrulev2 = workspace $ws_msg silent, class:(Signal) windowrulev2 = move 100%-300 100%-30, class:(steam), title:^(notificationtoasts) windowrulev2 = nofocus, class:(steam), title:^(notificationtoasts) +windowrulev2 = float, class:(steam), title:^(Friends List) +windowrulev2 = noinitialfocus, class:(steam), title:^(Friends List) + +windowrulev2 = float, class:(xdg-desktop-portal-gtk) + +windowrulev2 = workspace unset, class:(thunderbird), title:^$ +windowrulev2 = noinitialfocus, class:(thunderbird), title:^$ +windowrulev2 = float, class:(thunderbird), title:^$ +windowrulev2 = move 100%-1300,100%-1400, class:(thunderbird), title:^$ +windowrulev2 = float, class:(thunderbird), title:(Reminder)$ + +windowrulev2 = float, class:(org.keepassxc.KeePassXC), title:(KeePassXC - Browser Access Request) windowrulev2 = fullscreen, class:(FreeTube) diff --git a/.config/hypr/vars.conf b/.config/hypr/vars.conf new file mode 100644 index 0000000..0bb63fc --- /dev/null +++ b/.config/hypr/vars.conf @@ -0,0 +1,71 @@ +# For all categories, see https://wiki.hyprland.org/Configuring/Variables/ +input { + kb_layout = de + kb_variant = + kb_model = + kb_options = + kb_rules = + numlock_by_default = true + + follow_mouse = 1 + mouse_refocus = false + accel_profile = flat + + touchpad { + natural_scroll = no + } + + sensitivity = 0 # -1.0 - 1.0, 0 means no modification. +} + +general { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + gaps_in = 3 + gaps_out = 6 + border_size = 1 + + cursor_inactive_timeout = 3 + no_cursor_warps = true + + layout = master +} + +decoration { + # See https://wiki.hyprland.org/Configuring/Variables/ for more + + rounding = 3 + blur = yes + blur_size = 3 + blur_passes = 1 + blur_new_optimizations = true +} + +animations { + enabled = true + + # Some default animations, see https://wiki.hyprland.org/Configuring/Animations/ for more + + bezier = overshot, 0.05, 0.9, 0.1, 1.1 + + animation = windows, 1, 3, overshot, slide + animation = fade, 0, 6, default + animation = border, 1, 6, default + animation = workspaces, 1, 6, overshot, slide +} + +dwindle { + # See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more + pseudotile = yes # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below + preserve_split = yes # you probably want this + + no_gaps_when_only = yes +} + +master { + # See https://wiki.hyprland.org/Configuring/Master-Layout/ for more + new_is_master = true + mfact = 0.5 + + no_gaps_when_only = yes +}