Po několika příspěvcích a dotazech – a hlavně s tím, že mi to osobně dlouho chybělo – jsem se rozhodl, že je na čase popsat něco, co může pomoct nejen mně, ale i začátečníkům, školákům a komukoliv, kdo chce psát pohodlněji.
Proč jsem to začal řešit?Chtěl jsem vstupní metodu, kde si každý může definovat vlastní zkratky a ty se budou přepisovat na znaky, které normálně hledáme na Google nebo v tabulkách UTF-8.
Například:
1/2 ½
^2 ²
_3 ₃
Začal jsem tedy psát vlastní program v Rustu
https://github.com/RadekRojik/znaky. Funguje celkem dobře, ale když jsem se ho snažil začlenit do iBus, zjistil jsem, že:
- buď to nešlo čistě (problémy s rozhraním iBus),
- nebo jsem vytvořil něco, co připomínalo (vlastně bylo) keylogger (a to nechceš, tedy já určitě ne).
A pak jsem zjistil zásadní věc a to
fcitx5.
Fcitx5 je moderní vstupní metoda pro Linux, která umožňuje pokročilé zadávání znaků – nejen v asijských jazycích, ale i při běžném psaní.
Je to nástupce populárního
fcitx4, přepsaný s důrazem na modularitu, rychlost a podporu
Waylandu.
Používá se tam, kde je potřeba:
- vkládat Unicode znaky (např. ① ⊕ ⟶ ≠ ∞ ⊂),
- psát smajlíky a emoji přímo z klávesnice (😎 👍 💡),
- měnit rozložení klávesnice nebo jazyk (např. cz/us),
- nebo používat vlastní fráze přes addon QuickPhrase.
Funguje perfektně i v
Wayland prostředích (např. GNOME, KDE, Hyprland). Hyprland je můj momentální kůň.
V KDE bývá fcitx5 dokonce
předinstalovaný jako výchozí vstupní metoda.
---
Addon pro fcitx5 quickphrase umožňuje slovníkovou metodou měnit výrazy:
- stisknout Win+; (nebo jinou vámi zvolenou zkratkou),
- zadat zkratku např. ^2,
- a automaticky to doplní definovaný text (např. ²).
Slovníky se ukládají do:
~/.local/share/fcitx5/data/quickphrase.d/*.mb
Formát je jednoduchý TSV:
1/2 ½
^2 ²
_3 ₃
brb Be right back
omw On my way
---
Problém: změna v souboru QuickPhrase se
neprojeví za běhu.
Bez restartu fcitx5 se nové fráze nepřečtou.
Ale! fcitx5 poskytuje D-Bus rozhraní, kde lze addon reloadnout přímo.
---
A tak jsem napsal řešení přes systemdsystemd path ohlídá složku kde quickphrase načítá slovníky. Pokud dojde k nějaké změně (zápis, mazání, vytvoření) zavolá službu fcitx_slovnik.service
~/.config/systemd/user/fcitx_slovnik.path[Unit]
Description=Watch quickphrase.d for changes
[Path]
PathChanged=%h/.local/share/fcitx5/data/quickphrase.d
PathModified=%h/.local/share/fcitx5/data/quickphrase.d
Unit=fcitx_slovnik.service
[Install]
WantedBy=default.target
A fcitx_slovnik.service jen zavolá dbus s příslušným požadavkem:
~/.config/systemd/user/fcitx_slovnik.service[Unit]
Description=Reload fcitx5 QuickPhrase addon
[Service]
Type=oneshot
ExecStart=/usr/bin/busctl call --user org.fcitx.Fcitx5 /controller org.fcitx.Fcitx.Controller1 ReloadAddonConfig s quickphrase
Aktivace:systemctl --user daemon-reload
systemctl --user enable --now fcitx_slovnik.path
---
Poznámky:- modul po aktivaci klávesovou zkratkou nabízí realtime shody mezi kterýma je možno vybírat tabulátorem. Potvrzuje se mezerníkem, ne entrem.
- Fcitx5 načítá pouze soubory s příponou .mb (např. custom.mb, math.mb...).
- Formát: každá zkratka a výstup odděleny tabulátorem.
- Po každé změně se addon automaticky přenačte – bez restartu fcitx5.
---
ZávěrChtěl jsem vytvořit jednoduchou vstupní metodu pro školáky a lidi, co si chtějí usnadnit psaní.
Nakonec jsem zjistil, že nic lepšího než fcitx5 + QuickPhrase dnes není třeba vymýšlet – jen ho pořádně využít.
Žádný root, sudo a já nevím co. Vše běží bezpečně v user space.
Takže pokud používáte fcitx5, tohle je váš nový kamarád. 😉
A pokud nepoužíváte, nainstalujte a bude to kamarád.