Omahub
← All plugins
A

qwitch

by Abdullah Aloğlu

A minimal, device-aware keyboard layout switcher for the Omarchy bar.

Security review

No obvious issues detected

Deterministic scan — not a security guarantee

None
Risk level
None
Analyzed commit
5f18710
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
5f18710
Reviewed
1 month ago

The plugin is a keyboard layout switcher with a well-structured runtime helper that includes many safety checks (bounded output, file permissions, lock files). It only interacts with Hyprland and system input devices as expected, and does not contain obfuscated or malicious code. The deterministic scan found no issues, and our review agrees.

  • The runtime script executes Hyprland commands via hyprctl eval, but the commands are constructed internally from plugin logic, not from arbitrary user input.
  • The plugin modifies Omarchy's shell config to remove the duplicate layout indicator, which is a documented integration and within its intended scope.
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/aloglu/qwitch --enable
Widgets #bar

qwitch

qwitch adds keyboard layout switching with global, per-app, and per-window memory to Omarchy.

<p align="center"> <img src="screenshots/layouts-menu.png" alt="qwitch layouts menu" width="328"> </p> <p align="center"> <img src="screenshots/settings-menu.png" alt="qwitch settings menu" width="432"> </p>

Features

  • Add, edit, remove, and reorder XKB layouts with automatic saving.
  • Switch layouts globally or remember them per application or live window.
  • Display text, a flag, or both, with optional Omarchy OSD notifications.
  • Detect real typing keyboards conservatively, with advanced device overrides.
  • Show the native XKB switching shortcut configured in Hyprland.

Left-click the widget to switch layouts. Right-click to open the layout menu; use its gear button for settings. qwitch also replaces Omarchy's built-in keyboard-layout indicator while running.

Dependencies

Quickshell, Hyprland, xkbcli, and jq are included with Omarchy 4, so no additional packages are required.

Switching shortcut

qwitch reads the native XKB group toggle from ~/.config/hypr/input.lua but does not manage it. For Alt+Shift:

hl.config({
  input = {
    kb_options = "grp:alt_shift_toggle",
  },
})

If kb_options already contains other comma-separated options, keep them and replace only its grp:* entry.

Then reload and validate Hyprland:

hyprctl reload
hyprctl configerrors

Install

omarchy plugin add https://github.com/aloglu/qwitch.git
omarchy plugin enable io.github.aloglu.qwitch

Update

omarchy plugin update io.github.aloglu.qwitch
omarchy restart shell

Restarting the shell clears stale loaded QML. Updates are fast-forward-only; remove and re-add the plugin after rebasing or amending an installed revision.

Remove

omarchy plugin remove io.github.aloglu.qwitch

Development

Install the current committed checkout locally with:

omarchy plugin add "file://$HOME/workspaces/qwitch"
omarchy plugin enable io.github.aloglu.qwitch

Local installs clone committed HEAD; commit changes before installing. Run the checks with:

omarchy plugin validate .
node --test --test-isolation=none tests/model.test.js tests/service.test.js tests/runtime.test.js
tests/run-qml-tests.sh

License

Released under the MIT License.