]> Freerunner's - dotfiles.git/commitdiff
Revert "hypr: update config for 0.54.0 and cleanup"
authorAndre Ramnitz <tux.rising@gmail.com>
Mon, 2 Mar 2026 21:36:40 +0000 (22:36 +0100)
committerAndre Ramnitz <tux.rising@gmail.com>
Mon, 2 Mar 2026 21:36:40 +0000 (22:36 +0100)
This reverts commit 737d2c05b5302f7540d709775ef15160cf3d864f.

dot-config/hypr/fragments/keybinds.conf
dot-config/hypr/fragments/windowrules.conf
dot-config/hypr/fragments/workspacerules.conf
dot-config/hypr/hyprland.conf
dot-config/hypr/scripts/custom-accel-macos.py [new file with mode: 0644]
dot-config/hypr/scripts/gaps.sh [new file with mode: 0755]
dot-config/hypr/scripts/workspace.sh [new file with mode: 0755]

index d5ea90f664f8011864af3e40459d1f1af11b6d01..38cc92dedd0bfdf6bdb4c88da4d5d992ecb92283 100644 (file)
@@ -14,12 +14,15 @@ $floatterm = foot -o pad=0x0 -a popup
 
 # mainmod shortcuts
 # ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
+# example: bind = $mainmod Shift,      Return, exec, [float; size 1280 800;] foot -o pad=0x0
 bind = $mainmod,                        Return, exec, $term
 bind = $mainmod Ctrl,                   Return, exec, $fallbackterm
 bind = $mainmod Shift,                  Return, exec, $floatterm
 bind = $mainmod Shift,                  Q, killactive,
 bind = $mainmod,                        A, pseudo, # dwindle, A for Artificial
 bind = $mainmod,                        B, exec, $HOME/.config/hypr/scripts/browser_focus_or_run.sh
+# bind = $mainmod,                        C, exec, killall fuzzel || cliphist list | fuzzel -d --config=$HOME/.config/fuzzel/fuzzel-emojii.ini --prompt='Copy > ' | cliphist decode | wl-copy
+# bind = $mainmod Ctrl,                   C, exec, foot -a clipse -e clipse
 bind = $mainmod,                        C, exec, qs -c noctalia-shell ipc call launcher clipboard
 bind = $mainmod,                        D, exec, qs -c noctalia-shell ipc call launcher toggle
 bind = $mainmod SHIFT,                  D, exec, killall fuzzel || fuzzel --config=$HOME/.config/fuzzel/fuzzel-centered.ini
@@ -31,19 +34,20 @@ bind = $mainmod,                        G, togglegroup
 bind = $mainmod SHIFT,                  G, lockactivegroup, toggle
 bind = $mainmod CTRL,                   G, denywindowfromgroup, toggle
 bind = $mainmod ALT,                    G, moveoutofgroup, active
-bind = $mainmod,                        I, togglespecialworkspace, overlay
-bind = $mainmod SHIFT,                  I, movetoworkspace, special:overlay
 bind = $mainmod,                        P, exec, foot -w 640x400 -a popup -H hyprpicker #color Pipette
 bind = $mainmod SHIFT,                  P, pin
-bind = $mainmod,                        S, layoutmsg, togglesplit # dwindle
-bind = $mainmod Shift,                  S, layoutmsg, swapsplit # dwindle
-bind = $mainmod,                        S, layoutmsg, colresize +conf # scrolling
-bind = $mainmod Shift,                  S, layoutmsg, colresize -conf # scrolling
+bind = $mainmod,                        S, layoutmsg, swapwithmaster # master
+bind = $mainmod,                        S, togglesplit, # dwindle
+bind = $mainmod Shift,                  S, swapsplit, # dwindle
 bind = $mainmod,                        V, togglefloating
 bind = $mainmod,                        W, exec, killall -SIGUSR1 waybar
 bind = $mainmod SHIFT,                  W, exec, killall -SIGUSR2 waybar
-bind = $mainmod,                        Z, centerwindow # floating only
+# bind = $mainmod,                        grave, exec, ~/.config/hypr/scripts/RofiEmoji.sh
 bind = $mainmod,                        grave, exec, qs -c noctalia-shell ipc call launcher emoji
+bind = $mainmod,                        C, centerwindow
+# scratchpad
+bind = $mainmod,                        I, togglespecialworkspace, overlay
+bind = $mainmod SHIFT,                  I, movetoworkspace, special:overlay
 
 # suremod keys (prevent fat-fingering 'em by accident)
 # ───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
@@ -209,3 +213,80 @@ bind = , catchall, submap, reset
 submap = reset
 
 
+# ───────────────────────────────────────────────────────────
+# will switch to a submap called gaps
+bind = $mainmod ALT,            G, submap, gaps
+
+# will start a submap called "gaps"
+submap = gaps
+
+# sets repeatable binds for resizing the active window
+binde = ,                               i, exec, ~/.config/hypr/scripts/gaps.sh --inc_gaps_in
+binde = SHIFT,                          i, exec, ~/.config/hypr/scripts/gaps.sh --dec_gaps_in
+binde = ,                               o, exec, ~/.config/hypr/scripts/gaps.sh --inc_gaps_out
+binde = SHIFT,                          o, exec, ~/.config/hypr/scripts/gaps.sh --dec_gaps_out
+binde = CTRL,                           i, exec, ~/.config/hypr/scripts/gaps.sh --reset_gaps_in
+binde = CTRL,                           o, exec, ~/.config/hypr/scripts/gaps.sh --reset_gaps_out
+
+# use reset to go back to the global submap
+bind = , catchall, submap, reset
+
+# will reset the submap, which will return to the global submap
+submap = reset
+
+
+# ───────────────────────────────────────────────────────────
+# will switch to a submap called resize16-9
+bind = $mainmod,               Z, submap, resize16-9
+
+# will start a submap called "gaps"
+submap = resize16-9
+
+# sets repeatable binds for resizing the active window
+bind  = ,                               1, exec, hyprctl dispatch 'resizewindowpixel exact 640 360,activewindow'
+bind  = ,                               1, exec, submap, reset
+bind  = ,                               2, exec, hyprctl dispatch 'resizewindowpixel exact 853 480,activewindow'
+bind  = ,                               2, exec, submap, reset
+bind  = ,                               3, exec, hyprctl dispatch 'resizewindowpixel exact 1280 720,activewindow'
+bind  = ,                               3, exec, submap, reset
+bind  = ,                               4, exec, hyprctl dispatch 'resizewindowpixel exact 1920 1080,activewindow'
+bind  = ,                               4, exec, submap, reset
+bind  = ,                               5, exec, hyprctl dispatch 'resizewindowpixel exact 2400 1350,activewindow'
+bind  = ,                               5, exec, submap, reset
+bind  = ,                               6, exec, hyprctl dispatch 'resizewindowpixel exact 2560 1440,activewindow'
+bind  = ,                               6, exec, submap, reset
+
+# use reset to go back to the global submap
+bind = , catchall, submap, reset
+
+# will reset the submap, which will return to the global submap
+submap = reset
+
+
+# ───────────────────────────────────────────────────────────
+# will switch to a submap called resize16-10
+bind = $mainmod Shift,         Z, submap, resize12-10
+
+# will start a submap called "gaps"
+submap = resize12-10
+
+# sets repeatable binds for resizing the active window
+bind  = ,                               1, exec, hyprctl dispatch 'resizewindowpixel exact 432 360,activewindow'
+bind  = ,                               1, exec, submap, reset
+bind  = ,                               2, exec, hyprctl dispatch 'resizewindowpixel exact 576 480,activewindow'
+bind  = ,                               2, exec, submap, reset
+bind  = ,                               3, exec, hyprctl dispatch 'resizewindowpixel exact 864 720,activewindow'
+bind  = ,                               3, exec, submap, reset
+bind  = ,                               4, exec, hyprctl dispatch 'resizewindowpixel exact 1296 1080,activewindow'
+bind  = ,                               4, exec, submap, reset
+bind  = ,                               5, exec, hyprctl dispatch 'resizewindowpixel exact 1620 1350,activewindow'
+bind  = ,                               5, exec, submap, reset
+bind  = ,                               6, exec, hyprctl dispatch 'resizewindowpixel exact 1728 1440,activewindow'
+bind  = ,                               6, exec, submap, reset
+
+# use reset to go back to the global submap
+bind = , catchall, submap, reset
+
+# will reset the submap, which will return to the global submap
+submap = reset
+
index ea38b373c3498997341785099e902a31e2bc1e1d..b0f63dda2c6aca43a4159ec1e952e35a54fef128 100644 (file)
@@ -131,7 +131,7 @@ windowrule {
 windowrule {
   name = windowrule-26
   float = on
-  move = ((monitor_w)-813) (55)
+  move = ((monitor_w-window_w)-10) (42)
   size = 800 450
   no_initial_focus = on
   group = deny
@@ -153,7 +153,6 @@ windowrule {
 windowrule {
   name = popup_class
   float = on
-  group = deny
   size = 1280 800
   match:class = ^(popup)$
 }
@@ -162,7 +161,6 @@ windowrule {
   name = kakpopup
   float = 1
   stay_focused = 1
-  group = deny
   opacity = 1.0 override
   move = ((monitor_w-window_w)-10) ((monitor_h-window_h)-10)
   match:class = ^(kakpopup)$
index 6575136d181ad39745d96f33558949a8f49657b1..23685f034125b739e5326f865b2d98421faa4270 100644 (file)
@@ -6,14 +6,7 @@
 # workspace rules
 #example: on-created-empty: exec, something"
 
-workspace = 1, default:1, layout:dwindle
-workspace = 2, layout:scrolling
-workspace = 3, layout:monocle
-workspace = 4, layout:monocle
-workspace = 5, layout:scrolling
+workspace = 1, default:1
+workspace = 4, gapsout:40, gapsin:20
 workspace = 6, float
-workspace = 7, layout:scrolling
-workspace = 8, layout:scrolling
-workspace = 9, layout:scrolling
-workspace = 0, layout:dwindle
 workspace = special:magic
index ce1b54223971194e77a1b540c326632a79e05819..db24dd3ca6cdd762df7ac67c8cfbd0120b4d586f 100644 (file)
@@ -26,13 +26,8 @@ monitor=,preferred,auto-center-right,1,vrr,2
 # Execute your favorite apps at launch
 # exec-once = dbus-update-activation-environment --systemd --all
 exec-once = /usr/libexec/pam_kwallet_init
-# exec-once = /usr/libexec/polkit-gnome-authentication-agent-1
-# exec-once = /usr/libexec/polkit-kde-authentication-agent-1
 exec-once = hyprpm reload
 exec-once = openrc --user hyprland # AFTER pam_kwallet_init!!!
-exec-once = /usr/bin/qs -c noctalia-shell
-exec-once = /usr/bin/nextcloud
-exec-once = /usr/bin/keepassxc
 # exec-once = env XDG_MENU_PREFIX=plasma- kbuildsycoca6
 
 # Unset variables on exit
@@ -55,30 +50,17 @@ general {
     # col.nogroup_border_active = $error
 }
 
-layout {
-    single_window_aspect_ratio = 16 9.1
-    single_window_aspect_ratio_tolerance = 0.1
-}
-
 dwindle {
     pseudotile = yes
     force_split = 2
     smart_split = 0
     split_width_multiplier = 2.0
+    single_window_aspect_ratio = 16 9.1
+    single_window_aspect_ratio_tolerance = 0.1
     pseudotile = 1 # master switch for pseudotiling. Enabling is bound to mainMod + A in the keybinds section below
     preserve_split = 1 # you probably want this
 }
 
-scrolling {
-    fullscreen_on_one_column = 1
-    column_width = 0.5 # default = 0.5
-    focus_fit_method = 1
-    follow_focus = 1
-    follow_min_visible = 0.4
-    explicit_column_widths = 0.333,0.5,0.667,1.0
-    direction = right
-}
-
 master {
     new_status = slave
     allow_small_split = 1
diff --git a/dot-config/hypr/scripts/custom-accel-macos.py b/dot-config/hypr/scripts/custom-accel-macos.py
new file mode 100644 (file)
index 0000000..4802400
--- /dev/null
@@ -0,0 +1,98 @@
+#!/usr/bin/env python3
+
+# based on https://gist.github.com/fufexan/de2099bc3086f3a6c83d61fc1fcc06c9
+
+import struct
+import os
+import sys
+import math
+
+# ===== PARAMETERS =====
+# set according to your device:
+device_dpi = 2048 * 1.5 # mouse dpi
+screen_dpi = 163
+screen_scaling_factor = 1
+sample_point_count = 20 
+sensitivity_factor = 6
+
+def sigmoid(x, a=1.0):
+    return 1 / (1 + math.exp(-a * (x - 0.5)))
+
+def find_arg(arg):
+    for i in sys.argv:
+        if i == arg:
+            return True
+    return False
+
+def float16x16(num):
+    return struct.unpack('<i', num[:-4])[0] / int(0xffff)
+
+if find_arg("help") or find_arg("-h") or find_arg("--help") or find_arg("h"):
+    print(f'{sys.argv[0]} <device>')
+    print('To get the device, run `hyprctl devices` and get its name')
+    exit(0)
+
+# Make sure the device is passed as the first argument
+if len(sys.argv) < 2:
+    print("Error: device not specified. Usage: <script> <device>")
+    exit(1)
+
+# The first argument is treated as the device
+device = sys.argv[1]
+
+scale_x = device_dpi / 1e3
+scale_y = screen_dpi / 1e3 / screen_scaling_factor * sensitivity_factor
+
+X = [
+b'\x00\x00\x00\x00\x00\x00\x00\x00',
+b'\x15\x6e\x00\x00\x00\x00\x00\x00',
+b'\x00\x40\x01\x00\x00\x00\x00\x00',
+b'\x29\xdc\x03\x00\x00\x00\x00\x00',
+b'\x00\x00\x28\x00\x00\x00\x00\x00',
+]
+Y = [
+b'\x00\x00\x00\x00\x00\x00\x00\x00',
+b'\xfd\x11\x01\x00\x00\x00\x00\x00',
+b'\x00\x24\x04\x00\x00\x00\x00\x00',
+b'\x00\xfc\x12\x00\x00\x00\x00\x00',
+b'\x00\xc0\xbb\x01\x00\x00\x00\x00',
+]
+
+windows_points = [[float16x16(x), float16x16(y)] for x, y in zip(X, Y)]
+points = [[x * scale_x, y * scale_y] for x, y in windows_points]
+
+def find2points(x):
+    i = 0
+    while i < len(points) - 2 and x >= points[i + 1][0]:
+        i += 1
+    assert -1e6 + points[i][0] <= x <= points[i + 1][0] + 1e6, f'{points[i][0]} <= {x} <= {points[i + 1][0]}'
+    return points[i], points[i + 1]
+
+def interpolate(x):
+    (x0, y0), (x1, y1) = find2points(x)
+    factor = sigmoid(x)  # This smoothly adjusts based on x
+    y = factor * ((x - x0) * y1 + (x1 - x) * y0) / (x1 - x0)
+    
+    return y
+
+def sample_points(count):
+    last_point = -2
+    max_x = points[last_point][0]
+    step = max_x / (count + last_point)  # we need another point for 0
+    sample_points_x = [si * step for si in range(count)]
+    sample_points_y = [interpolate(x) for x in sample_points_x]
+    return sample_points_x, sample_points_y
+
+sample_points_x, sample_points_y = sample_points(sample_point_count)
+step = sample_points_x[1] - sample_points_x[0]
+sample_points_str = " ".join(["%.3f" % number for number in sample_points_y])
+
+print(f'\tPoints: {sample_points_str}')
+print(f'\tStep size: {step:0.10f}')
+
+def hyprctl(device, option, arg):
+    os.system(f"hyprctl keyword 'device[{device}]:{option}' '{arg}'")
+
+# Apply settings for the specified device
+print(f'Setting device:\'{device}\':accel_profile using hyprctl')
+hyprctl(device, 'accel_profile', f'custom {step} {sample_points_str}')
diff --git a/dot-config/hypr/scripts/gaps.sh b/dot-config/hypr/scripts/gaps.sh
new file mode 100755 (executable)
index 0000000..714e0aa
--- /dev/null
@@ -0,0 +1,53 @@
+#!/bin/bash
+
+gaps_in=$(hyprctl getoption general:gaps_in -j  | jq '.custom' | cut -c2-3)
+gaps_out=$(hyprctl getoption general:gaps_out -j  | jq '.custom' | cut -c2-3)
+
+activeworkspace=$(hyprctl activeworkspace -j | jq '.id')
+
+function inc_gaps_in () {
+  hyprctl keyword workspace="$activeworkspace":gaps_in workspace=$((gaps_in+10))
+}
+
+function dec_gaps_in () {
+  hyprctl keyword workspace="$activeworkspace":gaps_in workspace=$((gaps_in-10))
+}
+
+function reset_gaps_in () {
+    hyprctl keyword workspace="$activeworkspace":gaps_in 5
+}
+
+function zero_gaps_in () {
+    hyprctl keyword workspace="$activeworkspace":gaps_in 0
+}
+
+function inc_gaps_out () {
+  hyprctl keyword workspace="$activeworkspace":gaps_out workspace=$((gaps_out+10))
+}
+
+function dec_gaps_out () {
+  hyprctl keyword workspace="$activeworkspace":gaps_out workspace=$((gaps_out-10))
+}
+
+function reset_gaps_out () {
+    hyprctl keyword workspace="$activeworkspace":gaps_out 20
+}
+
+function zero_gaps_out () {
+    hyprctl keyword workspace="$activeworkspace":gaps_out 0
+}
+
+while [[ $# -gt 0 ]]; do
+  case $1 in
+    --inc_gaps_in)    inc_gaps_in;    shift ;;
+    --dec_gaps_in)    dec_gaps_in;    shift ;;
+    --reset_gaps_in)  reset_gaps_in;  shift ;;
+    --zero_gaps_in)   zero_gaps_in;   shift ;;
+    --inc_gaps_out)   inc_gaps_out;   shift ;;
+    --dec_gaps_out)   dec_gaps_out;   shift ;;
+    --reset_gaps_out) reset_gaps_out; shift ;;
+    --zero_gaps_out)  zero_gaps_out;  shift ;;
+    *) printf "Error: Unknown option %s" "$1"; exit 1 ;;
+  esac
+done
+echo "$activeworkspace"
diff --git a/dot-config/hypr/scripts/workspace.sh b/dot-config/hypr/scripts/workspace.sh
new file mode 100755 (executable)
index 0000000..61c9c87
--- /dev/null
@@ -0,0 +1,64 @@
+#!/bin/bash
+
+FOCUSED_MONITOR=$(hyprctl monitors -j | jq -r '.[] | select(.focused) | .name')
+
+ACTIVE_WORKSPACE=$(hyprctl activeworkspace -j | jq '.id')
+
+if [[ "$1" == '-' ]]; then
+    REQUESTED_WORKSPACE="$((--ACTIVE_WORKSPACE))"
+elif [[ "$1" == '+' ]]; then
+    REQUESTED_WORKSPACE="$((++ACTIVE_WORKSPACE))"
+else
+    REQUESTED_WORKSPACE="$1"
+fi
+
+if [[ "$2" == 'mv' ]]; then
+    PRECMD='moveto'
+else
+    PRECMD=''
+fi
+
+if [[ "$3" == 's' ]]; then
+    POSTCMD='silent'
+else
+    POSTCMD=''
+fi
+
+case "$REQUESTED_WORKSPACE" in
+    1)
+        hyprctl dispatch "$PRECMD"workspace"$POSTCMD" "$REQUESTED_WORKSPACE";
+        if [[ $(pidof hyprpaper) && "$3" == "s" ]]; then exit 1; fi
+        hyprctl hyprpaper wallpaper "$FOCUSED_MONITOR, ~/Bilder/Wallpapers-simple/beach.png"
+        ;;
+    2)
+        hyprctl dispatch "$PRECMD"workspace"$POSTCMD" "$REQUESTED_WORKSPACE";
+        if [[ $(pidof hyprpaper) && "$3" == "s" ]]; then exit 1; fi
+        hyprctl hyprpaper wallpaper "$FOCUSED_MONITOR, ~/Bilder/Wallpapers-simple/pulppixel22.png"
+        ;;
+    3)
+        hyprctl dispatch "$PRECMD"workspace"$POSTCMD" "$REQUESTED_WORKSPACE";
+        if [[ $(pidof hyprpaper) && "$3" == "s" ]]; then exit 1; fi
+        hyprctl hyprpaper wallpaper "$FOCUSED_MONITOR, ~/Bilder/Wallpapers-simple/WP.jpg"
+        ;;
+    4)
+        hyprctl dispatch "$PRECMD"workspace"$POSTCMD" "$REQUESTED_WORKSPACE";
+        if [[ $(pidof hyprpaper) && "$3" == "s" ]]; then exit 1; fi
+        hyprctl hyprpaper wallpaper "$FOCUSED_MONITOR, ~/Bilder/Wallpapers-simple/Listen.png"
+        ;;
+    5)
+        hyprctl dispatch "$PRECMD"workspace"$POSTCMD" "$REQUESTED_WORKSPACE";
+        if [[ $(pidof hyprpaper) && "$3" == "s" ]]; then exit 1; fi
+        hyprctl hyprpaper wallpaper "$FOCUSED_MONITOR, ~/Bilder/Wallpapers-simple/Big_Sur_Simple.png"
+        ;;
+    6)
+        hyprctl dispatch "$PRECMD"workspace"$POSTCMD" "$REQUESTED_WORKSPACE";
+        if [[ $(pidof hyprpaper) && "$3" == "s" ]]; then exit 1; fi
+        hyprctl hyprpaper wallpaper "$FOCUSED_MONITOR, ~/Bilder/Wallpapers-simple/AtariTimes.png"
+        ;;
+    *)
+        hyprctl dispatch "$PRECMD"workspace"$POSTCMD" "$REQUESTED_WORKSPACE";
+        if [[ $(pidof hyprpaper) && "$3" == "s" ]]; then exit 1; fi
+        hyprctl hyprpaper wallpaper "$FOCUSED_MONITOR, ~/Bilder/Wallpapers-simple/TronLightCycle1.png"
+        ;;
+esac
+