web-dev-qa-db-ja.com

Gnome3クラシックとウィンドウスナップ

Gnome3ClassicでWindowsSnapを有効にする方法はありますか?私はKDE4を使用してきましたが、すぐに使用できます。現在、Kali Llinuxをテストしていて、それを機能させようとしています。

軽量な環境が必要で、スナップするだけで済みます。 KDEで独自のKaliを構築したり、compizを使用したりする以外に、何かアイデアはありますか?

3
Simon

合成せずにスナップをアクティブ化できるとは考えていません(Gnome3クラシック)。それは完全なGnome3(私は思う)で箱から出てきて、間違いなくシナモンで行います。とにかく、私は本質的に同じことをするスクリプトを書きました。

自動的には機能しません。つまり、ウィンドウを画面の端にドラッグするだけではアクティブになりませんが、ショートカットを割り当てることはできます。例えば、 Ctrl+R 右側などにスナップします。

スクリプトには disperxdpyinfoおよびwmctrlが必要です。これらはすべて簡単に利用でき、debianリポジトリ(kaliが使用)にあります。スクリプトをsnap_windows.shとして保存すると、次のように使用できます。

  • snap_windows.shは、現在のウィンドウを最大化/非最大化します。
  • snap_windows.sh lは、現在のウィンドウを画面の左側にスナップします
  • snap_windows.sh rは、現在のウィンドウを画面の右側にスナップします

2つの画面を使用している場合は、常に右側の画面の左側/右側にスナップします。完璧ではなく、シナモンに切り替えてから使っていないので、困ったら教えてください。

スクリプトは次のとおりです。

#!/bin/bash

## If no side has been given, toggle maximizing the current window and exit
if [ ! $1 ]
then
    wmctrl -r :ACTIVE: -b toggle,maximized_vert,maximized_horz
    exit
fi

## If a side has been given, continue
side=$1;
## How many screens are there?
screens=`disper -l | grep -c display`
## Get screen dimensions
WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x'`;
HALF=$(($WIDTH/2));

## If we are running on one screen, snap to Edge of screen
if [ $screens == '1' ]
then
    ## Snap to the left hand side
    if [ $side == 'l' ]
    then
        ## wmctrl format: gravity,posx,posy,width,height
        wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,0,0,$HALF,-1
    ## Snap to the right hand side
    else
        wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$HALF,0,$HALF,-1 
    fi
## If we are running on two screens, snap to Edge of right hand screen
## I use 1600 because I know it is the size of my laptop display
## and that it is not the same as that of my 2nd monitor.
else
    LAPTOP=1600; ## Change this as approrpiate for your setup.
    let "WIDTH-=LAPTOP";
    SCREEN=$LAPTOP;
    HALF=$(($WIDTH/2));
    if [ $side == 'l' ]
    then
        wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$LAPTOP,0,$HALF,-1
    else
    let "SCREEN += HALF+2";
        wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$SCREEN,0,$HALF,-1;
    fi
fi
3
terdon