From 83dc3b0557c30c5e2d2fe39549b758e8d51e9211 Mon Sep 17 00:00:00 2001 From: dichgrem Date: Mon, 8 Sep 2025 19:29:11 +0800 Subject: [PATCH] feat:add_monitors_switch --- dotfiles/.config/hypr/hyprland/bind.conf | 2 + .../.config/hypr/scripts/kde_like_monitors.sh | 52 +++++++++++++++++++ dotfiles/.config/waybar/config.jsonc | 2 +- hosts/example/env.nix | 2 +- 4 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 dotfiles/.config/hypr/scripts/kde_like_monitors.sh diff --git a/dotfiles/.config/hypr/hyprland/bind.conf b/dotfiles/.config/hypr/hyprland/bind.conf index 78dcedf..48a0a31 100644 --- a/dotfiles/.config/hypr/hyprland/bind.conf +++ b/dotfiles/.config/hypr/hyprland/bind.conf @@ -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 diff --git a/dotfiles/.config/hypr/scripts/kde_like_monitors.sh b/dotfiles/.config/hypr/scripts/kde_like_monitors.sh new file mode 100644 index 0000000..5d8a792 --- /dev/null +++ b/dotfiles/.config/hypr/scripts/kde_like_monitors.sh @@ -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" diff --git a/dotfiles/.config/waybar/config.jsonc b/dotfiles/.config/waybar/config.jsonc index ca7cd93..bd25847 100644 --- a/dotfiles/.config/waybar/config.jsonc +++ b/dotfiles/.config/waybar/config.jsonc @@ -22,7 +22,7 @@ "custom/screenshot", "tray", "custom/wl-gammarelay-brightness", -/ "custom/wl-gammarelay-temperature", +// "custom/wl-gammarelay-temperature", "clock", "custom/swaync", ], diff --git a/hosts/example/env.nix b/hosts/example/env.nix index 22d95b1..302864c 100644 --- a/hosts/example/env.nix +++ b/hosts/example/env.nix @@ -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";