[Из песочницы] Убунту OpenBox, установка и настройка
С возрастом всё больше становится жалко времени на бесплодные ёрзанья мышкой; всё больше раздражения вызывает загружаемый с каждой DE какой-то бесконечный хлам, который съедает время и ресурсы с малопонятными целями. И начинается традиционное нисхождение: от KDE к XFCE, потом к LXDE. Наверное, когда-нибудь я дойду и до голой консоли на десктопе. Но пока меня остановил OpenBox.
«CrunchBang своими руками» — так чаще всего называются подобные руководства. Некоторые пишут совсем коротко: «Посмотри конфиги CrunchBang и настрой по ним свой OpenBox!»
Я посмотрел конфиги CrunchBang. Только он уже не CrunchBang, а BunsenLabs называется. Установил его на своём ноутбуке для изучения — wi-fi не работает: заводится и тихо умирает. Думаю, это из-за старого ядра — наблюдал такое раньше. Попытался перенести конфиги в Убунту — не получилось: там половина команд начинается с префикса «bl-», понятно, что это будет несовместимым с другими дистрибутивами. Стало очевидно, что лёгкого пути не будет.
Изначально для моей «голой» системы было два варианта: Дебиан netinst или Убунту сервер. После того как новенький Дебиан 9.1 гордо отказался конфигурировать Mysql (точнее, Mariadb) — даже после угрожающих размахиваний напильником и чтения вслух гневных нецензурных заклинаний с ЛОРа — остался только один вариант.
Установил Убунту сервер 16-с-чем-то. На работе. Пришёл домой, чтобы тихо посидеть над OpenBox’ом, а на ноутбуке уже интернет не работает. Потому что на работе я в него перед установкой провод воткнул, чтобы долго не разбираться. А дома вай-фай. И что? Куда тыкать мышкой, чтобы выбрать беспроводную сеть? Пошёл на работу, воткнул провод, установил lubuntu-desktop, wi-fi появился, красота! Потом анекдот про двух ковбоев вспомнил: «А тебе не кажется, Джон, что мы оба забесплатно дерьма поели?» То есть Lubuntu я и так мог скачать и установить, сразу, готовую, а не таким хитрым способом. Задача была немного другая.
Путь оказался ещё менее лёгким. Пришлось разбираться с этими вашими /etc/network/interface’ами. Разбирался, читал, экспериментировал. Для начала узнал, как устанавливать сами «окна» — после установки «голой» системы, надо в консоли писать что-то вроде:
$ sudo apt install xorg
$ sudo apt install openbox obmenu tint2 conky lightdm gdebi geany xarchiver
Вы спросите: ну ладно ещё Xarchiver, но причём тут Geany? — Так, для примера; там большой хвост ещё из разных предпочтений тянется от разных пользователей в интернете — я ведь не первый, кто пытается настраивать OpenBox для себя. Но это всё не очень принципиально. Важно то, что это неполный набор, неработающий!
WiFi
В процессе экспериментов с некоторыми «голыми» debian-based ОС я выучил наизусть, что для возможности подключения к wi-fi мой файл /etc/network/interfaces должен выглядеть так:
auto wlp1s0
iface wlp1s0 inet dhcp
wpa-ssid мой_dlink
wpa-psk мой_тайный_ключ_0a8396f1a4f6771e4a083691fe
Это меня и подвело — то, что выучил наизусть. Файл-то я скопировал, а wi-fi не работает. Потому что где-то в середине экспериментов у меня возник вопрос: вот я отказался от LXDE, так, может, и Lightdm для OpenBox’а не нужен? И ответ у меня получился положительный. То есть я его в итоге не стал устанавливать, совсем. Авторизуюсь в консоли, делаю там что-то, а потом вдруг мне хочется в окна мышкой потыкать, и я пишу сакраментальное:
$ startx
Потому что у меня задачи такие — в основном работа с сервером; и иногда хочется эту работу сделать удобнее — ну, там, несколько вкладок в файл-менеджере использовать, или в соседнем окне фильм посмотреть. Я не проверял, устанавливаются ли «беспроводные инструменты» вместе с Lightdm или эти инструменты тянет за собой LXDE какое-нибудь, но без Lightdm и без LXDE — точно не устанавливаются. Поэтому более правильно команда установки должна выглядеть так:
# (Вариант 1)
$ sudo apt install openbox obmenu tint2 xxkb wpasupplicant wireless-tools
Те, кто не знает ещё своего длинного зашифрованного ключа для вайфая, могут записать его в текстовый файл wpa-psk.txt так:
$ wpa_passphrase мой_dlink(ssid) мой_обычный_пароль>wpa-psk.txt
Ещё деталь: волшебное слово wlp1s0, для обращения к вашему сетевому интерфейсу, можно узнать, например, командой:
$ ip address
И там у вас может оказаться совсем другое слово — например, wlan0.
Когда же мне надоест руками править файл /etc/network/interfaces при переходе из одного здания в другое, я тоже знаю, что мне надо будет сделать — установить NetworkManager:
$ sudo apt install network-manager
Потом создать файл в своём домашнем каталоге ~/.config/openbox/autostart (если его ещё нет) и дописать туда две строчки:
tint2 &
nm-applet &
В сети описываются проблемы с апплетами для OpenBox’а, возникающие иногда из-за неправильной последовательности загружаемых модулей. Одно из решений я нашёл такое — вместо простого «tint2 &» написать:
if which tint2 >/dev/null 2>&1; then
(sleep 2 && tint2) &
fi
nm-applet &
Видимо, предлагаемая задержка в 2 секунды помогает автозагрузчику OpenBox’а пережить разный сторонний загружаемый бутор и потом без помех отобразить желанную иконку сетей, по которой можно щёлкать мышкой. На сайте wiki.archlinux.org я видел ещё более «медленную» конструкцию:
# запуск Xcomppmgr и tint2 в Openbox
if which tint2 >/dev/null 2>&1; then
(sleep 2 && xcompmgr) &
(sleep 2 && tint2) &
fi
В целом, конечно, такая стратегия выглядит как-то сомнительно: мы же в итоге стремимся к «мгновенной» загрузке и выгрузке «иксов», иначе зачем нам этот путь упрощений — от KDE к XFCE, LXDE, OpenBox’у?
Важная Информация, панели, виджеты, погода
Куда делись из моей команды установки OpenBox Коньки (Conky)? Это такой апплет (или виджет?), который прямо на рабочем столе показывает, сколько у вас осталось памяти и не слишком ли перегрелся процессор. Я понял, что он мне так же не нужен, как и Lightdm, и Xcomppmgr из примера выше. В развитой мерфологии есть такая рекомендация: перед тем как пойти сдавать анализы в поликлинику, определите, что вы будете делать, если анализы положительные; подумайте, что будете делать, если анализы отрицательные; сравните ваши действия — если они одинаковы в обоих случаях, зачем вам вообще идти в поликлинику?
Зачем мне знать, сколько осталось памяти? Если комп уже начал сильно тормозить, я и так знаю, что делать, — например, закрыть все открытые окна («Если вы что-нибудь открыли — закройте»). И я знаю (чувствую пальцами), когда ноутбук перегревается, и тоже знаю, что делать, когда он начал перегреваться постоянно — например, можно попробовать отнести его на профилактику.
Ну, иногда бывает нужно посмотреть, кто конкретно больше памяти жрёт — Firefox или Chromium. Не для практической пользы, конечно, а чтобы вставлять потом умные замечания в дискуссии и базары на форумах. Но для этого постоянно работающий апплет не нужен, достаточно запустить на минутку в консоли команду:
$ top -oRES
Клавиатура. Переключатель раскладки
Как же жить без этого? Я бы вполне удовлетворился правкой файла /etc/default/keyboard:
XKBMODEL="pc105"
XKBLAYOUT="us,ru"
XKBVARIANT=","
XKBOPTIONS="grp:shifts_toggle,grp:alt_caps_toggle,terminate:ctrl_alt_bksp,compose:ralt,grp_led:scroll"
Если бы не две проблемы: 1) не всегда правка этого файла помогает — конфиги клавиатуры во время загрузки оконной системы читаются ещё из нескольких тайных мест; 2) мне удобнее, когда в разных открытых окнах запоминается разная раскладка, а в конфиге /etc/default/keyboard такое поведение окнам назначить нельзя.
Поэтому устанавливаем ещё одну программу:
$ sudo apt install xxkb
Впрочем, она уже записана в нашу общую «правильную» (Вариант 1) команду установки OpenBox. Потом создаём файл ~/.xxkbrc с примерно таким содержанием:
XXkb.controls.add_when_start: yes
XXkb.controls.add_when_create: yes
XXkb.controls.add_when_change: yes
XXkb.controls.focusout: yes
XXkb.mainwindow.type: tray
XXkb.mainwindow.label.enable: yes
XXkb.mainwindow.enable: yes
В управляющей полоске каждого окна будет отображаться флажок языка, и каждое окно запоминает текущую раскладку. И да, сами клавиши переключения раскладки надо записать в файл ~/.config/openbox/autostart в виде такой команды:
setxkbmap -layout "us,ru" -option "grp:shifts_toggle,grp:alt_caps_toggle,terminate:ctrl_alt_bksp,compose:ralt,grp_led:scroll" &
Файл-менеджер
Мои наиболее частые действия на компьютере — открыть файл и что-нибудь написать в нём. Иногда это связный русский текст, иногда что-то вроде
body {width:800px; margin:0 auto;}
Часто приходится открывать файлы по сети — хотя бы чтобы просто посмотреть, что там написано. Поэтому мне совершенно необходим такой «стек» программ: файл-менеджер — фтп, smb, или fish клиент — текстовый редактор с подсветкой и проверкой орфографии. И ещё желательно не вводить каждый раз пароли для удалённого доступа.
Такие задачи можно решать, например, с помощью связки программ Krusader — Kate. А Kwalletmanager для хранения паролей сам с ними устанавливается. Да. И ещё треть KDE, наверное. Но тут уж ничего не сделаешь. Пробовал Tux-commander — он открывает файлы по сети, но не сохраняет обратно, во всяком случае «из коробки»; да и в целом возможности явно беднее, чем у Krusader’а. Те же проблемы и у «родных» файловых менеджеров KDE, XFCE, LXDE. То есть кому-то это всё равно, а для меня — проблема.
Таким образом, команда установки удлиняется на пару пунктов: krusader kate krename kdiff3 unrar konsole. Конечно konsole –, а иначе что будет открываться в Krusader’е при нажатии клавиши F2 (или, в новой версии, F9)?
Русификация и проверка орфографии
Русификация самой системы мне не нужна: мне привычно и удобно в файл-менеджере набирать три буквы «doc», чтобы переместиться на папку Documents;, а если папка будет называться «Документы», придётся переключать раскладку — уже не очень удобно. Ну, или в Krusader’е Alt+s — «Settings» и прочие обозначения уже привычны; как это будет по-русски, мне даже страшно подумать.
А вот проверка орфографии — хотя бы от элементарных опечаток — необходима. Её в Kate обеспечивает aspell (или ispell? всё время их путаю). К ним надо локальные настройки скачивать. В Либреофисе — hunspell, к нему тоже надо словари. Ну и словари для Firefox — отдельная песня. Итого, вместе с самим Либреофисом и Firefox’ом команда установки получится:
#(Вариант 2)
$ sudo apt install openbox obmenu tint2 xxkb wpasupplicant wireless-tools \
krusader kate krename kdiff3 unrar konsole libreoffice firefox \
hunspell-ru aspell-ru firefox-l10n-ru libreoffice-l10n-ru geany gmrun mc mpv
Совсем забыл про mc — его в Убунту-сервере по умолчанию нет, и я его поставил первым, ещё в голой консоли. Geany — для страховки: не с любым файлом удобно работать в Kate.
«Зачем же тебе l10n-ru, если тебе не нужна русификация интерфейса?» — обязательно спросит, гаденько усмехаясь, наблюдательный линуксоид. — Не для себя. Это моя старая боль в спине (или ниже?): установишь кому-то в очередной раз линукс — и тут же вопли: я ничего не понимаю! тут всё не по русски! Вот у меня уже и выработался рефлекс, можно сказать. Хотя вряд ли, конечно, при уводе очередного клиента с Виндовс я буду ставить ему OpenBox. Но готовиться надо: иногда попадаются пользователи совершенно не способные постоять за себя и готовые послушно заучивать все эти Alt+F2 и Win+w.
Запуск программ
Gmrun нужен, чтобы вызывать программы не мышкой из списка в меню, а непосредственно по Alt+F2, для чего в файл ~/.config/openbox/rc.xml должно быть, конечно, записано:
gmrun
Например, захотите вы компьютеру сказать shutup! shutdown -h 0
— вот и Alt+F2 пригодится. Конечно, не очень удобно для вызова программы полностью набирать её название. В Gmrun по умолчанию работает автодополнение названий программ при нажатии клавиши Tab. Это поведение можно изменить — чтобы подсказки выскакивали сразу и сами, без Tab. Для этого надо создать в домашней папке файл .gmrunrc и записать в него строку: TabTimeout = 1
. В этом же файле можно указать некоторые другие настройки; полный их список можно посмотреть в файле /etc/gmrunrc;, а лучше скопировать этот файл в ~/.gmrunrc и внести на новом месте нужные изменения.
Gmrun Alt+F2 с автодополнением программ — это, в сущности, замена вызова меню по Alt+F3 в XFCE или Alt+F1 в KDE, только без нудного лазанья по ответвлениям вида «Настройки», «Система», «Интернет»… К сожалению, собственных «actions» OpenBox’а там нет. Например, нельзя через Gmrun вызвать команду Exit — выгрузить сам OpenBox и вернуться в консоль. Или Restart — обновить конфигурацию после правки конфигов. Поэтому несколько команд всё равно приходится заучивать отдельно: Ctrl+Alt+r — Restart, Ctrl+Alt+0 — Exit. А чтобы они работали, надо добавить в файл ~/.config/openbox/rc.xml следующие записи:
Монтирование флэшек и локальных дисков
Возможно, такие штатные менеджеры, как Thunar или PCManFM умеют монтировать флэшки. Или даже авто-монтировать при вставке. Мой Krusader в «минимальном» OpenBox’е не осилил: устройство он показывает, предлагает смонтировать, но потом говорит, прав не хватает. В режиме рута монтирует, но русские буквы отображаются вопросиками. То есть нужно, видимо, что-то ещё там скриптами подстраивать или дополнительными утилитами. Я решил проще — добавил в /etc/fstab две строчки:
/dev/sdb1 /mnt/fleshka1 vfat noauto,user,rw,codepage=866,iocharset=utf8 0 2
/dev/sdc1 /mnt/fleshka2 vfat noauto,user,rw,codepage=866,iocharset=utf8 0 2
Наверное, надо ещё и sdb2 на всякий случай, но мне для моих флэшек хватает. Теперь Krusader монтирует и отмонтирует вставляемые флэшки правильно. Если у вас есть нужные для работы дополнительные разделы на локальных дисках, их тоже лучше сразу прописать в /etc/fstab.
Заключение
Остался вопрос: зачем в конце получившейся команды установки OpenBox (Вариант 2) написано mpv? С учётом того что мне ещё надо настраивать на моём Убунту сервере LAMP или QEMU, этот вопрос кажется мне каким-то мелким, не стоящим внимания.
Гораздо интереснее узнать, в чём я ошибся в своей настройке OpenBox и какие варианты настроек ещё бывают; что я забыл. Скажем, иногда надо видеть два окна сразу — например, рисунок клавиатуры и текстовый редактор (для изучения «слепого» набора). Можно ведь аккуратно разместить эти окна на экране клавиатурными сокращениями. А потом как-то заставить OpenBox запомнить это расположение окон. И вообще сохранить всю сессию. То есть тут есть над чем работать.
P.S. Чуть не забыл: если вы не используете NetworkManager, строчку auto wlp1s0
в файле /etc/network/interfaces лучше закомментировать и использовать для подключения к сети команду в консоли:
sudo ifdown wlp1s0 && sudo ifup -v wlp1s0
(Вместо wlp1s0 — название вашего беспроводного интерфейса). Иначе загрузка Убунту может «зависнуть» минут на 5 в поисках несуществующей точки доступа к wi-fi.