KDE - запуск определенных команд в определенном рабочем пространстве при запуске

У меня была такая же проблема при попытке загрузки ядра 3.5.0-28, grub не запускал Ubuntu и не висел на фиолетовом экране. Я начал использовать ядро ​​3.5.0-27, он работал в течение одного дня, при следующей загрузке, он также давал аналогичную проблему (на этот раз вися на черном экране). Я решил проблему, выполнив apt-get update и apt-get dist-upgrade, теперь ядро ​​3.5.0-28 отлично работает.

1
задан 12 November 2014 в 22:54

1 ответ

Я не смог найти последовательный способ открыть программы для определенного поиска пятна. Кажется, нет прямого способа привязать команду к ее окну. Поэтому я написал небольшую функцию bash, которая использует комбинацию wmctrl и sleep для определения и размещения окна.

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

Функция

position_program ()
{
    $1 &
    sleep $2
    window_id=`wmctrl -l | tail -n1 | cut -f1 -d " "`
    wmctrl -ir $window_id  -e 0,$3
    if [ ! -z "$4" ]; then
        wmctrl -ir $window_id -t $4
    fi
}

Аргумент 1 должен быть командой для выполнения в кавычках.

Аргумент 2 - это количество время ожидания. Сценарий должен знать, как долго ждать между запуском команды и появлением окна.

Аргумент 3 - это спецификация геометрии x, y, height, width. Вы можете использовать команду

xwininfo | grep geometry

, чтобы помочь вам получить правильные значения для этого. (запустите команду, щелкните по окну с нужной геометрией)

Аргумент 4 структурирован как необязательный и добавлен в ответ на ваш вопрос. Он принимает целое число, представляющее рабочий стол для перемещения окна. Перечисление начинается с 0, поэтому ваш первый рабочий стол равен 0, 2-й по 1 и т. Д.

Пример

#! /bin/dash
position_program ()
{
    $1 &
    sleep $2
    window_id=`wmctrl -l | tail -n1 | cut -f1 -d " "`
    wmctrl -ir $window_id  -e 0,$3
    if [ ! -z "$4" ]; then
        wmctrl -ir $window_id -t $4
    fi
}

# open gedit, position to the upper left corner, sized as 1000x1000
position_program  "gedit --new-window my_text.txt" 1 "0,0,1000,1000" 0

#open another gedit window, same as before but on desktop 2
position_program  "gedit --new-window my_othertext.txt" 1 "0,0,1000,1000" 1

Количество сна может различаться между различными программами, очевидно. Более интересно, это может также измениться, если вы в той же программе второй раз, но для нового окна. Поэтому иногда может потребоваться эксперимент.

Надеюсь, вы увидите, как работает скрипт, и, возможно, отредактируйте его или повторно используйте стратегии по мере необходимости. Я тестировал lubuntu и kubuntu, и он должен работать и в других средах, основанных на x.

0
ответ дан 24 May 2018 в 01:55

Другие вопросы по тегам:

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