Евгений Чайкин aka StraNNik
2007-12-19
Недавний разговор с уважаемым Warderer'ом, большим любителем Ion'а и большим нелюбителем всех и всяческих DE, навёл меня на следующие мысли. Warderer в качестве примера удобства и автоматизации рабочего места, привёл следующие ситуации:
Традиционно считается, что DE слабо поддаются автоматизации (а уж Gnome — и вовсе не поддаётся). Я решил развеять это предубеждение.
Приступим? Пункт второй я рассмотрю в отдельной заметке, а вот динамическое изменение меню, в силу крайней простоты этой процедуры, опишу сейчас.
Итак, согласно заветам freedesktop.org элементы меню хранятся в xml-файлах. Описания отдельных программ хранятся в т.н. desktop-файлах во вполне определённых каталогах.
После установки программы, описывающий её desktop-файл попадает в каталог /usr/share/applications/, из которого и формируется меню для всех пользователей. Персональные же настройки хранятся в каталоге ~/.local/share/applications/.
Несколько сумбурно и запутано, так? Ничего, сейчас будет пример и всё станет ясно.
Воспользуемся свежеприобретёнными знаниями и скроем из меню строку Firefox.
$ cp /usr/share/applications/firefox.desktop .local/share/applications/ $ echo "NoDisplay=true" > >.local/share/applications/firefox.desktop
Итак, что мы сделали? В случае, если для одной и той же программы есть описание и в системном и в пользовательском каталоге, приоритетным считается файл описания из локального каталога. Поэтому, добавив в desktop-файл параметр NoDisplay, можно скрывать, либо отображать соответствующий пункт меню.
Итак, мы скрыли пункт меню. Неплохо бы теперь вернуть его обратно. Сделать это можно двумя способами:
Вот так:
rm .local/share/applications/firefox.desktop
В силу того, что я ленивый — второй способ нравится мне куда больше.
Выводы:
Ну, а задачу по оформлению этого дела в скрипт, который будет срабатывать в определённое время, оставляю всем желающим.