Commit a37bff6a authored by Jan Uhlík's avatar Jan Uhlík

Major chage in moving_to_sway and add SUT presentation

parent 4a1edd36
......@@ -37,3 +37,417 @@ tags
# End of https://www.gitignore.io/api/linux,vim
public
# Created by https://www.gitignore.io/api/tex,linux,vim,python
# Edit at https://www.gitignore.io/?templates=tex,linux,vim,python
### Linux ###
*~
# temporary files which can be created if a process still has a handle open of a deleted file
.fuse_hidden*
# KDE directory preferences
.directory
# Linux trash folder which might appear on any partition or disk
.Trash-*
# .nfs files are created when an open file is removed but is still being accessed
.nfs*
### Python ###
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
pip-wheel-metadata/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/
# Translations
*.mo
*.pot
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# pyenv
.python-version
# pipenv
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
# However, in case of collaboration, if having platform-specific dependencies or dependencies
# having no cross-platform support, pipenv may install dependencies that don't work, or not
# install all needed dependencies.
#Pipfile.lock
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# Mr Developer
.mr.developer.cfg
.project
.pydevproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
### TeX ###
## Core latex/pdflatex auxiliary files:
*.aux
*.lof
*.log
*.lot
*.fls
*.out
*.toc
*.fmt
*.fot
*.cb
*.cb2
.*.lb
## Intermediate documents:
*.dvi
*.xdv
*-converted-to.*
# these rules might exclude image files for figures etc.
# *.ps
# *.eps
# *.pdf
## Generated if empty string is given at "Please type another file name for output:"
.pdf
## Bibliography auxiliary files (bibtex/biblatex/biber):
*.bbl
*.bcf
*.blg
*-blx.aux
*-blx.bib
*.run.xml
## Build tool auxiliary files:
*.fdb_latexmk
*.synctex
*.synctex(busy)
*.synctex.gz
*.synctex.gz(busy)
*.pdfsync
## Build tool directories for auxiliary files
# latexrun
latex.out/
## Auxiliary and intermediate files from other packages:
# algorithms
*.alg
*.loa
# achemso
acs-*.bib
# amsthm
*.thm
# beamer
*.nav
*.pre
*.snm
*.vrb
# changes
*.soc
# comment
*.cut
# cprotect
*.cpt
# elsarticle (documentclass of Elsevier journals)
*.spl
# endnotes
*.ent
# fixme
*.lox
# feynmf/feynmp
*.mf
*.mp
*.t[1-9]
*.t[1-9][0-9]
*.tfm
#(r)(e)ledmac/(r)(e)ledpar
*.end
*.?end
*.[1-9]
*.[1-9][0-9]
*.[1-9][0-9][0-9]
*.[1-9]R
*.[1-9][0-9]R
*.[1-9][0-9][0-9]R
*.eledsec[1-9]
*.eledsec[1-9]R
*.eledsec[1-9][0-9]
*.eledsec[1-9][0-9]R
*.eledsec[1-9][0-9][0-9]
*.eledsec[1-9][0-9][0-9]R
# glossaries
*.acn
*.acr
*.glg
*.glo
*.gls
*.glsdefs
# uncomment this for glossaries-extra (will ignore makeindex's style files!)
# *.ist
# gnuplottex
*-gnuplottex-*
# gregoriotex
*.gaux
*.gtex
# htlatex
*.4ct
*.4tc
*.idv
*.lg
*.trc
*.xref
# hyperref
*.brf
# knitr
*-concordance.tex
# TODO Comment the next line if you want to keep your tikz graphics files
*.tikz
*-tikzDictionary
# listings
*.lol
# luatexja-ruby
*.ltjruby
# makeidx
*.idx
*.ilg
*.ind
# minitoc
*.maf
*.mlf
*.mlt
*.mtc[0-9]*
*.slf[0-9]*
*.slt[0-9]*
*.stc[0-9]*
# minted
_minted*
*.pyg
# morewrites
*.mw
# nomencl
*.nlg
*.nlo
*.nls
# pax
*.pax
# pdfpcnotes
*.pdfpc
# sagetex
*.sagetex.sage
*.sagetex.py
*.sagetex.scmd
# scrwfile
*.wrt
# sympy
*.sout
*.sympy
sympy-plots-for-*.tex/
# pdfcomment
*.upa
*.upb
# pythontex
*.pytxcode
pythontex-files-*/
# tcolorbox
*.listing
# thmtools
*.loe
# TikZ & PGF
*.dpth
*.md5
*.auxlock
# todonotes
*.tdo
# vhistory
*.hst
*.ver
# easy-todo
*.lod
# xcolor
*.xcp
# xmpincl
*.xmpi
# xindy
*.xdy
# xypic precompiled matrices
*.xyc
# endfloat
*.ttt
*.fff
# Latexian
TSWLatexianTemp*
## Editors:
# WinEdt
*.bak
*.sav
# Texpad
.texpadtmp
# LyX
*.lyx~
# Kile
*.backup
# KBibTeX
*~[0-9]*
# auto folder when using emacs and auctex
./auto/*
*.el
# expex forward references with \gathertags
*-tags.tex
# standalone packages
*.sta
### TeX Patch ###
# glossaries
*.glstex
### Vim ###
# Swap
[._]*.s[a-v][a-z]
[._]*.sw[a-p]
[._]s[a-rt-v][a-z]
[._]ss[a-gi-z]
[._]sw[a-p]
# Session
Session.vim
Sessionx.vim
# Temporary
.netrwhist
# Auto-generated tag files
tags
# Persistent undo
[._]*.un~
# End of https://www.gitignore.io/api/tex,linux,vim,python
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="762px" height="201px" viewBox="-0.5 -0.5 762 201"><defs/><g><rect x="641" y="60" width="120" height="60" rx="9" ry="9" fill-opacity="0.5" fill="#ffffff" stroke="#039be5" stroke-opacity="0.5" stroke-width="2" pointer-events="all"/><g transform="translate(682.5,81.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="36" height="16" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 15px; font-family: Roboto Mono; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 37px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">user</div></div></foreignObject><text x="18" y="16" fill="#000000" text-anchor="middle" font-size="15px" font-family="Roboto Mono">user</text></switch></g><path d="M 607.37 90 L 634.63 90" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 602.12 90 L 609.12 86.5 L 607.37 90 L 609.12 93.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 639.88 90 L 632.88 93.5 L 634.63 90 L 632.88 86.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="481" y="60" width="120" height="60" rx="9" ry="9" fill-opacity="0.5" fill="#ffffff" stroke="#2e7d32" stroke-opacity="0.5" stroke-width="2" pointer-events="all"/><g transform="translate(482.5,72.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="115" height="34" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 15px; font-family: Roboto Mono; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 115px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">graphical interface</div></div></foreignObject><text x="58" y="25" fill="#000000" text-anchor="middle" font-size="15px" font-family="Roboto Mono">graphical interface</text></switch></g><path d="M 447.37 90 L 474.63 90" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 442.12 90 L 449.12 86.5 L 447.37 90 L 449.12 93.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 479.88 90 L 472.88 93.5 L 474.63 90 L 472.88 86.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="321" y="60" width="120" height="60" rx="9" ry="9" fill-opacity="0.5" fill="#ffffff" stroke="#ff5722" stroke-opacity="0.5" stroke-width="2" pointer-events="all"/><g transform="translate(348.5,72.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="63" height="34" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 15px; font-family: Roboto Mono; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 64px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">display<br style="font-size: 15px" />server</div></div></foreignObject><text x="32" y="25" fill="#000000" text-anchor="middle" font-size="15px" font-family="Roboto Mono">[Not supported by viewer]</text></switch></g><path d="M 287.37 90 L 314.63 90" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 282.12 90 L 289.12 86.5 L 287.37 90 L 289.12 93.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 319.88 90 L 312.88 93.5 L 314.63 90 L 312.88 86.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="161" y="60" width="120" height="60" rx="9" ry="9" fill-opacity="0.5" fill="#ffffff" stroke="#d50000" stroke-opacity="0.5" stroke-width="2" pointer-events="all"/><g transform="translate(193.5,81.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="54" height="16" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 15px; font-family: Roboto Mono; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 55px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">kernel</div></div></foreignObject><text x="27" y="16" fill="#000000" text-anchor="middle" font-size="15px" font-family="Roboto Mono">kernel</text></switch></g><path d="M 127.37 90 L 154.63 90" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 122.12 90 L 129.12 86.5 L 127.37 90 L 129.12 93.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><path d="M 159.88 90 L 152.88 93.5 L 154.63 90 L 152.88 86.5 Z" fill="#000000" stroke="#000000" stroke-miterlimit="10" pointer-events="all"/><rect x="1" y="60" width="120" height="60" rx="9" ry="9" fill-opacity="0.5" fill="#ffffff" stroke="#212121" stroke-opacity="0.5" stroke-width="2" pointer-events="all"/><g transform="translate(24.5,81.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="72" height="16" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 15px; font-family: Roboto Mono; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; width: 73px; white-space: nowrap; overflow-wrap: normal; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;white-space:normal;">hardware</div></div></foreignObject><text x="36" y="16" fill="#000000" text-anchor="middle" font-size="15px" font-family="Roboto Mono">hardware</text></switch></g><path d="M 461 40 L 461 87" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><ellipse cx="461" cy="90" rx="3" ry="3" fill="#000000" stroke="#000000" pointer-events="all"/><rect x="421" y="0" width="80" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(427.5,2.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="67" height="34" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 15px; font-family: Roboto Mono; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; font-weight: bold; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div style="font-size: 15px"><font style="font-size: 15px">X11</font></div><div style="font-size: 15px"><font style="font-size: 15px">Wayland</font></div></div></div></foreignObject><text x="34" y="25" fill="#000000" text-anchor="middle" font-size="15px" font-family="Roboto Mono" font-weight="bold">[Not supported by viewer]</text></switch></g><path d="M 541 145 L 541 125 L 541 140 L 541 123" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><ellipse cx="541" cy="120" rx="3" ry="3" fill="#000000" stroke="#000000" pointer-events="all"/><rect x="521" y="145" width="40" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(527.5,147.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="27" height="34" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 15px; font-family: Roboto Mono; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div style="font-size: 15px"><font style="font-size: 15px">QT</font></div><div style="font-size: 15px"><font style="font-size: 15px">GTK</font></div></div></div></foreignObject><text x="14" y="25" fill="#000000" text-anchor="middle" font-size="15px" font-family="Roboto Mono">[Not supported by viewer]</text></switch></g><path d="M 381 140 L 381 120 L 381 140 L 381 123" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><ellipse cx="381" cy="120" rx="3" ry="3" fill="#000000" stroke="#000000" pointer-events="all"/><rect x="316" y="140" width="130" height="60" fill="none" stroke="none" pointer-events="all"/><g transform="translate(322.5,143.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="117" height="52" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 15px; font-family: Roboto Mono; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;"><div style="font-size: 15px">X. Org Server</div><div style="font-size: 15px">Weston</div><div style="font-size: 15px">Sway<br style="font-size: 15px" /></div></div></div></foreignObject><text x="59" y="34" fill="#000000" text-anchor="middle" font-size="15px" font-family="Roboto Mono">[Not supported by viewer]</text></switch></g><path d="M 221 140 L 221 120 L 221 140 L 221 123" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><ellipse cx="221" cy="120" rx="3" ry="3" fill="#000000" stroke="#000000" pointer-events="all"/><rect x="151" y="140" width="140" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(157.5,142.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="126" height="34" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 15px; font-family: Roboto Mono; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Linux kernel<br style="font-size: 15px" /><div style="font-size: 15px">FreeBSD kernel</div></div></div></foreignObject><text x="63" y="25" fill="#000000" text-anchor="middle" font-size="15px" font-family="Roboto Mono">[Not supported by viewer]</text></switch></g><path d="M 61 140 L 61 120 L 61 140 L 61 123" fill="none" stroke="#000000" stroke-miterlimit="10" pointer-events="stroke"/><ellipse cx="61" cy="120" rx="3" ry="3" fill="#000000" stroke="#000000" pointer-events="all"/><rect x="16" y="140" width="90" height="40" fill="none" stroke="none" pointer-events="all"/><g transform="translate(24.5,142.5)"><switch><foreignObject style="overflow:visible;" pointer-events="all" width="72" height="34" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"><div xmlns="http://www.w3.org/1999/xhtml" style="display: inline-block; font-size: 15px; font-family: Roboto Mono; color: rgb(0, 0, 0); line-height: 1.2; vertical-align: top; white-space: nowrap; text-align: center;"><div xmlns="http://www.w3.org/1999/xhtml" style="display:inline-block;text-align:inherit;text-decoration:inherit;">Mouse<br style="font-size: 15px" />Keyboard</div></div></foreignObject><text x="36" y="25" fill="#000000" text-anchor="middle" font-size="15px" font-family="Roboto Mono">[Not supported by viewer]</text></switch></g></g></svg>
\ No newline at end of file
......@@ -6,13 +6,18 @@ Jan Uhlík <[email protected]>
:icons: font
:toc:
Již je to pár let, co jsem poprvé pocítil sílu dlaždicového link:https://wiki.archlinux.org/index.php/window_manager[window manager], konkrétně link:https://i3wm.org/[i3]. Žel bohu, kvůli nedostatku času a zkušeností, jsem nebyl sto systém (kde na pozadí běžel link:https://www.archlinux.org/[Arch Linux]) pořádně ukočírovat. Byl jsem tak nucen na čas přejít na kombinaci link:https://www.gnome.org/[Gnome]/link:https://getfedora.org/[Fedora]. V této konfiguraci jsem setrval bezmála dva roky. Po celou dobu jsem však cítil touhu návratu k Arch Linux a i3. Nechtěl jsem však svůj návrat uspěchat a spíše vše do detailu pochopit. Proto jsem nejdříve zvolil kombinaci Gnome/Arch, na které jsem strávil půl roku. Následně jsem se rozhodl vyměnit i Gnome. Jenže to jsem ještě netušil, jakou proměnou si linuxový svět za těch pár let prošel. Jednou z nejvýraznějších změn je vydání stabilní verze nového link:https://en.wikipedia.org/wiki/Display_server[display server protocol] link:https://en.wikipedia.org/wiki/Wayland_(display_server_protocol)[Wayland]. i3 není (a nikdy ani nebude) připraven bežet na Wayland. Proto započaly práce na nový projektu s názvem link:https://swaywm.org/[Sway], který má být Wayland alternativou práě k i3. A právě přechodu z GNOME na Sway bude pojednávat tento článek.
Již je to pár let, co jsem poprvé pocítil sílu dlaždicového link:https://wiki.archlinux.org/index.php/window_manager[window manager], konkrétně link:https://i3wm.org/[i3]. Žel bohu, kvůli nedostatku času a zkušeností, jsem nebyl s to systém (kde na pozadí běžel link:https://www.archlinux.org/[Arch Linux]) pořádně ukočírovat. Byl jsem tak nucen na čas přejít na kombinaci link:https://www.gnome.org/[Gnome]/link:https://getfedora.org/[Fedora]. V této konfiguraci jsem setrval bezmála dva roky. Po celou dobu jsem však cítil touhu návratu k Arch Linux a i3. Nechtěl jsem však svůj návrat uspěchat a spíše vše do detailu pochopit. Proto jsem nejdříve zvolil kombinaci Gnome/Arch, na které jsem strávil půl roku. Následně jsem se rozhodl vyměnit i Gnome. Jenže to jsem ještě netušil, jakou proměnou si linuxový svět za těch pár let prošel. Jednou z nejvýraznějších změn je vydání stabilní verze nového link:https://en.wikipedia.org/wiki/Display_server[display server protocol] link:https://en.wikipedia.org/wiki/Wayland_(display_server_protocol)[Wayland]. i3 není (a nikdy ani nebude) připraven bežet na Wayland. Proto započaly práce na nový projektu s názvem link:https://swaywm.org/[Sway], který má být Wayland alternativou práě k i3. A právě přechodu z GNOME na Sway bude pojednávat tento článek.
[NOTE]
====
Na tomto místě bych rád poděkoval mailto:[email protected][Jakubovi Jančičkovi], přezdívanému též link:http://crazydailycontent.com/wp-content/uploads/2018/07/BEST-Cat-Fails-2016-HD-Epic-Laughs.jpg[_Kočička_], za korekturu textu a zajimavé podměty na obohacení textu.
====
*Change log*:
* _Minor changes 06/06/2019_: Přídání `kanshi` a `swaybg`.
* _Major changes 15/12/2019_: Příprava na SUT.
image::overview.png[title=Ukázka Sway.]
== Základní komponenty GUI na OS Linux
......@@ -28,8 +33,8 @@ Základním stavebním kamenem link:https://en.wikipedia.org/wiki/Graphical_user
* link:https://en.wikipedia.org/wiki/Direct_Rendering_Manager[DRM - Direct Rendering Manager] modul ke komunikaci s link:https://en.wikipedia.org/wiki/Graphics_processing_unit[GPU].
* link:https://wiki.archlinux.org/index.php/kernel_mode_setting[KMS - Kernel Mode Setting]
.Základní komponenty link:https://en.wikipedia.org/wiki/Graphical_user_interface[GUI], zdroj link:https://en.wikipedia.org/wiki/Display_server#/media/File:Schema_of_the_layers_of_the_graphical_user_interface.svg[wikipedia].
image::display_server_layers.svg[500,500]
.Základní komponenty link:https://en.wikipedia.org/wiki/Graphical_user_interface[GUI]
image::gui.svg[1000,1000]
Pro lepší názornost uveďme jeden z typických příkladů _putování signálu_. Uživatel pomocí vstupního zařizení (například myši) klikne na tlačítko aplikace. Signál z myši je zachycen a zpracován v modulu _endev_ a je následně delegován do display server. Ten se na základě informací o rozložení oken rozhodne delegovat signál dále do konkrétní aplikace. Aplikace tak přijme signál, že bylo kliknuto na konkrétní tlačítko. Změní svůj stav, popřípadě i vyšle zpáteční signál s požadavkem o nové vyrendrování zpět do display server.
......@@ -51,7 +56,7 @@ Nový protokol nazvali link:https://en.wikipedia.org/wiki/Wayland_(display_serve
* *Organizace* - došlo k výraznému zjednodušení a mnohdy dokonce i k úplnému odstranení některých funkcionalit. Zvýšila se tak přehlednost kódu a usnadnila budoucí modifikace.
* *Architektura* - došlo ke sloučení Window serveru a samotného Display serveru.
* *Rendering* - v X11 provádí rendering samotný X server. Na druhou stranu Wayland deleguje práci na jednotlivé své klienty.
* *Bezpečnost* - Wayland striktně odděluje vstupní a výstupním komunikaci mezi jednotlivými klienty. V současné době tak například není možné sdílení plochy pomocí třetí aplikace (ať už přímo systémovou aplikací například v GNOME, nebo internetovým prohlížečem). Došlo tak k výraznému navýšení bezpečnosti.
* *Bezpečnost* - Wayland striktně odděluje vstupní a výstupním komunikaci mezi jednotlivými klienty. V současné době tak například není možné sdílení plochy pomocí třetí aplikace (ať už přímo systémovou aplikací například v GNOME, nebo internetovým prohlížečem). Došlo tak k výraznému navýšení bezpečnosti. link:https://www.reddit.com/r/linux/comments/8fcfdn/how_insecure_is_xorg/[Explanation]
Každý display server který implementuje protokol Wayland se nazývá link:https://en.wikipedia.org/wiki/Wayland_(display_server_protocol)#Wayland_compositors[Wayland compositor]. Display server link:https://en.wikipedia.org/wiki/Wayland_(display_server_protocol)#Weston[Weston], je pak jeho ukázkovou implementací. Mezi další Wyaland compositor se řadí právě link:https://swaywm.org/[Sway].
......@@ -94,14 +99,14 @@ input 1:1:AT_Translated_Set_2_keyboard {
----
== Systémové nástroje
Sway je opravdu jen a pouze Wayland compositor, a proto je nutné doinstalovat spoustu systémových nástrojů, od lock manager začínaje a po ovládání hlasitosti konče. Nepřekvapivě, lze většinu z níže popsaných nástrojů nainstalovat pomocí `pacman`, a co nenajde `pacman` najde `yaourt` (ať žije AUR).
Sway je opravdu jen a pouze Wayland compositor, a proto je nutné doinstalovat spoustu systémových nástrojů, od lock manager začínaje a po ovládání hlasitosti konče. Nepřekvapivě, lze většinu z níže popsaných nástrojů nainstalovat pomocí `pacman`, a co nenajde `pacman` najde `yay` (ať žije AUR).
=== link:https://github.com/swaywm/swaylock[`swaylock`] - Lock manager
Jak již název napovídá, _lock manager_ je nástroj starající se o uzamykání PC. Nic víc, nic míň. Přijemným zjištěním pro mě bylo, že na rozdíl od různých lock managerů pro i3, funguje bezproblémově i při uspávání PC. Dříve se totiž stávalo, že se PC po probuzení načetl a pak teprve uzavřel, takže bylo někdy krátce (někdy déle) vidět, na čem uživatel právě pracuje.
[TIP]
====
Pokud máte výkonný PC, můžete si napsat script, který vždy před uzavřením PC udělá screenshot a provede rozmazání. Takto znetvořená fotka se pak použije jako pozadí pro uzamykací obrazovku.
Od doby prvního vydání uplynolu již mnoho času a tak se komunita uživatelů postarala o nemalé množství různých verzí. Za zníňku stojí například link:https://github.com/mortie/swaylock-effects[swaylock-effects], který umí zobrazovat čas na zamčené obrazovce nebo vždy před uzavřením PC udělat screenshot a provést rozmazání obrazu. Takto znetvořená fotka se pak použije jako pozadí pro uzamykací obrazovku.
====
=== link:https://github.com/swaywm/swayidle[`swayidle`] - Idle manager
......@@ -169,13 +174,73 @@ Na zachycení obrazovky slouží utilita `grim`. Toto může být jedno z jejíc
bindsym Print exec bash -c "grim \"/home/juhlik/Pictures/Screenshot-$(date +%s).png\""
----
[#waybar]
=== link:https://github.com/ammen99/wf-recorder[`wf-recorder`] - Screen recorder
Pro natáčení obrazovky pak slouží utilita `wf-recorder`.
[#waybar]
=== link:https://github.com/emersion/slurp[`slurp`] - Select a region
Nedílnou součástí `grim` a `wf-recorder` je pak `slurp`, který uživately dovolí zvolit geometrii zachycované obrazovky. Například:
[source,bash]
----
$ grim -g "$(slurp)" screenshot.png
----
[#waybar]
=== link:https://github.com/Alexays/Waybar[`waybar`] - Alternative Sway bar
Výchozí lišta sway je prakticky totožná s lištou, kterou známe z i3. Je zde však možnost přejít k alternativní, modulární a široce konfigurovatelné liště `waybar`. Veškeré nastavení nalezneme v adresáři `~/.config/waybar`.
image::waybar.png[title=Ukázka Waybar.]
Za zmínku stojí nově přidaná podpora tzn. _idle inhibitor_, který zabrání `swayidle` v uzamknutí obrazovky.
Za zmínku stojí nově přidaná podpora tzn. _idle inhibitor_, který zabrání `swayidle` v uzamknutí obrazovky.
[TIP]
====
V utilitce `waybar` doposud chybí modul pro zobrazování aktuálního rozložení klávesnice. Ten je možno dopsat manuálně.
`~/.config/waybar/modules/kblayout`:
[source,bash]
----
#!/bin/bash
# See: https://github.com/Alexays/Waybar/pull/85
swaymsg -t get_inputs | jq -r \
"first(.[]|select(.identifier == \"$1\" and .type == \"keyboard\")) \
| .xkb_active_layout_name \
| .[0:2] \
| ascii_upcase"
swaymsg -mrt subscribe '["input"]' | jq -r --unbuffered \
"select(.change == \"xkb_layout\")
| .input
| select(.identifier == \"$1\" and .type == \"keyboard\") \
| .xkb_active_layout_name \
| .[0:2] \
| ascii_upcase"
----
`~/.config/waybar/config`:
[source,config]
----
...
"custom/layout": {
"format": " {}  ",
"exec": "~/.config/waybar/modules/kblayout '1:1:AT_Translated_Set_2_keyboard'",
"tooltip": false
},
"custom/layout_ext": {
"format": " {}  ",
"exec": "~/.config/waybar/modules/kblayout '1133:8208:Logitech_K800'",
"exec-if": "swaymsg -t get_inputs | grep '1133:8208:Logitech_K800'",
"tooltip": false
}
...
----
Všimněme si, že každá připojená klávesnice může mít (má) vlastní rozložení klávesnice.
====
=== link:https://github.com/pulseaudio/pulseaudio[`pulseaudio`] a link:https://github.com/pulseaudio/pavucontrol[`pavucontrol`] - Sound manager
Jako link:https://en.wikipedia.org/wiki/Sound_server[sound server] můžeme využít například `pulseaudio`. Pro regulaci hlasitosti pak můžeme využít příkaz `pulsemixer --change-volume +5`, popřípadě `pulsemixer --toggle-mute`.
......@@ -207,6 +272,16 @@ default-timeout=5000
image::notification.png[title=Ukázka notifikace.]
[TIP]
====
Pro rychlé testování notifikací může posloužit příkaz `notify-send`:
[source,bash]
----
$ notify-send HELP 'I need somebody'
----
====
=== link:https://github.com/minus7/redshift/tree/wayland[`redshift`] - Adjusts the color temperature
`redshift` je nástroj pro úpravu barvy obrazovky. Typické použití je snížení hladiny modrého světla ve večerních hodinách. Člověku pak méně bolí oči a lépe se mu usíná (pozor subjektivní názor!). Pro instalaci je nutné zvolit verzi z AUR konkrétně link:https://aur.archlinux.org/packages/redshift-wlr-gamma-control-git/[redshift-wlr-gamma-control-git].
......@@ -228,7 +303,7 @@ exec redshift
----
=== link:https://github.com/swaywm/swaybg[`swaybg`] - Background
_Added 06/06/2019_. Nastavení pozadí plochy bylo přemístěno z konfiguračního souboru `sway` do samostaného programu `swaybg`.
Nastavení pozadí plochy bylo přemístěno z konfiguračního souboru `sway` do samostaného programu `swaybg`.
[source]
.~/.config/sway/config
......@@ -237,7 +312,28 @@ exec swaybg --image ~/Pictures/f29.png --mode fill
----
=== link:https://github.com/emersion/kanshi[`kanshi`] - Dynamic display configuration
_Added 09/06/2019_. Nástroj pro automatickou detekci připojeného monitoru. Zatím nevyzkoušeno.
Nástroj pro automatickou detekci připojeného monitoru. Syntaxe konfigurace je pak podobná jako pro `sway`. Soubor se při detekci změny prochází od shora dolů a aplikuje se první nastavení, které se shoduje s detekovanou konfigurací.
[source,config]
----
{
output "Chimei Innolux Corporation 0x14F2 0x00000000" position 3000,1520 mode 1920x1080 scale 1.1
output "Eizo Nanao Corporation EV2455 0x0000FF02" position 1080,1500 mode 1920x1200
output "Acer Technologies H223HQ LF70D0028500" position 0,1080 mode 1920x1080 transform 270
}
{
output eDP-1 mode 1920x1080 scale 1.1
}
----
=== link:https://git.sr.ht/~sircmpwn/wshowkeys[`wshowkeys`] - Displays keypresses on screen
Pro prezentační účely se jistě hodí utilita `wshowkeys`, která zobrazuje právě stisknuté znaky na display. Zatím se mi ale nepovedlo správě zprovoznit.
[source,bash]
----
$ wshowkeys -t 1 -a bottom -a left
----
== Prokletí HiDPI
Po velmi dlouhou dobu panovalo přesvědčení (alespoň tedy na straně výrobců monitorů), že FullHD rozlišení (1920x1080), je plně dostateční a není tak důvod jej z budoucnosti u domácích monitorů zvyšovat. Díky Bohu, že jsou tyto názory již dnes passé. Bežně se tak již můžeme setkat s rozlišením QHD (2560x1440) či dokonce 4K UHD (3840 × 2160). Těmto obrazovkám s vysokým rozlišením se v počítačovém žargonu říká link:https://wiki.archlinux.org/index.php/HiDPI[High Dots Per Inch].
......
demo.pdf
*.fls
*.acn
*.acr
*.alg
*.aux
*.bbl
*.blg
*.dvi
*.fdb_latexmk
*.glg
*.glo
*.gls
*.idx
*.ilg
*.ind
*.ist
*.lof
*.log
*.lot
*.maf