přejít na obsah přejít na navigaci

Linux E X P R E S, Aero Snap v GNOME

Aero Snap v GNOME

Jak na rychlé uspořádání oken ve stylu Windows 7 ale v GNOME


Začalo to tak, že jsem hledal vzhled Windows 7 pro Gnome a místo toho narazil na toto. A co že to je vlastně opěvované Aero Snap? To je taková ta legrace kdy přetažením okna k jednomu z okrajů obrazovky dojde k jeho maximalizaci na celou případně půl obrazovky. To je oblíbené zejména na větších (širších) monitorech a při práci v oblíbeném Wordu a podobných programech. V případě internetového prohlížeče a klasického rozlišení 1280x1024 ten zmatek vypadá asi takto:

1.png

Instalace potřebného vybavení

V terminálu zadejte:

sudo aptitude install compizconfig-settings-manager wmctrl

Nastavení (první možnost)

Z nabídky Systém - Předvolby spusťte Manažer nastavení Compizu a v části Obecné zvolte Commands (na obrázku zvýrazněno červeně). 

2_1.png

Nyní na Command line 0 (Příkazová řádka 0) vložte tento text:

WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d  'x'` && HALF=$(($WIDTH/2)) && wmctrl -r :ACTIVE: -b  add,maximized_vert && wmctrl -r :ACTIVE: -e 0,0,0,$HALF,-1

na Command line 1 toto

WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d  'x'` && HALF=$(($WIDTH/2)) && wmctrl -r :ACTIVE: -b  add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$HALF,0,$HALF,-1

a konečně na Command line 2 následující

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

Vypadat by to mohlo jako na následujícím obrázku

3.png

Teď musíme ještě říci kdy se mají tyto příkazy provést, přesuňte se proto na kartu Edge Bindings předchozího okna. Postupným kliknutím na zvýrazněná tlačítka nastavte provedení příkazu při přesunu myši doleva "Run command 0" (Left), doprava "Spustit příkaz 1" (Right) a nahoru "Spustit příkaz 2" (Top). Výběr pozic se přitom provádí jednoduše kliknutím na příslušné místo na zobrazeném obrázku. Zřejmě budete upozorněni, že toto nastavení koliduje s jiným, ale myslím, že si můžete v klidu trvat na svém.

Plocha_1_003.png

Po zavření okna se vše aktivuje a začne fungovat. Oproti řešení Windows, v našem případě nemusíte okno aktivně přesouvat (uchopit a přesunout), ale stačí pouze umístit ukazatel myši doleva/doprava/nahoru a daná akce se s aktivním oknem provede.

To může být nepraktické a tak se doporučuje nastavení určité časové prodlevy před provedením příkazu. To se nachází v části Obecné pod tlačítkem Hlavní nastavení.

Mana__er_nastaven___Compizu_004.png

A dál nastavení prodlevy najdete na v podobě jezdce nebo editačního políčka pod textem Edge Trigger Delay (čas prodlevy před spuštěním skriptu).

5.png

Vše je jinak (druhá možnost)

Nelíbí se vám, že se aktivní okna zvětšují aniž byste je zrovna uchopili myší? Chcete "opravdové" chování stejné jako ve Windows. Pak se podívejte na tuto stránku, z které si dovolím citovat následující skripty. Vytvořte si tři následující soubory se skripty pro obsluhu událostí přetažení okna doleva/doprava/nahoru. Skripty oproti předchozím testují zda je stisknuto tlačítko myši a zda skutečně "držíte" nějaké okno nebo ne.

snap_doleva.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-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

snap_doprava.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

snap_nahoru.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

POZOR!  Jak je uvedeno v hlavičce každého skriptu, je nutné ověřit "číslo myši", řádek

MOUSE="11"

To se provádí zadáním příkazu xinput list, který mi v mém případě sdělil toto

⎡ Virtual core pointer                        id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                  id=4    [slave  pointer  (2)]
⎜   ↳ Genius Laser Mouse                          id=8    [slave  pointer  (2)]
⎜   ↳ Macintosh mouse button emulation            id=11    [slave  pointer  (2)]
⎣ Virtual core keyboard                       id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard                 id=5    [slave  keyboard (3)]
    ↳ Power Button                                id=6    [slave  keyboard (3)]
    ↳ Power Button                                id=7    [slave  keyboard (3)]
    ↳ Chicony USB-PS/2 Combo Keyboard             id=9    [slave  keyboard (3)]
    ↳ Chicony USB-PS/2 Combo Keyboard             id=10    [slave  keyboard (3)]
    ↳ 00:1F:82:26:BC:04                           id=12    [slave  keyboard (3)]

Protože mám laserovou myš Genius, změnil jsem řádek MOUSE="11" na MOUSE="8" ve všech třech souborech, jinak mi výše uvedené skripty nefugnovaly.

Další postup je stejný jako v předchozím. V nastavení Compiz napište místo výše uvedených příkazů odkazy na vytvořené skripty (nezapomeňte jim nastavit právo pro spuštění a raději volte absolutní odkazy na ně) a také zrušte časovou prodlevu, v tomto případě je zbytečná. Příslušná změna okna se přitom provádí okamžitě po uvolnění levého tlačítka myši.

Vše je úplně jinak (třetí možnost)

Ještě jsem trochu zahledal a pro příznivce ovládání oken z klávesnice tu je další možnost. Nainstalujte si další pluginy pro compiz

sudo aptitude install compiz-fusion-plugins-extra

a v Manažeru nastavení Compizu vám přibude přibude efekt Mřížka. Po jeho zapnutí budete moci měnit velikost/umístění oken pomocí kláves Ctrl + Alt + <číslo numerické klávesnice>. Např. Ctrl + Alt + 4 je doleva, Ctrl + Alt + 6 doprava, Ctrl + Alt + 1 do levého dolního rohu a Ctrl + Alt + 9 do pravého horního rohu, atd. Opakovaným stiskem klávesové zkratky bude okno měnit svoji velikost.

Něco navíc poprvé

Pokud jste nainstalovali Manažer nastavení Compizu prvně, trochu se v něm porozhlédněte, nastavení je spousta. Pokud chcete vidět takové ty malé náhledy oken při ukázání na spuštěný program dole na panelu, pak si nezapomeňte zapnout Window Previews (najdete v částí Doplňky).

8.png

Něco navíc podruhé

Konečně z úplně jiného soudku, ale přece si to nenechám jen pro sebe. ;-) Neodolal jsem a v rámci akce 1 + 1 zdarma na CPRESSu jsem si pořídil knížky Jádro systému Linux a Naučte se C++ za 21 dní. Tato akce platí do konce prázdnin (vyprodání zásob) a znamená, že máte každou druhou (tu levnější) knihu zdarma. Osobně mohu doporučit také nejlepší knihu všech dob - Digitální fotografie v programu GIMP (tu už mám zhltlou a jako dárek je zcela idální v jakémkoliv množství). 

Recenzi knihy Jádro systému Linux najdete zde a Digitální fotografie v programu GIMP tady.

Teď už jen najít čas a začít číst ..

Zdroje

Get Aero Snap in Ubuntu

http://fonsen.blogspot.com/2009/03/compiz-grid-in-ubuntu.html

Nahoru

Odpovědět

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz

Martin Šín

Martin Šín

Martin Šín (*1980) vystudoval pedagogickou fakultu a nyní pracuje jako učitel matematiky a výpočetní techniky na střední škole. Ve volném čase překládá a také hraje hry (ani jedno mu příliš nejde). V práci se snaží prosazovat open-source programy.


  • Distribuce: Debian

| proč linux


Tagy