Журнал

О стилистике ответов на форумах

Ему про Ерему, а он про Фому.

Довольно часто сталкиваюсь на форумах с ситуацией, когда какой-то человек (иногда это я) просит о помощи в настройке/установке/чем-нибудь, а ему, не отвечая на исходный вопрос, пытаются высказать свое мнение. Хочу обратить внимание людей на данную проблему. Для наглядности поясню на отстраненном от IT-области примере.

Спрашивает человек на форуме: «А где бы купить козьего молочка в родной деревеньке Гадюкино?» А ему отвечают: «Не, козье вредно — ты лучше нормального, коровьего, купи, оно лучше!» «Да-да! Козье — гадость полная, на вкус противное, мне не нравится, пей коровье!» «Не покупай в Гадюкино! В Верхних Валенках гораздо вкуснее продают!»

Знакомая ситуация? Если нет, дальше читать не имеет смысла.

Конечно, иногда эти советы правильные, но все же, человек спрашивал не про то, какое молоко полезнее или где вкуснее. Может так судьба сложилась, что ему нужно именно так, и никак иначе, может они и сам не рад, что так получилось. Особенно раздражает ситуация, когда человек пишет дополнительно, что нужно именно это, он рабирается во вкусности/полезности, и не надо писать свои советы по данному поводу. Но даже в этом случае находятся советчики, которым важнее высказать свое мнение, чем реально помочь человеку.

Лишь единицы ответят что-то вроде: «У бабы Нюры на рынке можно купить, в третьем ряду».

И совсем малое количество скажет: «Можно еще у тетки Лиды купить, в четвертом ряду. Но я бы все-таки рекомендовал в Верхних Валенках купить, если есть возможность, потому что Нюра с Лидой могут и кислое продать».

На мой взгляд, надо придерживаться последнего варианта. Во-первых, таким образом человеку все-таки оказывается действительная помощь в решении его проблемы. Во-вторых, высказано личное мнение по данному вопросу. И в-третьих, ваше мнение аргументированно, заставляет задуматься здравомыслящего человека и не навязывается. Обратите снова внимание на первые коментарии: «пей», «купи», «не покупай». Глаголы в повелительном наклонении навязывают чужое мнение, не оставляют другого выбора.

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

Я не настаиваю на том, чтобы не говорить свое мнение, просто постарайтесь формулировать его в менее аксиоматичной форме.

СсылкаКомментировать

Devil's Pie

Первая моя более-менее полезная статья. В ней отражено мое тогдашнее увлечение настройкой линукса под себя. Сидел часами, пытаясь решить как банальные проблемы, которых в те времена было много, так и очень специфичные. Например, эта статья родилась из-за того, что Counter-Strike, запущенная через wine, в полноэкранном режиме работала не так, как мне нравилось: долго переключаться было на аську, и куб рабочих столов лагал. А в оконном режиме мешали заголовки окна. Другие примеры — тоже исправление того, что мне не нравилось.

Эту статью я изначально писал на хабр, но там она не вышла из песочницы и инвайт я не получил. Но я решил написать одному из администраторов русскоязычного сообщества Ubuntu, Malamut. И в итоге получилсь wiki-страница на help.ubuntu.ru, а я получил от Malamut инвайт на хабр.

Я потом еще написал две wiki-страницы: “Возвращаем кнопку переключения адресной строки Nautilus” и “как убрать индикатор раскладки клавиатуры”. Первая еще даже жива, а вторая сгинула. Но их ценность уже сомнительна, а эта — дорога как память.

Devil’s Pie — утилита, дополняющая возможности Metacity — стандартного менеджера окон среды GNOME. Как говорит ее разработчик, Ross Burton, на создание Devil’s Pie его вдохновила опция “Matched Windows” старого менеджера, SawFish, и недостаток функционала в Metacity.

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

Правила

Devil’s Pie работает с набором правил вида

(if a b c)

Здесь а — проверяемое условие, b — выполняемое действие, если условие выполнено, с — если условие не выполнено.

Правила надо хранить в текстовом файле с расширением .ds. Devil’s Pie по умолчанию загружает все такие файлы из папки ~/.devilspie. Создатель рекомендует хранить по одному правилу в файле, однако можно использовать объединение конструкций и хранить несколько правил в одном файле. Можно запускать Devil’s Pie, используя только определенные файлы правил, прописывая их в параметрах командной строки.

Условия

В качестве условия может выступать одна из следующих конструкций:

(is a b)

Выполняется, когда строка а совпадает со строкой b.

(contains a b)

Выполняется, когда строка b является подстрокой a.

(matches a b)

Выполняется, когда строка а соотвествует регулярному выражению b. Пример:

(matches "ubuntu" "[bntu]{6}") — true
(matches "ubuntu" "[0-9]+") — false

Условия можно усложнять с помощью операторов and, or, not (используется префиксная нотация). Пример:

(or (and a (not b)) c d)

Выражение будет истинным, когда будут истинны либо c, либо d, либо одновременно a будет истинно и b — ложно.

Свойства окон

В качестве проверяемых строк можно использовать следующие свойства окон:

window_name — заголовок.
window_role — роль, определенная в WM_WINDOW_ROLE.
application_name — имя приложения.
window_workspace — номер рабочего стола.
window_class — класс окна.
window_xid — XID.
window_property свойство — другие свойства.

Полный список возможных параметров можно посмотреть здесь: http://standards.freedesktop.org/wm-spec/wm-spec-latest.html#id2511080

Действия

Основные действия:

geometry — задает положение и размер окна.

В качестве аргумента используется строка X-GeometryString:

[<width>{xX}<height>][{+-}<xoffset>{+-}<yoffset>]

Пример:

(geometry "400x300+0-22")
fullscreen — перевод в полноэкранный режим.
maximize — развернуть на весь экран.
unmaximize — обратное действие.
minimize — свернуть.
unminimize — развернуть.
close — закрыть окно. 
pin — поместить на всех рабочих столах.
set_workspace N — переместить на рабочий стол N.
skip_tasklist — не показывать окно в списке задач.
above — окно будет расположено поверх всех окон.
wintype тип — задает тип окна: "normal", "dialog", "menu", "toolbar", "splashscreen", "utility", "dock","desktop". 
opacity N — задает прозрачность в процентах.
spawn_sync сommand — выполняет внешнюю команду.

Некоторые действия можно применить не ко всем типам окон, например диалоговые окна не принимают команду изменения размера. Обойти это ограничение можно с помощью команды wintype "normal". Более полный набор действий можно посмотреть здесь: http://foosel.org/linux/devilspie.

Объединение действий

Действия можно объединять с помощью конструкции

(begin a1 a2 ... an)

Также можно и объединять несколько правил в одном файле:

(begin 
(if a b c)
(if d e f)
)

Примеры

Прикрепить спикок контактов Gaim Buddylist ко всем рабочим столам с размером 340×630 пискелей и с положением x=4, y=150.

(if
    (and 
        (is (application_name) "gaim")
        (is (window_name) "Buddy List")
    )
    (begin
        (pin)
        (geometry "340x630+4+150")
    )
)

Переместить firefox на рабочий стол №2 и развернуть окно на весь экран

(if
    (is (application_name) "firefox-bin")
    (begin
       (set_workspace 2)
       (maximize)
    )
)

Закрыть окно KAlarm при запуске системы.

Создаем в папке ~/.devilspie файл kalarm.ds:

(if 
  (is (window_name) "KAlarm" )
  (begin
    (close)
    (spawn_sync "bash -c \"ps auxww| grep -E 'devilspie(.*)kalarm' | awk '{print \$2}'| xargs kill\"")
  )
)

Добавляем в “Запускаемые приложения” команду

devilspie ~/.devilspie/kalarm.ds

Таким образом, как только Devil’s Pie видит окно KAlarm, он закрывает его (сворачивает в трей) и завершает свою работу.

Развернуть окно Counter-Strike, запущенного под wine, на весь экран.

Создаем в папке ~/.devilspie файл cs.ds:

(if 
  (matches (window_name) "Counter-Strike")
  (begin
    (wintype "normal")
    (fullscreen)
  )
)

Добавляем в “Запускаемые приложения” команду

devilspie ~/.devilspie/cs.ds

Окно диалоговое, и просто так развернуть его во весь экран не получится. Поэтому начала ему назначаем тип. В отличие от первого случая, Devil’s Pie будет постоянно отслеживать окно и не будет завершаться после применения правила.

Ссылки

Одна из самых подробнейших документаций по утилите на английском языке http://foosel.org/linux/devilspie

Сайт разработчика: http://www.burtonini.com/blog/computers/devilspie

Ссылка