The Document Foundation, organizace zastřešující projekt LibreOffice a další aktivity, zveřejnila výroční zprávu za rok 2024.
Byla vydána nová stabilní verze 7.6 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 140. Přehled novinek i s náhledy v příspěvku na blogu.
Byla vydána verze 1.90.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.
GNUnet (Wikipedie) byl vydán v nové major verzi 0.25.0. Jedná se o framework pro decentralizované peer-to-peer síťování, na kterém je postavena řada aplikací.
Byla vydána nová major verze 7.0 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Nově je postavena je na Debianu 13 (Trixie) a GNOME 48 (Bengaluru). Další novinky v příslušném seznamu.
Společnost Meta na dvoudenní konferenci Meta Connect 2025 představuje své novinky. První den byly představeny nové AI brýle: Ray-Ban Meta (Gen 2), sportovní Oakley Meta Vanguard a především Meta Ray-Ban Display s integrovaným displejem a EMG náramkem pro ovládání.
Po půl roce vývoje od vydání verze 48 bylo vydáno GNOME 49 s kódovým názvem Brescia (Mastodon). S přehrávačem videí Showtime místo Totemu a prohlížečem dokumentů Papers místo Evince. Podrobný přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře.
Open source softwarový stack ROCm (Wikipedie) pro vývoj AI a HPC na GPU od AMD byl vydán ve verzi 7.0.0. Přidána byla podpora AMD Instinct MI355X a MI350X.
Byla vydána nová verze 258 správce systému a služeb systemd (GitHub).
Byla vydána Java 25 / JDK 25. Nových vlastností (JEP - JDK Enhancement Proposal) je 18. Jedná se o LTS verzi.
Type
, Name
a Exec
, jsem si přečetl
specifikaci (a poznámky
zveřejním zde, když už jsem si ten blog založil).
V textu budu průběžně odkazovat na specifikaci verze 1.5 (jednostránkovou verzi), aby bylo snažší dohledat podrobnosti. Z této specifikace vycházím, ale tento můj text je značně zkrácený a zjednodušený.
Soubory popisující adresář se jmenují .desktop
, ostatní končí na .desktop
. Systém by
měl být schopen fallbacku na magickou detekci.
Pro aplikace by mělo platit to, že text před .desktop
je D-Bus well-known name, tedy
něco ve stylu Javovských jmenných prostorů – posloupnost částí (min. jedna) oddělených tečkou, kde každá část
nezačíná číslicí a je ze znaků [A-Za-z0-9-_]
.
Vezmu cestu relativně k adresáři v $XDG_DATA_DIRS
, odeberu prefix applications/
a nahradím
lomítka tečkami. Dostanu ID desktop souboru. Pokud je více souborů se stejným ID, má přednost ten ze dříve uvedeného
adresáře.
Soubor je podobný tzv. INI souborům. Je v UTF-8, řádky končí LF. Formát je case-sensitive.
Komentáře
uvozujeme #
,
skupiny
řádkem s názvem v hranaté závorce.
Soubor začíná magickým stringem [Desktop Entry]
, který zároveň uvozuje první skupinu.
Údaje jsou typu klíč-hodnota, kde klíč je tvořen malými, velkými, číslicemi a spojovníkem (0x2d).
Typy jsou string (jen tisknutelné ASCII), localestring (UTF-8 string pro uživatele), iconstring
(cesty a názvy ikon, UTF-8), boolean (true
, false
) numeric (float dle
scanf
s %f
v C
locale).
Stringové typy rozumí escape sekvencím \s
(pro 0x20), \n
, \t
, \r
,
a \\
.
Seznamy se v hodnotě oddělují středníkem, můžeme ho pak escapovat \;
.
Loklizované údaje značíme hranatou závorkou s locale hned za názvem klíče. Text závorky je ve formátu
lang_COUNTRY.ENCODING@MODIFIER
. Čím více toho uvedeme, tím vyšší má přednost.
Type
, který nabývá hodnot Application
, Link
, nebo Directory
.
Version
, tedy hodnota 1.5
(k době psaní textu).
Pokud je Type
rovno Link
, pak ještě URL
.
Name
(např. „KWrite“) a GenericName
(např. „Textový editor“) — název aplikace
Comment
— Poznámka pro uživatele
NoDisplay
(boolean) — Skrýt v UI
Hidden
(boolean) — Používá se pro smazání, pokud nemá uživatel přístup k systémovým Desktop souborům
OnlyShowIn
a NotShowIn
(alespoň jeden string) — Omezujeme na daná desktopová prostředí, dle
$XDG_CURRENT_DESKTOP
.
DBusActivatable
(boolean) — Aplikace se bude
aktivovat po
D-Busu místo spuštění
TryExec
— Položka se má ignorovat pokud soubor na této cestě není spustitelný
Exec
— Spustitelný soubor (tato položka má svá specifika – viz níže)
Path
— pracovní adresář
Terminal
(boolean) — označuje terminálovou aplikaci
Actions
— alternativní akce pro aplikaci, nebudu se rozepisovat, více v specifikaci
MimeType
(alespoň jeden string) — MIME typy otvírané aplikací
Categories
, Keywords
(alespoň jeden string) — více viz
specifikaci desktop menu
Implements
— Pro D-Bus, více viz specifikaci
StartupNotify
, StartupWMClass
— Kolem ukazování průběhu spouštění, má svůj
protokol
Exec
a jeho specifika
Exec
je buď absolutní cesta, nebo název programu (hledá se v $PATH
). Nultý argument by neměl
obsahovat rovnítko. Pokud použijeme uvozovky, tak dvojité a escapujeme backtick, dolar
a zpětné lomítko zpětným lomítkem.
Rezervované znaky: 0x20, 0x9, 0xd a "'\><~|&;$*?#()`
Exec
%f
— právě jeden lokální soubor k otevření
%F
— více lokálních souborů k otevření
%u
— právě jedno URL či lokální cesta k otevření
%U
— více URL či cest k otevření
%i
— ikona jako --icon cestaKIkoně
(pokud není ikona, tak nic)
%c
— název tak, jak se ukázal (tj. lokalizovaný/přeložený)
%k
— cesta či URI desktop souboru
%%
— %
doslovně
S %f
a %u
by měl být spuštěn program pro každý soubor zvlášť.
S %f
a %F
se soubor překopíruje na lokální úložiště, je-li to nutné.
Nejde uvést více než jednu proměnnou ze sady %f
, %F
, %u
, %U
.
Použití proměnné v uvozovkách způsobí nedefinované chování.
Tiskni
Sdílej:
supr článeček akorátže nemam naploše vůůbec žádný ikonky takže se nemužu kouknout jestli to jakoby fakt všecko sedí :D
jj máte voba pravdu tam jich je moc :O :D
Pěkný zápisek. Tyhle specifikace jsem před nedávnem taky studoval, když jsem psal parser INI souborů. Ty .desktop
soubory jsou jeden z dialektů. Ještě to není úplně odladěné a vydané, ale celkem už mi to funguje :-)
$ cat /usr/share/applications/org.kde.konsole.desktop \ | relpipe-in-ini --enable-sub-keys true \ | relpipe-tr-awk \ --relation "ini" - --where 'sub_key == "cs" || key !~ "Name|Comment|GenericName"' \ | relpipe-out-tabular ini: ╭──────────────────────────┬───────────────────────┬──────────────────┬─────────────────────────────────╮ │ section (string) │ key (string) │ sub_key (string) │ value (string) │ ├──────────────────────────┼───────────────────────┼──────────────────┼─────────────────────────────────┤ │ Desktop Entry │ Type │ │ Application │ │ Desktop Entry │ TryExec │ │ konsole │ │ Desktop Entry │ Exec │ │ konsole │ │ Desktop Entry │ Icon │ │ utilities-terminal │ │ Desktop Entry │ Terminal │ │ false │ │ Desktop Entry │ Categories │ │ Qt;KDE;System;TerminalEmulator; │ │ Desktop Entry │ Actions │ │ NewWindow;NewTab; │ │ Desktop Entry │ X-DocPath │ │ konsole/index.html │ │ Desktop Entry │ X-DBUS-StartupType │ │ Unique │ │ Desktop Entry │ StartupNotify │ │ true │ │ Desktop Entry │ X-KDE-AuthorizeAction │ │ shell_access │ │ Desktop Entry │ Name │ cs │ Konsole │ │ Desktop Entry │ GenericName │ cs │ Terminál │ │ Desktop Entry │ Comment │ cs │ Přístup k příkazové řádce │ │ Desktop Action NewWindow │ Name │ cs │ Otevřít nové okno │ │ Desktop Action NewWindow │ Exec │ │ konsole │ │ Desktop Action NewTab │ Name │ cs │ Otevřít novou kartu │ │ Desktop Action NewTab │ Exec │ │ konsole --new-tab │ ╰──────────────────────────┴───────────────────────┴──────────────────┴─────────────────────────────────╯ Record count: 18
Mimochodem, hodně podobné jsou konfiguráky systemd, akorát tam mají jednu záludnost/odlišnost kolem zalamování řádků… to ještě nemám implementované.