Zaphod mode (dual head) with Xfce 4.16?
Ralf Mardorf
ralf.mardorf at alice-dsl.net
Mon Mar 6 04:45:41 CET 2023
On Mon, 2023-03-06 at 02:49 +0000, Jeffery Small wrote:
> Speaking of senseless loss of functionality, the Firefox browser (to take
> but one example) continues to honor the --geometry window size parameters,
> but will not honor the screen positioning values. This is just plain
> nutty and incredibly frustrating. Every time I open a browser, I have to
> manually reposition it!
Hi,
I'm using xdotool and wmctrl to automatically move windows, that
hide the title bar under a top panel, as for example hdspmixer does.
[rocketmouse at archlinux ~]$ grep HDSP .config/fbpanel/lcd-realignment -B1 -A3
item {
name = HDSPMixer
icon = hdspmixer
action = window2unhide "hdspmixer"
}
[rocketmouse at archlinux ~]$ cat /usr/local/bin/window2unhide
#!/bin/dash
# window2unhide 2017-08-25 Ralf Mardorf
# To configure window2unhide you could use /etc/profile.d/window2unhide.sh
#
# values of the wanted x and y position of the window
# export WINDOW2UNHIDE_X_POS=hold
# export WINDOW2UNHIDE_Y_POS=141
#
# delay required to ensure that a launched application's window is active
# export WINDOW2UNHIDE_SLEEP=1
#
# values to eliminate x and y drift of the window
# this fix is needed for all windows
# export WINDOW2UNHIDE_X_FIX=2
# export WINDOW2UNHIDE_Y_FIX=54
#
# offset required to eliminate x and y drift of the window if x and/or y do/does not change
# this offset is needed for windows that open under the top panel
# but its unfavorable for windows that don't open under the top panel
# export WINDOW2UNHIDE_X_OFF=1
# export WINDOW2UNHIDE_Y_OFF=25
unhide_window ()
{
# values of the wanted x and y position of the window
case $WINDOW2UNHIDE_X_POS in
""|hold)
WINDOW2UNHIDE_X_POS=$X
;;
esac
case $WINDOW2UNHIDE_Y_POS in
"")
WINDOW2UNHIDE_Y_POS=141
;;
hold)
WINDOW2UNHIDE_Y_POS=$Y
;;
esac
# value to eliminate x drift of the window
case $WINDOW2UNHIDE_X_FIX in
"")
WINDOW2UNHIDE_X_FIX=2
;;
esac
# calculate value for x position of the window...
case $WINDOW2UNHIDE_X_POS in
$X) # ...if the x position doesn't change subtract the value to eliminate x drift and add an offset
case $WINDOW2UNHIDE_X_OFF in
"")
WINDOW2UNHIDE_X_OFF=1
;;
esac
X_POS=$(expr $WINDOW2UNHIDE_X_POS - $WINDOW2UNHIDE_X_FIX + $WINDOW2UNHIDE_X_OFF)
;;
*) # ...if the x position does change subtract the value to eliminate x drift
X_POS=$(expr $WINDOW2UNHIDE_X_POS - $WINDOW2UNHIDE_X_FIX)
;;
esac
# value to eliminate y drift of the window
case $WINDOW2UNHIDE_Y_FIX in
"")
WINDOW2UNHIDE_Y_FIX=54
;;
esac
# calculate value for y position of the window...
case $WINDOW2UNHIDE_Y_POS in
$Y) # ...if the y position doesn't change subtract the value to eliminate y drift and add an offset
case $WINDOW2UNHIDE_Y_OFF in
"")
WINDOW2UNHIDE_Y_OFF=25
;;
esac
Y_POS=$(expr $WINDOW2UNHIDE_Y_POS - $WINDOW2UNHIDE_Y_FIX + $WINDOW2UNHIDE_Y_OFF)
;;
*) # ...if the x position does change subtract the value to eliminate x drift
Y_POS=$(expr $WINDOW2UNHIDE_Y_POS - $WINDOW2UNHIDE_Y_FIX)
;;
esac
# move the window to new position
wmctrl -i -r $WINDOW -b remove,maximized_vert,maximized_horz
wmctrl -i -r $WINDOW -e "0,$X_POS,$Y_POS,$WIDTH,$HEIGHT"
}
case $1 in
"") # unhide active window
eval $(xdotool getwindowgeometry --shell $(xdotool getactivewindow))
unhide_window
;;
*) # launch an application and unhide its window
case $WINDOW2UNHIDE_SLEEP in
"")
WINDOW2UNHIDE_SLEEP=1
;;
esac
$@ &
sleep $WINDOW2UNHIDE_SLEEP # ensure that the window of the launched application...
eval $(xdotool getwindowgeometry --shell $(xdotool getactivewindow))
wmctrl -l | grep $(printf '%x\n' $WINDOW) | grep -qi $1 # ...is the active window
case $? in
0)
unhide_window
;;
esac
;;
esac
exit
Regards,
Ralf
More information about the Xfce
mailing list