Microsoft poskytl FBI uživatelské šifrovací klíče svého nástroje BitLocker, nutné pro odemčení dat uložených na discích třech počítačů zabavených v rámci federálního vyšetřování. Tento krok je prvním známým případem, kdy Microsoft poskytl klíče BitLockeru orgánům činným v trestním řízení. BitLocker je nástroj pro šifrování celého disku, který je ve Windows defaultně zapnutý. Tato technologie by správně měla bránit komukoli kromě
… více »Spotify prostřednictvím svého FOSS fondu rozdělilo 70 000 eur mezi tři open source projekty: FFmpeg obdržel 30 000 eur, Mock Service Worker (MSW) obdržel 15 000 eur a Xiph.Org Foundation obdržela 25 000 eur.
Nazdar! je open source počítačová hra běžící také na Linuxu. Zdrojové kódy jsou k dispozici na GitHubu. Autorem je Michal Škoula.
Po více než třech letech od vydání verze 1.4.0 byla vydána nová verze 1.5.0 správce balíčků GNU Guix a na něm postavené stejnojmenné distribuci GNU Guix. S init systémem a správcem služeb GNU Shepherd. S experimentální podporou jádra GNU Hurd. Na vývoji se podílelo 744 vývojářů. Přibylo 12 525 nových balíčků. Jejich aktuální počet je 30 011. Aktualizována byla také dokumentace.
Na adrese gravit.huan.cz se objevila prezentace minimalistického redakčního systému GravIT. CMS je napsaný ve FastAPI a charakterizuje se především rychlým načítáním a jednoduchým ukládáním obsahu do textových souborů se syntaxí Markdown a YAML místo klasické databáze. GravIT cílí na uživatele, kteří preferují CMS s nízkými nároky, snadným verzováním (např. přes Git) a možností jednoduchého rozšiřování pomocí modulů. Redakční
… více »Tým Qwen (Alibaba Cloud) uvolnil jako open-source své modely Qwen3‑TTS pro převádění textu na řeč. Sada obsahuje modely VoiceDesign (tvorba hlasu dle popisu), CustomVoice (stylizace) a Base (klonování hlasu). Modely podporují syntézu deseti různých jazyků (čeština a slovenština chybí). Stránka projektu na GitHubu, natrénované modely jsou dostupné na Hugging Face. Distribuováno pod licencí Apache‑2.0.
Svobodný citační manažer Zotero (Wikipedie, GitHub) byl vydán v nové major verzi 8. Přehled novinek v příspěvku na blogu.
Byla vydána verze 1.93.0 programovacího jazyka Rust (Wikipedie). Podrobnosti v poznámkách k vydání. Vyzkoušet Rust lze například na stránce Rust by Example.
Svobodný operační systém ReactOS (Wikipedie), jehož cílem je kompletní binární kompatibilita s aplikacemi a ovladači pro Windows, slaví 30. narozeniny.
Společnost Raspberry Pi má nově v nabídce flash disky Raspberry Pi Flash Drive: 128 GB za 30 dolarů a 256 GB za 55 dolarů.
V Unixových operačních systémech si můžeme pro každou netriviální, a opakující se činnost napsat skript. Pokud je určen pouze pro naši potřebu, není problém. Když ho mají používat odborníci (správci, programátoři, ...), stačí napsat dokumentaci, nebo manuálové stránky. Jenže pokud má sloužit i běžným uživatelům, nastává problém, protože mají ti obvykle strach z příkazové řádky a dokumentaci nikdy nečtou.
A vývojáři KDE přišli s řešením. Kommander je přímo určen pro psaní jednoduchých GUI aplikací. Díky technologii DCOP (viz KDE: tipy a triky - III (DCOP a KDialog)), kterou Kommander vnitřně používá, je možné ze skriptu ovládat grafické prvky - widgety. Také nám odpadají problémy s binární kompatibilitou knihoven, od toho nás odstiňuje Kommander. Celý projekt je uložen v jednom SGML souboru, takže jeho instalace je velmi jednoduchá. Týká se to i binárních souborů, například obrázků, které jsou uloženy v souboru v textové podobě. Parser Kommanderu funguje jako makrojazyk a bohužel má i spoustu velmi nepříjemných omezení.
Od Kommanderu verze 1.2, který je součástí KDE od verze 3.4 je k dispozici nový parser, který se velmi liší od toho starého. V dalším textu budu mluvit o tom starém. Nový parser je relativní novinka a většina aplikací na kde-apps.org používá ten starší, nemluvě o tom, že je použitelný až od KDE verze 3.4. Nový parser bude tématem dalších dílů.
Dost už bylo textu, je na čase uvést nějaký obrázek. Kommander se
sestává ze svou programů. Kommander Executor (kmdr-executor),
který provádí skripty uložené v souborech kmdr. Druhým je
Kommander Editor (kmdr-editor), vývojový nástroj, v němž se
navrhují dialogy a píše kód.

Při spuštění se můžeme podívat na obrázek kočky, ale moc dlouho ji
neuvidíte, protože Editor startuje velmi rychle. Pokud jste někdy psali
projekt pro KDE, nebo Qt, bude vám jeho prostředí připadat velmi známé. Je
to totiž upravený (a zjednodušený) Qt Designer od Trolltechu. Soubor se
skriptem je prakticky totožný, s ui souborem, který generuje
Designer.
Přeskočme teorii a přejdeme rovnou k praxi. Od dob K&R je tradicí, že prvním příkladem je aplikace, která vypisuje Hello, world!. Já se rozhodl tuto tradici porušit a to ze dvou důvodů. Jednak je tento příklad nevhodný pro předvedení Kommanderu. Za druhé považuji čtenáře abclinuxu.cz za tak inteligentní, aby pochopili i složitější příklad: aplikaci pro snímání oken z obrazovky - kommander-1-snap.kmdr.

Všichni jistě znáte způsob, jak vyfotit v X Window okno (viz Snímání
obrazovky aneb vyfoťte si okno). Jenže příkaz xwd ukládá
do stejnojmenného formátu. Pokud chceme rozumný, všeobecně používaný formát
PNG, celý proces se nám roztáhne na takovou kolonu příkazů:
xwd | xwdtopnm | pnmtopng > foo.png
Geekové žasnou, ale běžného uživatele tím asi moc nepřesvědčíte. Proto tento kód přiřadíme tlačítku Shot!. V kontextovém menu tlačítka zvolíme Edit Kommander Text a do okna tu kolonu napíšeme.

Jak prosté! Teď máme jednoduchou grafickou aplikaci, která vyfotí
aktuální okno a uloží do souboru ~/foo.png. Akce je přiřazena
tlačitku jménem BtnShot, typu ExecButton. Tohle
řešení není moc dobré, uživatel by měl mít možnost si vybrat jméno souboru
a jeho umístění. Kód je nutné trochu modifikovat
@setGlobal(IMG,@exec(tempfile))
xwd | xwdtopnm | pnmtopng > @global(IMG)
@BtnSave.setEnabled(true)
Co jsme teď udělali? Za prvé neukládáme obrázek do domácího adresáře,
ale do souboru, který vytvoří příkaz tempfile v adresáři
/tmp. Jméno nově vytvořeného souboru je důležité, a protože s
ním budeme pracovat i v dalších částích kódu, uložíme si jej příkazem
@SetGlobal() do globální proměnné IMG. Ve druhém
řádku již přesměrováváme výstup do proměnné IMG, jejíž hodnotu
vrací @global(). No a v posledním příkazu povolíme tlačítko
BtnSave, protože už máme obrázek, takže můžeme ukládat.
@.
Stejným znakem začínají nejen příkazy, ale i jména grafických objektů a
dokonce i klíčová slova. Alespoň ve starém parseru to tak je.
Tlačítku BtnSave potom přiřadíme tento kód.
cp @global(IMG) @Input.savefile(~, *.png,"Uložit screenshot")
Ten zkopíruje soubor img na to místo, které vrátí dialog
@Input.savefile(), Prvním parametrem je výchozí adresář,
druhým filtr souborů a posledním je titulek dialogu.
Kód tlačítka BtnExit, které je typu
CloseButton už uvedu jen pro pořádek.
rm -f @global(IMG)
Tím jsme získali jednoduchou aplikaci na tvorbu screenshotů obrazovky.
Její největší nevýhodou je špatná správa souborů v /tmp, které
se ne vždy smažou. Každý obslužný událostní skript běží nezávisle na
ostatních, takže příkaz trap nám zde nepomůže. Ale ilustrační
aplikaci to můžeme odpustit.
Není nic smutnějšího, než když widgety nedokáží reagovat na změnu velikosti okna a aplikace potom dopadne nějak takto:

Snap se pochopitelně chová správně:

Kdysi dávno jsem měl tu čest vidět aplikaci ve Visual Basicu, kde se o rozložení widgetů v okně staral přímo programátor. Ještě dnes si vzpomínám na ta kvanta kódu, která musela být napsána a taky na to, že žádosti o změny uživatelského rozhraní byly předem odmítnuty. Nevím, zda dotyčný jenom nevěděl, anebo to skutečně nešlo. Každý lepší toolkit obsahuje svého správce rozložení, který se o rozložení widgetů stará automaticky.
Kommander používá stejný toolkit jako KDE, a proto i správce rozložení jsou ty, které používá Qt.
V našem příkladě vidíme, že jsou všechna tlačítka pod sebou, takže je můžeme libovolně naskládat na formulář, označit, dát vertikální rozložení a ony se srovnají, jak potřebujeme (jenom změníme jejich velikost na požadovanou). Nakonec ještě vybereme layout pro celý formulář (v tomto případě je to úplně jedno, který vybereme) a máme pěkně fungující formulář, který reaguje na změny velikosti okna a bez jakéhokoliv řádku kódu.
![]() |
![]() |
![]() |
![]() |
Chování widgetů se dá ještě detailněji nastavit pomocí vlastnosti Size Policy.

V mnoha případech nechceme, aby byl jeden prvek těsně u druhého. Proto potřebujete nějakým způsobem správci rozložení říci, jak se má chovat. Toto zabezpečují spacers (překládám jako rozpěrky). Může se stát, že budeme chtít, aby byla mezi tlačítkem Konec a zbytkem mezera. Takže přidáme rozpěrku mezi Konec a Uložit a mezera mezi nimi je na světě.


Podobně jako mají widgety Size Policy, jsou všechny rozpěrky nastavitelné.

V tomto díle jste se seznámili s Kommanderem. Dozvěděli jste se, že má nový a starý parser, který je pouze makrojazykem. Umíte napsat primitivní aplikaci a víte, jak pracuje správce rozložení. V dalším díle si rozebereme složitější aplikaci, na které si ukážeme více rysů jazyka Kommanderu.
Nástroje: Tisk bez diskuse
Tiskni
Sdílej:
@Input.savefile(~, *, foo)Funguje tak, jak má. KDE je taky 3.4.