tengu_crow: (Default)
[personal profile] tengu_crow
Первое время, после переезда под Linux, я использовал его "по-виндовому". У меня редко использовалось больше одного рабочего стола. Большинство приложений варилось в одном котле с доступом по Alt-Tab. И вообще полезность множества рабочих столов теоретически была понятна, но практически я не особо ей пользовался. Впервые о том, как я использую свою систему я задумался прочитав у уважаемого Оллеката о тайловых менеджерах, однако для моих целей они оказались избыточны - как минимум по причине маленького монитора. Потом, листая форумы unixforums.org, я натолкнулся на тему о интерфейсах линукс, в частности - на заметку Федорчука о том, как он использует свою систему.

Там есть много советов, но один из самых главных - распределять приложения по рабочим столам в зависимости от задач. Инструменты для написания-редактирования программ - на одном рабочем столе, инструменты для общения - на втором, браузер - на третьем.

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

читать дальше в wordpress'e

  • распределение пространства

Как я распределяю свои рабочие столы? После достаточно долгих экспериментов у меня сложилась следующая раскладка:

1 - текстовый редактор (в моем случае - gvim).
2 - терминал (sakura, с включенным внутри нее screen).
3 - firefox и другие браузеры (иногда бывает необходимо использовать midori, например).
4 - файловые менеджеры (nautilus, pcmanfm).
5 - раньше использовался для мультимедии (mplayer, rhythmbox), но сейчас я использую в основном консольный MOC-player и реже - cmus, которые крутятся под screen в терминале. Так что в настоящее время этот стол работает резервным.
6 - "болталки" aka Инстант-менеджеры (pidgin, skype).
7 - почтовый клиент (thunderbird).
8 - резервный стол.

Такая раскладка столов выбрана не случайно. Я перепробовал несколько вариантов. Стало понятно, что на первом рабочем столе должно открываться наиболее часто используемое приложение, на втором - менее часто и так далее.

Чаще всего я пишу-читаю-редактирую текстовые файлы - от программ до собственно текстов. Поэтому вим у меня на первом столе и открыт почти всегда. То же касается терминала - поскольку sakura-screen открыта у меня почти постоянно - я даже перестал в последнее время пользоваться "выпадающей консолью". Само собой - на третьем месте firefox, как инструмент для работы с интернетом. Пиджин и почта умышленно загнаны "на Камчатку" - дабы поменьше отвлекали от рабочего процесса.

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

Переключение по рабочим столам у меня вполне традиционно настроено на сочетание клавиш <Alt+номер стола>, <Win+номер стола>. Так же очень удобное хотя и используемое гораздо реже сочетание <Win+Shift+номер стола>, которое перемещает текущее активное окно на стол с нужным рабочим номером. Относительными перемещениями ("перейти на стол влево-вправо") я не пользуюсь.
  • впечатления от работы

Какие преимущества имеет такая система? Прежде всего - включается и начинает работать пространственная и моторная память. Все лежит на своих местах. Через неделю распределение программ по столам настолько входит в привычку, что выполняешь его не задумываясь. Я точно знаю где при монтировании флэшки окажется открывающееся окно nautilus'а. Четвертый стол, Alt+4.

Руки нажимают нужные кнопки сами, быстрее чем мозг успевает сформулировать что именно нужно сделать. Посмотреть почту? Alt+7. Написать заметку? Alt+1. Посмотреть статью в Википедии? Alt+3. Скопировать ссылку из браузера в текст? Alt+3, Ctrl+l, Ctrl+c, Alt+1, Ctrl+v.

Ускорение работы очень ощутимо. Нужное окно попадает в фокус ровно после того, как я о нем задумываюсь. Вместо того, чтобы копаться мышкой в ворохе окон я сразу попадаю в нужное мне место. Автоматизм настолько закрепляется, что я не могу убрать пятое окно - я уже привык искать пиджин на шестом столе и тандерберд - на седьмом.

Такая система делает ненужной доки (все и так лежит на своих местах) и... панель запуска задач. Некоторое время я по-старинке использовал панель задач в GNOME, потом, когда перешел на OpenBox - тоже по инерции поставил lxpanel. Когда я недавно экспериментировал с настройками системы - случайно отключил ее. К моему удивлению, ее отсутствие почти не отразилось на моей работе с системой - я хорошо помнил где что лежит и переключался на нужные столы даже не видя где они находятся и что в них запущено. Поэкспериментировав, я понял, что могу работать с системой "наощупь" без особой потери темпа. Я понял что панелью задач не пользуюсь и сейча потихоньку перехожу к tint2 в режиме псевдопейджера.

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

При этом скорость переключения между процессами не страдает - я всегда могу быстро кинуть нужный текст в заметки или наоборот - превратить кусочек блога в письмо или пост. Разница в том, что режим "одно окно - один текст" позволяет сознательно контролировать свою работу и сводит к нулю большинство отвлекающих сигналов, засоряющих внимание. Кстати, это еще одна причина по которой у меня не пошли тайловые менеджеры - у меня не получается сосредоточиться на процессе, если по периферии окна висит пиджин с гуглотоком, тандерберд со свежими письмами и файрфокс с десятком вкладок.
  • примеры настройки системы "под себя"

Как реализовать такой режим работы? OpenBox позволяет такое по дефолту - то есть достаточно открыть ~/.config/openbox/rc.xml и найти и настроить в нем соответствующие разделы.

Пример моего конфига.

...
<applications>
    ...
    <application name="gvim">
      <desktop>1</desktop>
      <maximized>yes</maximized>
      <decor>no</decor>
    </application>
    <application name="sakura">
      <desktop>2</desktop>
      <decor>no</decor>
      <maximized>yes</maximized>
    </application>
    <application name="firefox-bin" role="browser">
      <desktop>3</desktop>
      <maximized>yes</maximized>
    </application>
    <application name="WinMakezTxT.exe">
      <desktop>3</desktop>
    </application>
    <application name="nautilus">
      <desktop>4</desktop>
    </application>
    <application name="pcmanfm">
      <desktop>4</desktop>
    </application>
    <application name="Pidgin" role="buddy_list">
      <desktop>6</desktop>
    </application>
    <application name="Pidgin" role="conversation">
      <desktop>6</desktop>
      <maximized>yes</maximized>
    </application>
    <application name="thunderbird-bin" role="3pane">
      <desktop>7</desktop>
      <maximized>yes</maximized>
    </application>
    ...
</applications>
...

Некоторые пояснения:

name="gvim" - название-класс-роль приложения

Название и прочие данные для своих приложений можно определить с помощью obxprop. У этой утилиты после запуска появляется крестик-курсор, которым нужно кликнуть по нужному приложению. Она срабатывает и выводит массу информации о нем, включая нужные данные. Например, для firefox я получаю в том числе следующие строки:

_OB_APP_TYPE(UTF8_STRING) = "normal"
_OB_APP_CLASS(UTF8_STRING) = "Firefox-bin"
_OB_APP_NAME(UTF8_STRING) = "firefox-bin"
_OB_APP_ROLE(UTF8_STRING) = "browser"

Их можно использовать в качестве имени программы. Как правило имени хватает, но иногда возникает необходимость более точного "наведения на цель" - скажем в Пиджине мне хочется, чтобы окно с диалогами (role="conversation") разворачивалось во весь экран, а список пользователей (role="buddy_list") оставался таким как есть. Поэтому для них есть две отдельные команды.

<desktop>1</desktop> - на каком рабочем столе запускать

<maximized>yes</maximized> - распахнуть на весь стол

<decor>no</decor> - запустить без декораций

Без "декораций" - то есть - без рамки окна и кнопок "свернуть-развернуть-закрыть") - с vim и sakura я работаю в основном с клавиатуры, поэтому сразу убираю у них лишние элементы интерфейса чтобы освободить побольше рабочего места.

Клавиши навигации по рабочим столам настраиваются еще проще и в том же rc.xml

...
<keyboard>
...
<!-- навигация по рабочим столам -->
<keybind key="A-1"> <action name="Desktop"> <desktop>1</desktop> </action> </keybind>
<keybind key="A-2"> <action name="Desktop"> <desktop>2</desktop> </action> </keybind>
<keybind key="A-3"> <action name="Desktop"> <desktop>3</desktop> </action> </keybind>
<keybind key="A-4"> <action name="Desktop"> <desktop>4</desktop> </action> </keybind>
<keybind key="A-5"> <action name="Desktop"> <desktop>5</desktop> </action> </keybind>
<keybind key="A-6"> <action name="Desktop"> <desktop>6</desktop> </action> </keybind>
<keybind key="A-7"> <action name="Desktop"> <desktop>7</desktop> </action> </keybind>
<keybind key="A-8"> <action name="Desktop"> <desktop>8</desktop> </action> </keybind>

<keybind key="W-1"> <action name="Desktop"><desktop>1</desktop></action> </keybind>
<keybind key="W-2"> <action name="Desktop"><desktop>2</desktop></action> </keybind>
<keybind key="W-3"> <action name="Desktop"><desktop>3</desktop></action> </keybind>
<keybind key="W-4"> <action name="Desktop"><desktop>4</desktop></action> </keybind>
<keybind key="W-5"> <action name="Desktop"><desktop>5</desktop></action> </keybind>
<keybind key="W-6"> <action name="Desktop"><desktop>6</desktop></action> </keybind>
<keybind key="W-7"> <action name="Desktop"><desktop>7</desktop></action> </keybind>
<keybind key="W-8"> <action name="Desktop"><desktop>8</desktop></action> </keybind>

<!-- перемещение окон -->
<keybind key="W-S-1"> <action name="SendToDesktop"><desktop>1</desktop></action> </keybind>
<keybind key="W-S-2"> <action name="SendToDesktop"><desktop>2</desktop></action> </keybind>
<keybind key="W-S-3"> <action name="SendToDesktop"><desktop>3</desktop></action> </keybind>
<keybind key="W-S-4"> <action name="SendToDesktop"><desktop>4</desktop></action> </keybind>
<keybind key="W-S-5"> <action name="SendToDesktop"><desktop>5</desktop></action> </keybind>
<keybind key="W-S-6"> <action name="SendToDesktop"><desktop>6</desktop></action> </keybind>
<keybind key="W-S-7"> <action name="SendToDesktop"><desktop>7</desktop></action> </keybind>
<keybind key="W-S-8"> <action name="SendToDesktop"><desktop>8</desktop></action> </keybind>
...
</keyboard>
...
  • варианты решений

Разумеется, это не единственное решение. В GNOME, насколько мне известно, подобным образом можно настроить Compiz - но подробно я этот вопрос не исследовал, поскольку в тот момент уже перешел к OpenBox как основной рабочей системе.

Как вариант - можно встроить OpenBox в качестве менеджера окон GNOME (вместо metacity или compiz) и настроить OpenBox так, как указано выше.

В принципе почти наверняка большинство оконных менеджеров имеет похожие средства управления окнами, так что не ленитесь читать документацию того приложения, которым пользуетесь.

Часто на форумах рекомендуют использовать для управления окнами утилиту devilspie, но у меня он не работал так, как было мне нужно. Поэтому вместо него на первых порах - когда я еще не добрался до OpenBox я использовал совсем примитивное решение.

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

Выглядит оно примерно так:

#! /bin/sh

# рабстол номер раз - все вимы
wmctrl -r "GVIM" -b add,maximized_vert,maximized_horz
wmctrl -r "GVIM" -t 0

...

# рабстол номер три - файрфокс
wmctrl -r "firefox" -b add,maximized_vert,maximized_horz
wmctrl -r "firefox" -t 2

# рабстол номер семь - почта
wmctrl -r "thunderbird" -b add,maximized_vert,maximized_horz
wmctrl -r "thunderbird" -t 6

...

exit

Каждая команда ориентируется на заголовок окна. Первая из команд разворачивает окно на максимум, вторая - посылает на нужный рабочий стол. Не знаю почему, но wmctrl считает столы с нуля, поэтому если файрфокс отрпавляется на рабочий стол номер три - надо писать wmctrl -r "firefox" -t 2.
  • P.S.

Еще один любопытный момент. Перечитывая этот пост, я заметил, что большинство используемых мной программ - это достаточно мощные системы, каждая из которых завязана на определенный вид работы. То есть, например, файрфокс - сейчас больше чем браузер - это "комбайн" для работы с сетевыми приложениями. Аналогично "комбайнами" можно назвать и vim и screen - с одной стороны у них очень простые механизмы работы, с другой они позволяют накручивать на себя функционал, для реализации которого потребовалось бы множество стороннего софта, сил и средств. Например, при запуске screen у меня в нем автоматически подгружается ttytter (очень удобный twitter-клиент), mocp и htop. И так далее.

То есть рабочие столы в моей системе это не только "ящик для одного приложения" - это скорее "режим работы" - с текстом, с консолью, с интернетом, с файлами, общение, почта.

Date: 2010-09-20 11:51 pm (UTC)
From: [identity profile] ibnteo.livejournal.com
Вот почему-то большинство распределяют программы по типам, я же для себя решил что лучше распределять по задачам. Допустим делаю сайт, у меня открыт браузер, текстовый редактор, возможно еще FTP клиент и графический редактор, это все на одном рабочем столе. А вот нужно пообщаться, то идем на другой стол. Если же требуется срочно переключиться на другую задачу, то достаточно переключиться на новый рабочий стол, и открывать программы уже там (даже те же самые, что на другом столе).

В итоге переключаешься между программами по Alt+Tab, и никаких лишних окон. Как только какая-то программа мешается, просто гонишь ее в другое пространство, и больше маячить перед глазами она не будет.

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

Date: 2010-10-01 04:51 pm (UTC)
From: [identity profile] tengu-crow.livejournal.com
Тут кому - что, по-моему. А у тебя в системе окна сами группируются по задачам или ты их вручную размещаешь? По-моему ключ к предпочтениям где-то здесь.

Я заметил, что у меня вообще "однозадачный режим работы" - то есть редко требуется еще одно окно. А если требуется еще одно - значит это уже другая работа. Написание кода/текста и его тестирование я разделяю :)

Date: 2010-10-01 06:10 pm (UTC)
From: [identity profile] ibnteo.livejournal.com
Я их не размещаю специально, хотя можно перетащить в нужный экран уже открытые (Gnome). Переключаюсь в новый экран, и открываю программы для решения данной задачи уже в нем.

Date: 2010-09-30 12:06 pm (UTC)
From: [identity profile] lstranger.livejournal.com
Ты во вкус входишь. :)
Только Alt+x многие приложения по-своему используют, тот же браузер переключается по вкладкам, например (внезапно, да?), посему у меня на переключении столов назначены Win+Fx. И часто бывает нужно запустить больше, чем обычно, потому кое-что привязано к столу, а кое-что нет. А раскладка у меня такая:
1: все IM;
2: irssi либо smplayer;
3: firefox;
4: резерв (консоль);
5: mutt;
6: mc (может быть пару одновременно, когда программу отлаживаю, например);
7: резерв;
8: резерв для игр.
А Ctrl+C/Ctrl+X/Ctrl+V я не пользую, мне "горячий" буфер больше нравится (который по LC/MC), он быстрее на порядок, меня его отсутствие на винде раздражает. :)

Date: 2010-10-01 04:59 pm (UTC)
From: [identity profile] tengu-crow.livejournal.com
Еще бы. Как семечки - оторваться невозможно :)

> Alt+x многие приложения по-своему используют

Угумс. Это нужно учесть. Я просто привык к управлению столами через альт - поэтому поставил по умолчанию. А что в firefox действительно удобно прыгать по вкладкам через Alt+1,2...? Я пользуюсь mouseless browsing примерно с теми же целями. Но пока оно у меня не очень идет. Не могу привыкнуть не использовать мышь в браузере.

> часто бывает нужно запустить больше, чем обычно, потому кое-что привязано к столу, а кое-что нет
Само собой :) У меня по столам разложены только ключевые приложения :)

> 5: mutt;
Снимаю шляпу :) У меня так и не получилось его освоить :( Хотя нутром чувствую - афигенная программа. Как ты ее используешь? Особенно интересно что с гмэйлом?

> Ctrl+C/Ctrl+X/Ctrl+V я не пользую

Я в примере привел, чтобы было понятно. А так - у меня даже более продвинутое пользование, поскольку стоит Parcellite :)

Date: 2010-10-04 10:20 am (UTC)
From: [identity profile] lstranger.livejournal.com
> А что в firefox действительно удобно прыгать по вкладкам через Alt+1,2...?
Достаточно удобно, особенно если в нетбуке открываешь несколько вкладок. :)

> Как ты ее используешь? Особенно интересно что с гмэйлом?
Не знаю, что с гмэйлом, не люблю шаропочту, локальные ящики всегда читаю, но проблем не должно быть, вообще говоря. Причём вариантов навскидку три: забирать почту по POP3 тем же mutt'ом; забирать fetchmail'ом и потом читать локально; читать прямо на gmail, используя протокол доступа к почтовому ящику IMAP.

April 2026

S M T W T F S
   1234
5678910 11
12131415161718
19202122232425
2627282930  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 6th, 2026 07:39 pm
Powered by Dreamwidth Studios