river-setup.rst 65 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334
  1. .. ARU (c) 2018 - 2025, Pavel Priluckiy, Vasiliy Stelmachenok and contributors
  2. ARU is licensed under a
  3. Creative Commons Attribution-ShareAlike 4.0 International License.
  4. You should have received a copy of the license along with this
  5. work. If not, see <https://creativecommons.org/licenses/by-sa/4.0/>.
  6. .. _river_setup:
  7. .. index:: prog-settings, river, river wm
  8. .. _river:
  9. ***********************
  10. Оконный менеджер river
  11. ***********************
  12. Некоторое программное обеспечение (ПО) на первый взгляд имеет
  13. сложную документацию. Один из таких представителей оконный менеджер - river.
  14. Данный менеджер окон (WM) - композитор для Wayland, в отличии от
  15. других представителей данной области располагает довольно скудной
  16. документацией с помощью которой сложно разобраться во многих тонкостях
  17. его настройки. Часть информации о настройке river вы можете найти на
  18. `вики river <https://codeberg.org/river/wiki>`__, но большая часть
  19. расположена в мануалах для river, riverctl, rivertile, которые могут
  20. быть доступны из системы командой, если у вас установлен **man**::
  21. man river
  22. man riverctl
  23. man rivertile
  24. Однако в данных мануалах не все так очевидно с первого раза, как бы
  25. хотелось, но их использование или ознакомление с ними рекомендуется.
  26. .. warning:: Данное руководство основано на данных из мануалов и опыте
  27. взаимодействия с river. Руководство построено на основе примеров
  28. команд - адаптируйте их под свои нужды.
  29. .. index:: config, river
  30. .. _river_config:
  31. =============
  32. Конфиг river
  33. =============
  34. В отличие от многих других WM, river в качестве своего конфигурационного
  35. файла использует исполняемый файл с именем **init**, поэтому
  36. настраивать river можно как с помощью скрипта оболочки, так и с
  37. помощью программ написанных на других языках программирования.
  38. По умолчанию используется скрипт оболочки - в этом можно убедиться по
  39. наличию надписи в первой строке **#!/bin/sh** файла **init**. Еще одной особенностью
  40. подхода конфигурационного файла river является возможность изменения
  41. его параметров непосредственно из работающей системы без необходимости
  42. перезапуска WM или перечитывания данных из файла **init**. Данная
  43. возможность полезна в случае, если вы хотите проверить некоторое
  44. изменение быстро, например - новую комбинацию клавиш для вызова
  45. терминала - достаточно ввести в терминале команду::
  46. riverctl map normal Super T spawn foot
  47. Разберем представленную команду:
  48. - *riverctl* - команда для определения параметров в river,
  49. - *map* - параметр отвечающий за определения комбинаций клавиш,
  50. - *normal* - параметр указывающий на режим работы (в river 2 режима:
  51. основной - *normal*, и режим на случай блокировки экрана - *locked*),
  52. - *foot* - здесь отображает программу, которую нужно запустить, также
  53. можно задать команду для выполнения, например **'reboot'**. В случае
  54. определения команды одиночные кавычки обязательны,
  55. - *spawn* - команда отвечающая за выполнение,
  56. *Super* и *T* - указывают на клавиши которые нужно нажать. Если
  57. используются несколько управляющих клавиш (*Super, Alt, Shift, Control* и т.п.) то
  58. между ними нужно добавлять знак **+**, например для команды в
  59. предыдущем примере это будет выглядеть следующим образом::
  60. riverctl map normal Super+Shift T spawn foot
  61. .. warning:: Вероятно, что комбинации только из служебных клавиш обозначить нельзя! (Super
  62. Shift, Alt Shift и т.п.)
  63. .. warning:: Не смотря на то что river позволяет вносить изменения в
  64. настройки в режиме "реального времени", для того чтобы
  65. изменения использовались на постоянной основе, а не только в данной
  66. сессии - изменения необходимо добавлять(производить) в файл(е) **init**!
  67. .. index:: river, settings
  68. .. _river_settings:
  69. ================
  70. Настройка river
  71. ================
  72. Приступим к настройке river. Для начала стоит отметить, что конфигурационный
  73. файл **init** необходимо располагать в::
  74. $HOME/.config/river/
  75. Пример конфигурационного файла в зависимости от вашей системы может
  76. быть расположен::
  77. /etc/river/init
  78. /usr/share/river/example/init
  79. Если по указанным путям его нет и вы не знаете где его найти, то можно
  80. получить его из репозитория `river
  81. <https://codeberg.org/river/river/src/branch/master/example/init>`__.
  82. Если вы хотите использовать другой формат для файла **init**, то есть
  83. примеры на `wiki river <https://codeberg.org/river/wiki#wait-the-configuration-is-a-shell-script>`__ - мы их пока не затрагиваем.
  84. .. index:: keys, mouse
  85. .. _keys_river:
  86. ------------------
  87. Назначение клавиш
  88. ------------------
  89. Чтобы определить комбинацию клавиш уже был представлен пример команды,
  90. однако в случае если у вас используется несколько раскладок клавиатур,
  91. например английская и русская, то на русской раскладке часть
  92. комбинаций не будет работать. Это происходит потому что по умолчанию river
  93. использует *keysym*, а не *keycode* (у англоязычных и русскоязычных букв
  94. *keysym* - разный, а *keycode* - одинаковый) Чтобы решить данную проблему
  95. необходимо использовать *-layuot*::
  96. riverctl map -layuot 0 normal Super T spawn foot
  97. # |
  98. # номер раскладки
  99. .. warning:: Данная комбинация не включает использование *keycode*,
  100. она просто говорит, что в качестве привязанных клавиш нужно
  101. использовать раскладку 0, т.е. первую указанную в "us, ru". Будьте
  102. внимательны!
  103. Стоит отметить, что те клавиши, которые не зависят от *keysym*
  104. (*Super, Alt, Control, Return* и прочие служебные клавиши) не
  105. нуждаются в добавлении *-layuot*, например следующая команда будет
  106. работать в любой раскладке::
  107. riverctl map normal Super Return spawn foot
  108. В river, как и в других WM, можно привязывать к клавишам целые команды,
  109. для этого нужно добавить одиночные кавычки::
  110. riverctl map normal Super Return spawn 'foot --app-id=foobar'
  111. Для того чтобы убрать привязку клавиш в работающей системе, используйте *unmap*, например::
  112. riverctl unmap normal Super D
  113. .. warning:: Данная команда введенная в терминале сработает только для текущей сессии, если
  114. вы хотите внести изменения на постоянной основе - редактируйте
  115. **init** для последующих запусков.
  116. В river для определения взаимодействия с окнами с помощью мыши
  117. используется *map-pointer*, например:
  118. Для перемещения окна с помощью мыши::
  119. riverctl map-pointer -layuot 0 normal Super BTN_LEFT move-view
  120. .. warning:: Окна в river определены как *виды* - **view**.
  121. .. warning:: При перемещении не "плавающего" окна, т.е. из **rivertile**
  122. на 13.02.2025 заданные размеры окна игнорируются - берутся те
  123. размеры, что сейчас на экране!
  124. Для изменения размера окна с помощью мыши::
  125. riverctl map-pointer -layuot 0 normal Super BTN_RIGHT resize-view
  126. Для переключения режима "плавающего" окна с помощью мыши::
  127. riverctl map-pointer -layuot 0 normal Super BTN_MIDDLE toggle-float
  128. Чтобы удалить привязку, например::
  129. riverctl unmap-pointer normal Super BTN_RIGHT
  130. # | | |
  131. # режим Модификатор Кнопка мыши
  132. .. index:: keyboard-layout
  133. .. _keyboard-layout_river:
  134. -------------------------------
  135. Настройка раскладки клавиатуры
  136. -------------------------------
  137. Для настройки смены раскладок клавиатуры::
  138. riverctl keyboard-layout -model pc105 -variant qwerty -options "grp:win_space_toggle" "us, ru"
  139. # или
  140. riverctl keyboard-layout -options "grp:win_space_toggle" "us, ru"
  141. Разберем допустимые параметры:
  142. - *rules* - не присутствует в данном примере, не является
  143. обязательным, позволяет определять правила, на данный момент
  144. имейте в виду что такой параметр есть.
  145. - *keyboard-layout* - определение слоев клавиатуры,
  146. - *model* - здесь задается тип клавиатуры - сколько клавиш (указывать не
  147. обязательно данный параметр),
  148. - *variant* - форматов раскладок несколько, но все привыкли к формату *qwerty* (указывать не обязательно данный параметр),
  149. - *options* - тут указывается как переключать раскладку клавиатур,
  150. согласно *xkb*,
  151. - *"us, ru"* - в кавычках указываются все нужные раскладки.
  152. .. warning:: После обновления предположительно **setxkbmap**, вариант с указанием всех параметров
  153. может перестать работать, обращайте на это внимание! Что касается
  154. сокращенного варианта - похожих случаев не зафиксировано и
  155. позволяет решить описанную проблему с большим количеством
  156. параметров, но имейте в виду.
  157. .. warning:: По умолчанию в river каждая клавиатура расценивается как индивидуальное
  158. устройство ввода и раскладка клавиатуры переключается для каждой клавиатуры в отдельности,
  159. конкретной клавиатурой.
  160. Если вам нужно чтобы на всех клавиатурах раскладка переключалась
  161. одновременно, то для этого есть *группы*, которые нужно создать и
  162. добавить туда все нужные устройства ввода. Для работы с *группами*
  163. устройств ввода есть несколько действий:
  164. 1. Создать группу::
  165. riverctl keyboard-group-create _имя_группы_
  166. 2. Добавить устройство в группу::
  167. riverctl keyboard-group-add _имя_группы_ _имя_устройства_
  168. Для того чтобы узнать _имя_устройства_ ввода::
  169. riverctl list-inputs
  170. 3. Для удаления устройства из группы::
  171. riverctl keyboard-group-remove _имя_группы_ _имя_устройства_
  172. 4. Для удаления группы::
  173. riverctl keyboard-group-destroy _имя_группы_
  174. Настроить раскладки для всех клавиатур можно через файл согласно
  175. документации `XKB <https://xkbcommon.org/doc/current/keymap-text-format-v1.html>`__::
  176. riverctl keyboard-layout-file _путь_к_файлу_
  177. .. index:: media-key, media-device-control
  178. .. _media_river:
  179. -------------------------------------
  180. Настройка медиа-клавиш или устройств
  181. -------------------------------------
  182. Для настройки медиа клавиш и устройств в конфиге river есть подобный фрагмент::
  183. for mode in normal locked
  184. do
  185. # Eject the optical drive (well if you still have one that is)
  186. riverctl map $mode None XF86Eject spawn 'eject -T'
  187. riverctl map $mode None XF86AudioRaiseVolume spawn 'wpctl set-volume @DEFAULT_SINK@ 2%+'
  188. riverctl map $mode None XF86AudioLowerVolume spawn 'wpctl set-volume @DEFAULT_SINK@ 2%-'
  189. riverctl map $mode None XF86AudioMute spawn 'wpctl set-mute @DEFAULT_SINK@ toggle'
  190. # Control MPRIS aware media players with playerctl (https://github.com/altdesktop/playerctl)
  191. riverctl map $mode None XF86AudioMedia spawn 'playerctl play-pause'
  192. riverctl map $mode None XF86AudioPlay spawn 'playerctl play-pause'
  193. riverctl map $mode None XF86AudioPrev spawn 'playerctl previous'
  194. riverctl map $mode None XF86AudioNext spawn 'playerctl next'
  195. # Настройка яркости экрана через brightnessctl (https://github.com/Hummer12007/brightnessctl)
  196. riverctl map $mode None XF86MonBrightnessUp spawn 'brightnessctl set +5%'
  197. riverctl map $mode None XF86MonBrightnessDown spawn 'brightnessctl set 5%-'
  198. done
  199. Если вы не используете **pipewire** и **wireplumber**, то для регулировки звука замените **wpctl** на
  200. **pamixer** или **pactl** согласно `документации <https://wiki.archlinux.org/title/PulseAudio>`__ их использования. (По
  201. умолчанию в конфиге river указан **pamixer**)
  202. Как можно видеть из примера в случае специальных медиа клавиш или
  203. крутилок или других спец. клавиш в обозначении появляется конструкция **$mode None XF86Audio...** - данный формат специально предназначен для подобных
  204. настроек.
  205. .. index:: tiling
  206. .. _tiling_river:
  207. ------------------
  208. "Тайлинг" в river
  209. ------------------
  210. Для реализации "тайлинга", т.е. расположения окон на экране в river,
  211. используется **rivertile** - это так называемый генератор слоев. По
  212. умолчанию **rivertile** работает в стековом режиме, т.е. есть одна
  213. главная область и вторая второстепенная, куда "складываются" остальные
  214. окна в своеобразный "столбик".
  215. Особенность river в том, что он позволяет заменить rivertile на
  216. другой, тем самым позволяет с легкостью изменить формат разметки "тайлинга". На `wiki river <https://codeberg.org/river/wiki/src/branch/master/pages/Recommended-Software.md>`__
  217. предлагаются следующие варианты:
  218. - `riverguile <https://git.sr.ht/~leon_plickat/riverguile>`__
  219. - `owm <https://github.com/justinlovinger/owm>`__
  220. - `kile <https://gitlab.com/snakedye/kile>`__
  221. - `stacktile <https://git.sr.ht/~leon_plickat/stacktile>`__
  222. - `rivercarro <https://git.sr.ht/~novakane/rivercarro>`__
  223. - `river-luatile <https://github.com/MaxVerevkin/river-luatile>`__
  224. - `river-bsp-layout <https://github.com/areif-dev/river-bsp-layout>`__
  225. - `river-dwindle <https://gitlab.com/thom-cameron/river-dwindle>`__
  226. - `filtile <https://github.com/pkulak/filtile>`__
  227. - `wideriver <https://github.com/alex-courtis/wideriver>`__
  228. - `river-ultitile <https://sr.ht/~midgard/river-ultitile/>`__
  229. - `river-spiral-extended <https://codeberg.org/ideasman42/riverwm-spiral-extended>`__
  230. Чтобы указать какой генератор макетов использовать по умолчанию для всех экранов::
  231. riverctl default-layout rivertile # rivertile используется по
  232. умолчанию в river - замените на другой
  233. Чтобы указать другое размещение окон на активном экране
  234. используйте::
  235. riverctl output-layout rivertile # rivertile замените на любой
  236. другой
  237. Для отправки команд генератору разметки есть подобный пример::
  238. # Команда с привязкой к "горячим" клавишам
  239. riverctl map -layout 0 normal Super K send-layout-cmd rivertile "main-count +1"
  240. # Для команды из терминала
  241. send-layout-cmd rivertile "main-count +1"
  242. *rivertile* - тут в качестве примера генератора, а выражение в **""** команда
  243. которую нужно обработать - должна соответствовать документации генератора
  244. .. index:: rivertile
  245. .. _rivertile:
  246. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  247. Настройка параметров rivertile
  248. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  249. В **rivertile** можно изменить расстояние между окнами::
  250. rivertile -view-padding N # N - количество пикселей
  251. Для изменения расстояния до краев окна::
  252. rivertile -outer-padding N # N - количество пикселей
  253. Для выбора места - где будет располагаться основной сегмент::
  254. rivertile -main-location PAR # PAR = [top | bottom | left | right] - указывается один из представленных
  255. Чтобы изменить соотношение "полезного" пространство для основного
  256. сегмента::
  257. rivertile -main-ratio N # N - значение от 0.1 до 0.9
  258. Определить количество видов в основном пространстве::
  259. rivertile -main-count N # N - целое значение, по умолчанию 1
  260. .. index:: views, window, windows, fullscreen, floating
  261. .. _window_control:
  262. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  263. Взаимодействие с окнами
  264. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  265. Для переключения активного окна используются:
  266. 1. Выбрать следующее окно::
  267. riverctl map -layout 0 normal Super J focus-view next
  268. 2. Выбрать предыдущее окно::
  269. riverctl map -layout 0 normal Super K focus-view previous
  270. Для переноса окна в стек и обратно::
  271. riverctl map -layout 0 normal Super+Shift Return zoom
  272. Переключение режимов окна:
  273. 1. Переключение окна в "плавающий режим" и обратно::
  274. riverctl map -layout 0 normal Super Space toggle-float
  275. 2. Переключение окна в полноэкранный режим и обратно::
  276. riverctl map -layout 0 normal Super F toggle-fullscreen
  277. Для перемещения окон:
  278. 1. Переместить окно следующую позицию::
  279. riverctl map -layout 0 normal Super+Shift J swap next
  280. 2. Переместить окно на предыдущую позицию::
  281. riverctl map -layout 0 normal Super+Shift K swap previous
  282. .. warning:: Поддерживаются также значения *up, down, left, right*.
  283. Для того чтобы перемещать "плавающее" окно::
  284. riverctl map -layout 0 normal Super+Alt H move left 100 # переместит окно влево
  285. riverctl map -layout 0 normal Super+Alt J move down 100 # переместит окно вниз
  286. riverctl map -layout 0 normal Super+Alt K move up 100 # переместит окно вверх
  287. riverctl map -layout 0 normal Super+Alt L move right 100 # переместит окно вправо
  288. *100* - показывает шаг перемещения в пиксилях
  289. .. warning:: Если окно не было "плавающим", то оно перейдет в данный
  290. режим!
  291. "Плавающие" окна можно переместить к одной из сторон экрана например::
  292. riverctl map -layout 0 normal Super+Alt+Control H snap left # левый край
  293. riverctl map -layout 0 normal Super+Alt+Control J snap down # нижний край
  294. riverctl map -layout 0 normal Super+Alt+Control K snap up # верхний край
  295. riverctl map -layout 0 normal Super+Alt+Control L snap right # правый край
  296. Для перемещения окна в угол экрана выполните две команды
  297. последовательно, например для левого угла переместите окно к левой
  298. границе экрана и вверх, либо наоборот. Также вы можете обозначить
  299. данные действия на одну клавишу с помощью *&&*.
  300. .. index:: resize
  301. .. _resize_windows:
  302. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  303. Управление размерами окон
  304. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  305. Для изменения размеров окон используются следующие команды:
  306. 1. Уменьшение размера основного окна::
  307. riverctl map -layout 0 normal Super H send-layout-cmd rivertile "main-ratio -0.05"
  308. 2. Увеличение размера основного окна::
  309. riverctl map -layout 0 normal Super H send-layout-cmd rivertile "main-ratio +0.05"
  310. .. warning:: Увеличение / уменьшение основного сектора приводит к
  311. уменьшению / увеличению размеров стека соответственно!
  312. Для "плавающих" окон:
  313. 1. Уменьшение по горизонтали::
  314. riverctl map -layout 0 normal Super+Alt+Shift H resize horizontal -100
  315. 2. Увеличение по вертикали::
  316. riverctl map -layout 0 normal Super+Alt+Shift J resize vertical 100
  317. 3. Уменьшение по вертикали::
  318. riverctl map -layout 0 normal Super+Alt+Shift K resize vertical -100
  319. 4. Увеличение по горизонтали::
  320. riverctl map -layout 0 normal Super+Alt+Shift L resize horizontal 100
  321. *100* - показывает шаг изменения размера в пиксилях
  322. .. warning:: Изменение размеров "плавающих" окон происходит с двух
  323. сторон!
  324. .. index:: tags, workspaces
  325. .. _river_tags:
  326. --------------------------------
  327. Настройка tags (рабочих столов)
  328. --------------------------------
  329. В river как и в dwm рабочие столы определены не как **workspace**, а как
  330. **tag**. Как утверждается **tags** более гибки в настройке и одному приложению
  331. можно определять несколько **tags**. Также одновременно на экран можно
  332. выводить несколько разных **tags**.
  333. В конфиге river есть блок, который определяет клавиши для выбора и
  334. управления **tags**, если вы хотите изменить клавиши, то вам поможет
  335. следующий пример::
  336. # Определяем клавиши для переключения
  337. tg=('q' 'w' 'e' 'r' 't' 'y' 'u' 'i' 'o')
  338. # Определяем команды для каждого tag
  339. for i in $(seq 1 9) # задается количество tags, по умолчанию до 9 штук на экран
  340. do
  341. tags=$((1 << ($i - 1))) # определяются tags
  342. # Super+[q-o] выбор tag [0-8]
  343. riverctl map -layout 0 normal Super ${tg[$i-1]} set-focused-tags $tags
  344. # Super+Shift+[q-o] перемещение окна на tag [0-8]
  345. riverctl map -layout 0 normal Super+Shift ${tg[$i-1]} set-view-tags $tags
  346. # Super+Control+[q-o] выбор - окна какого tag [0-8] добавить для отображения на экране
  347. riverctl map -layout 0 normal Super+Control ${tg[$i-1]} toggle-focused-tags $tags
  348. # Super+Shift+Control+[1-9] дублировать окно на tag [0-8]
  349. riverctl map -layout 0 normal Super+Shift+Control ${tg[$i-1]} toggle-view-tags $tags
  350. done
  351. .. warning:: Данный пример приведен, если вы хотите изменить клавиши
  352. для **tags** на буквы, в конфиге river по умолчанию используются числа от 1
  353. до 9.
  354. В river есть команды для взаимодействия с окнами на всех **tags**::
  355. all_tags=$(((1 << 32) - 1))
  356. # Вывести на экран все окна со всех tags
  357. riverctl map -layout 0 normal Super 0 set-focused-tags $all_tags
  358. # Определить для активного окна все tags - окно будет перемещаться вместе с переходом на другой tag
  359. riverctl map -layout 0 normal Super+Shift 0 set-view-tags $all_tags
  360. В river, в отличие от sway и части других WM, по умолчанию **tags** не переносятся на
  361. другие мониторы, т.е. для каждого экрана создаются свои независимые
  362. **tags**, взаимодействия с которыми требуют переключения на другой
  363. монитор::
  364. riverctl map -layout 0 normal Super L focus-output next # переключиться на следующий монитор
  365. riverctl map -layout 0 normal Super H focus-output previous # переключиться на предыдущий монитор
  366. Помимо предыдущего (*previous*) и следующего (*next*) мониторов доступны также - *up, right,
  367. down, left* или имена выводов - *HDMI-1, DP-1 и т.п.*
  368. Для переноса активных окон с одного монитора на другой используется
  369. команда::
  370. riverctl map -layout 0 normal Super+Shift L send-to-output next # перенести на следующий монитор активное окно
  371. Поддерживаются также - *previous, up, down, right, left* и имена
  372. мониторов - *HDMI-1, DP-1 и т.п.*.
  373. .. warning:: По умолчанию при перемещении активных окон сохраняется
  374. *№* использованного *tag* и после перемещения на другой монитор активное
  375. окно будет на *tag* под тем же номером.
  376. .. index:: monitor, setup, wlr-randr, wlopm, kanshi, way-displays
  377. .. _monitor_river:
  378. ------------------------------
  379. Настройка экранов(мониторов)
  380. ------------------------------
  381. В river для управления экранами (мониторами) используется внешний
  382. софт, на `wiki river <https://codeberg.org/river/wiki/src/branch/master/pages/Recommended-Software.md>`__
  383. рекомендуются следующие:
  384. - `wlopm <https://git.sr.ht/~leon_plickat/wlopm>`__
  385. - `wlr-randr <https://sr.ht/~emersion/wlr-randr/>`__
  386. - `kanshi <https://sr.ht/~emersion/kanshi/>`__
  387. - `way-displays <https://github.com/alex-courtis/way-displays>`__
  388. На данный момент будет описано использование **wlr-randr**.
  389. Для начала необходимо знать какие выводы у вас используются. Для этого
  390. достаточно запустить команду::
  391. wlr-randr
  392. Данная команда покажет вам всю доступную информацию о подключенных
  393. мониторах и настройках, например::
  394. DP-2 "AOC Q27G2WG4 0x0000DAB3 (DP-2)"
  395. Make: AOC
  396. Model: Q27G2WG4
  397. Serial: 0x0000DAB3
  398. Physical size: 600x340 mmSwayNotificationCenter
  399. Enabled: yes
  400. Modes:
  401. 2560x1440 px, 59.951000 Hz (preferred)
  402. 2560x1440 px, 143.912003 Hz (current)
  403. 2560x1440 px, 119.998001 Hz
  404. 2560x1440 px, 99.945999 Hz
  405. 1920x1080 px, 119.878998 Hz
  406. 1920x1080 px, 60.000000 Hz
  407. 1920x1080 px, 59.938999 Hz
  408. 1920x1080 px, 50.000000 Hz
  409. 1280x1440 px, 59.912998 Hz
  410. 1280x1024 px, 75.025002 Hz
  411. 1280x1024 px, 60.020000 Hz
  412. 1440x900 px, 59.901001 Hz
  413. 1280x720 px, 59.943001 Hz
  414. 1280x720 px, 50.000000 Hz
  415. 1024x768 px, 119.988998 Hz
  416. 1024x768 px, 99.972000 Hz
  417. 1024x768 px, 75.028999 Hz
  418. 1024x768 px, 70.069000 Hz
  419. 1024x768 px, 60.004002 Hz
  420. 800x600 px, 119.972000 Hz
  421. 800x600 px, 99.662003 Hz
  422. 800x600 px, 75.000000 Hz
  423. 800x600 px, 72.188004 Hz
  424. 800x600 px, 60.317001 Hz
  425. 800x600 px, 56.250000 Hz
  426. 720x576 px, 50.000000 Hz
  427. 720x480 px, 59.939999 Hz
  428. 640x480 px, 119.517998 Hz
  429. 640x480 px, 99.768997 Hz
  430. 640x480 px, 75.000000 Hz
  431. 640x480 px, 72.808998 Hz
  432. 640x480 px, 59.939999 Hz
  433. 640x480 px, 59.929001 Hz
  434. Position: 0,0
  435. Transform: normal
  436. Scale: 1.000000
  437. Adaptive Sync: disabled
  438. DP-1 "AOC Q27G2SG4 XFXQ7HA001584 (DP-1)"
  439. Make: AOC
  440. Model: Q27G2SG4
  441. Serial: XFXQ7HA001584
  442. Physical size: 600x340 mm
  443. Enabled: yes
  444. Modes:
  445. 2560x1440 px, 59.951000 Hz (preferred)
  446. 2560x1440 px, 155.000000 Hz
  447. 2560x1440 px, 143.912003 Hz (current)
  448. 2560x1440 px, 119.998001 Hz
  449. 1920x1080 px, 119.878998 Hz
  450. 1920x1080 px, 60.000000 Hz
  451. 1920x1080 px, 59.938999 Hz
  452. 1920x1080 px, 50.000000 Hz
  453. 1280x1440 px, 59.912998 Hz
  454. 1280x1024 px, 75.025002 Hz
  455. 1280x1024 px, 60.020000 Hz
  456. 1280x720 px, 59.943001 Hz
  457. 1280x720 px, 50.000000 Hz
  458. 1024x768 px, 119.988998 Hz
  459. 1024x768 px, 99.972000 Hz
  460. 1024x768 px, 75.028999 Hz
  461. 1024x768 px, 70.069000 Hz
  462. 1024x768 px, 60.004002 Hz
  463. 800x600 px, 119.972000 Hz
  464. 800x600 px, 99.662003 Hz
  465. 800x600 px, 75.000000 Hz
  466. 800x600 px, 72.188004 Hz
  467. 800x600 px, 60.317001 Hz
  468. 800x600 px, 56.250000 Hz
  469. 720x576 px, 50.000000 Hz
  470. 720x480 px, 59.939999 Hz
  471. 640x480 px, 119.517998 Hz
  472. 640x480 px, 99.768997 Hz
  473. 640x480 px, 75.000000 Hz
  474. 640x480 px, 72.808998 Hz
  475. 640x480 px, 59.939999 Hz
  476. 640x480 px, 59.929001 Hz
  477. Position: 2560,0
  478. Transform: normal
  479. Scale: 1.000000
  480. Adaptive Sync: disabled
  481. Для настройки экранов **wlr-randr** использует ряд параметров::
  482. --output name # выбор экрана для настройки (name - HDMI, DP и т.п.)
  483. # Следующие параметры указываются после --output name для конкретного монитора
  484. --mode WxH@XHz # определяет разрешение и частоту экрана (W - ширина, H - высота в px) и частоту (XHz - частота в Hz. Х - должен точно соответствовать имеющимся значениям)
  485. --pos X,Y # расположение одного экрана относительно другого X - смещение по X, Y - смещение по Y
  486. --adaptive-sync X # включение режима переменной частоты обновления монитора (X - enabled или disabled)
  487. --scale X # масштабирование изображения (X - 1.0, 1.5 и т.п.)
  488. --transform X # поворот изображения на экране (90, 180, normal, flipped, flipped-90 и т.п.)
  489. --on # включение
  490. --off # выключение
  491. --toggle # переключение (вкл. / выкл.)
  492. Пример настройки экранов через **wlr-randr**::
  493. wlr-randr --output DP-2 --mode 2560x1440@143.912003Hz --pos 0,0 --adaptive-sync enabled --output DP-1 --mode 2560x1440@143.912003Hz --pos 2560,0 --adaptive-sync disabled
  494. В Wayland вывод изображения синхронизируется с частотой обновления
  495. монитора, что может создавать задержку ввода. Для решения данной
  496. проблемы был реализован протокол **tearing**. Для его включения в
  497. полноэкранных программах::
  498. riverctl allow-tearing enabled
  499. .. index:: apps, programs, rules
  500. .. _river_progs:
  501. -------------------------------------------------
  502. Настройка управления программами / приложениями
  503. -------------------------------------------------
  504. Организация работы с программами / приложениями в river производится
  505. через *правила (rules)*. Данный компонент позволяет определять: на
  506. каком мониторе будет открываться программа, на какой *tag* будет
  507. выводиться по умолчанию, будет ли использоваться *tearing* -
  508. независимо от заданного глобального параметра, задавать размер окна
  509. программы и его расположения, будет ли окно открываться как *плавающее*,
  510. будет ли программа открываться в полноэкранном режиме - в общем
  511. отвечает за все основные параметры.
  512. Взаимодействовать с *rules* можно тремя способами:
  513. .. index:: rule-add
  514. .. _river_rules:
  515. ^^^^^^^^^^^^^^^^^
  516. Добавить правило
  517. ^^^^^^^^^^^^^^^^^
  518. .. warning:: В river добавлять правило можно только по одному. Не стоит пытаться
  519. объединять все в одну строку, если конечно вы не пишите несколько
  520. команд через *&&*.
  521. .. index:: river, program, workspace, tag, rule-add
  522. .. _river_prog_on_tag:
  523. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  524. Правило определяющее *tag* для программы
  525. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  526. Чтобы *firefox* открывался на третьем *tag* нужно указать правило::
  527. riverctl rule-add -app-id "firefox" tags $((1 << 2))
  528. .. warning:: Стоит отметить, что в river, как в части языков программирования,
  529. нумерация начинается с 0, а не с 1, поэтому в выражение **$((1 <<
  530. N))**, **N** - должно быть на 1 меньше чем номер *tag* на который вы
  531. хотите определить отображение программы по умолчанию. Зная данный
  532. факт можно заменить выражение на **$((1 << N - 1))** - это позволит
  533. указывать **N** согласно номеру *tag*.
  534. Для того чтобы river понимал какую программу он должен обработать и
  535. отобразить на определенном *tag* используются такие параметры как **app-id** или **title**.
  536. Данные параметры можно задавать при запуске программы через *riverctl*::
  537. riverctl spawn 'foot -app-id=terminal'
  538. riverctl spawn 'foot -title=terminal'
  539. .. warning:: Если **title** не задано пользователем, то оно не
  540. задается системой самостоятельно, поэтому лучше ориентироваться на **app-id**.
  541. .. warning:: Во многих случаях **app-id** соответствует названию
  542. программы, но далеко не всегда так: например blender дополнительно
  543. в **app-id** требует указание версии, например **blender-4.3**,
  544. иначе на него правило работать не будут!
  545. .. index:: output, river, rule-add, HDMI, DP
  546. .. _river_output_progs:
  547. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  548. Правило определяющее монитор для программы
  549. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  550. Чтобы указать монитор на котором стоит отображать программу по
  551. умолчанию, можно использовать следующий пример::
  552. riverctl rule-add -app-id "steam" output DP-2
  553. Для определения имени "вывода" (экрана) воспользуйтесь одной из программ, упомянутых в
  554. **Настройка экранов (мониторов)**.
  555. .. index:: fullscreen, rule-add, rules
  556. .. _river_fullscreen_progs:
  557. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  558. Правило регулирующее отображение программы в полноэкранном режиме
  559. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  560. Для отображения по умолчанию программы в полноэкранном режиме
  561. достаточно использовать параметр *fullscreen*::
  562. riverctl rule-add -app-id "foot" fullscreen
  563. Для того чтобы сделать исключение используется *no-fullscreen*::
  564. riverctl rule-add -app-id "foot" no-fullscreen
  565. .. index:: float, floating, window, rule-add
  566. .. _river_float_windows:
  567. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  568. Правило для плавающего окна
  569. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  570. Для запуска программы в режиме "плавающего" окна по умолчанию -
  571. используйте *float*::
  572. riverctl rule-add -app-id "firefox" float
  573. Для отмены или исключения::
  574. riverctl rule-add -app-id "firefox" no-float
  575. .. index:: position, dimensions, window
  576. .. _river_pos_dim_win:
  577. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  578. Правила размера и расположения
  579. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  580. Чтобы задать размер окна программы::
  581. riverctl rule-add -app-id "foot" dimensions W H # W - ширина, H - высота
  582. .. warning:: Стоит отметить, что размер окна работает в первую очередь
  583. для "плавающих" окон, поскольку "не плавающие" окна регулируются
  584. макетом **rivertile**.
  585. Чтобы задать позицию окна программы::
  586. riverctl rule-add -app-id "foot" position W H # W - координата по ширине, H - координата по высоте
  587. .. warning:: Стоит отметить, что "начало координат" (точка X = 0, Y = 0) находится в верхнем
  588. левом углу. И в первую очередь указание размера необходимо для "плавающих" окон.
  589. .. index:: tearing, window, rule-add
  590. .. _river_tearing:
  591. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  592. Правило отвечающее за tearing
  593. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  594. Для того, чтобы задать конкретной программе использовать *tearing* вне
  595. зависимости от глобального параметра::
  596. riverctl rule-add -app-id "firefox" tearing
  597. Для отключения *tearing* для конкретной программы::
  598. riverctl rule-add -app-id "firefox" no-tearing
  599. .. index:: server, client, csd, ssd, decoration
  600. .. _river_window_decoration:
  601. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  602. Правило указывающее на управляющего по декорациям окна
  603. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  604. В Wayland многое в графике программ переложено на сами
  605. клиенты, а не композиторы. В river есть два параметра которые
  606. определяют кто должен отвечать за внешний вид окон программ:
  607. 1. Клиент сам занимается декорацией окна, заголовка и т.п.::
  608. riverctl rule-add -app-id "foot" csd
  609. 2. river занимается декорацией окна, заголовка и т.п.::
  610. riverctl rule-add -app-id "foot" ssd
  611. .. warning:: river не отвечает за то что и как рисуется в самом окне, но
  612. может например скрыть заголовок окна терминала, если он является
  613. управляющим.
  614. По умолчанию используется режим ssd для многих программ.
  615. .. index:: river, background, border, border-width
  616. .. _river_base_decor:
  617. ``````````````````````````````````````
  618. Настройка внешнего вида river
  619. ``````````````````````````````````````
  620. В river настройка внешнего вида ограничена несколькими параметрами:
  621. Чтобы задать цвет фона::
  622. riverctl background-color 0x000000ff
  623. Для указания цвета в river используется один из двух вариантов обозначений:
  624. 1. 0xRRGGBBAA - данный формат описывает все цвета на основе комбинации трех цветов - красный (RR), зеленый (GG) и синий (BB) и также задает прозрачность (AA). Все четыре параметра могут изменяться от 00 до 99 и от aa до ff, где aa - является следующим за 99,т.е. ff - наибольшее значение, а 00 - наименьшее.
  625. 2. 0xRRGGBB - данный формат такой же как и первый, но без прозрачности, т.е. АА всегда равен ff
  626. Задать цвет границ активного окна::
  627. riverctl border-color-focused 0xffffffff
  628. Задать цвет границ неактивного окна::
  629. riverctl border-color-unfocused 0x555555ff
  630. Задать цвет "срочных представлений"::
  631. riverctl border-color-urgent 0x660022ff
  632. .. warning:: "Срочные предстваления" на данный момент не совсем понятны. Мы работаем над тем, чтобы дать более точную информацию.
  633. Задать ширину рамки окна::
  634. riverctl border-width N # N - целое значение пикселей
  635. Чтобы разместить обои на экраны необходимо использовать
  636. сторонний софт, на `wiki river <https://codeberg.org/river/wiki/src/branch/master/pages/Recommended-Software.md>`__ рекомендуют:
  637. - `swaybg <https://github.com/swaywm/swaybg>`__
  638. - `wbg <https://codeberg.org/dnkl/wbg>`__
  639. - `sww <https://github.com/Horus645/swww>`__
  640. Стоит отметить, что в Wayland мониторы не объединяются в один единый
  641. рабочий стол или виртуальный экран, поэтому для вывода разных
  642. изображений на разные экраны нужно использовать программы, которые это
  643. поддерживают, иначе изображение будет повторятся на всех экранах.
  644. Также вероятно вам придется разрезать изображение под каждый экран,
  645. если вы хотите разместить изображение размером с объединенные экраны.
  646. Приведем пример использования *swaybg*::
  647. riverctl spawn 'swaybg -o DP-1 -i /path_to_image1/img1.jpg -o DP-2 -i /path_to_image2/img2.png'
  648. # или
  649. exec swaybg -o DP-1 -i /path_to_image1/img1.jpg -o DP-2 -i /path_to_image2/img2.png
  650. .. index:: cursor, focus
  651. .. _river_cursor:
  652. ......................................
  653. Настройки для курсора
  654. ......................................
  655. Изменение активного окна с помощью курсора мыши::
  656. riverctl focus-follow-cursor _параметр_
  657. Допустимые значения _параметр_:
  658. - *disabled* - не менять активное окно при перемещении курсора,
  659. - *normal* - перемещение приводит к переключению активного окна, но не переключается на данное окно, если курсор перемещается внутри окна непокидая его,
  660. - *always* - всегда переключать активное окно вслед за курсором мыши.
  661. Способы скрыть курсор мыши:
  662. 1. Скрывать курсор мыши через T милисекунд::
  663. riverctl hide-cursor timeout T
  664. 2. Скрывать курсор мыши при нажатии не специальных клавиш::
  665. riverctl hide-cursor when-typing disabled # enabled | disabled
  666. Положение курсора при перемещении на другой экран или другое окно::
  667. riverctl set-cursor-warp disabled
  668. Вместо *disabled* доступны:
  669. - *on-output-change* - расположить курсор в центре экрана, при переключении с клавиатуры на другой экран
  670. - *on-focus-change* - расположить курсор в центре активного окна, при переключении с клавиатуры на другой экран или окно
  671. Задать тему и размер курсора::
  672. riverctl xcursor-theme _тема_курсора_ _размер_курсора_ # _размер_курсора указывать не обязательно
  673. .. index:: rule-del, rules
  674. .. _river_delete_rules:
  675. ^^^^^^^^^^^^^^^^
  676. Удаление правил
  677. ^^^^^^^^^^^^^^^^
  678. Любое правило можно удалить из запущенной системы::
  679. riverctl rule-del -app-id "foot" ssd # ssd для примера, параметры частично описаны выше, но также их получение описано далее.
  680. Для указание на программу можно использовать **app-id** или **title**,
  681. главное чтобы они были определены.
  682. .. index:: list-rules, show
  683. .. _river_show_rules:
  684. ^^^^^^^^^^^^^^^^^^^^^^^^^
  685. Просмотр заданных правил
  686. ^^^^^^^^^^^^^^^^^^^^^^^^^
  687. Если правила были заданы, то вполне логично что их нужно как-то
  688. просмотреть и проверить. Для этого есть команда::
  689. riverctl list-rules _параметр_
  690. *_параметр_* может принимать следующие значения - *dimensions, float, fullscreen, output, position, ssd, tags*
  691. .. warning:: Параметры для *tearing* по какой-то причине проверить
  692. нельзя!
  693. .. index:: lid, tabled, mode, enter-mode, declare-mode, map-switch
  694. .. _river_modes:
  695. --------------------------------
  696. Особые режимы / события в river
  697. --------------------------------
  698. В river предусмотрены такие события как: *lid* - крышка и *tabled* - планшет. Для их
  699. определения используется команды:
  700. 1. При закрытии крышки::
  701. riverctl map-switch normal lid close _любая команда через riverctl_
  702. 2. При открытии крышки::
  703. riverctl map-switch normal lid open _любая команда через riverctl_
  704. 3. При включении::
  705. riverctl map-switch normal tabled on _любая команда через riverctl_
  706. 4. При выключении::
  707. riverctl map-switch normal tabled off _любая команда через riverctl_
  708. Для удаления заданных параметров, например::
  709. riverctl unmap-switch normal lid close
  710. riverctl unmap-switch normal tabled off
  711. Не смотря на то, что в river по умолчанию только два режима: *normal*
  712. и *locked*, есть возможность определять / создавать другие режимы и
  713. переключаться между ними, например в конфиге river есть такой
  714. фрагмент::
  715. # Объявления проходного режима. Этот режим имеет только одно отображение для возврата в обычный режим. Это делает его полезным для тестирования вложенного композитора wayland
  716. riverctl declare-mode passthrough
  717. # Super+F11 войти в режим passthrough
  718. riverctl map normal Super F11 enter-mode passthrough
  719. # Super+F11 вернутся в режим normal
  720. riverctl map passthrough Super F11 enter-mode normal
  721. .. index:: scroll, touchpad, input
  722. .. _river_input:
  723. ----------------------------------------
  724. Параметры для настройки устройств ввода
  725. ----------------------------------------
  726. В river есть ряд параметров которые предназначены для настройки
  727. спецализированных значений или поведений устройств ввода (*input*).
  728. Чтобы настроить будут ли "события" устройства ввода использоваться в
  729. river::
  730. riverctl input _имя_устройства_ events enabled
  731. Допустимые значения:
  732. 1. *enabled* - включить,
  733. 2. *disabled* - выключить,
  734. 3. *disabled-on-external-mouse* - выключить тачпад при подключении внешней мыши.
  735. .. warning:: Для определения _имя_устройства_ используйте **list-inputs**. Пример
  736. использования был описан выше в **Настройка раскладки клавиатуры**.
  737. Чтобы указать профиль ускорения указателя устройства ввода::
  738. riverctl input _имя_устройства_ accel-profile none
  739. Допустимые значения:
  740. 1. *none* - нет профиля,
  741. 2. *flat* - плоский профиль - ко всем дельтам устройства ввода
  742. применяется постоянный коэффициент, независимо от скорости
  743. движения,
  744. 3. *adaptive* - адаптивный профиль - профиль, который
  745. учитывает текущую скорость устройства при определении ускорения.
  746. Чтобы определить коэффициент ускорения указателя устройства ввода::
  747. riverctl input _имя_устройства_ pointer-accel 1.0
  748. Возможные значения от -1.0 до 1.0.
  749. Режим работы тачпада / кликпада::
  750. riverctl input _имя_устройства_ click-method none
  751. Допустимые значения:
  752. 1. *none* - нет режима,
  753. 2. *button-areas* - нижняя область тачпада делится на область левой, средней и правой кнопок,
  754. 3. *clickfinger* - количество пальцев на тачпаде определяет тип кнопки.
  755. Для активиции или отключения функции перетаскивания тачпадом::
  756. riverctl input _имя_устройства_ drag enabled
  757. Допустимые значения:
  758. 1. *enabled* - включить,
  759. 2. *disabled* - выключить.
  760. Для включения или отключения функции блокировки перетаскивания
  761. тачпадом::
  762. riverctl input _имя_устройства_ drag-lock enabled
  763. Допустимые значения:
  764. 1. *enabled* - включить,
  765. 2. *disabled* - выключить.
  766. Для включения или отключения функции отключения тачпада во время набора текста::
  767. riverctl input _имя_устройства_ disable-while-typing enabled
  768. Допустимые значения:
  769. 1. *enabled* - включить,
  770. 2. *disabled* - выключить.
  771. Для включения или отключения функции отключения тачпада при
  772. использовании трекпоинта::
  773. riverctl input _имя_устройства_ disable-while-trackpointing enabled
  774. Допустимые значения:
  775. 1. *enabled* - включить,
  776. 2. *disabled* - выключить.
  777. Для включения эмуляции средней кнопки мыши на тачпаде::
  778. riverctl input _имя_устройства_ middle-emulation enabled
  779. Допустимые значения:
  780. 1. *enabled* - включить,
  781. 2. *disabled* - выключить.
  782. Чтобы включить инверсию прокрутки::
  783. riverctl input _имя_устройства_ natural-scroll enabled
  784. Допустимые значения:
  785. 1. *enabled* - включить,
  786. 2. *disabled* - выключить.
  787. Чтобы определить скорость прокрутки::
  788. riverctl input _имя_устройства_ scroll-factor 2
  789. Допускаются значения больше 0. Значения < 1 приведут к замедлению
  790. скорости прокрутки, когда значения > 1 - к ускорению.
  791. Режим работы "для левшей" для мыши, тачпада и т.п.::
  792. riverctl input _имя_устройства_ left_handed enabled
  793. Допустимые значения:
  794. 1. *enabled* - включить,
  795. 2. *disabled* - выключить.
  796. Включить или отключить функцию "тап" для тачпада::
  797. riverctl input _имя_устройства_ tap enabled
  798. Допустимые значения:
  799. 1. *enabled* - включить,
  800. 2. *disabled* - выключить.
  801. Настройка типов нажатий на тачпаде::
  802. riverctl input _имя_устройства_ tap-button-map left-right-middle
  803. Допустимые значения:
  804. 1. left-right-middle - нажатие на тачпад одним пальцем - левая кнопка мыши,
  805. двумя - правая, тремя - средняя,
  806. 2. left-middle-right - нажатие на тачпад одним пальцем - левая кнопка мыши,
  807. двумя - средняя, тремя - правая.
  808. Чтобы задать способ прокрутки на тачпаде::
  809. riverctl input _имя_устройства_ scroll-method none
  810. Допустимые значения:
  811. 1. *none* - не использовать тачпад для прокрутки,
  812. 2. *two-finger* - прокрутка с помощью двух пальцев,
  813. 3. *edge* - пролистывание, используя край тачпада,
  814. 4. *button* - пролистывание с помощью движения указателя при нажатой
  815. кнопке.
  816. Чтобы задать клавишу для пролистывания с помощью четвертого варианта::
  817. riverctl input _имя_устройства_ scroll-button _код_события_
  818. Режим работы клавиши прокрутки::
  819. riverctl input _имя_устройства_ scroll-button-lock enabled
  820. Допустимые значения:
  821. 1. *enabled* - клавишу не нужно удерживать. Первое нажатие войти в режим
  822. прокрутки, а второе нажатие - выйти,
  823. 2. *disabled* - клавишу нужно удерживать для прокрутки.
  824. Чтобы указать устройству ввода работать только на определенном экране,
  825. используйте::
  826. riverctl input _имя_устройства_ map-to-output HDMI-1
  827. Допустимые значения:
  828. 1. *disabled* - отключить привязку устройства ввода к определенному
  829. экрану,
  830. 2. Все возможные варианты *output*, которые вы можете получить через
  831. тот же **wlr-randr** (DP-1, HDMI-1 и т.п.).
  832. В river можно задать скорость обработки нажатий и задержку::
  833. riverctl set-repeat rate delay
  834. О параметрах:
  835. 1. *rate* - скорость повторной обработки нажатия (зажатия) клавиши в милисекундах (50 - по умолчанию),
  836. 2. *delay* - задержка повторной обработки нажатия (зажатия) клавиши в милисекундах (300 - по умолчанию).
  837. .. index:: notify, notify-daemon
  838. .. _river_notification:
  839. -----------------------
  840. Настройка уведомлений
  841. -----------------------
  842. Как и во многих других WM в river используются сторонние средства для
  843. отображения уведомлений. На `wiki river
  844. <https://codeberg.org/river/wiki/src/branch/master/pages/Recommended-Software.md>`__
  845. рекомендуются следующие:
  846. - `mako <https://github.com/emersion/mako>`__
  847. - `salut <https://gitlab.com/snakedye/salut>`__
  848. - `fnott <https://codeberg.org/dnkl/fnott>`__
  849. - `dunst <https://github.com/dunst-project/dunst>`__
  850. - `wired <https://github.com/Toqozz/wired-notify>`__
  851. - `SwayNotificationCenter <https://github.com/ErikReider/SwayNotificationCenter>`__
  852. Для запуска вместе с river нужно в **init** указать команду::
  853. riverctl spawn fnott # fnott тут в качестве примера, замените на любой другой
  854. .. index:: bar, status, panel
  855. .. _river_bar:
  856. --------------------
  857. Панель (status bar)
  858. --------------------
  859. В качестве панели (status bar) на `вики river <https://codeberg.org/river/wiki/src/branch/master/pages/Recommended-Software.md>`__ рекомендуют использовать:
  860. - `waybar <https://github.com/Alexays/Waybar>`__
  861. - `yambar <https://codeberg.org/dnkl/yambar>`__
  862. - `levee <https://sr.ht/~andreafeletto/levee>`__
  863. - `creek <https://github.com/nmeum/creek>`__
  864. - `i3bar-river <https://github.com/MaxVerevkin/i3bar-river>`__
  865. - `zelbar <https://sr.ht/~novakane/zelbar/>`__
  866. - `dam <https://codeberg.org/sewn/dam>`__
  867. - `sandbar <https://github.com/kolunmi/sandbar>`__
  868. Для запуска панели достаточно указать команду в **init**::
  869. riverctl spawn waybar # вместо waybar можете использовать любую другую панель.
  870. .. warning:: Панели могут потребовать дополнительной настройки для отображения
  871. элементов river (tags, window, mode, layuot и т.п.).
  872. .. warning:: На 11.02.2025 г. панели не имеют модуля вывода текущей
  873. раскладки языка в river!
  874. Как можно заметить для запуска приложения "в фоне"
  875. достаточно просто использовать *riverctl spawn _имя_программы_*, данная
  876. команда просто запустит программу - работает как через файл
  877. **init** так и из терминала.
  878. .. index:: launcher
  879. .. _launchers_for_river:
  880. -------------------------
  881. Меню запуска приложений
  882. -------------------------
  883. Для запуска программ нужен так называемый *launcher* (лаунчер). На `wiki river <https://codeberg.org/river/wiki/src/branch/master/pages/Recommended-Software.md>`__ рекомендуют:
  884. - `fuzzel <https://codeberg.org/dnkl/fuzzel>`__
  885. - `bemenu <https://github.com/Cloudef/bemenu>`__
  886. - `mew <https://codeberg.org/sewn/mew>`__
  887. - `wofi <https://hg.sr.ht/~scoopta/wofi>`__
  888. - `LavaLauncher <https://git.sr.ht/~leon_plickat/lavalauncher>`__
  889. - `nwg-drawer <https://github.com/nwg-piotr/nwg-drawer>`__
  890. - `tofi <https://github.com/philj56/tofi>`__
  891. - `wmenu <https://codeberg.org/adnano/wmenu>`__
  892. Для использования достаточно определить комбинацию клавиш, что было
  893. описано вначале на примере *foot*.
  894. .. index:: waylock, swaylock, idle
  895. .. _river_lock:
  896. -------------------
  897. Блокировка экрана
  898. -------------------
  899. Для блокировки экрана на `wiki river <https://codeberg.org/river/wiki/src/branch/master/pages/Recommended-Software.md>`__ рекомендуют использовать:
  900. - `waylock <https://codeberg.org/ifreund/waylock>`__
  901. - `swaylock <https://github.com/swaywm/swaylock>`__
  902. Заблокировать экран можно назначив запуск программы на "горячую" клавишу или используя `swayidle <https://github.com/swaywm/swayidle>`__::
  903. riverctl spawn 'swayidle -w timeout 300 "swaylock --show-failed-attempts -e"'
  904. Немного пояснения:
  905. - *-w* - говорит о необходимости ожидания события,
  906. - *timeout* - событие, которое ожидает swayidle - в данном случае ожидание бездействия в 300 секунд.
  907. Через **swayidle** можно выполнять разные команды. Например выключать и
  908. включать мониторы. В мануале **swayidle** есть подобное события::
  909. swayidle -w \
  910. timeout 300 ’swaylock -f -c 000000’ \
  911. timeout 600 ’swaymsg "output * dpms off"’ \
  912. resume ’swaymsg "output * dpms on"’ \
  913. before-sleep ’swaylock -f -c 000000’
  914. .. warning:: Будьте внимательны при настройки отключения мониторов,
  915. поскольку после пробуждения могут часть настроек river "слететь",
  916. особенно в случае с несколькими мониторами, а в случае с
  917. видеокартами nvidia возможны проблемы с пробуждением!
  918. .. vim:set textwidth=70: