#!/bin/bash internal=eDP-1 mapfile -t externals < <(xrandr \ | grep -w connected \ | grep -v "$internal" \ | cut -d ' ' -f 1) move_workspaces() { local primary 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 } case "$1" in single) xrandr --output "$internal" --auto --primary for external in "${externals[@]}"; do xrandr --output "$external" --off done ;; double) xrandr \ --output "$internal" --auto \ --output "${externals[0]}" --auto --primary --above "$internal" ;; triple) xrandr \ --output "$internal" --auto \ --output "${externals[0]}" --auto --primary --above "$internal" \ --output "${externals[1]}" --auto --right-of "${externals[0]}" \ --rotate left ;; mirror) xrandr \ --output "$internal" --auto --primary \ --output "${externals[0]}" --auto --scale-from 1920x1080 ;; *) echo "Usage: $0 (single|double|triple|mirror)" 1>&2 exit 1 ;; esac xmodmap ~/.Xmodmap move_workspaces feh --bg-scale ~/.background.png exit 0