Пример настройки десктоп-окружения в Arch Linux
7 декабря 2016
Сегодня я расскажу, как настраивал десктоп-окружение в Arch Linux на своем ноутбуке Fujitsu Lifebook E733. Вышло очень похоже на окружение, описанное в рамках более ранней заметки Использование FreeBSD на десктопе, версия 2.0. Поэтому на сей раз я постараюсь сосредоточится именно на специфике Arch Linux, опуская прочие, предположительно уже знакомые читателям, детали. Отмечу, что десктоп-окружение с Arch Linux можно получить и намного проще, установив Manjaro Linux.
Примечание: Установка Arch Linux ранее была описана в статье Как я устанавливал Arch Linux на свой ноутбук.
Разные полезные пакеты
Минимальный набор пакетов, необходимый для десктопа, в моем случае выглядел как-то так:
xorg-xsetroot xorg-xev xdotool i3 xfce4-terminal dunst xclip \
ttf-dejavu ttf-droid xf86-input-synaptics xxkb chromium mplayer \
smplayer youtube-dl evince gimp gpicview feh openvpn mutt msmtp \
irssi mumble scrot remmina libvncserver audacity deadbeef pcmanfm \
transmission-gtk alsa-utils openssh git gcc ctags cmake strace \
python-pip bash-completion lm_sensors rng-tools dnsutils mtr \
traceroute htop archey3 pwgen zip unzip p7zip unrar lsof whois \
libnotify gvfs gvfs-mtp
Примечание: Пакеты gvfs и gvfs-mtp нужны для того, чтобы pcmanfm видел Android-устройства, использующие протокол MTP.
Само собой разумеется, вместо Deadbeef вы можете предпочитать Cmus, а вместо Transmission — RTorrent, тут уже дело вкуса. К тому же, далеко не всем нужна такая экзотика, как Mumble, Audacity или CMake. В общем, в вашем случае список определенно будет несколько отличаться.
Для rng-tools нужно дополнительно выполнить:
sudo systemctl status rngd
Ранее в заметке Использование PGP/GPG, руководство для нетерпиливых объяснялось, какую проблему решает rng-tools. Установка и настройка оконного менеджера i3 уже не раз рассматривалась в этом блоге, поэтому снова на ней останавливаться я не буду.
Дополнительно стоит установить пакет tff-ms-fonts
, доступный в AUR. Работа с AUR ранее подробно описывалась в статье Управление пакетами в Arch Linux с помощью ABS и pacman, более того — на примере этого конкретного пакета.
Настройка беспроводной сети: хардкорный ручной метод
Пакеты, необходимые для работы Wi-Fi:
Смотрим список доступных беспроводных интерфейсов:
Поднимаем интерфейс:
Ищем доступные точки:
Создаем примерно такой файл /etc/wpa_supplicant/wpa_supplicant-wlp2s0.conf:
# /etc/wpa_supplicant/wpa_supplicant.conf
ctrl_interface=/run/wpa_supplicant
update_config=1
network={
ssid="network_ssid"
psk="secret"
}
Затем говорим:
sudo systemctl start wpa_supplicant@wlp2s0
sudo systemctl status wpa_supplicant@wlp2s0
Получение настроек сети по DHCP настраивается путем редактирования файла конфигурации /etc/systemd/network/wireless.network аналогично тому, как ранее это делалось для витой пары (см пост Как я устанавливал Arch Linux на свой ноутбук), только нужно заменить имя интерфейса на wlp2s0.
Говорим:
В первом приближении, это все, а подробности можно найти в статье Wireless network configuration на Arch Wiki.
Настройка беспроводной сети: NetworkManager
Описанный выше подход отлично работает, если вы пользуетесь Wi-Fi только дома и на работе. Однако он не особо пригоден, если вы часто используете Wi-Fi в общественных местах, так как там зачастую может даже не быть WPA. В этом случае вам больше подойдет NetworkManager:
dhclient networkmanager-openvpn gnome-keyring
sudo systemctl enable NetworkManager
sudo systemctl start NetworkManager
Чтобы NetworkManager не конфликтовал с другими сервисами, скажите:
Найдите в списке все сервисы, делающие что-то с сетью, всякие wpa_supplicant и systemd-networkd, и скажите им stop
, а затем disable
. Затем дописываем:
… в файле ~/.config/i3/config, чтобы при запуске i3 в трее появлялась иконка NetworkManager. Далее все делаем через нее, используя простой и понятный GUI интерфейс. Единственное, что мне не очень понравилось в nm-applet, это то, что он часто показывает всплывающие сообщения, в том числе при выходе ноутбука из спящего режима. Отключить их можно таким образом:
disable-disconnected-notifications true
gsettings set org.gnome.nm-applet \
disable-connected-notifications true
Если же вы не любите GUI, читайте man nmcli
и соответствующий раздел Arch Wiki.
Локальный DNS-кэш
При использовании NetworkManager достаточно просто настроить кэширование DNS-ответов. Эта возможность крайне полезна, если DNS-сервер интернет-провайдера тормозит или ответы от него иногда теряются.
Ставим dnsmasq, но убеждаемся, что он выключен:
sudo systemctl disable dnsmasq
Далее в /etc/NetworkManager/NetworkManager.conf пишем:
dns=dnsmasq
Чтобы увеличить размер кэша (по умолчанию хранится 450 записей), создайте файл /etc/NetworkManager/dnsmasq.d/cache.conf с таким содержимым:
Затем говорим:
Теперь NetworkManager будет автоматически запускать dnsmasq с нужными параметрами и прописывать его в /etc/resolv.conf. Для получения информации о текущем статусе dnsmasq можно сказать:
… и почитать вывод journalctl -r
.
Настройка точпада
Точпад работает хорошо, просто нужно установить пакет xf86-input-synaptics
, как было описано выше. У меня по умолчанию не заработали левый и правый клик по тапу одним и двумя пальцами соответственно. Это может быть как хорошо, потому что исключает случайные клики при печати текста, так и плохо, потому что клики через специально отведенные места на точпаде довольно шумные и могут беспокоить окружающих людей.
Ситуация исправляется путем создания /etc/X11/xorg.conf.d/70-synaptics.conf:
Identifier "touchpad"
Driver "synaptics"
MatchIsTouchpad "on"
Option "TapButton1" "1"
Option "TapButton2" "3"
Option "TapButton3" "2"
EndSection
В приведенном примере включается в том числе и эмуляция клика средней кнопкой мыши при тапе тремя пальцами, хотя я лично этим никогда не пользуюсь. Скролинг и прочее продолжают работать, как раньше.
Куда больше подробностей можно найти в статье Touchpad Synaptics на Arch Wiki.
Регулировка яркости экрана
Регулировка яркости экрана работает из коробки и может быть выполнена подручными средствами:
echo 4648 > /sys/class/backlight/intel_backlight/brightness
Для автоматизации этих действий есть скрипт acpilight (GitHub, AUR), полностью совместимый с xbacklight:
sudo xbacklight -set 50
sudo xbacklight -inc 10
sudo xbacklight -dec 10
При сильном желании путем правки конфига i3 можно повесить эти действия на хоткеи, но я лично пока забил.
Настройка suspend/resume
Все работает из коробки:
По умолчанию при закрытии крышки ноутбук уходил в сон. Чтобы это исправить, в /etc/systemd/logind.conf дописываем:
HandleLidSwitchDocked=ignore
Затем говорим:
Только учтите, что последняя команда прибивает иксы.
Настройка звука: ALSA
Звук просто работает. Просмотреть список аудио-устройств можно так:
cat /proc/asound/card*/id
aplay -l
Регулировка громкости:
Для изменения звуковой карты, используемой в системе по умолчанию, можно воспользоваться asoundconf (AUR):
asoundconf set-default-card PCH
На самом деле, этот скрипт просто правит ~/.asoundrc и ~/.asoundrc.asoundconf. Также есть утилита asoundconf-gtk
, делающая все то же самое, только через GUI. Удобно.
Настройка звука: PulseAudio
Просто использовать ALSA напрямую иногда неудобно. PulseAudio — это такой уровень абстракции над ALSA и/или OSS. Для нас PulseAudio интрересен главным образом тем, что он позволяет переключать звуковые карты на лету без перезапуска приложений, чего ALSA не умеет. Кроме того, не все программы нормально работают из коробки при отсутствии PulseAudio, например, тот же Cmus.
Дополнение: См также новость Причина прекращения поддержки звуковой системы ALSA в Firefox на opennet.ru.
Установка PulseAudio:
Запустить / остановить PulseAudio:
pulseaudio --kill
Чтобы PulseAudio увидел все приложения и внешние звуковые карты, их может потребоваться перезапустить и переподключить соответственно. Для автозапуска я прописал PulseAudio в конфиг i3.
Список звуковых карт:
Список синков:
Установить синк по умолчанию:
Получение общей информации, в том числе sink и source по умолчанию:
Изменение громкости синка:
Информация о том, какие приложения в какие синки пишут:
Заставить приложения писать в другой синк:
Показать список источников (микрофонов):
Установить источник по умолчанию:
На Reddit мне подкинули скрипт для быстрого переключения звуковых карт, автоматизирующий все описанные выше действия. Также я установил pavucontrol
. С его помощью можно делать mute и unmute, регулировать громкость микрофона, и так далее — все это через удобный GUI.
Виртуализация
В последнее время я предпочитаю вместо LXC или KVM использовать VirtualBox. Помимо прочего, он позволяет запускать любые операционные системы и передавать свои виртуалки пользователям ОС, отличных от Linux. Кроме того, я написал для него собственный скрипт-обертку, использующий утилиту vboxmanage. В итоге получился Vagrant, только на православном Python и делающий все так, как мне это удобно.
При установке VirtualBox я выбрал пакет virtualbox-host-modules-arch
(там предлагается несколько вариантов). Для загрузки модулей говорим:
sudo modprobe vboxnetadp
sudo modprobe vboxnetflt
sudo modprobe vboxpci
Для автоматизации их загрузки создаем /etc/modules-load.d/virtualbox.conf:
vboxnetadp
vboxnetflt
vboxpci
Если планируете использовать VRDE, также поставьте пакет virtualbox-ext-vnc
.
Фаервол
Включаем iptables:
sudo systemctl start iptables
sudo systemctl status iptables
Правила берутся из файла /etc/iptables/iptables.rules, рядом с ним есть файл с примерами.
Сохранение правил:
Загрузка правил:
Все остальное вы найдете в посте Настройка фаервола с помощью iptables за пять минут.
Настройка OpenVPN
В сети можно найти разные решения, позволяющие, помимо прочего, правильно обновлять настройки DNS при подключении к VPN. К сожалению, все они оказались довольно неудобными и/или сырыми. Поэтому в итоге я просто написал такой скрипт:
set -e
# uncomment if you are NOT using NetworkManager
# systemctl stop systemd-resolved
mv /etc/resolv.conf /etc/resolv.conf.bak
echo 'nameserver 8.8.8.8' > /etc/resolv.conf
echo 1 > /var/run/openvpn.running # for i3status
openvpn --config client.conf || true
rm /var/run/openvpn.running
mv /etc/resolv.conf.bak /etc/resolv.conf
# uncomment if you are NOT using NetworkManager
# systemctl start systemd-resolved
Скрипт работает просто превосходно и делает в точности то, что мне нужно. Подробности о настройке VPN вы найдете в заметке Установки и настройка OpenVPN в Ubuntu Linux за 5 минут.
Подключение принтера и сканера
Дома у меня принтер HP Deskjet 5743 и сканер HP Scanjet 2400. Со сканером проще всего:
… и сканируем все через xsane. Интерфейс у него немного необычный, но к нему моментально привыкаешь.
Принтер подключается так:
# нужно для gtk >= 3.22
sudo pacman -S gtk3-print-backends
# куча драйверов для устройств от HP
sudo pacman -S hplip
# нужно для нормальной работы утилит hp-* из hplip
sudo pacman -S python-pyqt5
# запускаем CUPS
sudo systemctl enable org.cups.cupsd.service
sudo systemctl start org.cups.cupsd.service
Затем идем на http://localhost:631, заходим в Administration → Add Printer, логинимся под пользователем root, и дальше в сущности просто жмем Next, Next, Next.
Больше информации о настройке конкретного принтера в Linux можно найти на сайте OpenPrinting.org. Если же вам нужно подключить сетевой принтер, это делается еще проще через Administration → Find New Printers.
Примите во внимание, что некоторые программы для печати используют консольные утилиты. Например, чтобы распечатать файл, они говорят:
Однако это не будет работать, если у вас несколько принтеров. Решается проблема путем установки принтера по умолчанию:
Список доступных принтеров можно посмотреть так:
Для печати файла на заданном принтере используйте команду:
Подробности, как обычно, в манах и официальной документации.
Дополнение: Пример настройки принтера HP LaserJet Pro P1102, зависящего от проприетарных драйверов, вы найдете в заметке про изготовление печатных плат ЛУТом.
Заключение
Что еще можно добавить? SD-ридер проверил, с ним все нормально. Подсветка клавиатуры просто работает и регулируется обычными хоткеями, точпад включается и выключается при помощи соответствующих Fn-сочетаний. С настройкой bluetooth и что там еще осталось я пока не игрался, так как всем этим либо вообще не пользуюсь, либо пользуюсь крайне редко. Каких-либо глюков в работе системы замечено не было. GitHub-репозиторий со всеми конфигами и скриптами вы найдете здесь.
В итоге была получена система, которая просто работает и настроена в точности так, как мне удобно. Теперь я счастлив.
Дополнение: Также вас может заинтересовать пост Шифрование жесткого диска в Linux при помощи dm-crypt.
Метки: Linux.
Вы можете прислать свой комментарий мне на почту, или воспользоваться комментариями в Telegram-группе.