ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½Π° Π΅ Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠ½ΠΈΡ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ Sway 1.7, ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π° Wayland ΠΈ Π½Π°ΠΏΡΠ»Π½ΠΎ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ i3 mosaic window manager ΠΈ ΠΏΠ°Π½Π΅Π»Π° i3bar. ΠΠΎΠ΄ΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° Π΅ Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° C ΠΈ ΡΠ΅ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½ΡΠ²Π° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·Π° Π½Π° MIT. ΠΡΠΎΠ΅ΠΊΡΡΡ Π΅ Π½Π°ΡΠΎΡΠ΅Π½ ΠΊΡΠΌ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Linux ΠΈ FreeBSD.
i3 ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΠ° Π΅ ΠΎΡΠΈΠ³ΡΡΠ΅Π½Π° Π½Π° Π½ΠΈΠ²ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π°, ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π΅Π½ ΡΠ°ΠΉΠ» ΠΈ IPC, ΠΊΠΎΠ΅ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Sway Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°ΡΠΎ ΠΏΡΠΎΠ·ΡΠ°ΡΠ΅Π½ i3 Π·Π°ΠΌΠ΅ΡΡΠΈΡΠ΅Π», ΠΊΠΎΠΉΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Wayland Π²ΠΌΠ΅ΡΡΠΎ X11. Sway Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΠΎΡΡΠ°Π²ΡΡΠ΅ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ Π½Π° Π΅ΠΊΡΠ°Π½Π° Π½Π΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π΅Π½ΠΎ, Π° Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ. ΠΡΠΎΠ·ΠΎΡΡΠΈΡΠ΅ ΡΠ° ΠΏΠΎΠ΄ΡΠ΅Π΄Π΅Π½ΠΈ Π² ΠΌΡΠ΅ΠΆΠ°, ΠΊΠΎΡΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΎΠΏΡΠΈΠΌΠ°Π»Π½ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎΡΠΎ Π½Π° Π΅ΠΊΡΠ°Π½Π° ΠΈ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π±ΡΡΠ·ΠΎ Π΄Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°ΡΠ΅ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ, ΠΊΠ°ΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΡΠ΅ ΡΠ°ΠΌΠΎ ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ°ΡΠ°.
ΠΠ° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠ»Π½ΠΎΡΠ΅Π½Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠ° ΡΡΠ΅Π΄Π° ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Ρ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅ ΡΡΠΏΡΡΡΡΠ²Π°ΡΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ: swayidle (ΡΠΎΠ½ΠΎΠ² ΠΏΡΠΎΡΠ΅Ρ, ΠΈΠ·ΠΏΡΠ»Π½ΡΠ²Π°Ρ KDE idle ΠΏΡΠΎΡΠΎΠΊΠΎΠ»Π°), swaylock (ΡΠΊΡΠΈΠΉΠ½ΡΠ΅ΠΉΠ²ΡΡ), mako (ΡΠ²Π΅Π΄ΠΎΠΌΠΈΡΠ΅Π»Π΅Π½ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ), grim (ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΅ΠΊΡΠ°Π½Π½ΠΈ ΡΠ½ΠΈΠΌΠΊΠΈ), slurp (ΠΈΠ·Π±ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠ±Π»Π°ΡΡ Π½Π° Π΅ΠΊΡΠ°Π½Π°), wf-ΡΠ΅ΠΊΠΎΡΠ΄Π΅Ρ (Π·Π°ΡΠ½Π΅ΠΌΠ°Π½Π΅ Π½Π° Π²ΠΈΠ΄Π΅ΠΎ), ΠΏΡΡΠ½Π° Π»Π΅Π½ΡΠ° (Π»Π΅Π½ΡΠ° Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ), virtboard (Π΅ΠΊΡΠ°Π½Π½Π° ΠΊΠ»Π°Π²ΠΈΠ°ΡΡΡΠ°), wl-clipboard (ΡΠ°Π±ΠΎΡΠ° Ρ ΠΊΠ»ΠΈΠΏΠ±ΠΎΡΠ΄Π°), wallutils (ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΡΠ°ΠΏΠ΅Ρ Π½Π° ΡΠ°Π±ΠΎΡΠ½ΠΈΡ ΠΏΠ»ΠΎΡ).
Sway ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π° ΠΊΠ°ΡΠΎ ΠΌΠΎΠ΄ΡΠ»Π΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΈΠ·Π³ΡΠ°Π΄Π΅Π½ Π²ΡΡΡ Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° wlroots, ΠΊΠΎΡΡΠΎ ΡΡΠ΄ΡΡΠΆΠ° Π²ΡΠΈΡΠΊΠΈ ΠΎΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΈ Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠ½ΠΈΡ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡΡ. Wlroots Π²ΠΊΠ»ΡΡΠ²Π° Π±Π΅ΠΊΠ΅Π½Π΄ΠΎΠ²Π΅ Π·Π° Π°Π±ΡΡΡΠ°ΠΊΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π΅ΠΊΡΠ°Π½Π°, ΡΡΡΡΠΎΠΉΡΡΠ²Π° Π·Π° Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅, ΠΈΠ·ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅ Π±Π΅Π· Π΄ΠΈΡΠ΅ΠΊΡΠ΅Π½ Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ OpenGL, Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ KMS/DRM, libinput, Wayland ΠΈ X11 (ΠΎΡΠΈΠ³ΡΡΠ΅Π½ Π΅ ΡΠ»ΠΎΠΉ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° X11 ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° Xwayland). Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ Sway, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° wlroots ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π°ΠΊΡΠΈΠ²Π½ΠΎ Π² Π΄ΡΡΠ³ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Librem5 ΠΈ Cage. Π Π΄ΠΎΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΡΠΌ C/C++, ΡΠ²ΡΡΠ·Π²Π°Π½ΠΈΡΡΠ° ΡΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ Π·Π° Scheme, Common Lisp, Go, Haskell, OCaml, Python ΠΈ Rust.
Π Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ:
- ΠΡΠΈΠ³ΡΡΠ΅Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΏΡΠ΅ΠΌΠ΅ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·Π΄Π΅Π»ΠΈ Ρ ΠΌΠΈΡΠΊΠ°ΡΠ°.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠ·Ρ ΠΎΠ΄ ΠΊΡΠΌ ΡΠ»ΡΡΠ°Π»ΠΊΠΈ Π·Π° Π²ΠΈΡΡΡΠ°Π»Π½Π° ΡΠ΅Π°Π»Π½ΠΎΡΡ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° "output render_bit_depth", Π·Π° Π΄Π° ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ° ΠΈΠ·Ρ ΠΎΠ΄Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠ΅Π½ ΡΠ΅ΠΆΠΈΠΌ Ρ Π³ΠΎΠ»ΡΠΌΠ° Π±ΠΈΡΠΎΠ²Π° Π΄ΡΠ»Π±ΠΎΡΠΈΠ½Π°.
- ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° Π½Π°Π΄Π΅ΠΆΠ΄Π½ΠΎΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡ Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π° Π½Π° ΠΏΡΠΎΠ·ΠΎΡΡΠΈ Π½Π° ΡΡΠ» Π΅ΠΊΡΠ°Π½ (Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° dmabuf ΡΠ΅ ΠΎΡΠΈΠ³ΡΡΡΠ²Π° Π΄ΠΈΡΠ΅ΠΊΡΠ΅Π½ ΠΈΠ·Ρ ΠΎΠ΄ Π±Π΅Π· Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π±ΡΡΠ΅ΡΠΈΡΠ°Π½Π΅).
- ΠΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠ΅ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΡΡ xdg-activation-v1, ΠΊΠΎΠΉΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΡΠ΅ ΡΠΎΠΊΡΡΠ° ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΏΠΎΠ²ΡΡΡ Π½ΠΎΡΡΠΈ ΠΎΡ ΠΏΡΡΠ²ΠΎ Π½ΠΈΠ²ΠΎ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ xdg-activation, Π΅Π΄Π½ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π° ΡΠΎΠΊΡΡΠ° ΠΊΡΠΌ Π΄ΡΡΠ³ΠΎ).
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΎΠΏΡΠΈΡ client.focused_tab_title Π·Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ²Π΅ΡΠ° Π½Π° Π°ΠΊΡΠΈΠ²Π½ΠΈΡ ΡΠ°Π·Π΄Π΅Π».
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° βoutput modellineβ, Π·Π° Π΄Π° Π·Π°Π΄Π°Π΄Π΅ΡΠ΅ ΡΠ²ΠΎΠΉ ΡΠΎΠ±ΡΡΠ²Π΅Π½ ΡΠ΅ΠΆΠΈΠΌ DRM (Direct Rendering Manager).
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΊΠΎΠΌΠ°Π½Π΄Π°ΡΠ° "output dpms toggle", Π·Π° Π΄Π° ΡΠ΅ ΡΠ»Π΅ΡΠ½ΠΈ ΠΈΠ·ΡΠΈΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π΅ΠΊΡΠ°Π½Π° ΠΎΡ ΡΠΊΡΠΈΠΏΡΠΎΠ²Π΅. ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° ΠΏΡΠΎΠΏΡΡΠΊΠΈ ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°ΠΌ ", "smart_gaps inverse_outer" ΠΈ "split none".
- ΠΠΏΡΠΈΡΡΠ° β--my-next-gpu-wont-be-nvidiaβ Π΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠ°, ΠΊΠ°ΡΠΎ Π΅ Π·Π°ΠΌΠ΅Π½Π΅Π½Π° Ρ ΡΠ΅ΠΆΠΈΠΌΠ° β--unsupported-gpuβ. Π‘ΠΎΠ±ΡΡΠ²Π΅Π½ΠΈΡΠ΅ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠΈ Π½Π° NVIDIA Π²ΡΠ΅ ΠΎΡΠ΅ Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ.
- Π’Π΅ΡΠΌΠΈΠ½Π°Π»Π½ΠΈΡΡ Π΅ΠΌΡΠ»Π°ΡΠΎΡ, Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ Π² Π½Π°ΡΡΡΠΎΠΉΠΊΠΈΡΠ΅ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅, Π΅ Π·Π°ΠΌΠ΅Π½Π΅Π½ Ρ ΠΊΡΠ°ΠΊ.
- ΠΡΠΈΠ³ΡΡΠ΅Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠΎΠ·ΠΎΡΡΠΈ Π½Π° Π»Π΅Π½ΡΠ°ΡΠ° Π·Π° ΠΏΠ»ΡΠ·Π³Π°Π½Π΅ ΠΈ ΠΏΠ»ΡΠ·Π³Π°Π½Π΅ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅.
- ΠΠ°Π±ΡΠ°Π½ΡΠ²Π° ΡΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½Π°ΡΠ° ΠΏΡΠΎΠΌΡΠ½Π° Π½Π° Π²ΠΈΡΠΎΡΠΈΠ½Π°ΡΠ° Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ·ΠΎΡΠ΅ΡΠ° Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ ΠΎΡ Π·Π½Π°ΡΠΈΡΠ΅ Π² ΡΠ΅ΠΊΡΡΠ° Π½Π° Π·Π°Π³Π»Π°Π²ΠΈΠ΅ΡΠΎ; Π·Π°Π³Π»Π°Π²ΠΈΠ΅ΡΠΎ Π²Π΅ΡΠ΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ Ρ ΡΠΈΠΊΡΠΈΡΠ°Π½Π° Π²ΠΈΡΠΎΡΠΈΠ½Π°.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru