是否有任何已知的应用程序可以实现这一点?如果没有,有没有办法自己干预呢?对于特定的设置,我不需要 50/50,我需要一个程序占用 2/3,另一个程序占用 1/3。这将非常有用!
如上所述,如果不存在程序,我应该阅读什么才能使其工作?(例如 2/3 的特定快捷方式和 1/3 的另一个快捷方式)
从今天起使用 Pantheon。
答案1
介绍
下面的脚本要求用户为窗口选择 1/3 或 2/3 调整大小选项,然后允许用户选择要调整大小的窗口。要调整为 1/3 的窗口将跳到左侧,而要调整为 2/3 的窗口将跳到右侧。可以根据需要将脚本绑定到键盘快捷键。
初步设置
该脚本依靠wmctrl
程序来完成工作。确保先安装该程序
sudo apt-get install wmctrl
设置脚本
在您的主文件夹中创建名为 的文件夹
bin
。您可以使用命令执行此操作mkdir $HOME/bin`
在该文件夹中创建一个文件
resizer.sh
。将下面的脚本复制到该文件中。确保脚本可执行
chmod 755 $HOME/bin/resizer.sh
打开System Settings-> Keyboard-> Shortcuts-> Custom Shortcuts。
创建一个新的快捷方式并将脚本的完整路径作为命令,
例如/home/serg/bin/resizer.sh
。
我的例子
我先设置快捷方式:
然后按快捷键。弹出菜单允许选择 1/3 或 2/3 调整大小;我选择 1。请注意,除了一个 1 数字外,没有其他输入
接下来我选择自由浮动的浏览器窗口。它跳到左边,现在宽度为桌面高度的 1/3。
怪癖
CtrlSuper→测试此脚本后,调整大小在最大化或左右分割窗口 ( / )上不起作用←。因此,窗口必须是非最大化的、自由浮动的。
脚本源
#!/bin/bash
#--------------------
# Author: Serg Kolo
# Date: Sept 26,2015
# Purpose: a script to resize a window to its
# 1/3 or 2/3 of width.
# Written for http://askubuntu.com/q/678608/295286
#--------------------
#---------------------
# This part takes user input through graphical popup;
# Input must be 1 or 2, anything else results into an error
# If user selects 1, we set window to 1/3 of desktop width
# and place it on the left;
# If user selects 2, we set window to 2/3 of desktop width
# and place it on the right;
SIZE=$(zenity --entry --text "Enter (1) for 1/3 and (2) for 2/3 of width")
case $SIZE in
"1")NUM=0.333; XPOS=0;;
"2")NUM=0.667;XPOS=455;;
*) zenity --error --text="Invalid input"; exit ;;
esac
#--------------------
# In this part we determine the geometry of the desktop
# and then calculate the width that we want the window to
# be set using bc, the command line calculator
# printf is used to convert floating point result to
# integer value, which is required for wmctrl
ROOT_WIDTH=$(xwininfo -root | awk '/Width/ {print $2}')
ROOT_HEIGHT=$(xwininfo -root | awk '/Height/ {print $2}' )
NEW_WIDTH=$(bc <<< $ROOT_WIDTH*$NUM)
NEW_WIDTH=$(printf "%.0f" $NEW_WIDTH)
#----------------------
# This is what actually does the job.
# wmctrl allows you to select the window with -r :SELECT:
# and sets that window to specific gravity,x-position,y-position,width
# height. To keep the script neutral, I've decided to set the
# height to default desktop height. User can resize the height as
# necessary by themselves
wmctrl -r :SELECT: -e 0,$XPOS,0,$NEW_WIDTH,$ROOT_HEIGHT