更改 Gnome 中捕捉窗口之间左/右分割的默认位置

更改 Gnome 中捕捉窗口之间左/右分割的默认位置

在 ubuntu 18.04 上的 gnome 3.28 中

SUPER+← snaps a window to the left
SUPER+→ snaps a window to the right

这些操作在“设置”中的 Gnome 键盘快捷键列表中称为“左侧视图拆分”或“右侧视图拆分”。一旦窗口被捕捉,就可以将分割的位置(默认为中心)向左或向右拖动,为一个窗口提供更多空间,而为另一个窗口提供更少的空间(并且任何随后捕捉的窗口都遵循这个新的分割位置) 。在我看来,这是一个美丽而精致的实现。

我的问题是如何将默认的分割位置移离中心。我喜欢在右侧放置一个 80 个字符宽的终端窗口(它所占的宽度还不到 16:9 屏幕宽度的一半),并为左侧的浏览器窗口提供更宽的剩余空间。基本上,我想避免在重新启动后手动拖动左/右捕捉边界。这是带有我首选边界位置的分割窗口的屏幕截图:

截屏

请注意,捕捉的窗口不再具有圆形边缘,而是占据了分割两侧的整个矩形区域。

由于可以通过鼠标拖动来更改分割位置,因此也许可以在启动时以编程方式设置此变量?不过,也许该变量会在初始窗口捕捉时重置,并且没有办法强制执行此操作...也许我应该切换到像 dwm xD 这样的平铺 wm,但 gnome 对我来说还不错。

答案1

或者,您可以创建一个脚本来执行您想要的操作,并将快捷方式映射到它。以下 bash 脚本会将其设置为屏幕的三分之一或三分之二:

screenWidth=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f1)
windowWidth=$(xwininfo -id $(xprop -root _NET_ACTIVE_WINDOW | cut -d ' ' -f 5) | grep Width | cut -d ' ' -f 4)

numberRegex='^[0-9]+$'

if  ! [[ $windowWidth =~ $numberRegex ]] ; then
   echo "error: windowWith not a number: '$windowWidth'" >> tile-plus.log; exit 1
fi


if  ! [[ $screenWidth =~ $numberRegex ]] ; then
   echo "error: screenWidth not a number: '$screenWidth'" >> tile-plus.log; exit 1
fi

doubleWidth=$((2*windowWidth))

parameter=$1

echo "Comparing screenWidth $screenWidth and double of width $doubleWidth" >> tile-plus.log
if [[ doubleWidth -gt screenWidth ]] ; then
   echo "Detected big size" >> tile-plus.log
   nextWidth=$((screenWidth / 3))
else
   echo "Detected small size" >> tile-plus.log
   nextWidth=$((screenWidth * 2 / 3))
fi

case $parameter in
right)
   echo "Received right parameter" >> tile-plus.log
   nextOffset=$((screenWidth - nextWidth))
   ;;
*)
  echo "Received $parameter defaulting to left" >> tile-plus.log
  parameter="left"
  nextOffset=0
esac


echo Width will be set to $nextWidth and offset to $nextOffset >> tile-plus.log

wmctrl -r :ACTIVE: -b add,maximized_vert
wmctrl -r :ACTIVE: -e 1,$nextOffset,0,$nextWidth,600

如果将其保存在“~/.keyboard-shortcuts/tile-plus.h”中,那么您可以创建一个到<Super><Alt>Right该执行的绑定bash .keyboard-shortcuts/tile-plus.h right和一个到<Super><Alt>Left该执行的快捷方式bash .keyboard-shortcuts/tile-plus.h left

相关内容