From 1f83d8a54b4d4d91b0fb3031346fce981d3afa06 Mon Sep 17 00:00:00 2001 From: 28allday Date: Fri, 7 Aug 2026 14:15:11 +0100 Subject: [PATCH] install: write Hyprland integration to bindings.lua on Omarchy 4+ Omarchy 4 replaced the sourced ~/.config/hypr/*.conf files with a Lua config chain, so the float rule and SUPER+SHIFT+V clipboard keybind written to windows.conf/bindings.conf were silently ignored. Detect hyprland.lua and write an idempotent o.window/o.bind block to bindings.lua instead, keeping the .conf path for older installs. --- install.sh | 42 ++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/install.sh b/install.sh index 8622774..33e57d5 100755 --- a/install.sh +++ b/install.sh @@ -142,12 +142,48 @@ EOF bold "Omarchy detected — added floating Walker entry (with icon)." echo " Launch it from Walker by searching 'omagrab'." + # Omarchy 4+ replaced the sourced ~/.config/hypr/*.conf files with a Lua + # config chain (~/.config/hypr/hyprland.lua); anything written to the old + # .conf files is silently ignored there. Detect which world we're in and + # write the float rule + clipboard keybind to the file that's actually loaded. + if [ -f "$HOME/.config/hypr/hyprland.lua" ]; then + bindings_lua="$HOME/.config/hypr/bindings.lua" + lua_begin="-- >>> omagrab begin" + lua_end="-- <<< omagrab end" + if [ -f "$bindings_lua" ] && grep -qF "$lua_begin" "$bindings_lua"; then + echo " Hyprland rules + clipboard keybind already present — left as-is." + elif [ -f "$bindings_lua" ] && grep -Eq 'bind\("SUPER \+ SHIFT \+ V"' "$bindings_lua" && ! grep -q omagrab "$bindings_lua"; then + warn " SUPER+SHIFT+V is already bound to something else — skipping the keybind." + echo " To use it anyway, add this to ~/.config/hypr/bindings.lua yourself:" + echo " o.bind(\"SUPER + SHIFT + V\", \"omagrab (clipboard URL)\", \"xdg-terminal-exec --app-id=omagrab -e omagrab --clip\")" + else + mkdir -p "$(dirname "$bindings_lua")" + [ -f "$bindings_lua" ] && cp "$bindings_lua" "$bindings_lua.omagrab-bak" + { + printf '\n%s\n' "$lua_begin" + printf -- '-- omagrab — copy a link, press SUPER+SHIFT+V, omagrab opens with it pre-filled.\n' + printf 'o.window({ class = "^omagrab$" }, { float = true })\n' + printf 'o.window({ class = "^omagrab$" }, { center = true })\n' + printf 'o.window({ class = "^omagrab$" }, { size = { 520, 260 } })\n' + printf 'o.bind("SUPER + SHIFT + V", "omagrab (clipboard URL)", "xdg-terminal-exec --app-id=omagrab -e omagrab --clip")\n' + printf '%s\n' "$lua_end" + } >> "$bindings_lua" + echo " Added floating window rule + SUPER+SHIFT+V keybind to ~/.config/hypr/bindings.lua." + command -v hyprctl >/dev/null 2>&1 && hyprctl reload >/dev/null 2>&1 || true + fi + skip_conf_integration=1 + else + skip_conf_integration=0 + fi + # Write a small floating window rule, idempotently, between markers we own so # re-running the installer never duplicates it. Back the file up first. windows_conf="$HOME/.config/hypr/windows.conf" begin="# >>> omagrab windowrules begin" end="# <<< omagrab windowrules end" - if [ -f "$windows_conf" ] && grep -qF "$begin" "$windows_conf"; then + if [ "$skip_conf_integration" = 1 ]; then + : # Lua config handled above; the .conf files aren't loaded on Omarchy 4+. + elif [ -f "$windows_conf" ] && grep -qF "$begin" "$windows_conf"; then echo " Hyprland float rule already present — left as-is." else mkdir -p "$(dirname "$windows_conf")" @@ -171,7 +207,9 @@ EOF kb_begin="# >>> omagrab keybind begin" kb_end="# <<< omagrab keybind end" keybind_line="bindd = SUPER SHIFT, V, omagrab, exec, xdg-terminal-exec --app-id=omagrab -e omagrab --clip" - if [ -f "$bindings_conf" ] && grep -qF "$kb_begin" "$bindings_conf"; then + if [ "$skip_conf_integration" = 1 ]; then + : # Lua config handled above; the .conf files aren't loaded on Omarchy 4+. + elif [ -f "$bindings_conf" ] && grep -qF "$kb_begin" "$bindings_conf"; then echo " Clipboard keybind already present — left as-is." elif [ -f "$bindings_conf" ] && grep -Eq '^[[:space:]]*bind[a-z]*[[:space:]]*=[[:space:]]*SUPER[[:space:]]+SHIFT[[:space:]]*,[[:space:]]*V[[:space:]]*,' "$bindings_conf"; then warn " SUPER+SHIFT+V is already bound to something else — skipping the keybind."