From e368304b02ecc7f59e01d11751da1338c32f9d20 Mon Sep 17 00:00:00 2001 From: Meisterlala <6453306+Meisterlala@users.noreply.github.com> Date: Fri, 23 May 2025 22:10:39 +0200 Subject: [PATCH] new monitor --- dot_config/bspwm/executable_bspwmrc | 18 +++++---- dot_config/bspwm/executable_hdmi.sh | 59 +++++++++++++++++++++++++++-- 2 files changed, 66 insertions(+), 11 deletions(-) diff --git a/dot_config/bspwm/executable_bspwmrc b/dot_config/bspwm/executable_bspwmrc index d387943..2d424c9 100644 --- a/dot_config/bspwm/executable_bspwmrc +++ b/dot_config/bspwm/executable_bspwmrc @@ -27,8 +27,10 @@ sxhkd & # Connect 2nd Monitor $HOME/.config/bspwm/hdmi.sh -# Init bspwm -bspc monitor -d 1 2 3 4 5 6 7 8 9 text code browser notes mail +# Init bspwm, only init monitors on first load +if [[ "$1" = 0 ]]; then + bspc monitor eDP-1 -d 1 2 3 4 5 6 7 8 9 text code browser notes mail +fi # Border Style bspc config border_width 0 @@ -38,15 +40,15 @@ bspc config window_gap 12 bspc config split_ratio 0.52 bspc config borderless_monocle true bspc config gapless_monocle true -bspc config single_monocle true +bspc config single_monocle true bspc config top_monocle_padding 0 -bspc config bottom_monocle_padding 0 +bspc config bottom_monocle_padding 0 bspc config bottom_padding 0 -bspc config top_padding 25 -#bspc config -m eDP-1 top_padding 25 +bspc config top_padding 0 +bspc config -m eDP-1 top_padding 25 bspc config focus_follows_pointer true -bspc config remove_disabled_monitors true -bspc config merge_overlapping_monitors truee +bspc config remove_disabled_monitors true +#bspc config merge_overlapping_monitors true # Mouse Movement bspc config pointer_action1 move diff --git a/dot_config/bspwm/executable_hdmi.sh b/dot_config/bspwm/executable_hdmi.sh index 2c3c82f..8d22b66 100644 --- a/dot_config/bspwm/executable_hdmi.sh +++ b/dot_config/bspwm/executable_hdmi.sh @@ -1,5 +1,58 @@ -#!/bin/sh +#!/usr/bin/env bash -if xrandr | grep "HDMI-2 connected ("; then - xrandr --output HDMI-2 --mode 1920x1080 --same-as eDP-1 +INTERNAL="eDP-1" +EXTERNAL="HDMI-2" + +# Helper to check if monitor exists +monitor_exists() { + bspc query -M --names | grep -qx "$1" +} + +# Helper to check if desktop exists +desktop_exists() { + bspc query -D --names | grep -qx "$1" +} + +if xrandr -q | grep -q "^$EXTERNAL connected"; then + # External monitor connected: set layout and move desktop 9 if needed + xrandr --output "$INTERNAL" --primary --output "$EXTERNAL" --auto --right-of "$INTERNAL" + + if ! bspc query -D -m "$EXTERNAL" --names | grep -qx 9; then + bspc desktop 9 --to-monitor "$EXTERNAL" + fi + + # Remove default desktop if exists + if desktop_exists Desktop; then + bspc desktop Desktop --remove + fi + +else + # External monitor disconnected: turn off external and reset desktops + xrandr --output "$EXTERNAL" --off + + # Add default desktop to external if monitor exists + if monitor_exists "$EXTERNAL"; then + if ! desktop_exists Desktop; then + bspc monitor "$EXTERNAL" -a Desktop + fi + fi + + # Move desktop 9 back if it exists + if desktop_exists 9; then + bspc desktop 9 --to-monitor "$INTERNAL" + fi + + # Remove default desktop if exists + if desktop_exists Desktop; then + bspc desktop Desktop --remove + fi + + # Reorder desktops on internal monitor (no need to check monitor existence) + bspc monitor "$INTERNAL" -o 1 2 3 4 5 6 7 8 9 text code browser notes mail + + # Remove external monitor if it exists + if monitor_exists "$EXTERNAL"; then + bspc monitor "$EXTERNAL" --remove + fi fi + -- 2.51.2