![如何在 14.04 中使用键盘快捷键将 3 个窗口并排放置?](https://linux22.com/image/1138020/%E5%A6%82%E4%BD%95%E5%9C%A8%2014.04%20%E4%B8%AD%E4%BD%BF%E7%94%A8%E9%94%AE%E7%9B%98%E5%BF%AB%E6%8D%B7%E9%94%AE%E5%B0%86%203%20%E4%B8%AA%E7%AA%97%E5%8F%A3%E5%B9%B6%E6%8E%92%E6%94%BE%E7%BD%AE%EF%BC%9F.png)
工作给了我一个新显示器 - 这是一个 21:9 的屏幕,所以我希望能够并排放置 3 个窗口,但是ctrl
++快捷方式只能用于放置 2 个,而这个显示器上的那些窗口几乎太宽了。alt
keypad
答案1
介绍
下面的脚本用于将窗口大小调整为屏幕宽度的 1/3,并将它们放置在左侧、中间或右侧位置。有数字选项,0 表示左侧,1 表示中间,2 表示右侧。
该脚本依赖于,xdotool
因此请确保使用 进行安装sudo apt-get install xdotool
。
在 Unity 中,脚本必须运行于未最大化窗口。原因是 Unity 在最大化窗口时会将其锁定在原处,使其无法响应任何命令xdotool
问题。
笔记:此脚本将随着时间的推移不断更新和完善。我可能会将其添加到我的个人 GitHub 存储库中,但目前它作为要旨
设置快捷方式
转到System Settings -> Keyboard-> Shortcuts->Custom并单击+左下角的按钮以创建新条目。提供脚本的自定义名称和完整路径(或bash /path/to/script ARG
),如我的示例所示。
保存,点击右边的 ,系统会提示你按下你想要对应这个快捷键的键,我设置为Ctrl Super 1。
现在您有了将窗口放在左侧的快捷方式。对中间和右侧快捷方式重复相同步骤。
脚本源
#!/bin/bash
# run script like so: bash thirds.sh NUMBER
# where NUMBER is 0,1 or 2
# 0 is left, 1 is center, 2 is right
get_screen_geometry()
{
# determine size of the desktop
xwininfo -root | \
awk -F ':' '/Width/{printf "%d",$2/3}/Height/{print $2}'
}
xdotool getactivewindow windowsize $(get_screen_geometry )
xdotool getactivewindow windowmove \
$(get_screen_geometry | awk -v POS=$1 '{ printf "%d ", POS*$1 }' ) 0
答案2
下面的脚本是修改的答案版本谢尔盖·科洛佳日内将窗口大小调整为屏幕宽度的 1/3,并将其放置在左侧、中间或右侧位置只需一个快捷键,在最大化的窗口上也能使用。
该脚本依赖于,xdotool
因此请确保使用 进行安装sudo apt-get install xdotool
。
为命令添加键盘快捷键bash thirds.sh
(无参数)。
这是要旨也一样。
#!/bin/bash
# assign keyboard shortcut to bash thirds.sh
# run shortcut on the window to resize
# it auto cycles to the position (0)left, (1)middle, (2)right
# create a counter file to store positions
counter="thirds-counter.txt"
if [[ -f $counter ]]; then
count=$(<$counter)
else
echo "0" > $counter
fi
# determine size of the desktop
get_screen_geometry()
{
xwininfo -root | awk -F ':' '/Width/{printf "%d",$2/3}/Height/{print $2}'
}
# unmaximize the window
xdotool key 'Ctrl+Super+Down'
sleep 1
# set size of the window to one third of total to the position 0,1,2
xdotool getactivewindow windowsize $(get_screen_geometry)
xdotool getactivewindow windowmove $(get_screen_geometry | awk -v POS=$count '{printf "%d", POS*$count}') 0
# store next position to the file
count=$(((($count+1))%3))
echo "$count" > $counter