Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: fcitx5 - přejdi na vyšší level psaní  (Přečteno 507 krát)

ramael

  • Stálý člen
  • **
  • Příspěvků: 800
fcitx5 - přejdi na vyšší level psaní
« kdy: 20 Dubna 2025, 13:27:00 »
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:

Kód: [Vybrat]
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:
Kód: [Vybrat]
~/.local/share/fcitx5/data/quickphrase.d/*.mb

Formát je jednoduchý TSV:
Kód: [Vybrat]
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 systemd

systemd 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

Kód: [Vybrat]
[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

Kód: [Vybrat]
[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:
Kód: [Vybrat]
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ěr

Chtě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.
Lenovo: ThinkPad X380 Yoga
Joutůůůůb

 

Provoz zaštiťuje spolek OpenAlt.