aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDon Williams <Don.e.williams@gmail.com>2026-07-11 01:35:53 -0400
committerPinapelz <yukais@pinapelz.com>2026-08-29 21:40:34 -0700
commite44f3c46c8e3bf0ca74e780375599316fe5f2396 (patch)
tree50a6a512e7b9fdafe53a48382bc0e4eabca68a5d
parent5c3d43b34594e2f7a6f4edd0640d2e44c51c8875 (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.conf3
-rw-r--r--config/hypr/lua/keybinds.lua15
-rw-r--r--config/hypr/lua/startup.lua93
-rwxr-xr-xconfig/hypr/scripts/OverviewToggle.sh3
-rwxr-xr-xconfig/hypr/scripts/Refresh.sh3
-rwxr-xr-xconfig/hypr/scripts/RefreshNoWaybar.sh3
m---------config/quickshell/qs-hyprview0
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
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage