web-dev-qa-db-ja.com

Ubuntuのウィンドウスナップの使用方法

可能性のある複製:
winkey + arrow Windows 7のショートカットキーの最大化をエミュレートする方法

私はUbuntuを試していますが、ホットキーのウィンドウキー+矢印を使用すると、Windows 7のようにウィンドウを左右にスナップさせたいと思います。これどうやってするの?

13
Doug

これは、CompizConfig Settings Managerから簡単に有効にできます。 (まだインストールしていない場合はインストールしてください)。

次に、[ウィンドウ管理]で、グリッドを有効にします。 CTRL + ALT + NumPadのデフォルトのバインディングを保持しましたが、必要に応じてSuper + Arrowを簡単に変更できます。

18
bitslave

Go here MikeのUbuntuから人間が読める形式の完全な指示については(Mikeに感謝)、 here は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    

次に、他の2つのスクリプトについても同じことを行います。 (マウス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を上に設定します。

N.B. Compizは、使用したいEdgeバインディングに既に設定されている関数があると不平を言うかもしれません-それらをあなたのものに置き換えてください。

3
Tog

ほとんどのUnixウィンドウマネージャとWindowsの違いの1つは、ほとんどのUnixウィンドウマネージャが画面の端でウィンドウの動きに抵抗することです。したがって、ウィンドウを画面の左端または右端に移動するための特別なコマンドは必要ありません。エッジに向かってドラッグすると、そこに到達すると停止します。ウィンドウを移動するGnome(今のところ標準のUbuntuウィンドウマネージャー)キーボードショートカットは知りません。

2
garyjohn