@ -134,7 +134,7 @@ monitor_changed=false
# Multiple Monitor Automatic Re-Sizing
# Multiple Monitor Automatic Re-Sizing
#
#
maybe_set_new_size _for_monitor() {
update_geometry_settings _for_monitor() {
# 1. Correctly interpret width/height percentages when there exist multiple
# 1. Correctly interpret width/height percentages when there exist multiple
# monitors so an initially created dropdown is the correct size (xdotool
# monitors so an initially created dropdown is the correct size (xdotool
# would create a dropdown the width of all screens for 100% width)
# would create a dropdown the width of all screens for 100% width)
@ -162,6 +162,11 @@ maybe_set_new_size_for_monitor() {
fi
fi
done <<< "$monitors_info"
done <<< "$monitors_info"
# update x and y offsets, so that will appear on correct screen
# (required for some WMs apparently, but not for others)
((xoff+=x_begin))
((yoff+=y_begin))
# convert w/h percentages to pixels based on size of current screen
# convert w/h percentages to pixels based on size of current screen
if [[ $height =~ %$ ]]; then
if [[ $height =~ %$ ]]; then
height=$(awk "BEGIN {printf(\"%.0f\", 0.01*${height%\%}*$y_height)}")
height=$(awk "BEGIN {printf(\"%.0f\", 0.01*${height%\%}*$y_height)}")
@ -184,8 +189,8 @@ maybe_set_new_size_for_monitor() {
fi
fi
}
}
re siz e_for_monitor() {
set_geometry _for_monitor() {
xdotool windowsize "$1" "$width" "$height"
xdotool windowmove "$1" "$xoff" "$yoff" window size "$1" "$width" "$height"
}
}
#
#
@ -463,9 +468,9 @@ wid_toggle() {
# would be much too messy to integrate a resize into existing map_post commands
# would be much too messy to integrate a resize into existing map_post commands
# or add for those WMs that don't even need an xdotool command
# or add for those WMs that don't even need an xdotool command
# cleaner to do after any map_post command with the downside of potential
# cleaner to do after any map_post command with the downside of potential
# for minimal flicker
# for minimal flicker or redundancy
if $monitor_changed; then
if $monitor_changed; then
re siz e_for_monitor "$wid"
set_geometry _for_monitor "$wid"
fi
fi
else
else
xdotool windowunmap "$wid"
xdotool windowunmap "$wid"
@ -607,7 +612,7 @@ auto_show() {
#
#
if $multiple_monitors; then
if $multiple_monitors; then
maybe_set_new_size _for_monitor
update_geometry_settings _for_monitor
fi
fi
if $auto_detect_wm; then
if $auto_detect_wm; then