Hlavní navigace

Arch Linux: virtuální plochy JWM, pořízení snímků obrazovky

12. 5. 2016
Doba čtení: 11 minut

Sdílet

Minulý díl byl věnován správě sezení, uzamčení obrazovky/účtu a nastavení ikon v hlavním menu JWM. V dnešním dílu ukončíme konfiguraci JWM nastavením virtuálních ploch a ukázkou pořízení snímků obrazovky.

Dnes navážeme na minulý díl a ukážeme si poslední položku v konfiguraci JWM. Jak je z předchozích dílů patrné, kromě jiného máme v rámci JWM k dispozici správce virtuálních ploch. V základní konfiguraci jsou k dispozici celkem čtyři a jsou označené číslicemi 1–4. To nám ukazuje první obrázek v první galerii. My si ukážeme, jak změnit počet virtuálních ploch, jejich název a pozadí. Základní konfigurace se nachází v dílčím konfiguračním souboru desktops a pro nastavení virtuálních ploch slouží dva parametry:

<Desktops width="4" height="1">
<Background type="solid">#111111
</Desktops>

První parametr definuje počet a uspořádání virtuálních ploch: width = počet ploch ve vodorovném směru (sloupce), height = počet ploch ve svislém směru (řádky). Abychom zachovali přehledné uspořádání, ponecháme v zobrazení pouze jeden řádek a snížíme počet ploch na tři. Změna je jasná a nemá cenu ji blíže komentovat a uvádět text.

Výsledek je viditelný na druhém obrázku první galerie. Dalším parametrem (Background) se nastavuje pozadí plochy, v konkrétním případě pro všechny definované plochy stejné. Kromě uvedeného nastavení lze použít pro pozadí plochy několik variant:

  • solid – jednoznačně definovaná jednolitá barva
  • gradient – definovaný barevný přechod
  • image – roztažený obrázek
  • scale – zmenšený obrázek
  • tile – dlaždicový obrázek
  • command – příkaz pro nastavení pozadí, běh nějaké další aplikace

My si ukážeme nastavení pozadí pro každou plochu extra, ale k tomu potřebujeme definovat plochy trochu jinak. Proto využijeme další možnost konfigurace JWM a vytvoříme si naše tři plochy s definovaným názvem a pozadím. Na pozadí můžeme použít libovolný obrázek, ale my budeme konkrétně instalovat jeden balíček s obrázky pozadí, které následně využijeme:

packer -S gnome-backgrounds

Dále si vytvoříme nový adresář

mkdir ~/.config/jwm/Backgrounds

a z adresáře /usr/share/backgrounds/gnome do něj nakopírujeme tři obrázky pozadí, např.: Godafoss_Iceland, Road, Stones. Pak si otevřeme dílčí konfigurační soubor desktops a provedeme několik změn:

  • vymažeme komentář a nastavení jednotného pozadí všech virtuálních ploch
  • místo toho přidáme definici tří deklarovaných ploch včetně názvů a odkazů na obrázky s pozadím
    <Desktop name="A">
    <Background type="scale">Godafoss_Iceland.jpg</Background>
    </Desktop>
    
    <Desktop name="B">
    <Background type="scale">Road.jpg</Background>
    </Desktop>
    
    <Desktop name="F">
    <Background type="scale">Stones.jpg</Background>
    </Desktop>

Na třetím obrázku v první galerii je vidět, že pokud se změny uloží a restartuje se JWM, změní se sice název ploch, ale pozadí nikoliv. K tomu se ale ještě vrátíme a zkusíme najet nad zobrazení virtuálních ploch kurzorem myši. Můžeme pozorovat dvě věci: při najetí na vybranou plochu se objeví nápověda s názvem plochy a skrolovací tlačítko přepíná mezi jednotlivými plochami pořád dokola. Je samozřejmě možné si definovat přepínání ploch také pomocí klávesových zkratek, ale není to vlastně bezpodmínečně nutné. V dílčím konfiguračním souboru keybinds máme v základu totiž definovanou tuto akci

<Key mask="A" key="#">desktop#</Key>

Tato akce nám zajistí možnost přepnutí virtuální plochy pomocí kombinace kláves Alt+příslušné číslo plochy. K tomu je třeba uvést dvě důležité informace:

  1. k přepnutí se musí použít příslušné pořadové číslo plochy bez ohledu na to, jak je plocha pojmenovaná
  2. není možné použít číselné klávesy z numerické klávesnice, i když je zapnutá. Pro kombinaci je NUTNÉ použít čísla z horní řady kláves na klávesnici (zřejmě kvůli využití na notesech, kde nemusí být numerická klávesnice samostatně k dispozici)

To by k ovládání virtuálních ploch mohlo stačit a vrátíme se k pozadí. Je asi jasné, že se nám nemohlo zobrazit, protože se sice odkazujeme na nějaké obrázky, ale JWM neví, kdy se nacházejí. Náprava je velmi jednoduchá: otevřeme si dílčí konfigurační soubor icons a přidáme další řádek textu:

<IconPath>$HOME/.config/jwm/Backgrounds</IconPath>

Změny uložíme a restartujeme JWM. Jak ukazují následující tři obrázky první galerie, pro každou plochu je k dispozici vlastní pozadí. Jako poslední ukázky konfigurace si ukážeme tři možnosti – již dříve zmíněné přidání nápovědy k vybrané položce menu, systémové akce v rámci hlavního menu a přidání nových příkazů do menu pro tvorbu snímků obrazovky.

Nápověda položky v hlavním menu

Tato funkce slouží k tomu, aby bylo možné k jednotlivým položkám menu přidávat uživatelskou nápovědu. Je možné jí využít prakticky všude a velmi jednoduše. Jako ukázku si uvedeme pouze jeden příklad za všechny:

<Program icon="terminal.png" label="Terminál" tooltip="Emulátor terminálu Lilyterm">lilyterm</Program>

Na sedmém obrázku v první galerii je vidět, jak se tento změněný řádek projeví při najetí kurzoru na příslušný řádek hlavního menu.

Systémové akce v hlavním menu

O této funkce jsme již krátce informovali v minulých dílech a tak si nyní jenom stručně uvedeme, že podle dokumentace je k dispozici celkem 16 možností (Menu, Dynamic, Program, Separator, Desktops, SendTo, Stick, Maximize, Minimize, Shade, Move, Resize, Kill, Close, Restart, Exit) – viz JWM konfigurace. Jak je z výčtu zřejmé, některé z uvedených možností už jsou v našem dosavadním hlavním menu využité. My si vybereme několik dosud nepoužitých a přidáme je mezi základní sadu aplikací a celkový přehled aplikací do dílčího konfiguračního souboru:

<Separator/>
<Desktops/>
<SendTo/>
<Maximize/>
<Minimize/>
<Close/>

Z posledních třech obrázků první galerie je patrné, že se jedná o akce pro přepínání virtuálních ploch, přesun vybraného okna aplikace na vybranou virtuální plochu, maximalizaci, minimalizaci a zavření vybraného aktivního okna. Jako přílohu dáváme příslušné konfigurační soubory: původní virtuální plochyfinální virtuální plochyikony a pozadíklávesové zkratky.

Snímky obrazovky

Pro tuto činnost je k dispozici nejenom uživatelům Arch Linuxu více aplikací. My si vybereme jednu velmi jednoduchou, ale pro většinu běžných uživatelů dostatečnou utilitku Scrot. Jedná se o aplikaci pro příkazovou řádku, která má ale celkem dost možností využití a konfigurace. V první fázi si jí musíme instalovat. Vzhledem k tomu, že je v oficiálním repozitáři, to nebude žádný problém:

packer -S scrot

Jak ukazuje první obrázek ve druhé galerii, jedná se o velmi malou aplikaci, která včetně tří závislostí obsadí cca 1,3 MB na disku. Po instalaci se můžeme podívat do nápovědy. Ta je trochu obsáhlejší, takže jí dáváme do přílohy nápověda Scrot. Pokud do přílohy nahlédneme, je možné zjistit, že Scrot opravdu nabízí docela zajímavé možnosti nastavení a různých akcí, čehož následně využijeme. Kromě jiného je v nápovědě i jeden příklad, který jednoduše představuje několik možností, které Scrot obsahuje. Abychom nějak konkrétně začali, stanovíme si nějaké cíle, které chceme s pomocí Scrot dosáhnout:

  • všechny vytvořené snímky se budou ukládat do jednoho vyhrazeného adresáře
  • vytvoříme 4 akce pro pořízení snímků vybraného okna, vybraného okna s nastaveným zpožděním snímku, celé obrazovky a vybrané oblasti
  • nastavíme si názvy snímků jako kombinace časové značky a rozlišení vzniklého obrázku
  • po provedení akce si necháme zobrazit systémové hlášení (notifikaci)

Začneme tím, že si vytvoříme příslušný adresář pro našeho uživatele

mkdir Screenshots

Pak přidáme do dílčího konfiguračního souboru menu další sekci (na vybrané místo) s první akcí pro pořízení snímku aktivního okna

<Menu label="Snímek obrazovky" labeled="true">
<Program label="Ativní okno">scrot '%F_%T_$wx$h_scr-aw.png' -bue 'mv $f ~/Screenshots' && sleep 1 && notify-send 'Snímek obrazovky byl uložen do příslušného adresáře'</Program>
</Menu>
<Separator/>

Změnu uložíme, restartujeme JWM a výsledek vidíme na druhém obrázku druhé galerie. Kromě toho by bylo vhodné si zadaný příkaz trochu blíže komentovat (nová sekce menu je prakticky stejná jako ty předchozí a není nutné se k ní podrobněji vracet). Obsahuje totiž několik různých akcí a příkazů a sám o sobě je trochu nepřehledný:

  1. jako první je samozřejmě příkaz pro spuštění samotné aplikace Scrot
  2. následuje parametr pro automatické vytvoření názvu nově vznikajícího snímku obrazovky/obrázku. Zde se vychází jednak z možností systémové funkce StrFTime a také z možností samotné aplikace Scrot. Název se skládá také z několika parametrů – kompletní datum (%F, náhrada za delší variantu %Y-%m-%d), aktuální systémový čas včetně vteřin (%T, jinak také %H:%M:%S), rozlišení vzniklého obrázku (šířka x výška), uvozující název souboru včetně typu snímku (aw = Active Window) a formát pro uložení obrázku
  3. další jsou tři volby pro nastavení Scrot – zahrnutí okraje okna do snímku (b), výběr aktivního okna (u) a provedení následné akce na vytvořeném snímku (e)
  4. pak je definovaná tato akce jako přesun vytvořeného snímku do deklarovaného adresáře (mv $f PATH)
  5. další je systémový příkaz sleep pro pozastavení činnosti příkazu na 1 vteřinu
  6. poslední je další příkaz notify-send, který odešle deklarovaný text/zprávu do systémového notifikátoru a ten jej zobrazí na ploše

Poslední příkaz ale nemůžeme nechat jenom tak bez dalších podrobností. Potíž je samozřejmě v tom, že žádnou aplikaci pro zobrazení uživatelských hlášení nemáme zatím k dispozici. Arch Linux nám pro tyto účely nabízí více variant – viz přehled na Arch Wiki Notifikační aplikace. Jak je z přehledu patrné, jsou tyto aplikace hlavně součástí jednotlivých DE, což je pro nás celkem nezajímavé. Proto si vybereme jednoduchý systém, který je přesně určený pro různá lehké až minimalistické WM – Dunst. Pro naše účely bude naprosto dostatečný. Než se na něj podíváme blíž, musíme samozřejmě instalovat příslušný balíček (je v oficiálním repozitáři), nastavíme si základní uživatelskou konfiguraci ve dvou krocích: vytvoříme příslušný adresář a do něj zkopírujeme globální konfigurační soubor, který byl vytvořen při instalaci. Vše se dá provést pomocí tří postupně spuštěných příkazů:

packer -S dunst
mkdir ~/.config/dunst
cp /usr/share/dunst/dunstrc ~/.config/dunst

Po instalaci si můžeme prohlédnout uživatelský konfigurační soubor, kde zjistíme, že je poměrně rozsáhlý – cca 250 řádků. Když se ale podíváme blíž, tak zjistíme, že většina z toho jsou komentáře nebo zakomentované příkazy jako ukázka. My ponecháme valnou většinu parametrů beze změny a provedeme pouze tři následující úpravy:

  • na řádku č. 2 změníme velikost fontu
    Monospace 12
  • na řádku č. 24 nastavíme formát zobrazeného hlášení
    format = "<b>%a=>%s</b>\n%b"
  • na řádku č. 67 změníme geometrii zobrazené hlášky
    geometry = "0x15-30+20"

Provedené změny zvětší font písma, přidají do zobrazení navíc název aplikace, které hlášení odesílá a nastaví geometrii zobrazeného rámečku tak, aby se jeho šířka přizpůsobila délce zobrazovaného textu, výška byla nastavena pevně a rámeček se zobrazil v pravém horním rohu obrazovky. Změny uložíme a pro jistotu restartujeme virtuální stroj. Po jeho novém spuštění můžeme vyzkoušet nově vloženou funkci pro pořízení snímku obrazovky. Na třetím obrázku ve druhé galerii můžeme vidět, že po spuštění akce se skutečně objevilo hlášení příslušné aplikace a na čtvrtém obrázku druhé galerie pak to, že se v příslušném adresáři objevil nový soubor s obrázkem snímku. Tím pádem máme tuto konkrétní akci vyřešenou a můžeme se pustit do další. Do dílčího konfiguračního souboru menu přidáme další řádek pro snímek aktivního okna se zpožděním:

<Program label="Aktivní okno se zpožděním">notify-send 'Snímek obrazovky bude uložen za 5s do příslušného adresáře' & scrot '%F_%T_$wx$h_scr-awd.png' -bud 5 -e 'mv $f ~/Screenshots' && sleep 1 && notify-send 'Snímek obrazovky byl uložen do příslušného adresáře'</Program>

Od prvního příkazu se tento liší ve třech věcech:

  • jako první je provedeno zobrazení hlášky o tom, že snímek aktivního okna bude uložen za deklarovanou dobu
  • volby pro nastavení obsahují další možnost (d 5) pro zpoždění ve vteřinách
  • nastavení k provedení akce musí být umístěno zvlášť až po nastavení zpoždění

Po provedení snímku tímto způsobem se objeví postupně dvě hlášky o zpoždění a uložení snímku do adresáře, jak to ukazuje pátý obrázek ve druhé galerii. Dalším v pořadí je příkaz pro uložení snímku celé obrazovky:

<Program label="Celá obrazovka">scrot '%F_%T_$wx$h_scr-fs.png' -e 'mv $f ~/Screenshots' && sleep 1 && notify-send 'Snímek obrazovky byl uložen do příslušného adresáře'</Program>

Tato akce je ještě jednodušší, než byla první uvedená. Je zde pouze jedna hláška a také pouze nastavení akce pro přesun vytvořeného snímku bez dalších parametrů. Poslední příkaz je pak pro snímek vybrané oblasti obrazovky:

skoleni

<Program label="Výběr oblasti snímku">notify-send 'Výběr bude uložen do příslušného adresáře' & scrot '%F_%T_$wx$h_scr-sa.png' -se 'mv $f ~/Screenshots' && sleep 1 && notify-send 'Snímek obrazovky byl uložen do příslušného adresáře'</Program>

Zde jsou opět dvě hlášky, jedna jako výzva pro výběr oblasti a druhá o uložení snímku a pouze jeden parametr aplikace pro snímání oblasti (s). Jako poslední věc z této části konfigurace dáváme do přílohy aktuální obsah konfiguračního souboru konfigurace Dunst a novou verzi dílčího konfiguračního souboru hlavní menu. Tímto bychom také mohli uzavřít delší kapitolu o konfiguraci JWM, i když jsme ještě neprobrali vše, co je zde možné nastavit. Jedná se o dvě oblasti, kterými se nebudeme zabývat a které případní zájemci najdou v dokumentaci:

  • Groups settings – nastavení různých vlastností spouštěných oken aplikací (umístění, velikost, otevření na definované virtuální ploše, maximalizace/minimalizace při spuštění, titulky atd.)
  • nastavení vzhledu a stylu různých součástí JWM – Window/Clock/Tray/Task List/Tray Button/Pager/Menu/Popup Style

Dnešní díl jsme věnovali nastavení virtuálních ploch v JWM a krátce jsme si představili některé systémové akce v hlavním menu. Na závěr dílu jsme si ukázali jednu z možností, jak do hlavního menu přidat akce pro pořízení snímků obrazovky. Kapitola o konfiguraci JWM pak byla ukončena odkazem na další možnosti bez bližšího popisu. V příštím dílu se vrátíme zpět k základům Arch Linuxu a ukážeme si další terminálové aplikace pro správu balíčků a také některé grafické aplikace pro tento účel. Pak si také ukážeme vybrané správce přihlášení a na závěr srovnáme JWM s jiným WM a DE.