The i3 and laptop READMEs each pointed at the other for 10-asus.conf and 20-g14.conf, so nobody owned them. The module now writes both (adopted paths, so no duplicate binding breaks i3's config check), ships the scripts they call, runs the media keys with notifications again, and brings back the touchpad reset after resume as a unit the sleep services want. zephyrus_keys answers what each custom key runs; the check flags as-user, thd's account and the resume unit. xorg-xinput is the xorg module's.
42 lines
2.0 KiB
Bash
Executable File
42 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# zephyrus-display primary | order — the laptop's internal panel among the outputs.
|
|
# Shipped by the mesh's asus-zephyrus-g14 module; edit the catalogue.
|
|
#
|
|
# primary makes the internal panel X's primary output, where the bars' tray goes.
|
|
# order the display key (Fn+F9, which the firmware sends as Super+P): odd workspaces to the
|
|
# internal panel, even ones to the first external output, or all to the panel when it
|
|
# is alone. The predecessor's orden-workspaces.
|
|
#
|
|
# The panel is found, not named: the connected output whose name starts with eDP. The predecessor
|
|
# wrote eDP-1, which is what this model calls it today and not a promise.
|
|
set -u
|
|
here=$(dirname "$0")
|
|
panel=$(xrandr --query 2>/dev/null | awk '$2 == "connected" && $1 ~ /^eDP/ { print $1; exit }')
|
|
[ -n "$panel" ] || { echo "zephyrus-display: no internal panel connected" >&2; exit 1; }
|
|
case "${1:-}" in
|
|
primary)
|
|
exec xrandr --output "$panel" --primary
|
|
;;
|
|
order)
|
|
external=$(xrandr --listmonitors 2>/dev/null | awk -v p="$panel" 'NR > 1 && $NF != p { print $NF; exit }')
|
|
[ -n "$external" ] || external=$panel
|
|
# i3's workspace list, one object per workspace; num and output read from each. No jq: the
|
|
# fields are flat strings and numbers, and rect, the only nested value, holds neither name.
|
|
i3-msg -t get_workspaces 2>/dev/null | sed 's/},{"id"/}\n{"id"/g' |
|
|
while read -r ws; do
|
|
num=$(printf '%s' "$ws" | grep -o '"num":-\?[0-9]*' | cut -d: -f2)
|
|
out=$(printf '%s' "$ws" | grep -o '"output":"[^"]*"' | cut -d'"' -f4)
|
|
[ -n "$num" ] && [ "$num" -ge 0 ] || continue
|
|
if [ $((num % 2)) -eq 0 ]; then dest=$external; else dest=$panel; fi
|
|
[ "$out" = "$dest" ] && continue
|
|
i3-msg "workspace number $num; move workspace to output $dest" >/dev/null
|
|
done
|
|
if [ "$external" = "$panel" ]; then
|
|
"$here/zephyrus-notify" 7780 "Workspaces: all on the panel"
|
|
else
|
|
"$here/zephyrus-notify" 7780 "Workspaces: odd on the panel, even on $external"
|
|
fi
|
|
;;
|
|
*) echo "usage: zephyrus-display primary | order" >&2; exit 2 ;;
|
|
esac
|