#!/bin/bash disconnect-screen xset r rate 250 50 has_hdmi2=$(xrandr | grep '^HDMI2 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_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 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 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 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 eDP-1 --auto fi if [[ $has_dp1 ]]; then xrandr --output DP-1 --right-of eDP-1 --auto fi if [[ $has_dp2 ]]; then 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 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 for workspace in "${workspaces_right[@]}"; do i3-msg "[workspace=\"$workspace\"]" move workspace to output $output_right done i3-msg "workspace 3" i3-msg "workspace 1" fi conky-update-interval