Действительно ли возможно повысить окно с помощью сочетания клавиш в Gnome3?

Если менеджер окон поддерживает Xlib существует. Это использует Python для установки размера окна на 500x300:

WIDTH, HEIGHT = 500, 300
import Xlib
import Xlib.display

display = Xlib.display.Display()
root = display.screen().root
windowID = root.get_full_property(display.intern_atom('_NET_ACTIVE_WINDOW'), Xlib.X.AnyPropertyType).value[0]
window = display.create_resource_object('window', windowID)
window.configure(width = WIDTH, height = HEIGHT)
display.sync()

Твердая часть получает окно ID; в вышеупомянутом коде это получило идентификатор активного окна. Если Вы хотите другой идентификатор, можно использовать что-то вроде этого, чтобы получить заголовок и управление PID каждого окна, и выбрать правильный идентификатор на основе тех:

windowIDs = root.get_full_property(display.intern_atom('_NET_CLIENT_LIST'), Xlib.X.AnyPropertyType).value
for windowID in windowIDs:
    window = display.create_resource_object('window', windowID)
    name = window.get_wm_name() # Title
    prop = window.get_full_property(display.intern_atom('_NET_WM_PID'), Xlib.X.AnyPropertyType)
    pid = prop.value[0] # PID
8
30.10.2015, 18:21
2 ответа

Я нашел сценарий на fluxbox Wiki, которая использует wmctrl найти применение и повысить его окно, если это уже работает. Иначе сценарий запускает приложение. Я использую тот сценарий с тонкими настройками для поддержки аргументов, которые я зарегистрировал на своем блоге.

  1. Удостовериться wmctrl установлен.

    sudo apt-get install wmctrl
    
  2. Добавьте следующий сценарий к своему пути (возможно в $HOME/bin/find_app.sh), и сделайте это исполняемым файлом.

    #!/bin/bash
    # Find_app
    
    # Author: Lucas van Staden (lvs at dedmeet.com / http://www.dedmeet.com)
    # This little script will try and find the application attempting to start
    # in the running processes, and if found, focus the application
    # if not found, a new instance will start
    
    # usage:
    # find_app.sh <application with full path>
    
    # params
    # 1 - application to start (full path)
    
    # helper applications
    DOLLARONE=$(echo $1 | sed -e 's/[\t ]*$//') #Delete trailing spaces
    WMCTRL=`which wmctrl`;
    GREP=`which grep`;
    APPLICATION=$(echo $DOLLARONE | cut -d ' ' -f 1)
    if [ "x$APPLICATION" != "x$DOLLARONE" ]; then
      APPARGS=$(echo $DOLLARONE | cut -d ' ' -f 2)
    fi
    BASENAME=`basename $APPLICATION`;
    BASENAME=`echo $BASENAME | tr "[:upper:]" "[:lower:]"`
    FOUND=0;
    function findwindow {
    # 1 = BASENAME
    # 2 = WMCTRL
    # 3 = GREP
            IFS=$'\n';
            for RUNNING in `$2 -l -x`
            do
                    if [ `echo $RUNNING | tr "[:upper:]" "[:lower:]" | $3 -c $DOLLARONE` -gt 0 ]
                    then
                            HOSTNAME=`hostname`
                            WINDOW=${RUNNING#*${HOSTNAME} }
                            $2 -a $WINDOW
                            FOUND=1;
                    fi;
            done
    }
    if [ "x$APPARGS" = "x" ]; then
      findwindow $BASENAME $WMCTRL $GREP;
      if [ $FOUND -eq 0 ]
      then
              $APPLICATION &
              sleep 2;
              # Try and find the application, after opened
              findwindow $BASENAME $WMCTRL $GREP;
              if [ $FOUND -eq 0 ]
              then
                      # Still not found, wait a bit more, and try again
                      sleep 3;
                      findwindow $BASENAME $WMCTRL $GREP;
              fi
      fi
    else
      $APPLICATION $APPARGS &
    fi
    
  3. Обновите настольные файлы записи приложений, Вы хотите иметь исключительный ярлык для запуска, а также повышения, так, чтобы приложения были вызваны через вышеупомянутый сценарий.

    Например:

    cp /usr/share/applications/firefox.desktop ~/.local/share/applications/
    

    Править firefox.desktop в ~/.local/share/applications/ и изменение Exec строка для обращения к find_app.sh:

    Exec=find_app.sh "firefox %u"
    
  4. Теперь добавьте сочетание клавиш для своего браузера по умолчанию:

    Параметры настройки системы | клавиатура | ярлыки | средства запуска | веб-браузер запуска

  5. Оболочка гнома перезапуска:Пресса Alt r поднять диалоговое окно выполнения. Ввести r и нажмите Enter.

Необходимо теперь смочь запустить/повысить браузер с помощью единственного сочетания клавиш.

3
27.01.2020, 20:13
  • 1
    @Gilles сценарий с открытым исходным кодом, не до меня для выпуска его или не я думал его просто слишком длинный решение быть отправленным здесь. Обновит мои ответы с большим количеством деталей –  freethinker 17.05.2011, 14:27
  • 2
    там должен быть gnome3 собственным способом реализовать это использование libbamf библиотека, я думаю. –  freethinker 17.05.2011, 14:46

Существует подобный инструмент, названный xdotool. Это, кажется, является почти таким же как wmctrl. Основное преимущество перед последним, возможно, то, что оно использует идентификаторы X Window, а не строки для обработки окон. Я не знаю, имеет ли это значение очень в Вашем случае все же. Но скажите использование Chrome, открытого на веб-сайте, заголовок которого имеет Mozilla, затем Вы не можете определять приложение из заголовка окна.

2
27.01.2020, 20:13

Теги

Похожие вопросы