Linux-десктоп своими руками: базовый набор программ

У каждого конечно свои приоритеты в плане ПО, но для меня очень важна комфортная работа в консоли. Начиная от использования простых утилит и заканчивая Vim и MidnightCommander.
Знаю, что многие так и не освоили Vim (страшно-непонятно-неудобно-ааа!), а MC вообще путают с NC и DOS — не стану никого переубеждать. Это для меня компьютер, не для них, ведь так?

Терминал

Ну так вот, для всего этого нужен эмулятор терминала. Классический xterm не устроил, во-первых, тем, что не поддерживает ttf-шрифты (по крайней мере у меня отказался), и тормозит, медленно прорисовывает обычный текст. Это не сразу заметно, но если много работать с терминалами это видно.

Пришлось выбирать.
Понравился rxterm — (скорость, настройка — все ок) -, но у него какой-то странный глюк в работе с Vim, некорректно отрабатывают некоторые команды, причем смена TERM не помогает.
Понравился alacritty -, но выявился неприятный глюк: если понаоткрывать достаточно много окон под Иксами — в какой-то момент окна заканчиваются. Как так-то? «Черпак — норма!»?

Неплохие lxterminal и xfce4-terminal, gnome-terminal -, но тянут за собой половину своих DE, что нежелательно.

Из всего оставшегося многообразия — либо проблемы с настройками шрифтов, либо кривое отображение шрифтов, увеличенные межстрочные интервалы (особенно заметно на MC), либо внешний вид a-la HyperTerminal-95.

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

Поскольку у нас нет единого DE с общими настройками, и нет заточенного под этот DE набора программ — все они настраиваются по-разному:

Например, sakura настраивается через свой собственный конфигурационный файл .config/sakura/sakura.conf

[sakura]
bold_is_bright=false
scroll_lines=10000
font=LXGW WenKai Mono TC Light 16
show_tab_bar=multiple
scrollbar=true
closebutton=true
tabs_on_bottom=false
less_questions=false
copy_on_select=true
urgent_bell=No
audible_bell=No
blinking_cursor=Yes
cursor_type=VTE_CURSOR_SHAPE_BLOCK
disable_numbered_tabswitch=false
use_fading=false
scrollable_tabs=true
word_chars=-,./?%&#_~:
palette=1
add_tab_key=T
del_tab_key=W
prev_tab_key=Left
next_tab_key=Right
copy_key=C
paste_key=V
scrollbar_key=S
set_tab_name_key=N
search_key=F
increase_font_size_key=plus
decrease_font_size_key=minus
fullscreen_key=F11
set_colorset_accelerator=5
icon_file=terminal-tango.svg
paste_button=3
menu_button=2
window_columns=100
window_rows=28
colorset1_fore=rgb(192,255,192)
colorset1_back=#1e2e2e
colorset1_curs=#80c080
colorset1_scheme=1
colorset1_key=F1
colorset2_fore=#101010
colorset2_back=#dedeae
colorset2_curs=#101010
colorset2_scheme=2
colorset2_key=F2
.....
last_colorset=1
add_tab_accelerator=5
del_tab_accelerator=5
switch_tab_accelerator=8
move_tab_accelerator=9
copy_accelerator=5
scrollbar_accelerator=5
open_url_accelerator=5
font_size_accelerator=4
set_tab_name_accelerator=5
search_accelerator=5

Основные настройки понятны по тексту, выбор палитры цветов — номер из внутреннего списка, захардкоженного в программе, colorset — возможность быстро сменить основные цвета окна, всего таких может быть 6 вариантов.
Акселераторы — побитное сложение 0×1, 0×2, 0×4, 0×8 — Alt, Shift, Ctrl, Win, кажется в таком порядке.

2aff3d79d641fa00c481d61a0d15fbd6.png

Второй тип — настройки через .Xdefaults или .Xresources
Программа читает эти переменные из свойств X-server и меняет свой внешний вид.
Пример — rxvt, она использует примерно такие параметры:

URxvt.font: xft:LXGW WenKai Mono TC:size=15
URxvt.background: #004848
URxvt.foreground: #cbdbd2
! цвет курсора
URxvt.cursorColor: #930101

! можно переопределить палитру цветов
! 0-7 - обычные, 8-15 - "яркие"

! Черный
URxvt.color0:  #282828
URxvt.color8:  #928374

! Красный
URxvt.color1:  #cc241d
URxvt.color9:  #fb4934

! Зеленый
URxvt.color2:  #98971a
URxvt.color10: #b8bb26
! Желтый
URxvt.color3:  #d79921
URxvt.color11: #fabd2f

! Синий
URxvt.color4:  #458588
URxvt.color12: #83a598

! Пурпурный
URxvt.color5:  #b16286
URxvt.color13: #d3869b

! Голубой
URxvt.color6:  #689d6a
URxvt.color14: #8ec07c
! Белый
URxvt.color7:  #a89984
URxvt.color15: #ebdbb2

В данном случае настройки конкретно для URxvt, но хранятся они в общем конфигурационном файле .Xdefaults

Gimp

Ну, с этим в общем-то всё просто:

apt install gimp

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

Исправить это очень просто: Windows — Single-Window Mode — off.

Тип и размер шрифта интерфейса Gimp берет из настроек gtk-2, а именно — из файла ~/.gtkrc-2.0:

gtk-font-name = "LXGW WenKai TC Light, 14"
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintslight
gtk-xft-rgba=rgb

Это как минимум, как максимум — различные настройки темы для GTK, цвет фона и вид кнопок и т.д. Плюс его собственные настройки в Edit — Preferences — Interface.

b2f01c92b596101d23a7e135797d4840.png

Arduino

Вообще говоря, есть официальная стандартная версия ArduinoIDE arm64, но работать с ней — ужасно, как и вообще с ArduinoIDE.

К счастью, есть arduino-cli — отличная штука, работает без глюков, хотя конечно настроить скрипты для компиляции проектов под каждую железку — задача не самая простая.
Но можно сделать это один раз -, а потом привязать, например, к контекстном меню в MidnightCommander и потом делать всё как мы любим: выбрать в меню пункт — нажать Enter — получить готовый результат.

Да, тот самый древний, презираемый ценителями современности, Миднайт очень удобен как раз для таких вещей.

66c275a076f5fc8191cc0882808e9c43.png

Офис

Тут выбор не особо широкий: LibreOffice.

apt install libreoffice

Проблема в том, что по умолчанию размер шрифтов в интерфейсе очень небольшой, всё очень мелкое и пользоваться этим довольно сложно.

В интернетах предлагали решение — установить поддержку gtk3 — с размером проблему это решает, но Офис начинает просто дико тормозить, и судя по статьям это известная проблема.

Но есть другое решение: поддержка qt, точнее даже KDE Frameworks
А для настройки вида qt — программа qt5ct

apt install libreoffice-kf5 qt5ct

Кроме того, необходимо в скриптах запуска startw и .xinitrc установить переменную:

export QT_QPA_PLATFORMTHEME=qt5ct

Вот теперь, настроив с помощью qt5ct желаемый вид — получим вполне работоспособный интерфейс Офиса, и без торможения.

c2eb8f9642a78302605540c1b5683be7.png

Печать

Тут тоже все достаточно стандартно: установить CUPS, и либо настроить его для печати через принт-сервер, либо как писал раньше — прикрутить драйвера от x86 Linux.
В моем случае принтсервер уже есть, так что печать через него:

apt install cups

Добавить юзера в группу lpadmin, перезайти в систему.

lppadmin -p MyPrinter -E -v ipp://192.168.1.2/printers/MyPrinter -m everywhere
lpotions -d MyPrinter
lpstat -p -d

Браузер

Два основных варианта: Chromium и Firefox.
Из особенностей: у обоих лучше отключить «аппаратное ускорение»: в Chromium оно вызывает ухудшение качества картинок, в Firefox может в некоторых случаях приводить в крашу Wayfire.
При этом реального ускорения как-то не видно.

Оба используют настройки GTK-3, в файлах (не очень ясно когда из какого):

.config/gtk-3.0/gtk.css

* {
  font-size:18px; /* font size for all application with GTK3 (ffox) */
  font-family:LXGW WenKai TC Light;
}

.config/gtk-3.0/settings.ini

[Settings]
gtk-font-name = LXGW WenKai TC 14
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintslight
gtk-xft-rgba=rgb

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

about: config
mousewheel.with_alt.action=1
mousewheel.with_control.action=1

Fritzing

Мне для всяких поделок нужен софт для изготовления плат — и он есть, Fritzing.
При всех его недостатках — он позволяет взять буквально любой готовый модуль из известного интернет-магазина, просто сфотографировать его, и с помощью векторного редактора быстренько набросать модель для разводки под него печатной платы, не дожидаясь пока кто-то там обновит библиотеку деталей.
Но это отдельная тема, и мало кому интересная — просто вот есть такое, и оно прекрасно работает тут.

6389f1eb13ead9e31c3b055b879f6d81.png

Видеоплееры

Так исторически сложилось, что родной и привычный mplayer позволяет воспроизводить почти что угодно.К нему в добавок более современный вариант — mpv.
И конечно, ffmpeg с его ffplay.
Всё это есть в штатном репозитарии, и всё прекрасно работает.

До этого казалось, что одноплатник на базе ARM — это примерно как Arduino, только чуть больше — ну какой там ffmpeg? Не потянет!
Оказывается, всё прекрасно работает.

Bluetooth

Как уже говорил — в данной модели не было встроенного bluetooth -, но его прекрасно заменяет USB-донгл.
Удалось сделать удобное подключение внешних колонок и наушников (ИМХО, удобнее и лучше чем штатно в Убунте) -, но это отдельная история.

9afe9d953322467330df16fb4a459861.png

Игры?

Играть давно нет времени, но так, чисто чтоб было:
Quake2 из портов — работает на ура.
Собранный из исходников nblood — Blood работает отлично.
Собранный из исходников dhewm3 — Doom3 работает, ну скажем так, неплохо, в 1024×768, больше — подтормаживает (приемлемо, учитывая железо. Ведь это всё — маленькая коробочка, питающаяся от USB-разьема)

Что там есть более современного, да еще под Linux aarch64 — понятия не имею.

Если вы дошлю досюда, и думаете «зачем я это читал?» — не знаю, зачем вы это читали)
Это просто записка для себя: пройдет время, надо будет менять железо, а я уже не помню что и как ставил.
А текст, почти пошаговое описание — остался.

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

© Habrahabr.ru