diff options
| author | Don Williams <Don.e.williams@gmail.com> | 2026-07-11 01:35:53 -0400 |
|---|---|---|
| committer | Pinapelz <yukais@pinapelz.com> | 2026-08-29 21:40:34 -0700 |
| commit | e44f3c46c8e3bf0ca74e780375599316fe5f2396 (patch) | |
| tree | 50a6a512e7b9fdafe53a48382bc0e4eabca68a5d | |
| parent | 5c3d43b34594e2f7a6f4edd0640d2e44c51c8875 (diff) | |
Added qs-hyprview as alternative overview CTRL-TAB
Signed-off-by: Don Williams <Don.e.williams@gmail.com>
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: config/hypr/configs/Startup_Apps.conf
modified: config/hypr/lua/keybinds.lua
modified: config/hypr/lua/startup.lua
modified: config/hypr/scripts/OverviewToggle.sh
modified: config/hypr/scripts/Refresh.sh
modified: config/hypr/scripts/RefreshNoWaybar.sh
new file: config/quickshell/qs-hyprview
| -rw-r--r-- | config/hypr/configs/Startup_Apps.conf | 3 | ||||
| -rw-r--r-- | config/hypr/lua/keybinds.lua | 15 | ||||
| -rw-r--r-- | config/hypr/lua/startup.lua | 93 | ||||
| -rwxr-xr-x | config/hypr/scripts/OverviewToggle.sh | 3 | ||||
| -rwxr-xr-x | config/hypr/scripts/Refresh.sh | 3 | ||||
| -rwxr-xr-x | config/hypr/scripts/RefreshNoWaybar.sh | 3 | ||||
| m--------- | config/quickshell/qs-hyprview | 0 |
7 files changed, 70 insertions, 50 deletions
diff --git a/config/hypr/configs/Startup_Apps.conf b/config/hypr/configs/Startup_Apps.conf index 41f6761b..f29b26f5 100644 --- a/config/hypr/configs/Startup_Apps.conf +++ b/config/hypr/configs/Startup_Apps.conf @@ -33,7 +33,8 @@ exec-once = sh $HOME/.config/hypr/scripts/ApplyThemeMode.sh exec-once = sh $scriptsDir/WaybarStartup.sh # Cursor refresh (enabled by installer on hybrid NVIDIA/GDM setups) exec-once = sh -c 'sleep 0.3; hyprctl setcursor "${HYPRCURSOR_THEME:-Bibata-Modern-Ice}" "${HYPRCURSOR_SIZE:-24}"' -exec-once = qs -c overview # Quickshell Overview +exec-once = qs --log-rules "qt.qpa.wayland.textinput.warning=false" -c overview # Quickshell Overview +exec-once = qs --log-rules "qt.qpa.wayland.textinput.warning=false" -p ~/.config/quickshell/qs-hyprview & exec-once = hypridle exec-once = $scriptsDir/LuaAutoReload.sh exec-once = $scriptsDir/Hyprsunset.sh init diff --git a/config/hypr/lua/keybinds.lua b/config/hypr/lua/keybinds.lua index 3730e825..697801ff 100644 --- a/config/hypr/lua/keybinds.lua +++ b/config/hypr/lua/keybinds.lua @@ -325,6 +325,21 @@ bind( ), { description = "toggle scrolling V/H" } ) +-- Section: qs-hyprview expose controls +local qs_hyprview_layout = "smartgrid" +bind( + "CTRL", + "tab", + exec_cmd("qs ipc -c qs-hyprview call expose toggle " .. qs_hyprview_layout), + { description = "qs-hyprview toggle" } +) +bind( + "CTRL", + "tab", + exec_cmd("qs ipc -c qs-hyprview call expose open " .. qs_hyprview_layout), + { description = "qs-hyprview open" } +) +bind("CTRL", "tab", exec_cmd("qs ipc -c qs-hyprview call expose close"), { description = "qs-hyprview close" }) local col_width_presets = { 0.25, 0.33, 0.5, 0.66, 0.75, 1.0 } local function _as_number(v) if type(v) == "number" then diff --git a/config/hypr/lua/startup.lua b/config/hypr/lua/startup.lua index 1fa4df82..5f7d3b02 100644 --- a/config/hypr/lua/startup.lua +++ b/config/hypr/lua/startup.lua @@ -14,66 +14,67 @@ local userScripts = "$HOME/.config/hypr/UserScripts" local wallDir = "$HOME/Pictures/wallpapers" local session = os.getenv("HYPRLAND_INSTANCE_SIGNATURE") or "default" local function shell_quote(value) - return "'" .. tostring(value):gsub("'", "'\\''") .. "'" + return "'" .. tostring(value):gsub("'", "'\\''") .. "'" end local function exec_once(cmd) - -- Why this wrapper exists: - -- 1) Enforce once-per-Hypr-session startup behavior using marker files. - -- 2) Avoid startup race conditions by waiting for Wayland/Hypr sockets. - -- 3) Capture per-command logs to simplify troubleshooting in user setups. + -- Why this wrapper exists: + -- 1) Enforce once-per-Hypr-session startup behavior using marker files. + -- 2) Avoid startup race conditions by waiting for Wayland/Hypr sockets. + -- 3) Capture per-command logs to simplify troubleshooting in user setups. - local key = cmd:gsub("[^%w_.-]", "_"):sub(1, 80) - local marker = "/tmp/hypr-lua-exec-once-" .. session .. "-" .. key - local log = "/tmp/hypr-lua-startup-" .. key .. ".log" - local readiness = - 'runtime=${XDG_RUNTIME_DIR:-/run/user/$(id -u)}; export XDG_RUNTIME_DIR="$runtime"; for _ in $(seq 1 200); do if [ -n "$WAYLAND_DISPLAY" ] && [ -S "$runtime/$WAYLAND_DISPLAY" ]; then break; fi; for sock in "$runtime"/wayland-[0-9]*; do [ -S "$sock" ] || continue; case "$(basename "$sock")" in *awww*) continue ;; esac; export WAYLAND_DISPLAY="$(basename "$sock")"; break 2; done; sleep 0.1; done; if [ -n "$HYPRLAND_INSTANCE_SIGNATURE" ]; then hypr_sock="$runtime/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket.sock"; for _ in $(seq 1 200); do [ -S "$hypr_sock" ] && break; sleep 0.1; done; fi' - local inner = readiness .. "; " .. cmd - local script = "[ -e " - .. shell_quote(marker) - .. " ] || { touch " - .. shell_quote(marker) - .. " && sh -lc " - .. shell_quote(inner) - .. " >>" - .. shell_quote(log) - .. " 2>&1 & }" - os.execute("sh -lc " .. shell_quote(script)) + local key = cmd:gsub("[^%w_.-]", "_"):sub(1, 80) + local marker = "/tmp/hypr-lua-exec-once-" .. session .. "-" .. key + local log = "/tmp/hypr-lua-startup-" .. key .. ".log" + local readiness = + 'runtime=${XDG_RUNTIME_DIR:-/run/user/$(id -u)}; export XDG_RUNTIME_DIR="$runtime"; for _ in $(seq 1 200); do if [ -n "$WAYLAND_DISPLAY" ] && [ -S "$runtime/$WAYLAND_DISPLAY" ]; then break; fi; for sock in "$runtime"/wayland-[0-9]*; do [ -S "$sock" ] || continue; case "$(basename "$sock")" in *awww*) continue ;; esac; export WAYLAND_DISPLAY="$(basename "$sock")"; break 2; done; sleep 0.1; done; if [ -n "$HYPRLAND_INSTANCE_SIGNATURE" ]; then hypr_sock="$runtime/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket.sock"; for _ in $(seq 1 200); do [ -S "$hypr_sock" ] && break; sleep 0.1; done; fi' + local inner = readiness .. "; " .. cmd + local script = "[ -e " + .. shell_quote(marker) + .. " ] || { touch " + .. shell_quote(marker) + .. " && sh -lc " + .. shell_quote(inner) + .. " >>" + .. shell_quote(log) + .. " 2>&1 & }" + os.execute("sh -lc " .. shell_quote(script)) end -- Prefer lifecycle-hook orchestration for clarity while keeping exec_once -- reliability semantics for real-world startup behavior. local startup_commands = { - scriptsDir .. "/WallpaperDaemon.sh", - "$HOME/.config/hypr/initial-boot.sh", - "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP", - "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP", - scriptsDir .. "/Polkit.sh", - "nm-applet", - -- nm-tray now optional for ubuntu - -- "nm-tray", - "swaync", - scriptsDir .. "/PortalHyprland.sh", - "sh $HOME/.config/hypr/scripts/ApplyThemeMode.sh", - "sh " .. scriptsDir .. "/WaybarStartup.sh", - "qs -c overview", - "hypridle", - scriptsDir .. "/Hyprsunset.sh init", - -- NOTE: Dropterminal is currently certified only with kitty. Not all terminals behave correctly as a dropdown. - scriptsDir .. "/Dropterminal.sh --startup kitty", - "wl-paste --type text --watch cliphist store", - "wl-paste --type image --watch cliphist store", + scriptsDir .. "/WallpaperDaemon.sh", + "$HOME/.config/hypr/initial-boot.sh", + "dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP", + "systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP", + scriptsDir .. "/Polkit.sh", + "nm-applet", + -- nm-tray now optional for ubuntu + -- "nm-tray", + "swaync", + scriptsDir .. "/PortalHyprland.sh", + "sh $HOME/.config/hypr/scripts/ApplyThemeMode.sh", + "sh " .. scriptsDir .. "/WaybarStartup.sh", + 'qs --log-rules "qt.qpa.wayland.textinput.warning=false" -c overview', + 'qs --log-rules "qt.qpa.wayland.textinput.warning=false" -c qs-hyprview', + "hypridle", + scriptsDir .. "/Hyprsunset.sh init", + -- NOTE: Dropterminal is currently certified only with kitty. Not all terminals behave correctly as a dropdown. + scriptsDir .. "/Dropterminal.sh --startup kitty", + "wl-paste --type text --watch cliphist store", + "wl-paste --type image --watch cliphist store", } local function run_startup_commands() - for _, cmd in ipairs(startup_commands) do - exec_once(cmd) - end + for _, cmd in ipairs(startup_commands) do + exec_once(cmd) + end end if hl and hl.on then - hl.on("hyprland.start", run_startup_commands) + hl.on("hyprland.start", run_startup_commands) else - -- Compatibility fallback for older/limited runtimes without hl.on. - run_startup_commands() + -- Compatibility fallback for older/limited runtimes without hl.on. + run_startup_commands() end -- Optional startup examples retained from the original config: diff --git a/config/hypr/scripts/OverviewToggle.sh b/config/hypr/scripts/OverviewToggle.sh index 7c55ae82..7f2fc831 100755 --- a/config/hypr/scripts/OverviewToggle.sh +++ b/config/hypr/scripts/OverviewToggle.sh @@ -10,6 +10,7 @@ set -euo pipefail QS_OVERVIEW_DIR="${XDG_CONFIG_HOME:-${XDG_CONFIG_HOME:-$HOME/.config}}/quickshell/overview" +QS_TEXTINPUT_LOG_RULE="qt.qpa.wayland.textinput.warning=false" # 1) Prefer Quickshell when installed and configured if command -v qs >/dev/null 2>&1 && [ -d "$QS_OVERVIEW_DIR" ]; then @@ -21,7 +22,7 @@ if command -v qs >/dev/null 2>&1 && [ -d "$QS_OVERVIEW_DIR" ]; then fi # If QS isn't running, try starting it and retry once - qs -c overview >/dev/null 2>&1 & + qs --log-rules "$QS_TEXTINPUT_LOG_RULE" -c overview >/dev/null 2>&1 & sleep 0.6 if qs ipc -c overview call overview toggle >/dev/null 2>&1; then exit 0 diff --git a/config/hypr/scripts/Refresh.sh b/config/hypr/scripts/Refresh.sh index ed8c4a0c..311d0a8c 100755 --- a/config/hypr/scripts/Refresh.sh +++ b/config/hypr/scripts/Refresh.sh @@ -9,6 +9,7 @@ SCRIPTSDIR=${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts UserScripts=${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserScripts +QS_TEXTINPUT_LOG_RULE="qt.qpa.wayland.textinput.warning=false" # Define file_exists function file_exists() { @@ -35,7 +36,7 @@ pkill -f 'waybar-cava\..*\.conf' 2>/dev/null || true ags -q && ags & # quit quickshell & relaunch quickshell -pkill qs && qs & +pkill qs && qs --log-rules "$QS_TEXTINPUT_LOG_RULE" & # some process to kill (exclude waybar to avoid restart loops) for pid in $(pidof rofi swaync ags swaybg); do diff --git a/config/hypr/scripts/RefreshNoWaybar.sh b/config/hypr/scripts/RefreshNoWaybar.sh index c9e7464e..9f3d92ca 100755 --- a/config/hypr/scripts/RefreshNoWaybar.sh +++ b/config/hypr/scripts/RefreshNoWaybar.sh @@ -12,6 +12,7 @@ SCRIPTSDIR=${XDG_CONFIG_HOME:-$HOME/.config}/hypr/scripts UserScripts=${XDG_CONFIG_HOME:-$HOME/.config}/hypr/UserScripts +QS_TEXTINPUT_LOG_RULE="qt.qpa.wayland.textinput.warning=false" # Define file_exists function file_exists() { @@ -34,7 +35,7 @@ done ags -q && ags & # quit quickshell & relaunch quickshell -pkill qs && qs & +pkill qs && qs --log-rules "$QS_TEXTINPUT_LOG_RULE" & # reload swaync diff --git a/config/quickshell/qs-hyprview b/config/quickshell/qs-hyprview new file mode 160000 +Subproject dcc53416d4bcd172d480b8461c59d52bddea2b5 |
