Omahub
← All plugins
I

imagineit KLM

by Imagine it

Keyboard language manager with live layout indicator, Alt+Shift switching, searchable XKB layouts, and switch OSD.

Security review

No obvious issues detected

Deterministic scan — not a security guarantee

None
Risk level
None
Analyzed commit
81089a6
Scanned
1 month ago

No potentially dangerous behavior detected in the analyzed commit.

Automated analysis only — not a security guarantee.

AI advisory review

No obvious issues detected

Language-model assessment · ~deepseek/deepseek-v4-flash-latest — advisory only

Low
AI risk level
Low
Recommendation
install
Model
~deepseek/deepseek-v4-flash-latest
Analyzed commit
81089a6
Reviewed
1 month ago

The deterministic scan found no issues, and my review found no malicious, obfuscated, or hidden behavior. The plugin intentionally runs a Python controller that can edit Hyprland's input.lua and execute hyprctl commands, but these actions are user-triggered, scoped to a clearly marked managed block, and written atomically with a backup. I rate it low rather than none because of that compositor-level integration, not because of any malicious behavior.

  • The plugin executes a local Python CLI (bin/klmctl) that can invoke hyprctl and modify ~/.config/hypr/input.lua; this is by design and documented, but it is a privileged integration point.
  • The widget can open an external URL via xdg-open; network activity is limited to explicit user interaction, matching the README and manifest.
  • The sampled source is partially truncated, so a final human review of the complete bin/klmctl and Panel.qml is prudent before publication.
How this check works

This review combines the deterministic scan (the rule-based results above) with an independent look at the plugin's code by a language model. The model reads a trimmed sample of the repository's files, the manifest, and the README, then gives a plain-language risk level and a recommendation: install (no notable danger), review (look closer first), or avoid (clearly dangerous).

It runs on the same analyzed commit as the deterministic scan and is strictly advisory — it is not a security guarantee and never blocks a plugin by itself. A human moderator still reviews plugins before they are listed.

AI advisory only — automated analysis, not a security guarantee.

Install
$ omarchy plugin add https://github.com/fstarlike/imaginit-klm --enable
System #system

imagineit KLM

<img width="387" height="586" alt="imagineit KLM panel" src="https://github.com/user-attachments/assets/d6ba6ba7-f5b8-46a1-976d-4d13acf4fcdf" />

Keyboard Language Manager for Omarchy 4 / Quattro.

imagineit KLM replaces the basic keyboard-layout label with a compact language manager designed for the Omarchy Quickshell bar.

Features

  • Current keyboard language as text in the bar (English, Persian, ...).
  • Click the label to open the language manager.
  • Add or remove layouts from the installed XKB database.
  • Optional Alt + Shift switching with both press orders supported (Alt → Shift and Shift → Alt).
  • Immediate Hyprland activelayout event tracking; no fast polling loop.
  • Centered OSD when the active language changes.
  • Right-click the bar label to switch to the next language.
  • Mouse wheel over the label switches previous/next.
  • Multi-keyboard awareness: explicit selections are synchronized across physical keyboards.
  • Persists the managed keyboard configuration in Omarchy 4's ~/.config/hypr/input.lua.
  • Preserves unrelated kb_options, such as Compose settings.
  • Updates only its own clearly marked block in input.lua; unrelated user configuration is left untouched.
  • Searchable XKB language/layout picker.
  • Atomic writes and a one-time safety backup before the first managed input.lua change.
  • No background daemon.

Requirements

  • Omarchy 4 / Quattro
  • Hyprland
  • Omarchy Shell / Quickshell
  • Python 3
  • XKB layout data from xkeyboard-config
  • xkbcli is preferred; KLM falls back to the installed XKB rules files when it is unavailable

Install

Use Omarchy's native plugin manager:

omarchy plugin add https://github.com/fstarlike/imaginit-klm.git --enable

The manifest requests the right section of the bar by default.

Omarchy already ships its own omarchy.keyboard-layout widget. If you do not want two layout labels in the bar, disable the stock widget explicitly:

omarchy plugin disable omarchy.keyboard-layout

KLM does not disable or rewrite other Omarchy plugins automatically.

Persian + English quick start

Open imagineit KLM from the bar:

  1. Choose Add language.
  2. Search for Persian or ir.
  3. Add the layout.
  4. Enable Alt + Shift.

For Alt+Shift, KLM uses native Hyprland modifier-only release bindings instead of XKB grp:alt_shift_toggle. This avoids the press-order asymmetry seen on some keyboards, so both Alt → Shift and Shift → Alt can switch the layout.

What KLM changes

KLM stores its own state in:

~/.config/imagineit-klm/config.json

and logs diagnostic messages in:

~/.local/state/imagineit-klm/klm.log

KLM does not modify ~/.config/hypr/input.lua merely because the widget was loaded. The managed block is written after an explicit configuration change such as adding/removing a language or changing the shortcut.

Before the first managed change, an existing input file is backed up once as:

~/.config/hypr/input.lua.imagineit-klm.bak

The inserted block is delimited by:

-- >>> imagineit KLM (managed) >>>
...
-- <<< imagineit KLM (managed) <<<

Everything outside that block is preserved.

CLI

~/.config/omarchy/plugins/imagineit.klm/bin/klmctl snapshot
~/.config/omarchy/plugins/imagineit.klm/bin/klmctl diagnose
~/.config/omarchy/plugins/imagineit.klm/bin/klmctl available
~/.config/omarchy/plugins/imagineit.klm/bin/klmctl add-layout ir
~/.config/omarchy/plugins/imagineit.klm/bin/klmctl set-shortcut alt-shift
~/.config/omarchy/plugins/imagineit.klm/bin/klmctl switch next
~/.config/omarchy/plugins/imagineit.klm/bin/klmctl repair-shortcut

Update

omarchy plugin update imagineit.klm

Remove

KLM writes a managed block into input.lua only after you change its keyboard settings, so clean that block before removing the plugin:

~/.config/omarchy/plugins/imagineit.klm/bin/klmctl clean
omarchy plugin remove imagineit.klm

If you disabled Omarchy's stock keyboard-layout widget during setup, you can restore it afterward:

omarchy plugin enable omarchy.keyboard-layout

The plugin removal command removes the plugin checkout. KLM's own state/log files are intentionally left in place so an update or reinstall can retain preferences; they can be deleted manually if a full reset is desired.

Privacy and network access

KLM performs no analytics and sends no keyboard, layout, or system information to a remote service.

The panel contains a clickable Imagine it · imagineit.online link. Network access happens only when the user explicitly opens that link in the default browser.

Version 1.0.3

  • Prepared the repository for the current Omarchy Plugins submission rules.
  • Switched the documentation to Omarchy's native plugin add/update/remove flow.
  • Added explicit MIT license metadata to the plugin manifest.
  • Documented user-configuration boundaries and safe removal.
  • Added automated repository checks while keeping the runtime dependency-free.

License

MIT — see LICENSE.