Author Archives: elwood
Так вышло, что уже немало лет (с 2016) я на рабочем ноутбуке пользуюсь исключительно тайловым window manager’ом (конкретно, awesome wm). Пожалуй, пришло время поделиться опытом и рассказать, почему я предпочитаю тайловые wm и чем они хороши для работы программиста.
О том, что такое тайловые wm и чем они отличаются от обычных десктопных окружений, можно почитать тут. Я же расскажу о своих сценариях использования. Что нужно программисту для работы? Джентельменский набор: браузер, мессенджер, терминалы, IDE/текстовый редактор, ну и прочие приложения (менеджер паролей, калькулятор, скриншотилка итд). Чаще всего работа ведётся в редакторе кода с переключением в браузер/мессенджер/терминал и обратно. Причём переключаться приходится часто, особенно это касается эмуляторов терминала: сессий зачастую бывает много (больше трёх), и хочется тратить на это минимум времени.
Что предлагает нам обычное десктопное окружение? Возьмём для примера GNOME. В нём приложения будут сгруппированы в таскбаре, и переключаться можно тремя способами: через Alt+Tab, мышкой (тыкая в нужную иконку), или с помощью комбинации Mod-клавиша+цифра (Win+цифра). Alt+Tab не удобен тем, что если приложений много, то приходится следить за количеством нажатий, и оно постоянно меняется. То есть чтобы знать, сколько раз надо нажать, нужно в голове держать стек переключений, и примерно прикидывать количество нажатий. Так себе способ. Второй способ с мышью очень медленный и заставляет тянуться за мышкой, вести её к нужному месту, нажимать, вести курсор обратно в рабочую область экрана. А если экземплятов приложения несколько, то придётся ещё одним щелчком выбрать нужный. Выглядит сложно. Третий способ хорош: за одно нажатие Win+3 вы переключаетесь на третье (по порядку) приложение в таскбаре. Но, к сожалению, этот способ не универсален: если у приложения запущено несколько экземпляров, то уточнить нужный можно лишь при помощи мыши. Так что, выбрать нужный терминал быстро не получится. Опять страдания.
Вот бы иметь возможность закрепить за каждой комбинацией клавиш какое-то приложение, и переключаться туда одним нажатием! Взять какие-нибудь простые комбинации вроде Win+1, Win+2.. А если приложение запущено в нескольких экземплярах, то либо выделить экземплярам по отдельной комбинации, либо разместить их окна рядом, на одном экране. Стойте-стойте. Кажется, мы изобрели тайлинг.
Действительно, если взять awesome, то в нём по умолчанию заведено 9 рабочих областей (“тегов”). Переключиться на тег можно комбинацией Win+<номер тега>. Win+ESC переключает тег на предыдущий (очень удобно возвращаться назад). Можно на каждое большое приложение (браузер, мессенджер, IDE) выделить по тегу целиком, а множество эмуляторов терминалов разместить в одном теге в неперекрывающемся режиме (в режиме тайлинга). Теперь доступ к каждому приложению действительно быстрый и удобный — в одно нажатие. Причём если придумать себе какую-то схему размещения приложений и всегда её придерживаться, то эти комбинации всегда будут одними и теми же. Например, у меня на теге 1 всегда открыт браузер, на теге 2 — телеграм, на третьем теге — эмулятор(ы) терминала, на 4-6 — IDE/текстовые редакторы, на 9 — keepass. 7 и 8 у меня запасные, на них закидываю приложения, которые нужны разово/нерегулярно, обычно эти теги пустые.
Теперь давайте рассмотрим визуальную составляющую. Обычные десктопные окружения предлагают нам окошки, которые обильно сдобрены дополнительными элементами: заголовок, меню, рамки окна, элементы управления окном (минимизация, максимизация, крестик закрытия). Причём с каждым новым релизом размер заголовков увеличивается. В результате процент полезной области экрана уменьшается. А ведь иногда приходится работать и с экрана ноутбука! В некоторых окружениях есть настройки, позволяющие уменьшить их размер (gnome-tweak-tool) и настроить шрифты. Но убрать их полностью нельзя.
Awesome же позволяет полностью убрать заголовки и рамки вокруг окон, целиком отдав пространство экрана приложению. То же касается и таскбара: в awesome его нет, а полоска тегов вместе со статус-баром занимают буквально десяток пикселей (впрочем, при желании это можно попытаться настроить). Интересно ещё, что у эмулятора терминала Konsole можно отключить меню, и терминал занимает целиком 100% экрана. Для программистов, которым часто бывает нужно отображать много текста на одном экране, это очень полезная фича. Вот так, например, выглядит мой терминал
Что ещё полезного может предложить awesome?
Хочу отметить возможность вешать кастомные команды на хоткеи. Эта возможность есть и в других DE, но чаще всего там возможности настройки ограничены. Здесь же можно развернуться на полную. Например, можно настроить запуск эмулятора терминала с открытием ssh-сессии на выделенный в браузере (или в редакторе) хост. У меня есть такой хоткей. Я выделяю ip адрес мышкой, нажимаю Win+Ctrl+S, и у меня открывается ssh туда. Быстро и удобно. Аналогично я сделал хоткеи для подключения по RDP к Windows-машине. И для открытия тикета в Яндекс.Трекере (аналоге JIRA): нужно лишь выделить название тикета и нажать комбинацию клавиш.
Подведём итоги. Преимущества тайлинговых wm и awesome в частности:
– удобное и быстрое переключение между приложениями (критически важно для работы и психического здоровья!)
– минимизация неиспользуемого пространства (важно для работы!)
– кастомизация хоткеев, возможность обходиться без мыши во многих случаях
А ещё:
– высокая скорость работы и низкое потребление ресурсов (актуально в сравнении с GNOME)
– независимость от того, куда свернут разработчики DE в следующем релизе: не нужно привыкать к решениям, которые показались разработчикам перспективными
Конечно, есть и минусы. Среди них:
– Высокий порог входа. Даже поставить такой wm не всегда простая задача для новичка в мире nix.
– Проблемы интеграции с DE. Если поставить awesome на Ubuntu с GNOME, то в awesome может не работать автодетект мониторов, переключение раскладки, локскрин. Эти неудобья придётся решать самостоятельно.
Но если однажды потратить некоторое время и получить рабочую конфигурацию, то высок шанс того, что обратно уже не захочется возвращаться.
Напоследок приведу смешную пасту про тайлинг.
Ты совершенно не понимаешь, в чём суть тайлинга. Тайлинг - это не юнити/макообразное run-or-raise. Это не однопиксельные декорации окон. Это не теги вместо воркспейсов, не функционал поиска по 3.5 окон и не простыни конфигов на луа, хаскеле и прочих борщеязычках. Тайлинг - это концепция, при которой юзеры могут почувствовать себя полноправными хозяевами каждого пикселя своего несчастного экранчика - жадными, прагматичными, ленивыми юзерами, которыми они на самом деле и являются.
У кедерастов упала плазма - мы смеёмся. Гномосеки увеличили область заголовка окна ещё в полтора раза - мы смеёмся и жмём Mod4 + B. Мерзософт придумал очередную плиточную бредоидею для нового шиндошса - мы смеёмся и меняем раскладку окон. Нам говорят «без трея не прожить» - мы смеёмся и накатываем патч. Вэйланд, мир, гномощель, юнити - нам пофиг. Мы бездушно поделим экран на ровные части, наши предпочтения основаны на количестве строк кода, хоткеи - наша стихия, мы - истинное лицо управления окнами.
В следующих статьях я расскажу, как конкретно взять Ubuntu 20.04 и настроить в ней awesome wm до минимально рабочего состояния.
After I’ve spent a couple of weeks tuning this laptop I can make some notes about troubles that you can have if you deal with this laptop model.
Initially there was a Windows 10 Home Single Language edition installed in UEFI boot mode. I wanted to apply dual-boot setup (the second system I want was Ubuntu 16.04). So, I needed to reinstall Windows in Legacy boot mode and then add the second system.
Here is the list of issues I have faced with.
1. Display flickering. A Very common issue. After some googling I reverted my BIOS firmware to older version, 1.0.0 (instead of initial 1.0.12). This fixed the bug. (UPDATE: in 1.2.18 version this bug has been fixed again, thank Godness!)
2. Laptop doesn’t wake up from sleep when charging cable is plugged in. Fixed as previous.
3. Preinstalled Windows is full of shitty software and works very slowly. The only way I have found was reinstalling it from scratch. Fortunately, the Windows was smart and I had no troubles with reactivation. All of these things worked automatically.
4. Random BSODs caused incorrect standard Windows SSD driver. Look at this and this. Fixed by manual installing SSD driver from samsung web-site.
5. Sound system leaves much to be desired. That’s all I could say about that.
6. The camera is placed under the screen and it is very uncomfortable. Microphone is placed in front of keyboard. So your interlocutor will hear the rustle of your belly. Keyboard layout is like Macs, and (IMHO) it is not the best choice (for programming, for example).
7. Not all the programs can work in high DPI mode. But the whole situation with this was much better than I supposed !
Nevertheless, for me the 4K screen with great view angles compensates all suffering that I had tuning this laptop. And I’m very happy to know that my eyesight will not deteriorate because of a bad screen anymore.
Next time I will write about tuning the Ubuntu with modern awesome wm on 4K. Stay tuned !
Стал замечать, что глаза устают от смотрения в монитор домашнего ноутбука. Ноут у меня старенький, скоро почти 4 года исполнится – Dell Vostro 3560. Дисплей в нём HD (1366×768), не очень качественный (бюджетная TN-матрица). Решил посмотреть, что сейчас можно приобрести, чтобы и экран не слишком маленький был (я фанат 15.6″), и матрица получше (IPS). И обнаружил, что разрешение 1366×768 уже почти никто не выпускает, а в ходу в основном FullHD (1920×1080). Тут стало ясно, что нужно как-то решать проблему маленьких шрифтов, потому как если на экране 15.6″ разместить 1920х1080 пикселей, то всё станет в ~2.25 раза меньше (~1.5 в квадрате). А настраивать масштабирование я так и не удосужился научиться. На рабочем 14″-ноуте обычно скручивал разрешение до HD, а внешний монитор имел 24″ и на родном разрешении FullHD всё было нормально. В общем, решил попробовать настроить 14″ в режиме 1920×1080. В результате исследования выяснил следующее.
В обычной Ubuntu с Unity есть 2 источника глобальных настроек для масштабирования. Первый видно сразу, он расположен в разделе Display системных настроек – это
масштабирование элементов меню и заголовков
(кликабельно) Двигаем ползунок, и всё увеличивается (хотя по идее изменения должны касаться только меню и заголовков). Яндекс Броузер и IntelliJ IDEA, к сожалению, не подхватывают изменения сразу, их нужно перезапускать. Остальные приложения масштабируются мгновенно.
Эта настройка полноценно работает только в unity. В awesome она подхватывается, но изменить её из самого awesome не удаётся. Приходится выходить из awesome, логиниться в unity, менять там, и возвращаться в awesome. Не очень удобный путь. К счастью, есть ещё один способ.
unity-tweak-tool
Если у вас не установлен этот пакет, установите его. В нём можно изменять настройки font scale. Изменения тоже подхватываются приложениями на лету (кроме Яндекс Броузера и IDEA, опять же). И что самое приятное, они работают и в awesome. И можно настраивать эту штуку, не выходя из awesome !
Ещё можно поднастроить сам броузер, заставив его дополнительно масштабировать страницу (это если хочется ещё побольше, я поставил 110%). А в IDEA, понятное дело, можно (и нужно) настроить шрифты для редактора и терминала.
Есть ещё один инструмент для масштабирования: xrandr. Он может вообще целиком отмасштабировать весь экран. Но, к сожалению, результат не очень: много мыла. Возможно, на более высоких разрешениях экрана дело будет лучше, надо попробовать. А пока я остановился на font-scale в tweaker’e, а масштабирование заголовков выключил.
В идеале бы ещё поднастроить titlebar в awesome, но пока забил на это.
В общем, теперь можно не избегать более высоких разрешений. А как вы решаете эту проблему ?
0