From d6c2320512a665f5c75b36769f5eb3a2e313b7bd Mon Sep 17 00:00:00 2001 From: Florian Pritz Date: Thu, 26 Sep 2024 10:32:53 +0200 Subject: connect-screen: misc changes Signed-off-by: Florian Pritz --- connect-screen | 149 ++++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 122 insertions(+), 27 deletions(-) (limited to 'connect-screen') diff --git a/connect-screen b/connect-screen index 4f4403e..271a6ee 100755 --- a/connect-screen +++ b/connect-screen @@ -1,71 +1,164 @@ #!/bin/bash -xrandr --output VIRTUAL1 --off -xrandr --output HDMI2 --off -xrandr --output DP1 --off -xrandr --output DP2 --off -xrandr --output DP1-1 --off -xrandr --output DP1-2 --off -xrandr --output DP2-1 --off -xrandr --output DP2-2 --off +disconnect-screen xset r rate 250 50 has_hdmi2=$(xrandr | grep '^HDMI2 connected') -has_dp1=$(xrandr | grep '^DP1 connected') -has_dp1_1=$(xrandr | grep '^DP1-1 connected') -has_dp1_2=$(xrandr | grep '^DP1-2 connected') +has_dp1=$(xrandr | grep '^DP-1 connected') +has_dp3=$(xrandr | grep '^DP-3 connected') +has_dp4=$(xrandr | grep '^DP-4 connected') +has_dp3_1=$(xrandr | grep '^DP3-1 connected') +has_dp3_2=$(xrandr | grep '^DP3-2 connected') +has_dp4_1=$(xrandr | grep '^DP4-1 connected') +has_dp4_2=$(xrandr | grep '^DP4-2 connected') +has_dp_4_1=$(xrandr | grep '^DP-4-1 connected') +has_dp_4_8=$(xrandr | grep '^DP-4-8 connected') +has_dp_4_2=$(xrandr | grep '^DP-4-2 connected') +has_dp_4_2_1=$(xrandr | grep '^DP-4-2-1 connected') +has_dp_4_3_1=$(xrandr | grep '^DP-4-3-1 connected') +has_dp_3_2_1=$(xrandr | grep '^DP-3-2-1 connected') +has_dp_3_3_1=$(xrandr | grep '^DP-3-3-1 connected') has_dp2=$(xrandr | grep '^DP2 connected') has_dp2_2=$(xrandr | grep '^DP2-2 connected') +home_wifi=true + output_left="" output_right="" -if [[ $has_dp1_1 && $has_dp1_2 ]]; then - xrandr --output DP1-2 --right-of eDP1 --mode 640x480 -r 60 - xrandr --output DP1-1 --right-of DP1-2 --mode 2560x1440 -r 60 - xrandr --output DP1-1 --primary - output_left=DP1-2 - output_right=DP1-1 +if [[ $has_dp_4_2_1 && $has_dp_4_3_1 ]]; then + xrandr --output DP-4-3-1 --right-of eDP-1 --mode 2560x1440 -r 60 + + # XXX: first 60, then 144 hz since sometimes the screen doesn't detect the signal otherwise + xrandr --output DP-4-2-1 --right-of DP-4-3-1 --mode 2560x1440 -r 60 + xrandr --output DP-4-2-1 --right-of DP-4-3-1 --mode 2560x1440 -r 144 + #for i in {0..10}; do + #xrandr --output DP-4-1 --right-of DP-4-8 --mode 2560x1440 -r 144 && continue + #sleep 1 + #done + xrandr --output DP-4-3-1 --primary + output_left=DP-4-3-1 + output_right=DP-4-2-1 +elif [[ $has_dp_3_2_1 && $has_dp_3_3_1 ]]; then + xrandr --output DP-3-3-1 --right-of eDP-1 --mode 2560x1440 -r 60 + + # XXX: first 60, then 144 hz since sometimes the screen doesn't detect the signal otherwise + xrandr --output DP-3-2-1 --right-of DP-3-3-1 --mode 2560x1440 -r 60 + xrandr --output DP-3-2-1 --right-of DP-3-3-1 --mode 2560x1440 -r 144 + #for i in {0..10}; do + #xrandr --output DP-4-1 --right-of DP-4-8 --mode 2560x1440 -r 144 && continue + #sleep 1 + #done + xrandr --output DP-3-3-1 --primary + output_left=DP-3-3-1 + output_right=DP-3-2-1 +elif [[ $has_dp_4_1 && $has_dp_4_8 ]]; then + xrandr --output DP-4-8 --right-of eDP-1 --mode 2560x1440 -r 60 + + # XXX: first 60, then 144 hz since sometimes the screen doesn't detect the signal otherwise + xrandr --output DP-4-1 --right-of DP-4-8 --mode 2560x1440 -r 60 + xrandr --output DP-4-1 --right-of DP-4-8 --mode 2560x1440 -r 144 + #for i in {0..10}; do + #xrandr --output DP-4-1 --right-of DP-4-8 --mode 2560x1440 -r 144 && continue + #sleep 1 + #done + xrandr --output DP-4-8 --primary + output_left=DP-4-8 + output_right=DP-4-1 +elif [[ $has_dp4_1 && $has_dp4_2 ]]; then + xrandr --output DP4-2 --right-of eDP-1 --mode 1920x1200 -r 60 + xrandr --output DP4-1 --right-of DP4-2 --mode 2560x1440 -r 60 + xrandr --output DP4-1 --primary + output_left=DP4-2 + output_right=DP4-1 +elif [[ $has_dp_4_1 && $has_dp_4_2 ]]; then + xrandr --output DP-4-1 --right-of eDP-1 --auto + xrandr --output DP-4-2 --right-of DP-4-1 --auto + if [[ "$home_wifi" = "true" ]]; then + xrandr --output DP-4-1 --primary + fi + output_left=DP-4-1 + output_right=DP-4-2 +elif [[ $has_dp3_1 && $has_dp3_2 ]]; then + xrandr --output DP3-2 --right-of eDP-1 --mode 1920x1200 -r 60 + xrandr --output DP3-1 --right-of DP3-2 --mode 2560x1440 -r 60 + xrandr --output DP3-1 --primary + output_left=DP3-2 + output_right=DP3-1 elif [[ $has_hdmi2 && $has_dp1_2 ]]; then - xrandr --output DP1-2 --right-of eDP1 --auto + xrandr --output DP1-2 --right-of eDP-1 --auto xrandr --output HDMI2 --right-of DP1-2 --auto xrandr --output DP1-2 --primary output_left=DP1-2 output_right=HDMI2 elif [[ $has_hdmi2 && $has_dp1 ]]; then - xrandr --output DP1-1 --right-of eDP1 --auto + xrandr --output DP1-1 --right-of eDP-1 --auto xrandr --output HDMI2 --right-of DP1 --auto xrandr --output DP1 --primary output_left=DP1-1 output_right=HDMI2 elif [[ $has_dp1 && $has_dp2_2 ]]; then - xrandr --output DP2-2 --right-of eDP1 --auto + xrandr --output DP2-2 --right-of eDP-1 --auto xrandr --output DP1 --right-of DP2-2 --auto xrandr --output DP2-2 --primary output_left=DP2-2 output_right=DP1 +elif [[ $has_dp3 && $has_dp4 ]]; then + xrandr --output DP3 --right-of eDP-1 --auto + xrandr --output DP4 --right-of DP3 --auto + xrandr --output DP3 --primary + output_left=DP3 + output_right=DP4 +elif [[ $has_dp1 && $has_dp4 ]]; then + xrandr --output DP1 --right-of eDP-1 --auto + xrandr --output DP4 --right-of DP1 --auto + xrandr --output DP1 --primary + output_left=DP1 + output_right=DP4 +elif [[ $has_dp1 && $has_dp4_2 ]]; then + xrandr --output DP4-2 --right-of eDP-1 --auto + xrandr --output DP1 --right-of DP4-2 --auto + xrandr --output DP4-2 --primary + output_left=DP4-2 + output_right=DP1 +elif [[ $has_dp4 && $has_dp3_2 ]]; then + xrandr --output DP3-2 --right-of eDP-1 --auto + xrandr --output DP4 --right-of DP3-2 --auto + xrandr --output DP3-2 --primary + output_left=DP3-2 + output_right=DP4 +elif [[ $has_dp3 && $has_dp4_2 ]]; then + xrandr --output DP4-2 --right-of eDP-1 --auto + xrandr --output DP3 --right-of DP4-2 --auto + xrandr --output DP4-2 --primary + output_left=DP4-2 + output_right=DP3 else if [[ $has_hdmi2 ]]; then - xrandr --output HDMI2 --right-of eDP1 --auto + xrandr --output HDMI2 --right-of eDP-1 --auto fi if [[ $has_dp1 ]]; then - xrandr --output DP1 --right-of eDP1 --auto + xrandr --output DP-1 --right-of eDP-1 --auto fi if [[ $has_dp2 ]]; then - xrandr --output DP2 --right-of eDP1 --auto + xrandr --output DP2 --right-of eDP-1 --auto fi xrandr --output eDP1 --primary + xrandr --output eDP-1 --primary fi xkbcomp .xkbmap "$DISPLAY" -# Reorganize workspaces across displays -if [[ $output_left != "" ]] && [[ $output_right != "" ]]; then - workspaces_left=(3 4) - workspaces_right=(1 2 5 6 7 8 9 10 11 12 13 14 15) +# Reorganize workspaces across displays if at home +if [[ $output_left != "" ]] && [[ $output_right != "" ]] && [[ "$home_wifi" = "true" ]]; then + workspaces_left=(4) + workspaces_right=(1 2 5 6 7 8 9 10 11 12 13 15) + # these don't need any handling, just for completeness + workspaces_laptop=(3) + for workspace in "${workspaces_left[@]}"; do i3-msg "[workspace=\"$workspace\"]" move workspace to output $output_left done @@ -77,3 +170,5 @@ if [[ $output_left != "" ]] && [[ $output_right != "" ]]; then i3-msg "workspace 3" i3-msg "workspace 1" fi + +conky-update-interval -- cgit v1.2.3-24-g4f1b