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

Я работаю много во многих документах одновременно. В основном я имею 3-5 используемых рабочих областей, каждый раз с теми же файлами - терминал, открытый в особенности папка, gedit с конкретным файлом, и проявляю для наблюдения результата (я использую латекс). Вот вопрос - как автоматизировать процесс вводных файлов? То, что я хотел бы, запускает Ubuntu с gedit, и проявите открытый на моей работе.

В течение некоторого времени KDE пыталась открыть в последний раз сохраненные программы, но она работала плохо - я получил gedit, и проявите открытый с пустыми файлами.

Я уже видел некоторые статьи о devilspie (не мой обозначенный путь, я хочу получить конкретную команду, не только, открытый Firefox в рабочей области 2) и рабочие команды при запуске (кажется лучше, но тем не менее я не знаю, как сказать терминал о рабочих областях).

2
задан 12 November 2014 в 21:54

2 ответа

1) Установка wmctrl

sudo apt-get install wmctrl

2) Создайте файл со следующим содержанием и сделайте его исполняемым файлом

#!/bin/bash
wmctrl -s 0 #Switches to workspace 0 [workspaces are numbered from 0]
gnome-terminal & #Say you want a terminal in the 0th workspace
nautilus & #Maybe a file browser too
sleep 2 #Windows take some time to open. If you switch immediately, they'll open up in wrong workspaces. May have to change the value 2.
wmctrl -s 1 #Switches to workspace 1
firefox & #You get the idea. Continue for all workspaces
sleep 2
wmctrl -s 0 #You will be left at this workspace when the script finishes executing

3) Назовите этот сценарий от .xsessionrc в Вашем корневом каталоге [если Вам, вероятно, придется создать этот файл] для автоматизации процесса при каждом входе в систему. Или можно просто назвать его от терминала при необходимости.Править: Поместите это в "Приложениях Запуска", не .xsessionrc. .xsessionrc выполнится даже, прежде чем настольная среда закончила загружаться.


Можно хотеть создать пользовательский xsession так, чтобы у Вас было две сессии для выбора из, та, которая открывает эти приложения автоматически и то, которое не делает. Но это кажется ненужным мне.


Если Вы чувствуете, что переключение на рабочую область, открытие соответствующих приложений и затем переключение на следующее являются трудоемкими, можно открыть все приложения в одном выстреле и затем переместить использование окон wmctrl. Например,

wmctrl -r 'Firefox' -t 1

сместит окно с Firefox в, он - заголовок к рабочей области 1. Если больше чем одно окно существует, первое в списке окон, управляемых wmctrl будет перемещен. Необходимо будет знать заголовок окон, которые будут созданы приложениями для использования этого. Вот почему я не предложил это в качестве основной опции. Если заголовки будут однозначны, как имеет место с обычно используемыми приложениями затем, это - способ пойти.


Открытие приложений в полном экране:

Некоторые приложения как терминал гнома имеют параметры командной строки для открытия окна в максимизируемом состоянии или в полноэкранном режиме. Если такие опции существуют, используют их. Иначе используйте wmctrl следующим образом

wmctrl -r 'username@machinename' -b add,maximized_vert,maximized_horz

Это уже максимизирует мой (существующий) окно терминала.

wmctrl -r 'username@machinename' -b add,fullscreen

Это отправляет окно в полноэкранный режим.


Пройти wmctrlстраница справочника. Можно найти использование для большего количества его функциональности.

Этот ответ был взят из этого источника.

1
ответ дан 6 October 2019 в 20:39

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

Эта функция использует в своих интересах то, что последнее созданное окно появляется в последний раз в списках wmctrl. Из-за hacky природы объединения 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, высоты, ширины. Можно использовать команду

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
ответ дан 6 October 2019 в 20:39

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

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