Better bindings
This commit is contained in:
+76
-14
@@ -25,6 +25,10 @@ local function bindlr(key, cmd, desc, opts)
|
|||||||
bindl(key, cmd, desc, opts)
|
bindl(key, cmd, desc, opts)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function notify(text)
|
||||||
|
hl.notification.create({ text = text, duration = 2000 })
|
||||||
|
end
|
||||||
|
|
||||||
-- Laptop multimedia keys for volume and LCD brightness (with OSD)
|
-- Laptop multimedia keys for volume and LCD brightness (with OSD)
|
||||||
bindlr("XF86AudioRaiseVolume", exec(osdclient .. " --output-volume raise"), "Volume up")
|
bindlr("XF86AudioRaiseVolume", exec(osdclient .. " --output-volume raise"), "Volume up")
|
||||||
bindlr("XF86AudioRaiseVolume", exec(osdclient .. " --output-volume raise"), "Volume up")
|
bindlr("XF86AudioRaiseVolume", exec(osdclient .. " --output-volume raise"), "Volume up")
|
||||||
@@ -70,8 +74,53 @@ bind("SUPER + Q", hl.dsp.window.close(), "Close window")
|
|||||||
bind("SUPER + P", hl.dsp.window.pseudo()--[[# dwindle]], "Pseudo window")
|
bind("SUPER + P", hl.dsp.window.pseudo()--[[# dwindle]], "Pseudo window")
|
||||||
bind("SUPER + F", hl.dsp.window.fullscreen(0), "Full screen")
|
bind("SUPER + F", hl.dsp.window.fullscreen(0), "Full screen")
|
||||||
bind("SUPER + CTRL + F", hl.dsp.window.fullscreen(1), "Full width")
|
bind("SUPER + CTRL + F", hl.dsp.window.fullscreen(1), "Full width")
|
||||||
bind("SUPER + T", exec("station-hyprland-window-pop"), "Pop window out (float & pin)")
|
bind("SUPER + T", function()
|
||||||
bind("SUPER + CTRL + L", exec("station-hyprland-workspace-layout-toggle"), "Toggle workspace layout")
|
local width = 1300
|
||||||
|
local height = 900
|
||||||
|
local pinned = hl.get_active_window().pinned
|
||||||
|
|
||||||
|
if pinned then
|
||||||
|
hl.dispatch(hl.dsp.window.pin())
|
||||||
|
hl.dispatch(hl.dsp.window.float({ action = "toggle" }))
|
||||||
|
hl.dispatch(hl.dsp.window.tag({ tag = "-pop" }))
|
||||||
|
else
|
||||||
|
hl.dispatch(hl.dsp.window.float({ action = "toggle" }))
|
||||||
|
hl.dispatch(hl.dsp.window.resize({ x = width, y = height }))
|
||||||
|
hl.dispatch(hl.dsp.window.center())
|
||||||
|
hl.dispatch(hl.dsp.window.pin())
|
||||||
|
hl.dispatch(hl.dsp.window.alter_zorder({ mode = "top" }))
|
||||||
|
hl.dispatch(hl.dsp.window.tag({ tag = "+pop" }))
|
||||||
|
end
|
||||||
|
end, "Pop window out (float & pin)")
|
||||||
|
bind("SUPER + CTRL + L", function()
|
||||||
|
local layouts = { "dwindle", "scrolling", "monocle", "master" }
|
||||||
|
local workspace = hl.get_active_workspace()
|
||||||
|
if hl.get_active_special_workspace() then
|
||||||
|
workspace = hl.get_active_special_workspace()
|
||||||
|
end
|
||||||
|
|
||||||
|
local next_layout = "dwindle"
|
||||||
|
|
||||||
|
if not workspace then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
for i = 1, #layouts do
|
||||||
|
if layouts[i] == workspace.tiled_layout then
|
||||||
|
local next_layout_idx = (i % #layouts) + 1
|
||||||
|
next_layout = layouts[next_layout_idx]
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
if workspace.special then
|
||||||
|
hl.workspace_rule({ workspace = tostring(workspace.name), layout = next_layout })
|
||||||
|
else
|
||||||
|
hl.workspace_rule({ workspace = tostring(workspace.id), layout = next_layout })
|
||||||
|
end
|
||||||
|
|
||||||
|
notify(" Workspace layout set to " .. next_layout)
|
||||||
|
end, "Toggle workspace layout")
|
||||||
|
|
||||||
-- Move focus with SUPER + arrow keys
|
-- Move focus with SUPER + arrow keys
|
||||||
bind("SUPER + H", hl.dsp.focus({ direction = "left" }), "Move window focus left")
|
bind("SUPER + H", hl.dsp.focus({ direction = "left" }), "Move window focus left")
|
||||||
@@ -153,12 +202,26 @@ bind(
|
|||||||
exec("hyprctl dispatch setprop \"address:$(hyprctl activewindow -j | jq -r '.address')\" opaque toggle"),
|
exec("hyprctl dispatch setprop \"address:$(hyprctl activewindow -j | jq -r '.address')\" opaque toggle"),
|
||||||
"Toggle window transparency"
|
"Toggle window transparency"
|
||||||
)
|
)
|
||||||
bind("SUPER + SHIFT + BACKSPACE", exec("station-hyprland-window-gaps-toggle"), "Toggle window gaps")
|
bind("SUPER + SHIFT + BACKSPACE", function()
|
||||||
bind(
|
local gaps = hl.get_config("general.gaps_out")
|
||||||
"SUPER + CTRL + Backspace",
|
if gaps.top == 0 then
|
||||||
exec("station-hyprland-window-single-square-aspect-toggle"),
|
hl.config({
|
||||||
"Toggle single-window square aspect"
|
general = {
|
||||||
)
|
gaps_out = 10,
|
||||||
|
gaps_in = 5,
|
||||||
|
border_size = 2,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
else
|
||||||
|
hl.config({
|
||||||
|
general = {
|
||||||
|
gaps_out = 0,
|
||||||
|
gaps_in = 0,
|
||||||
|
border_size = 0,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end, "Toggle window gaps")
|
||||||
|
|
||||||
-- Notifications
|
-- Notifications
|
||||||
bind("SUPER + COMMA", exec("makoctl dismiss"), "Dismiss last notification")
|
bind("SUPER + COMMA", exec("makoctl dismiss"), "Dismiss last notification")
|
||||||
@@ -180,17 +243,16 @@ bind("SUPER + PRINT", exec("pkill hyprpicker || hyprpicker -a"), "Color picker")
|
|||||||
-- bind("SUPER CTRL + S", exec("station-menu share"), "Share")
|
-- bind("SUPER CTRL + S", exec("station-menu share"), "Share")
|
||||||
|
|
||||||
-- Waybar-less information
|
-- Waybar-less information
|
||||||
bind("SUPER + CTRL + ALT + T", exec('notify-send " $(date +"%A %H:%M — %d %B W%V %Y")"'), "Show time")
|
bind("SUPER + CTRL + ALT + T", exec('notify " $(date +"%A %H:%M — %d %B W%V %Y")"'), "Show time")
|
||||||
bind(
|
bind(
|
||||||
"SUPER + CTRL + ALT + B",
|
"SUPER + CTRL + ALT + B",
|
||||||
exec('notify-send " Battery is at $(station-battery-remaining)%"'),
|
exec('notify-send " Battery is at $(station-battery-remaining)%"'),
|
||||||
"Show battery remaining"
|
"Show battery remaining"
|
||||||
)
|
)
|
||||||
bind(
|
bind("SUPER + CTRL + ALT + W", function()
|
||||||
"SUPER + CTRL + ALT + W",
|
local window = hl.get_active_window()
|
||||||
exec('notify-send "$(hyprctl activewindow -j | jq -r \'"Window: (.title)\nClass: (.class)"\')"'),
|
notify("Window: " .. window.title .. "\nClass: " .. window.class)
|
||||||
"Show active window name and class"
|
end, "Show active window name and class")
|
||||||
)
|
|
||||||
|
|
||||||
-- Control panels
|
-- Control panels
|
||||||
bind("SUPER + CTRL + A", exec("station-launch-audio"), "Audio controls")
|
bind("SUPER + CTRL + A", exec("station-launch-audio"), "Audio controls")
|
||||||
|
|||||||
@@ -1,15 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Toggles the window gaps globally between no gaps and the default 10/5/2.
|
|
||||||
|
|
||||||
gaps=$(hyprctl getoption general:gaps_out -j | jq -r '.custom' | awk '{print $1}')
|
|
||||||
|
|
||||||
if [[ $gaps == "0" ]]; then
|
|
||||||
hyprctl keyword general:gaps_out 10
|
|
||||||
hyprctl keyword general:gaps_in 5
|
|
||||||
hyprctl keyword general:border_size 2
|
|
||||||
else
|
|
||||||
hyprctl keyword general:gaps_out 0
|
|
||||||
hyprctl keyword general:gaps_in 0
|
|
||||||
hyprctl keyword general:border_size 0
|
|
||||||
fi
|
|
||||||
@@ -1,46 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Toggle to pop-out a tile to stay fixed on a display basis.
|
|
||||||
|
|
||||||
# Usage:
|
|
||||||
# station-hyprland-window-pop [width height [x y]]
|
|
||||||
#
|
|
||||||
# Arguments:
|
|
||||||
# width Optional. Width of the floating window. Default: 1300
|
|
||||||
# height Optional. Height of the floating window. Default: 900
|
|
||||||
# x Optional. X position of the window. Must provide both X and Y to take effect.
|
|
||||||
# y Optional. Y position of the window. Must provide both X and Y to take effect.
|
|
||||||
#
|
|
||||||
# Behavior:
|
|
||||||
# - If the window is already pinned, it will be unpinned and removed from the pop layer.
|
|
||||||
# - If the window is not pinned, it will be floated, resized, moved/centered, pinned, brought to top, and popped.
|
|
||||||
|
|
||||||
width=${1:-1300}
|
|
||||||
height=${2:-900}
|
|
||||||
x=${3:-}
|
|
||||||
y=${4:-}
|
|
||||||
|
|
||||||
active=$(hyprctl activewindow -j)
|
|
||||||
pinned=$(echo "$active" | jq ".pinned")
|
|
||||||
addr=$(echo "$active" | jq -r ".address")
|
|
||||||
|
|
||||||
if [[ $pinned == "true" ]]; then
|
|
||||||
hyprctl -q --batch \
|
|
||||||
"dispatch pin address:$addr;" \
|
|
||||||
"dispatch togglefloating address:$addr;" \
|
|
||||||
"dispatch tagwindow -pop address:$addr;"
|
|
||||||
elif [[ -n $addr ]]; then
|
|
||||||
hyprctl dispatch togglefloating address:$addr
|
|
||||||
hyprctl dispatch resizeactive exact $width $height address:$addr
|
|
||||||
|
|
||||||
if [[ -n $x && -n $y ]]; then
|
|
||||||
hyprctl dispatch moveactive $x $y address:$addr
|
|
||||||
else
|
|
||||||
hyprctl dispatch centerwindow address:$addr
|
|
||||||
fi
|
|
||||||
|
|
||||||
hyprctl -q --batch \
|
|
||||||
"dispatch pin address:$addr;" \
|
|
||||||
"dispatch alterzorder top address:$addr;" \
|
|
||||||
"dispatch tagwindow +pop address:$addr;"
|
|
||||||
fi
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Check current single_window_aspect_ratio setting
|
|
||||||
CURRENT_VALUE=$(hyprctl getoption "layout:single_window_aspect_ratio" 2>/dev/null | head -1)
|
|
||||||
|
|
||||||
# Parse vec2 output: "vec2: [1, 1]" or "vec2: [0, 0]"
|
|
||||||
if [[ $CURRENT_VALUE == *"[1, 1]"* ]]; then
|
|
||||||
hyprctl keyword layout:single_window_aspect_ratio "0 0"
|
|
||||||
notify-send " Disable single-window square aspect ratio"
|
|
||||||
else
|
|
||||||
hyprctl keyword layout:single_window_aspect_ratio "1 1"
|
|
||||||
notify-send " Enable single-window square aspect"
|
|
||||||
fi
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Toggle the layout on the current active workspace between dwindle and scrolling
|
|
||||||
|
|
||||||
ACTIVE_WORKSPACE=$(hyprctl activeworkspace -j | jq -r '.id')
|
|
||||||
CURRENT_LAYOUT=$(hyprctl activeworkspace -j | jq -r '.tiledLayout')
|
|
||||||
|
|
||||||
case "$CURRENT_LAYOUT" in
|
|
||||||
dwindle) NEW_LAYOUT=scrolling ;;
|
|
||||||
scrolling) NEW_LAYOUT=monocle ;;
|
|
||||||
monocle) NEW_LAYOUT=master ;;
|
|
||||||
*) NEW_LAYOUT=dwindle ;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
hyprctl keyword workspace $ACTIVE_WORKSPACE, layout:$NEW_LAYOUT
|
|
||||||
notify-send " Workspace layout set to $NEW_LAYOUT"
|
|
||||||
Reference in New Issue
Block a user