feat:add_monitors_switch

This commit is contained in:
dichgrem
2025-09-08 19:29:11 +08:00
parent 01ff467d67
commit 83dc3b0557
4 changed files with 56 additions and 2 deletions

View File

@@ -8,6 +8,8 @@ binds {
## App Launcher
bindr = SUPER, SPACE, exec, fuzzel
## Display Toggle
bind = SUPER, F4, exec, sh ~/.config/hypr/scripts/kde_like_monitors.sh
## Restart some programs
### Input Tool

View File

@@ -0,0 +1,52 @@
#!/bin/bash
STATE_FILE="/tmp/hypr_monitor_mode"
INTERNAL="eDP-1"
EXTERNAL="DP-1"
# 预设模式参数
INT_RES="2560x1600@165,0x0,1.25"
EXT_RES="2560x1440@144,2560x0,1.25"
MIRROR_RES="2560x1440@144,0x0,1.25"
# 模式顺序:内屏 → 外屏 → 扩展
MODES=("internal_only" "external_only" "extended")
# 读取上次模式
if [[ -f "$STATE_FILE" ]]; then
LAST_MODE=$(cat "$STATE_FILE")
else
LAST_MODE="extended"
fi
# 找出下一个模式
NEXT_INDEX=0
for i in "${!MODES[@]}"; do
if [[ "${MODES[$i]}" == "$LAST_MODE" ]]; then
NEXT_INDEX=$(((i + 1) % ${#MODES[@]}))
break
fi
done
NEXT_MODE="${MODES[$NEXT_INDEX]}"
# 应用新模式
case "$NEXT_MODE" in
internal_only)
hyprctl keyword monitor "$EXTERNAL,disable"
hyprctl keyword monitor "$INTERNAL,$INT_RES"
notify-send "显示模式" "仅内屏"
;;
external_only)
hyprctl keyword monitor "$INTERNAL,disable"
hyprctl keyword monitor "$EXTERNAL,$EXT_RES"
notify-send "显示模式" "仅外屏"
;;
extended)
hyprctl keyword monitor "$INTERNAL,$INT_RES"
hyprctl keyword monitor "$EXTERNAL,$EXT_RES"
notify-send "显示模式" "扩展模式"
;;
esac
# 保存新模式
echo "$NEXT_MODE" >"$STATE_FILE"

View File

@@ -22,7 +22,7 @@
"custom/screenshot",
"tray",
"custom/wl-gammarelay-brightness",
/ "custom/wl-gammarelay-temperature",
// "custom/wl-gammarelay-temperature",
"clock",
"custom/swaync",
],

View File

@@ -34,7 +34,7 @@
Locale = "en_US.UTF-8";
### See https://docs.moodle.org/405/en/Table_of_locales
StateVersion = "25.05";
StateVersion = "25.11";
### See https://mynixos.com/nixpkgs/option/system.stateVersion
TimeZone = "Asia/Singapore";