Как установить sway linux

SwayWM — сам себе UnixPorn

Всем привет. В этой статье я опишу свой опыт настройки и использования sway — тайлингового оконного менеджера для Linux.

Что это такое и зачем оно нужно?

Официально, sway — тайлинговый оконный менеджер, прозрачная замена i3wm, работающая поверх Wayland.

Вейланд, он же Вёлунд и т.п. — персонаж из древнегерманской и древнескандинавской мифологии, книгу о которой в своё время написал английский фольклорист Джесси Вестон (Jessie Weston). Теперь вы знаете.

Однако, на мой взгляд, главная особенность sway — в том, что он является конструктором, со всеми преимуществами и недостатками такого подхода. Если вам нравятся Vim (сходство с ним усугубляется ориентацией на использование клавиатуры), Archlinux и подобные проекты, то советую присмотреться и к sway. Лично моё мнение — один раз потратив чуть больше времени на его настройку, вы получите очень стабильное и удобное лично для вас окружение, в котором не будет происходить ничего неожиданного.

Установка

Sway наверняка есть в репозиториях вашего дистрибутива. Однако, если вам хочется установить более новую версию, то это очень просто. На странице проекта на github приведён куцый список его зависимостей. Установите их, склонируйте репозиторий, склонируйте wlroots в папку subprojects :

(тут я использую hub. Нестандартный, но очень удобный инструмент). После этого можно конфигурировать и собирать:

doas — легковесная замена sudo от разработчиков OpenBSD. В Linux как правило используют её форк OpenDoas

Запуск

Если вы хотите запускать sway из командной строки, не пользуясь менеджерами вроде SDDM, то единственный правильный способ делать это —

Нелюбителям systemd на заметку: sway не требуется ни systemd-logind, ни elogind. Правда, в этом случае придётся установить suid-бит или настроить capabilities. См. wiki.

Переменные окружения

Есть несколько мест, куда я их прописываю.

Shell-скрипт по адресу

/.local/bin/sway — для переменных, специфичных для sway. Например я хочу, чтобы Qt-приложения не показывали декорации и использовали тему из qt5ct :

/.pam_environment — для переменных, которые я хочу сразу сделать доступными в пользовательской сессии systemd. Пример:

/.bashrc — для всех остальных случаев.

Настройка sway

Однако я хотел бы обратить внимание на одну интересную возможность. Если вы переезжаете с иксового окружения, то можете просто перенести оттуда свои настройки клавиатуры. Выполните в этом окружении команду

а в конфиге sway пропишите

Хоткеи

Хоткеи, как и все остальное в sway, задаются в конфиге. Есть 3 команды для их определения:

Например, такой хоткей прибьёт текущее окно независимо от раскладки:

Чтобы легко определять, что именно было нажато, автор sway написал специальный кейлоггер (ему требуются права рута для работы, так что за безопасность можно не беспокоиться).

Вывод

Список доступных устройств вывода можно получить командой

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

Swaybar

Swaybar — панель, на которой показывается статусная информация. Дата, время, системный лоток, и т.д. и т.п. Обычно фанаты i3 и sway проводят больше всего времени за настройкой именно этой панели (или панелей, их может быть несколько). Лично мне хватает такого, близкого к минимальному конфига:

Настройка прикладных программ

Уведомления

Этим может заниматься демон mako (скорее всего есть в вашем дистрибутиве). Там тоже можно настраивать цвета и т.п., но это всё опционально. Просто запустите его, и он будет работать.

Mako реализует использующую dbus спецификацию XDG Desktop Notifications. Её поддерживают многие программы, в том числе Chromium, Firefox и Telegram.

Эмулятор терминала

В окружениях вроде KDE Plasma обычно пользуются встроенными эмуляторами, показывающими меню, вкладки, и множество других элементов оформления. Но зачем всё это в sway? Я предпочитаю Alacritty — очень быстрый благодаря использованию GPU эмулятор, кстати написанный на Rust. Я добавил такие хоткеи в секцию key_bindings в его конфиге (

открыть новое окно с текущим каталогом. Прекрасная замена вкладкам, а о расположении позаботится sway.

прокрутить на строку вверх/вниз.

Пишем в конфиге sway

Alacritty не поддерживает лигатуры, так как они влияют на скорость рендеринга. Если они вам всё-таки нужны, обратите внимание на kitty — этот эмулятор тоже очень быстр, а ещё там под капотом просто пугающее количество фич и настроек.

Запуск приложений

Приложения в sway обычно запускаются с помощью вызываемого по хоткею меню. В конфиге пишут что-то вроде

Таким образом, для показа меню нам надо открывать окно терминала с этой программой. С alacritty это делается так:

Автозапуск приложений

В принципе, для автозапуска программы можно просто написать

в конфиге sway, или даже создать пользовательский юнит systemd. Однако, в этой статье я воспользуюсь принятой в KDE и Gnome спецификацией XDG Autostart.

Спецификация заключается в запуске desktop-файлов, расположенных в каталогах /etc/xdg/autostart и

Здесь проявляется модульная сущность sway. Sway сам по себе ничего не знает ни про XDG Autostart, ни про XDG Desktop Entry. Больше того, его разработчики активно не любят эти и все подобные спецификации. Однако, с ними умеет управляться консольная утилита dex (скорее всего, есть в репозитории вашего дистрибутива).

Чтобы проверить, что будет в автозапуске, наберите команду

и снова проверяем автозапуск. Многим программам (особенно написанным на Electron) может не понравиться запускаться под Wayland. Поступаем с ними точно так же. Копируем desktop-файл и меняем там строчку запуска. Было:

этот же приём можно применять и для sway-launcher-desktop из предыдущего пункта. Когда все проблемы решены, добавляем в конфиг sway строчку

Либо можно поступать наоборот: копировать нужные desktop-файлы в какой-нибудь нестандартный каталог и натравливать на него dex командой

Скриншоты

В этом нам помогут двое из ларца. slurp позволяет выбрать произвольную прямоугольную область на экране, а grim делает из неё скриншот. В моём конфиге это выглядит так:

$mod+PrintScreen — скриншот произвольной области, PrintScreen — скриншот всего экрана.

Скринкасты

Если вам нужно записать скринкаст в файл или постримить его в RTMP-поток (например на Twitch), то с этим поможет wf-recorder (тоже поддерживает slurp).

Если хотите использовать OBS Studio, то для этого есть плагин wlrobs.

Однако самое универсальное решение, поддерживаемое с одной стороны в KDE и Gnome, а с другой, в частности, в браузерах Chrome и Firefox — это использовать Pipewire и спецификацию XDG Desktop Portal. Для sway есть нужная прослойка xdg-desktop-portal-wlr, правда я не проверял её работоспособность.

Ночной режим

Ночной режим заключается в замене цветов монитора на более тёплые в тёмное время суток. Ученые сомневаются, насколько это на самом деле полезно, а разработчики Wayland решили, что стандартизировать протокол гамма-коррекции бесполезно по техническим причинам.

Тем не менее, мне эта фича нравится, и в sway она тоже есть. Для ночного режима нам понадобится вот этот форк redshift с поддержкой специфичного для sway протокола.

Устанавливаем его любым способом, в конфиге

/.config/redshift/redshift.conf выбираем нужный протокол и указываем долготу и широту.

Блокировка и отключение экрана

Здесь приходят на помощь двое из другого ларца. swayidle запускает заданные команды по таймауту в случае отсутствия активности (или наоборот, её появления), а swaylock блокирует экран и требует ввести пароль. Отключить экран (или все экраны, если их несколько) можно командой

Вот как будет выглядеть демон, блокирующий экран через 300 секунд неактивности и отключающий его через 600:

Запустите его любым способом.

i3blocks

Готовые блоки с календарем, сетью, состояние диска и т.д. и т.п. можно позаимствовать из репозитория i3blocks-contrib. В i3blocks они добавляются в конфиге по адресу

Но это был слишком простой пример. На самом деле, у любителей i3 и sway есть священный грааль: показ заголовка текущего окна в верхней панели. Давайте разберёмся, как этого добиться.

Прежде всего начинаем читать man sway-ipc и обнаруживаем, что там можно подписываться на события. Нужное имеет код 0x80000003. WINDOW и возвращает json-объекты такой структуры:

Можно описать всю эту логику на Python или Go, однако есть способ и получше. swaymsg позволяет легко подписываться на нужные события и выводить их в stdout:

Наконец, в конфиг i3blocks надо добавить такой блок:

Домашнее задание: научите grim делать скриншот текущего окна. Говорят, что такие вещи невозможны в Wayland, но мужики сомневаются.

Домашнее задание 2: научите i3blocks показывать текущую раскладку клавиатуры в виде флага. В i3blocks-contrib есть пара блоков, но они показывают текст вместо флага и не работают в Wayland.

Прочие программы

wl-clipboard позволяет работать с буфером обмена из терминала, то есть заменяет xclip и xsel. Особенно полезно для пользователей vim, в котором начинает работать копирование/вставка по «+y / «+p (просто установите этот пакет, дополнительное конфигурирование не требуется).

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

KDE Connect. Добавьте в автозапуск файл org.kde.kdeconnect.nonplasma.desktop (см. предыдущие секции), установите KDE Connect на смартфоне и настройте их связку — и вы сможете управлять со смартфона воспроизведением музыки и видео в браузере с плагином plasma-integration, в vlc, в cantata, в mpv с плагином mpv-mpris, а также получать уведомления в mako. Моё уважение проекту KDE за разработку программ, не прибитых гвоздями к их экосистеме.

Заключение

Писать о настройке всего этого (особенно панели i3blocks) можно бесконечно, однако тут лучше остановиться. Вот что получилось у меня:

Как установить sway linux. Смотреть фото Как установить sway linux. Смотреть картинку Как установить sway linux. Картинка про Как установить sway linux. Фото Как установить sway linux

Также зайдите на сабреддит /r/unixporn и подивитесь, что делают люди. (впрочем, 95% выложенного там красиво выглядит, но категорически не подходит для повседневной работы 🙂 ).

Источник

Как установить sway linux

sway (contracted from SirCmpwn’s Wayland compositor [1]) is a compositor for Wayland designed to be fully compatible with i3. According to the official website:

Sway is a tiling Wayland compositor and a drop-in replacement for the i3 window manager for X11. It works with your existing i3 configuration and supports most of i3’s features, plus a few extras.

Contents

Installation

You may also install swaylock and swayidle to lock your screen and set up an idle manager.

Starting

Manually

To start Sway, simply type sway in the Linux console.

Automatically on TTY login

Similarly to X, Sway can be started by adding the following to your shell initialization file (see Command-line shell#Login shell):

From a display manager

It is also possible to start sway as a systemd user service through the display manager.

Also you can use text-based session manager, see Display manager#Console.

Configuration

If you already use i3, you may copy your i3 configuration to

/.config/sway/config and it should work out of the box. Otherwise, copy the sample configuration file located at /etc/sway/config to

Keymap

By default, sway starts with the US QWERTY keymap. To configure per-input:

Typematic delay and rate

To change typematic delay and rate, you can add the following lines to your input section:

Statusbar

sway ships with a default status bar in the form of swaybar which runs in a pure Wayland environment. swaybar can call a shell script or other program to show information in the status bar. See sway-bar(5) and swaybar-protocol(7) for details.

Installing i3status is an option to obtain a practical, default status bar under Wayland. All you have to do is add the following snippet at the end of your sway config:

If you want to enable colored output for i3status, you need to adjust the following part in the i3status configuration:

Wallpaper

The following line, which can be appended at the end of your sway configuration, sets a background image on all displays (output matches all with name «*» ):

Of course you have to replace the file name and path according to your wallpaper.

Solid colors may be set as follows:

You may use azote AUR as the GTK3 frontend to swaybg.

Input devices

It is possible to tweak specific input device configurations. For example, to enable tap-to-click and natural scrolling for all touchpads:

HiDPI

Set your displays scale factor with the output command in your config file. The scale factor can be fractional, but it is usually 2 for HiDPI screens.

You can find your display name with the following command:

Custom keybindings

Special keys on your keyboard can be used to execute commands, for example to control volume, monitor brightness or media players:

Graphical indicator bars

It is often desirable to have the current level of some percentage-valued setting, such as brightness or volume, be indicated by a graphical bar when it is adjusted. A good option for providing this facility in Sway is wob AUR (alternatively wob-git AUR ), which provides a subset of the functionality of the popular X tool xob AUR but as a native Wayland utility implementing the layer-shell protocol. See the project website for usage examples.

Sway has a dedicated idle management daemon named swayidle to handle idling sessions. There are different ways to start and parameterize the daemon. The simplest is to use the config of sway itself. swayidle accepts a multitude of arguments to configure events like timeout (a.k.a. idling), resume (resume from sleep), before-sleep etc. See swayidle(1) for more details and further explanations of the events. Each event can then be assigned an action. To assign multiple actions to an event simply repeat the trigger.

The following instructs swayidle to lock the screen after 30 minutes and turn it off five seconds after:

To turn off a locked screen much sooner e.g. after 10 seconds, grep the process list for your locking manager and execute swaymsg «output * dpms off» accordingly like so:

In order to lock the screen before suspending and pause any playing media, amend the following instructions to the swayidle command:

Floating windows

To get only the app_id ‘s of all open windows use:

To get the app_id of the focused window use:

If the app_id happens to be null for some windows, you might have to use the class and/or the instance attributes to enable floating mode/window assignments. You can search the output and create fine grained rules for your windows.

This is similar to using xorg-xprop to find the class or wm_name attributes in X11.

When using multiple monitors, the floating scratchpad window can get too large, covering more than one monitor. This command centers and resizes the floating window to 80% of the current monitor’s size:

Clipboard

Как установить sway linux. Смотреть фото Как установить sway linux. Смотреть картинку Как установить sway linux. Картинка про Как установить sway linux. Фото Как установить sway linuxThis article or section is a candidate for merging with Clipboard.Как установить sway linux. Смотреть фото Как установить sway linux. Смотреть картинку Как установить sway linux. Картинка про Как установить sway linux. Фото Как установить sway linux

By default, the clipboard is emptied whenever a window is closed. This can be a surprising default behaviour.

A «clipboard manager» must be installed to make the clipboard’s content shared amongst windows.

To start clipman with Sway, add the following line to your config file:

Xresources

/.Xdefaults to use them in Sway.

XWayland

See Wayland#XWayland for details and an overview of available packages.

The use of XWayland is enabled by default.

If you would like to disable XWayland entirely and run a «pure» Wayland session, set the following config key to deactivate the use of XWayland:

Use another wlroots renderer

You can use another wlroots renderer by specifying the WLR_RENDERER environment variable. The list of available ones is on the wlroots documentation.

Tips and tricks

Initially enable CapsLock/NumLock

By default, sway initially disables the CapsLock and NumLock keys on startup. To instead enable them on startup, set the xkb_capslock and/or xkb_numlock input configurations to enable for your keyboards. For example, to do so on all keyboards, add the following lines to your sway configuration:

In either case, the CapsLock and NumLock keys may be toggled by pressing the relevant keys on a keyboard.

Current keyboard layout

The current keyboard layout can be retrieved as follows, where kbd_identifier needs to be replaced with your keyboard’s identifier:

Compose key

To set up PrintScreen as the compose key:

The combinations for the compose key can also be configured in the XCompose file. Applications need to be restarted for this change to take effect.

Как установить sway linux. Смотреть фото Как установить sway linux. Смотреть картинку Как установить sway linux. Картинка про Как установить sway linux. Фото Как установить sway linuxThis article or section needs expansion.Как установить sway linux. Смотреть фото Как установить sway linux. Смотреть картинку Как установить sway linux. Картинка про Как установить sway linux. Фото Как установить sway linux

Backlight toggle

To turn off (and on) your displays with a key (e.g. Pause ) bind the following script in your Sway config :

Screen capture and screen sharing

Color temperature adjustment

Control swaynag with the keyboard

Swaynag, the default warning/prompt program shipped with sway, only supports user interaction with the mouse. A helper program such as swaynagmode AUR may be used to enable interaction via keyboard shortcuts.

Swaynagmode by default triggers the sway mode nag upon initialization, followed by default on exit. This makes it easy to define keybindings in your sway configuration:

Note that, beginning in sway version 1.2, mode names are case-sensitive.

Change cursor theme and size

To set the cursor theme and size:

Note that you need to restart the application to see the changes.

Manage Sway-specific daemons with systemd

Systemd provides a graphical-session.target which is a user unit which is active whenever any graphical session is running, whether Xorg or Wayland. User services which should run in all graphical environments can be bound to that target. It also allows for a window-manager-specific target to be bound to graphical-session.target to start and stop services which should run only under that window manager. See systemd.special(7)

Users may want to start some services/daemons (such as swayidle or kanshi ) only when the current window manager is Sway, and they may also want these services to stop when Sway stops. Additionally, users who are running systemd-oomd.service(8) may want to have the services be in separate cgroups so that a single memory-hungry service does not take down the whole Sway session (see the Fedora bug report).

If you intend to provide functionality using the roll-your-own method described below or by using a specialist package such as sway-systemd-git AUR or sway-services-git AUR you should consider removing files that provide the same functionality.

Then, add the following line to Sway’s config file (for example, append the line to

Change screen resolution after start

You can use the graphical program wdisplays AUR or the terminal program wlr-randr AUR to change the resolution, rotate and arrange displays.

Troubleshooting

Application launchers

bemenu is a native Wayland dmenu replacement which can optionally be combined with j4-dmenu-desktop AUR to provide a Wayland-native combination for launching desktop files (as i3-dmenu-desktop does):

You may need to set BEMENU_BACKEND environment variable to «wayland» if you choose not to disable XWayland.

You can also build your own with a floating terminal and fzf as discussed in a GitHub issue.

Also krunner binary provided by plasma-workspace package can serve as launcher, offering both XWayland and native Wayland support.

wofi is a command launcher, that provides some of the same features as rofi but running under Wayland. wofi lacks some features from rofi like an SSH mode and a window-switching mode. It is based on wlroots library and use GTK3 for rendering. It works pretty well with sway.

Virtualization

Sway works with both VirtualBox and VMware ESXi.

Unable to start Sway from tty

For ESXi, you need to enable 3D support under the Hardware Configuration > Video card settings. See also VMware#Enable 3D graphics on Intel, Optimus and AMD.

No visible cursor

When using the VMSVGA graphics controller, the cursor is invisible. This can be fixed by using software cursors as discussed in [3]:

Sway socket not detected

To view what the current value of SWAYSOCK is, type:

To work around this problem, you may try attaching to a socket based on the running sway process:

To avoid this error, run the command outside of a multiplexer.

Unable to retrieve socket path

Keybindings and keyboard layouts

Java applications

Some Java-based applications will display blank screen when opened, for example any JetBrains editor such as IntelliJ, CLion, or PyCharm. To mitigate this, the application can be started with the _JAVA_AWT_WM_NONREPARENTING environment variable set to 1.

Scroll on border

If using the mouse scroll wheel on an application’s border crashes sway, you could use border none for the app_id (e.g. Firefox).

Program cannot open display

If a program crashes on start with the error message «cannot open display», it is likely that the program you are using is an X11 program. You can use the XWayland compatibility layer to run X11 programs under Wayland, see #XWayland for details.

Sway v1.6 shows garbage or blank screen when using nouveau

If sway displays a corrupted image, or a blank screen on one or more displays connected to an Nvidia GPU using nouveau, but starts properly otherwise, try setting WLR_DRM_NO_MODIFIERS=1 before starting sway.

The underlying issue relates to outstanding nouveau bugs in Mesa, and should be fixed in a future update. [5]

Источник

SwayWM — сам себе UnixPorn

Всем привет. В этой статье я опишу свой опыт настройки и использования sway — тайлингового оконного менеджера для Linux.

Что это такое и зачем оно нужно?

Официально, sway — тайлинговый оконный менеджер, прозрачная замена i3wm, работающая поверх Wayland.

Вейланд, он же Вёлунд и т.п. — персонаж из древнегерманской и древнескандинавской мифологии, книгу о которой в своё время написал английский фольклорист Джесси Вестон (Jessie Weston). Теперь вы знаете.

Однако, на мой взгляд, главная особенность sway — в том, что он является конструктором, со всеми преимуществами и недостатками такого подхода. Если вам нравятся Vim (сходство с ним усугубляется ориентацией на использование клавиатуры), Archlinux и подобные проекты, то советую присмотреться и к sway. Лично моё мнение — один раз потратив чуть больше времени на его настройку, вы получите очень стабильное и удобное лично для вас окружение, в котором не будет происходить ничего неожиданного.

Установка

Sway наверняка есть в репозиториях вашего дистрибутива. Однако, если вам хочется установить более новую версию, то это очень просто. На странице проекта на github приведён куцый список его зависимостей. Установите их, склонируйте репозиторий, склонируйте wlroots в папку subprojects :

hub clone swaywm/sway hub clone swaywm/wlroots sway/subprojects/wlroots

(тут я использую hub. Нестандартный, но очень удобный инструмент). После этого можно конфигурировать и собирать:

doas — легковесная замена sudo от разработчиков OpenBSD. В Linux как правило используют её форк OpenDoas

Запуск

Если вы хотите запускать sway из командной строки, не пользуясь менеджерами вроде SDDM, то единственный правильный способ делать это —

Нелюбителям systemd на заметку: sway не требуется ни systemd-logind, ни elogind. Правда, в этом случае придётся установить suid-бит или настроить capabilities. См. wiki.

Переменные окружения

Есть несколько мест, куда я их прописываю.

Shell-скрипт по адресу

/.local/bin/sway — для переменных, специфичных для sway. Например я хочу, чтобы Qt-приложения не показывали декорации и использовали тему из qt5ct :

#!/bin/bash QT_QPA_PLATFORMTHEME=qt5ct \ QT_WAYLAND_DISABLE_WINDOWDECORATION=1 \ /usr/bin/sway

/.pam_environment — для переменных, которые я хочу сразу сделать доступными в пользовательской сессии systemd. Пример:

/.bashrc — для всех остальных случаев.

Настройка sway

Однако я хотел бы обратить внимание на одну интересную возможность. Если вы переезжаете с иксового окружения, то можете просто перенести оттуда свои настройки клавиатуры. Выполните в этом окружении команду

а в конфиге sway пропишите

Хоткеи

Например, такой хоткей прибьёт текущее окно независимо от раскладки:

Чтобы легко определять, что именно было нажато, автор sway написал специальный кейлоггер (ему требуются права рута для работы, так что за безопасность можно не беспокоиться).

Вывод

Список доступных устройств вывода можно получить командой

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

output HDMI-A-1 mode 1920×1080@60Hz output * bg /path/to/wallpaper.jpg fill

Swaybar

Swaybar — панель, на которой показывается статусная информация. Дата, время, системный лоток, и т.д. и т.п. Обычно фанаты i3 и sway проводят больше всего времени за настройкой именно этой панели (или панелей, их может быть несколько). Лично мне хватает такого, близкого к минимальному конфига:

Настройка прикладных программ

Уведомления

Этим может заниматься демон mako (скорее всего есть в вашем дистрибутиве). Там тоже можно настраивать цвета и т.п., но это всё опционально. Просто запустите его, и он будет работать.

Эмулятор терминала

В окружениях вроде KDE Plasma обычно пользуются встроенными эмуляторами, показывающими меню, вкладки, и множество других элементов оформления. Но зачем всё это в sway? Я предпочитаю Alacritty — очень быстрый благодаря использованию GPU эмулятор, кстати написанный на Rust. Я добавил такие хоткеи в секцию key_bindings в его конфиге (

открыть новое окно с текущим каталогом. Прекрасная замена вкладкам, а о расположении позаботится sway.

прокрутить на строку вверх/вниз.

Пишем в конфиге sway

Alacritty не поддерживает лигатуры, так как они влияют на скорость рендеринга. Если они вам всё-таки нужны, обратите внимание на kitty — этот эмулятор тоже очень быстр, а ещё там под капотом просто пугающее количество фич и настроек.

Запуск приложений

Приложения в sway обычно запускаются с помощью вызываемого по хоткею меню. В конфиге пишут что-то вроде

Таким образом, для показа меню нам надо открывать окно терминала с этой программой. С alacritty это делается так:

Автозапуск приложений

В принципе, для автозапуска программы можно просто написать

в конфиге sway, или даже создать пользовательский юнит systemd. Однако, в этой статье я воспользуюсь принятой в KDE и Gnome спецификацией XDG Autostart.

Спецификация заключается в запуске desktop-файлов, расположенных в каталогах /etc/xdg/autostart и

Здесь проявляется модульная сущность sway. Sway сам по себе ничего не знает ни про XDG Autostart, ни про XDG Desktop Entry. Больше того, его разработчики активно не любят эти и все подобные спецификации. Однако, с ними умеет управляться консольная утилита dex (скорее всего, есть в репозитории вашего дистрибутива).

Чтобы проверить, что будет в автозапуске, наберите команду

и снова проверяем автозапуск. Многим программам (особенно написанным на Electron) может не понравиться запускаться под Wayland. Поступаем с ними точно так же. Копируем desktop-файл и меняем там строчку запуска. Было:

Exec=env GDK_BACKEND=x11 /usr/bin/skypeforlinux

этот же приём можно применять и для sway-launcher-desktop из предыдущего пункта. Когда все проблемы решены, добавляем в конфиг sway строчку

Либо можно поступать наоборот: копировать нужные desktop-файлы в какой-нибудь нестандартный каталог и натравливать на него dex командой

Скриншоты

В этом нам помогут двое из ларца. slurp позволяет выбрать произвольную прямоугольную область на экране, а grim делает из неё скриншот. В моём конфиге это выглядит так:

bindsym Print exec grim

$mod+PrintScreen — скриншот произвольной области, PrintScreen — скриншот всего экрана.

Скринкасты

Если вам нужно записать скринкаст в файл или постримить его в RTMP-поток (например на Twitch), то с этим поможет wf-recorder (тоже поддерживает slurp).

Если хотите использовать OBS Studio, то для этого есть плагин wlrobs.

Однако самое универсальное решение, поддерживаемое с одной стороны в KDE и Gnome, а с другой, в частности, в браузерах Chrome и Firefox — это использовать Pipewire и спецификацию XDG Desktop Portal. Для sway есть нужная прослойка xdg-desktop-portal-wlr, правда я не проверял её работоспособность.

Ночной режим

Ночной режим заключается в замене цветов монитора на более тёплые в тёмное время суток. Ученые сомневаются, насколько это на самом деле полезно, а разработчики Wayland решили, что стандартизировать протокол гамма-коррекции бесполезно по техническим причинам.

Тем не менее, мне эта фича нравится, и в sway она тоже есть. Для ночного режима нам понадобится вот этот форк redshift с поддержкой специфичного для sway протокола.

Устанавливаем его любым способом, в конфиге

/.config/redshift/redshift.conf выбираем нужный протокол и указываем долготу и широту.

[redshift] location-provider=manual adjustment-method=wayland [manual] lat=xx.xx lon=yy.yy

Блокировка и отключение экрана

Здесь приходят на помощь двое из другого ларца. swayidle запускает заданные команды по таймауту в случае отсутствия активности (или наоборот, её появления), а swaylock блокирует экран и требует ввести пароль. Отключить экран (или все экраны, если их несколько) можно командой

swaymsg «output * dpms off»

Вот как будет выглядеть демон, блокирующий экран через 300 секунд неактивности и отключающий его через 600:

Запустите его любым способом.

i3blocks

Готовые блоки с календарем, сетью, состояние диска и т.д. и т.п. можно позаимствовать из репозитория i3blocks-contrib. В i3blocks они добавляются в конфиге по адресу

[time] command=date +»%a %d/%m %H:%M» interval=5

Но это был слишком простой пример. На самом деле, у любителей i3 и sway есть священный грааль: показ заголовка текущего окна в верхней панели. Давайте разберёмся, как этого добиться.

Прежде всего начинаем читать man sway-ipc и обнаруживаем, что там можно подписываться на события. Нужное имеет код 0x80000003. WINDOW и возвращает json-объекты такой структуры:

Можно описать всю эту логику на Python или Go, однако есть способ и получше. swaymsg позволяет легко подписываться на нужные события и выводить их в stdout:

Наконец, в конфиг i3blocks надо добавить такой блок:

[active_window] command=/path/to/our/script.sh interval=persist

Домашнее задание: научите grim делать скриншот текущего окна. Говорят, что такие вещи невозможны в Wayland, но мужики сомневаются.

Домашнее задание 2: научите i3blocks показывать текущую раскладку клавиатуры в виде флага. В i3blocks-contrib есть пара блоков, но они показывают текст вместо флага и не работают в Wayland.

Прочие программы

wl-clipboard позволяет работать с буфером обмена из терминала, то есть заменяет xclip и xsel. Особенно полезно для пользователей vim, в котором начинает работать копирование/вставка по «+y / «+p (просто установите этот пакет, дополнительное конфигурирование не требуется).

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

KDE Connect. Добавьте в автозапуск файл org.kde.kdeconnect.nonplasma.desktop (см. предыдущие секции), установите KDE Connect на смартфоне и настройте их связку — и вы сможете управлять со смартфона воспроизведением музыки и видео в браузере с плагином plasma-integration, в vlc, в cantata, в mpv с плагином mpv-mpris, а также получать уведомления в mako. Моё уважение проекту KDE за разработку программ, не прибитых гвоздями к их экосистеме.

Заключение

Писать о настройке всего этого (особенно панели i3blocks) можно бесконечно, однако тут лучше остановиться. Вот что получилось у меня:

Как установить sway linux. Смотреть фото Как установить sway linux. Смотреть картинку Как установить sway linux. Картинка про Как установить sway linux. Фото Как установить sway linux

Также зайдите на сабреддит /r/unixporn и подивитесь, что делают люди. (впрочем, 95% выложенного там красиво выглядит, но категорически не подходит для повседневной работы 🙂 ).

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *