Thank you for the hints, the wmctrl command looks quite powerful. I came up with some bash scripts, that perform the desired operations and can by called by shortcuts. Currently the screen coordinates are set as constants. Someone could come up with a way to read them programmatically if desired.
base.sh
#!/bin/bash
LEFT_SCREEN_WIDTH=1280
LEFT_SCREEN_HEIGHT=720
RIGHT_SCREEN_WIDTH=1920
RIGHT_SCREEN_HEIGHT=1080
X_LOCATION=$(xwininfo -id $(xdpyinfo | grep focus | grep -E -o 0x[0-9a-f]+) | awk -F ':' '/Absolute upper-left X/{print $2}')
maximize.sh
#!/bin/bash
wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz
minimize.sh
#!/bin/bash
wmctrl -r :ACTIVE: -b add,hidden
sendtoleftmonitor.sh
#!/bin/bash
wmctrl -r :ACTIVE: -e 0,0,0,-1,-1
sendtorightmonitor.sh
#!/bin/bash
. $(dirname $0)/base.sh
wmctrl -r :ACTIVE: -e 0,$LEFT_SCREEN_WIDTH,0,-1,-1
tileleft.sh
#!/bin/bash
. $(dirname $0)/base.sh
if (( $X_LOCATION < $LEFT_SCREEN_WIDTH )); then
# Left Screen
wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,0,0,$(($LEFT_SCREEN_WIDTH/2)),-1
else
# Right Screen
wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$LEFT_SCREEN_WIDTH,0,$(($RIGHT_SCREEN_WIDTH/2)),-1
fi
tileright.sh
#!/bin/bash
. $(dirname $0)/base.sh
if (( $X_LOCATION < $LEFT_SCREEN_WIDTH )); then
# Left Screen
wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$(($LEFT_SCREEN_WIDTH/2-2)),0,$(($LEFT_SCREEN_WIDTH/2)),-1
else
# Right Screen
wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$(($LEFT_SCREEN_WIDTH+$RIGHT_SCREEN_WIDTH/2)),0,$(($RIGHT_SCREEN_WIDTH/2)),-1
fi