Як створити сценарій для відкриття набору програм у кожній робочій області?


35

Я деякий час оглядався і не міг зрозуміти відповідь на свою наступну проблему:

У мене встановлено шість робочих столів на Ubuntu 12.04 з Unity. Після запуску кожного ранку я проходжу розпорядок відкриття тих же п’яти-шести програм. Я відкриваю кожного на певній робочій області. Я хотів би, щоб це було автоматизовано. Чи є спосіб це сценарій чи налаштувати?

Додаткове запитання : Щоб ще більше ускладнити справу, я запускаю два екрани в режимі подвійного перегляду. Мені потрібно запускати кожну програму на певному екрані, бажано на повноекранному.


1
Вам це може бути корисним. Це вказує на wmctrl, але я не використовував його: movingtofreedom.org/2010/08/10 / ...
RobotHumans

це може бути корисним. askubuntu.com/questions/87002/…
Сухайб

1
Якщо прийти до цього з дуже простого перегляду, чи є причина, чому ви не можете залишити свою машину в режимі призупинення, коли ви виходите? Я думаю, що для вас це буде швидким виправленням, поки ви знайдете більш постійне рішення ...
Adeyfk

Коли ви говорите на робочому столі, ви маєте на увазі робочу область?
p0llard

Діяльність KDE може зробити це.
Механічний равлик

Відповіді:


20

Ідея jdp407 щодо використання compizconfig пов'язуватиме конкретну програму з певним робочим простором, так що КОЖНЕ ЧАС, коли ця програма буде відкрита, вона розміщується у відповідному робочому просторі. Якщо цього не потрібно, можна зробити наступне:

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у своєму домашньому каталозі [якщо вам доведеться створити цей файл], щоб автоматизувати процес при кожному вході. Або ви можете просто зателефонувати йому з терміналу, коли це потрібно. EDIT: Помістіть його в "Запуск програм", а не .xsessionrc. .xsessionrc виконається ще до того, як завантажувальне середовище закінчиться завантаженням.


Ви можете створити власну xsession, як запропонував jdp407, щоб у вас було два варіанти сеансів, один, який автоматично відкриває ці програми, і той, який не працює. Але це мені здається непотрібним.


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

wmctrl -r 'Firefox' -t 1

змістить вікно з Firefox у своєму заголовку на робочу область 1. Якщо існує більше одного вікна, wmctrlбуде переміщено перше у списку вікон, якими керує . Вам потрібно буде знати назву вікон, які будуть створені програмами, щоб використовувати це. Тому я не запропонував це як основний варіант. Якщо заголовки будуть однозначними, як це стосується найбільш часто використовуваних додатків, тоді це шлях.


Відкриття програм у повноекранному режимі:

Деякі додатки, такі як gnome-terminal, мають аргументи командного рядка, щоб відкрити вікно в максимізованому стані або в повноекранному режимі. Якщо такі варіанти існують, використовуйте їх. В іншому випадку використовуйте wmctrlнаступним чином

wmctrl -r 'prasanth@nb37' -b add,maximized_vert,maximized_horz

Це максимально збільшує моє (вже існуюче) вікно терміналу.

wmctrl -r 'prasanth@nb37' -b add,fullscreen

Це пересилає вікно в режим повноекранного режиму.


Перейдіть на wmctrlсторінку людини. Ви можете знайти використання для більшої його функціональності.


1
Очевидно, що використання wmctrl для вибору робочої області не працює в пост-Lynx-дистрибутивах. Параметр '-s' може бути встановлений лише на '0', або він видасть помилку, або нічого не зробить. Джерело: movingtofreedom.org/2010/08/10 / ...
p0llard

Я використовую 12.04 з юни2d (без візуальних ефектів), і це працює на мене. Схоже, це не буде працювати з включеними візуальними ефектами.
S Прасант

wmctrlтут чудово працює (LXDE та XFCE, композиція через xcompgr включена)
Glutanimate

Мені працює в Монетному дворі 14 із корицею, дякую!
k102

У Ubuntu 14.04 використовуйте wmctrl -o X,Yдля переходу до певного вікна перегляду. Якщо у вас є кілька моніторів, ви можете переміщувати програми на інший монітор, використовуючи wmctrl -r "App name" -e G,X,Y,W,H. Чудово працює з єдністю візуальних ефектів.
Нейт

10

Тут є дві "проблеми": перша передбачає відкриття певного набору програм під час входу; другий передбачає відкриття їх на конкретних робочих просторах. Я буду розбиратися з обома окремо:

  1. Створення користувацької X сесії

    Це зробити досить просто. Вам просто потрібно створити сценарій X сесії, а потім сказати LightDM використовувати його. Вам потрібно знати команди для запуску потрібних програм з терміналу.

    1. Відкритий термінал.
    2. Введіть touch ~/.customxsessionі натисніть клавішу Enter.
    3. Введіть gedit ~/.customxsessionі натисніть клавішу Enter.
    4. Тепер у вас буде відкритий текстовий редактор із порожнім файлом.
    5. У цьому файлі потрібно визначити X-сесію. Я створив зразок файлу "заповнити пробіли" внизу відповіді. Я думаю, що Ubuntu використовує gnome-session як менеджер вікон, але я, можливо, помиляюся. Я не можу перевірити його на даний момент (ноутбук зламаний), тому якщо він не працює так, як очікувалося (наприклад: завантажує Gnome замість Unity), можливо, вам доведеться провести кілька досліджень.
    6. Збережіть файл і закрийте Gedit.
    7. Введіть touch /usr/share/xsessions/multi.desktopі натисніть клавішу Enter.
    8. Введіть gedit /usr/share/xsessions/multi.desktopі натисніть клавішу Enter.
    9. Тепер у вас буде відкритий текстовий редактор із порожнім файлом.
    10. Скопіюйте та вставте код у нижній частині відповіді (з позначкою '/usr/share/xsesions/multi.desktop:') у Gedit.
    11. Збережіть файл і закрийте Gedit.
    12. Перезавантажте. Якщо ви перейдете до екрана входу, якщо ви подивитеся на доступні сеанси (натисніть маленький логотип Ubuntu поруч із вашим іменем користувача), ви повинні побачити той, який називається Multi-Session. Якщо ви ввійдете в систему за допомогою програми, програми, розміщені в сценарії X Session, повинні відкритись автоматично.
  2. Призначення програм робочим просторам

    Це також досить просто, але для цього потрібне додаткове програмне забезпечення, яке не встановлено в Ubuntu за замовчуванням.

    1. Встановіть compizconfig-менеджер налаштувань (ви можете скористатися Центром програмного забезпечення або просто запустити sudo apt-get install compizconfig-settings-managerв Терміналі).
    2. Відкрийте налаштування CompizConfig з тире.
    3. Відкрийте плагін "Місце Windows" (це в розділі "Керування вікнами").
    4. Натисніть "Створити" у розділі "Windows із фіксованим вікном перегляду".
    5. Клацніть піктограму "Плюс".
    6. Встановіть "Тип" як "Заголовок вікна" і введіть заголовок вікна однієї з програм у поле "Значення". Переконайтеся, що для параметра "Зв'язок" встановлено значення "І" та натисніть "Додати".
    7. Встановіть робочу область, ввівши цифри у полях "X" та "Y". Якщо у вас є 4 робочих простору для "X", "1" є лівим, а "2" - правильним, а для "Y" - "1" вгорі, а "2" - внизу. Якщо у вас є 6 робочих просторів, залежно від того, як налаштовані речі, нижній рядок вибрав би "Y" - "3", а для "X" - "3" обрати 3-й стовпець.
    8. Повторіть кроки 4-7 для решти програм, яким ви хочете призначити робочу область.
    9. Закрийте налаштування CompizConfig.
  3. Вхід у систему

    Коли ви входите в систему, вам потрібно повідомити Ubuntu, що ви хочете використовувати свій власний X-сеанс.

    1. Перезавантажте.
    2. Якщо ви перейдете до екрана входу, якщо ви подивитеся на доступні сеанси (натисніть маленький логотип Ubuntu поруч із вашим іменем користувача), ви повинні побачити той, який називається Multi-Session. Якщо ви ввійдете в систему за допомогою програми, програми, розміщені в сценарії X Session, повинні відкритись автоматично і бути призначеними для обраних вами робочих просторів.
  4. Проблеми

    Досить багато могло помилитися з цим, або якщо ви зробите невелику помилку, або якщо я помилився, коли написав цю відповідь. Якщо щось піде не так, переконайтеся, що ви дотримувались інструкцій до листа, і виправте що-небудь, якщо ви цього не зробили. Якщо у вас все-таки є проблеми, залиште коментар.

~ / .customxsession:

#!/usr/bin/env bash
program-command-1 &
program-command-2 &
program-command-3 &
program-command-4 &
program-command-5 &
program-command-6 &
exec gnome-session

/usr/share/xsesions/multi.desktop:

[Desktop Entry]
Name=Multi-Session
Exec=/home/your-username/.customxsession

1

Додайте потрібні програми до програми StarupApplications, а потім додайте і цей сценарій. Це мій сценарій: ManageWorkSpaces.sh

echo "Jeril"
wmctrl -r NetBeans IDE 7.1.1 -t 0
wmctrl -r /bin/bash -t 1
wmctrl -r Google Chrome -t 2
wmctrl -r jerilkuruvila - Skype™ -t 3

// фокус на терміналі

wmctrl -a NetBeans IDE 7.1.1   -t 0 

Але я не маю уявлення про обробку 2 дисплеїв.


Привіт Джеріле! Ласкаво просимо до Ask Ubuntu! Ваше рішення не працює для мене. Якщо я бігаю wmctrl -d, у мене є лише один «робочий стіл». Ви протестували це на Unity в Ubuntu 12.10?
Flimm

Привіт Flimm, я використовую wmctrl -r, у мене є 4 робочих місця. Моя версія Ubuntu - 12.04
jkuruvila
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.