如何在Ubuntu中使用Window snapping?[重复]


14

可能的重复:
如何模拟winkey +箭头Windows 7的最大化快捷键?

我正在尝试Ubuntu,并且当我使用热键“窗口键+箭头”时,希望像Windows 7一样左右移动Windows。我怎样才能做到这一点?


Ubuntu使用Compiz提供窗口效果。我看过但看不到Compiz的任何官方插件,它将为您带来Win 7效果,这很可惜,因为它是一个不错的窗口功能。我会继续寻找并发布答案作为答案。

Answers:


18

从CompizConfig设置管理器可以轻松启用它。(如果尚未安装,请安装它)。

然后在“窗口管理”下,启用“网格”。我保留了CTRL + ALT + NumPad的默认绑定,但是您可以根据需要轻松地将其更改为Super + Arrow。


我唯一缺少的是结合动作。即,将窗口向右移至底部将导致窗口位于屏幕的右下角(类似于窗口行为)。
kleinfreund '16

@kleinfreund如果单击Grid复选框旁边的按钮,则可以更改很多设置;该Corners / Edges标签可让您设置转角停靠。
swref

这不就流行OS 18.10,该快捷键的工作,他们做什么
扎克Bloomquist

4

转至此处,以完整的说明形式从Mike的Ubuntu上获得易于理解的信息(谢谢Mike),是原始的Ubuntu论坛帖子(感谢gotsanity)。我已经在系统上进行了检查,因此它应该可以为您服务。我还添加和编辑了一些内容,以使其更易于理解。

我对他的指导所做的唯一更改是,您首先要检查是否安装了compiz(最简单的方法是使用软件管理器,然后在搜索窗口中放入“ compiz”。

如果您这样做,则在终端中键入以下内容:

sudo apt-get install compizconfig-settings-manager wmctrl

否则,compiz设置管理器将不会出现在您的系统上。

打开一个终端并输入:

xinput list

它将显示一个列表。查找您的鼠标的ID号。在接下来的步骤中,您将需要此号码。我的是10岁。您的情况很可能会有所不同。
接下来的这些命令将在主文件夹中创建一个新的隐藏文件夹,以保存所需的脚本并将您移入其中。

mkdir .scripts

cd .scripts

然后输入

gedit compizsnap-left.sh    

将弹出一个文本编辑器。粘贴它,然后将鼠标ID从11 更改为“ xinput list”命令的输出中的数字。完成此操作后,保存文件。

#!/bin/sh
#
# CompizSnap is a collaborative project from ubuntuforums.org and is free software.
# This script adds window snapping functionality to compiz using the commands plugin.
#
# Directions: run "xinput list" to find your mouse's ID# and then edit the MOUSE variable below:
#

MOUSE="11"

# ----- Don't edit below this line unless you know what you are doing.
WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x'` && HALF=$(($WIDTH/2-10))

echo $WIDTH
TEMPWIDTH=$(($WIDTH-10))
echo $TEMPWIDTH
if /usr/bin/X11/xinput --query-state $MOUSE | grep down
then
    while (/usr/bin/X11/xinput --query-state $MOUSE | grep down)
    do
        echo 'button pressed'
    done

    if [ "$(/usr/bin/X11/xinput --query-state $MOUSE | grep "valuator\[0\]=." | sed s/"valuator\[0\]="//)" -le 10 ]
    then

        wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz && wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,0,0,$HALF,-10

    else
        echo "exiting without matching"
        exit 1
    fi
else
        echo "exiting because button isnt "
        exit 1
fi    

然后,对其他两个脚本执行相同的操作。(不要忘记更改鼠标ID)

compizsnap-right.sh

码:

#!/bin/sh
#
# CompizSnap is a collaborative project from ubuntuforums.org and is free software.
# This script adds window snapping functionality to compiz using the commands plugin.
#
# Directions: run "xinput list" to find your mouse's ID# and then edit the MOUSE variable below:
#

MOUSE="11"

# ----- Don't edit below this line unless you know what you are doing.
WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x'` && HALF=$(($WIDTH/2))

echo $WIDTH
TEMPWIDTH=$(($WIDTH-10))
echo $TEMPWIDTH
if /usr/bin/X11/xinput --query-state $MOUSE | grep down
then
    while (/usr/bin/X11/xinput --query-state $MOUSE | grep down)
    do
        echo 'button pressed'
    done

    if [ "$(/usr/bin/X11/xinput --query-state $MOUSE | grep "valuator\[0\]=." | sed s/"valuator\[0\]="//)" -ge $TEMPWIDTH ]
    then

        wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz && wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$HALF,0,$HALF,-1

    else
        echo "exiting without matching"
        exit 1
    fi
else
        echo "exiting because button isnt "
        exit 1
fi    

compizsnap-max.sh

码:

#!/bin/sh
#
# CompizSnap is a collaborative project from ubuntuforums.org and is free software.
# This script adds window snapping functionality to compiz using the commands plugin.
#
# Directions: run "xinput list" to find your mouse's ID# and then edit the MOUSE variable below:
#

MOUSE="11"

# ----- Don't edit below this line unless you know what you are doing.
if /usr/bin/X11/xinput --query-state $MOUSE | grep down
then
    while (/usr/bin/X11/xinput --query-state $MOUSE | grep down)
    do
        echo 'button pressed'
    done
    if [ "$(/usr/bin/X11/xinput --query-state $MOUSE | grep "valuator\[1\]=." | sed s/"valuator\[1\]="//)" -le 10 ]
    then

        wmctrl -r :ACTIVE: -b add,maximized_vert,maximized_horz

    else
        echo "exiting without matching"
        exit 1
    fi
else
        echo "exiting because button isnt "
        exit 1
fi    

(您是否记得更改过鼠标ID)

现在,我们需要告诉compiz当鼠标移至屏幕的左右,顶部和左侧时如何表现。

运行系统>首选项> CompizConfig设置管理器。转到命令部分。设置以下内容:
在“命令0”字段中:

sh ~/.scripts/compizsnap-left.sh

在“命令1”字段中:

sh ~/.scripts/compizsnap-right.sh

在命令2字段中:

sh ~/.scripts/compizsnap-max.sh

最后,转到“边缘绑定”选项卡,将命令0设置为左,将命令1设置为右,并将命令2设置为顶部。

NB Compiz可能会抱怨您要使用的边缘绑定已经设置了功能-用您的替换。


这很好用,关于如何使其与TwinView配置中的两台显示器一起使用的任何提示?
内森·史威文

2

大多数Unix窗口管理器和Windows之间的区别之一是,大多数Unix窗口管理器可抵抗窗口在屏幕边缘的移动。因此,您不需要任何特殊命令即可将窗口移至屏幕的左边缘或右边缘。只需将一个拖到边缘,它到达那里时就会停止。我不知道任何移动窗口的Gnome(目前是标准的Ubuntu窗口管理器)键盘快捷键。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.