loader image

Reply To: Tiled Display Script [Xubuntu]

#8478
thumbtak
Moderator

If you have two monitors and want to use it for both, this is the script for two.

#!/bin/bash

# --- Configuration ---
# Single monitor dimensions (3440 x 1440 Ultrawide)
MONITOR_WIDTH=3440
MONITOR_HEIGHT=1440

# --- Calculations ---
# 3 columns and 2 rows = 6 sections PER MONITOR (12 total across both)
GRID_COLS_PER_MONITOR=3
GRID_ROWS=2

# Exact pixel math per section (3440 / 3 = 1146 pixels wide)
CELL_WIDTH=$((MONITOR_WIDTH / GRID_COLS_PER_MONITOR))
CELL_HEIGHT=$((MONITOR_HEIGHT / GRID_ROWS))

# --- Helper Function for Tiling ---
tile_window() {
local target_x=$1
local target_y=$2

# Get active window
WIN_ID=$(xdotool getactivewindow)
if [ -z "$WIN_ID" ]; then
exit 1
fi

# Unmaximize window
wmctrl -i -r "$WIN_ID" -b remove,maximized_vert,maximized_horz

# Move and Resize Window (Gravity 1 forces the exact width)
wmctrl -i -r "$WIN_ID" -e 1,"$target_x","$target_y","$CELL_WIDTH","$CELL_HEIGHT"
}

# --- Main Script Logic ---
case "$1" in
# ================= MONITOR 1 (Left Screen) =================
"m1_top_left") tile_window 0 0 ;;
"m1_top_middle") tile_window "$CELL_WIDTH" 0 ;;
"m1_top_right") tile_window $((2 * CELL_WIDTH)) 0 ;;

"m1_bottom_left") tile_window 0 "$CELL_HEIGHT" ;;
"m1_bottom_middle") tile_window "$CELL_WIDTH" "$CELL_HEIGHT" ;;
"m1_bottom_right") tile_window $((2 * CELL_WIDTH)) "$CELL_HEIGHT" ;;

# ================= MONITOR 2 (Right Screen) =================
"m2_top_left") tile_window "$MONITOR_WIDTH" 0 ;;
"m2_top_middle") tile_window $((MONITOR_WIDTH + CELL_WIDTH)) 0 ;;
"m2_top_right") tile_window $((MONITOR_WIDTH + (2 * CELL_WIDTH))) 0 ;;

"m2_bottom_left") tile_window "$MONITOR_WIDTH" "$CELL_HEIGHT" ;;
"m2_bottom_middle") tile_window $((MONITOR_WIDTH + CELL_WIDTH)) "$CELL_HEIGHT" ;;
"m2_bottom_right") tile_window $((MONITOR_WIDTH + (2 * CELL_WIDTH))) "$CELL_HEIGHT" ;;

*)
echo "Usage: $0 {m1_top_left|m1_top_middle|m1_top_right|m1_bottom_left... or m2_...}"
exit 1
;;
esac

===================================================================
MONITOR 1 (LEFT SCREEN) – KEYBOARD KEYS: ` THROUGH 5
===================================================================

[Top Left]
Shortcut: Super + `
Command: /home/tak/Scripts/dual-tile.sh m1_top_left

[Top Middle]
Shortcut: Super + 1
Command: /home/tak/Scripts/dual-tile.sh m1_top_middle

[Top Right]
Shortcut: Super + 2
Command: /home/tak/Scripts/dual-tile.sh m1_top_right

[Bottom Left]
Shortcut: Super + 3
Command: /home/tak/Scripts/dual-tile.sh m1_bottom_left

[Bottom Middle]
Shortcut: Super + 4
Command: /home/tak/Scripts/dual-tile.sh m1_bottom_middle

[Bottom Right]
Shortcut: Super + 5
Command: /home/tak/Scripts/dual-tile.sh m1_bottom_right

===================================================================
MONITOR 2 (RIGHT SCREEN) – KEYBOARD KEYS: 6 THROUGH –
===================================================================

[Top Left]
Shortcut: Super + 6
Command: /home/tak/Scripts/dual-tile.sh m2_top_left

[Top Middle]
Shortcut: Super + 7
Command: /home/tak/Scripts/dual-tile.sh m2_top_middle

[Top Right]
Shortcut: Super + 8
Command: /home/tak/Scripts/dual-tile.sh m2_top_right

[Bottom Left]
Shortcut: Super + 9
Command: /home/tak/Scripts/dual-tile.sh m2_bottom_left

[Bottom Middle]
Shortcut: Super + 0
Command: /home/tak/Scripts/dual-tile.sh m2_bottom_middle

[Bottom Right]
Shortcut: Super + –
Command: /home/tak/Scripts/dual-tile.sh m2_bottom_right

TAKs Shack