• 200 лучших книг по версии BBC

  • Аренда/прокат фото/видеотехники Петербург (фотопрокат)

  • Повесел себе кнопку на панель Gnome - которая выравнивает, ресайзит и раскидывает окна по рабочим столам - в соответствии с уже сложившимися взглядами "где им быть правильнее".

    Примечания:
    1)На нетбуке 1024x600 - можно было бы легко сделать унивирсальный скрипт под разные разрешения, но "ну нафиг - не хочу". Все равно у каждого к тому же еще свои предпочтения, что и где размещать. Скорее это инструкция "как сделать так же себе" для тех кому понравится идея.
    2) установлен compiz - с треми(!) рабочими столами. Кому под куб - учитываете это.
    3) пример частично урезаный список моих программ, причем правила по ходу использования скрипта всё еще добавляю.
    4) нужные координаты, ширину, высоту окон определял следующим образом - раскидал окна "как надо" и "прошелся по ним" запущенной командой xwininfo.

    #!/bin/bash
    #Dc - определяю текущий рабочий стол
    Dc=$(wmctrl -d | grep -o "VP: [0-9,]*" | sed "s/^VP: \([0-9]*\),[0-9]*$/\1/")
    #D1, D2, D3 - координаты рабочих столов 1го, 2го и 3го.
    D1=$[0-$Dc]       # Буду использовать для браузера и аськи.
    D2=$[1024-$Dc] # Для GIMP''а - с эго сложной многооконностью
    D3=$[2048-$Dc] # Для "казуальной игрухи" - Wine и если запущена игруха - аську тогда здесь держу.))

    # Смотрю список запущенных программ - и по каждой отедьно выделяю ID(уникальный индификатор окна - можно также его узнать, запустив xwininfo), Pid(индификатор процесса - это чтобы окна qutIM - выловить, так как по заголовку они сложно выявляются), Name(заголовок окна).
    wmctrl -l -p | while read ID x Pid x Name;do
            case "$Name" in
                    "Панель инструментов")
                            # GMP - Панель инструментов - широной 160
                            wmctrl -i -r "$ID"  -e 0,$[$D2+665],0,160,583
                            ;;
                    "Слои")
                            # GMP - Панель слоев - шириной 200
                            wmctrl -i -r "$ID"   -e 0,$[$D2+824],0,200,583
                            ;;
                    "GNU Image Manipulation Program"|*\(*\)*x*GIMP)
                            # GMP - основное окно - всю оставшуюся часть рабочего стола
                            wmctrl -i -r "$ID" -e 0,$[$D2+0],0,665,583
                            ;;
                    "Default - Wine desktop")
                            # Wine-окно 800x600
                            wmctrl -i -r "$ID" -e 0,$[$D3+0],0,800,600
                            # Аська - занимает оставшуюся часть экрана
                            wmctrl -F -r "qutIM"  -e 0,$[$D3+800],0,219,580
                            ;;
                    "qutIM")
                            # Ничего - так как все операциии по его размещению переместил к Wine и браузеру
                            ;;
                    *Mozilla\ Firefox)
                            # Если не запущен wine то аську запустить рядом с браузером
                            if ! wmctrl -l | grep "Default - Wine desktop" && wmctrl -l | grep "qutIM" ; then
                               wmctrl -F -r "qutIM"  -e 0,$[$D1+919],0,100,580
                               wmctrl -i -r "$ID" -e 0,$[$D1+0],0,919,600
                            else
                            # Если не запущена  аська - весь рабочий стол отдать браузеру
                               wmctrl -i -r "$ID" -e 0,$[$D1+0],0,1024,600
                           fi
                            ;;
                    *)
                            # Окно сообщений qutIM'а - откурывать в том же экране где и сама "Аська" - заполняя остальную часть
                            [ "$Pid" -eq "$(pgrep qutim)" ] && {
                                    X=$D3
                                    W=800
                                    wmctrl -l | grep "Default - Wine desktop" || { X=$D1; W=919; }
                                    wmctrl -i -r "$ID" -e 0,$[$X+0],0,$W,600
                            }
                    ;;
            esac
    done
    # Повернуть compiz-куб(у меня три стороны) на то окно, которое было активным при нажатии. То есть если сидел в браузере - то при нажатии, всё поперемещалась и "куб" повернулся той стороной, где стал браузер
    wmctrl  -a  :ACTIVE:

    Верю что наверно(кто знает подвердите, а то может и нет) в tiling-оконныхМенеджерах что-нибудь подобное есть. Но иногда приятее "изобретать свой велосипед".

    Неделю - пользуюся и радуюсь.

    P.S. Хотя конечно можно было б каждую программу при запуске в нужное место помещать :)

    P.P.S. А потом подумал еще и создал файл /etc/acpi/events/my_keys:
    event=hotkey (ATKD|HOTK) 0000001b
    action=
    /path/to/script/my_wmctrl
    Который теперь при нажатии на ноутбучную медийную кнопку всё это делает. Код клавиши(0000001b) узнал выполнив команду acpi_listen. Одно только смущает от root'а выполняется - надо "su -c" туда вставить внутрь.

    P.P.P.S. Теперь не от root'a - по нажатию вызываю скрипт следующего содержания:
    su - user -c "DISPLAY=:0 $(for i in DBUS_SESSION_BUS_ADDRESS XAUTHLOCALHOSTNAME XAUTHORITY;do cat /proc/$(pgrep gnome-session)/environ|tr "\0" "\n"|grep $i;done| tr "\n" " ") /path/to/script/my_wmctrl"






























































  • 200 лучших книг по версии BBC

  • Аренда/прокат фото/видеотехники Петербург (фотопрокат)