#!/bin/bash internal=eDP-1 external=$(xrandr | grep -w connected | grep -v "$internal" | cut -d ' ' -f 1) move_workspaces() { local primary=$(i3-msg -t get_outputs | jq '.[]|select(.primary==true)|.name') for workspace_number in $(i3-msg -t get_workspaces | jq .[].num); do i3-msg workspace number "$workspace_number", move workspace to output "$primary" done return 0 } export -f move_workspace case "$1" in single) xrandr --output "$internal" --auto --primary --output "$external" --off #xrandr --dpi 172 #gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gdk/WindowScalingFactor': <1>}" ;; double) xrandr --output "$internal" --auto --output "$external" --auto --primary --above "$internal" # current_workspace="$(i3-msg -t get_workspaces \ # | jq '.[] | select(.focused==true).name' \ # | cut -d"\"" -f2)" # i3-msg -t get_workspaces | jq -r .[].name | xargs -I{} bash -c "move_workspace {}" # i3-msg workspace "$current_workspace" #gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gdk/WindowScalingFactor': <1>}" ;; mirror) xrandr --output "$internal" --auto --output "$external" --auto --same-as "$internal" #gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gdk/WindowScalingFactor': <1>}" ;; *) echo "Usage: $0 (single|double|mirror)" 1>&2 exit 1 ;; esac xmodmap ~/.Xmodmap i3-msg restart exit 0 #echo "Reverting to single display in 10 seconds." 1>&2 #sleep 10 #"$0" single