From ae06d34fcb3e7183c6a8af99fee8f13cf2f2e16c Mon Sep 17 00:00:00 2001 From: Nikolaj Holck Zwergius <86413057+nikolaj-zwergius@users.noreply.github.com> Date: Wed, 15 Jul 2026 06:27:58 +0200 Subject: [PATCH] Add iio-lock plugin for orientation locking (#13) * Made a iio-hyprland plugin for noctalia kill iio-hyprland and restart it depending on the locked setting. The plugin has: -control center toggle -Bar wigdet for toggle of state --If rigth clicked this wigdet will open the panel -Panel for calling by msg --Panel also added possibally to specify lock direction -Bar wiget for open panel --Useful for touch - Tested with hyprland 0.55.4 and noctalia v5.0.0 - Should work with sway using iio-sway (not tested) * add en.json to translation unify settings keys for consistent naming update names add iio-service so tools work independently refactor code for readability and remove unused logic update readme add thumbnail * Updated plugin.toml names Reworked panel code * bump version * Make arrow buttons apply relative orientation instead of fixed original directions * fixed wrong labels * Delete iio_lock/iio_lock.luau * Delete iio_lock/iio_panel.luau * Delete iio_lock/shortcut.luau * make noctalia.getConfig the sole config accessor --------- Co-authored-by: Lemmy --- iio_lock/README.md | 16 ++++ iio_lock/cc-toggle.luau | 32 ++++++++ iio_lock/iio-lock.luau | 38 ++++++++++ iio_lock/iio-panel.luau | 30 ++++++++ iio_lock/iio-service.luau | 39 ++++++++++ iio_lock/panel.luau | 136 ++++++++++++++++++++++++++++++++++ iio_lock/plugin.toml | 95 ++++++++++++++++++++++++ iio_lock/thumbnail.webp | Bin 0 -> 36076 bytes iio_lock/translations/en.json | 29 ++++++++ 9 files changed, 415 insertions(+) create mode 100644 iio_lock/README.md create mode 100644 iio_lock/cc-toggle.luau create mode 100644 iio_lock/iio-lock.luau create mode 100644 iio_lock/iio-panel.luau create mode 100644 iio_lock/iio-service.luau create mode 100644 iio_lock/panel.luau create mode 100644 iio_lock/plugin.toml create mode 100644 iio_lock/thumbnail.webp create mode 100644 iio_lock/translations/en.json diff --git a/iio_lock/README.md b/iio_lock/README.md new file mode 100644 index 0000000..4f64eea --- /dev/null +++ b/iio_lock/README.md @@ -0,0 +1,16 @@ +iio-lock — Orientation Lock for 2‑in‑1 Devices + +iio-lock is a small bar widget and panel plugin for Noctalia that provides manual control over screen orientation. +It works by stopping and restarting the iio-hyprland service (or similar IIO rotation tools), preventing automatic rotation while the lock is active. + +This is useful on 2‑in‑1 touch laptops, where automatic rotation may not always be desired — such as when using the device in tablet mode, drawing, or note‑taking. + +Supported WM and Tools +Hyprland / iio‑hyprland — Working and tested +Sway / iio‑sway — Unverified (experimental) + +External commands +This plugin shells out to: + -pgrep + -pkill + -iio-hyprland (or the user‑configured tool) diff --git a/iio_lock/cc-toggle.luau b/iio_lock/cc-toggle.luau new file mode 100644 index 0000000..974fa24 --- /dev/null +++ b/iio_lock/cc-toggle.luau @@ -0,0 +1,32 @@ + --!nonstrict + +local locked = noctalia.state.get("iio-state") +local glyph_unlocked = noctalia.getConfig("unlocked") +local glyph_locked = noctalia.getConfig("locked") +local locked_text = noctalia.tr("widget.locked") +local unlocked_text = noctalia.tr("widget.unlocked") + +local function render() + shortcut.setLabel(if locked then locked_text else unlocked_text) + if locked then + shortcut.setIcon(glyph_locked) + else + shortcut.setIcon(glyph_unlocked) + end + shortcut.setActive(locked) +end + +noctalia.state.watch("iio-state", function (value) + locked = value + render() + end) + +function onClick() + locked = not locked + noctalia.state.set("iio-state", locked) + render() +end + + +-- Initial state at load. +render() diff --git a/iio_lock/iio-lock.luau b/iio_lock/iio-lock.luau new file mode 100644 index 0000000..adbfa23 --- /dev/null +++ b/iio_lock/iio-lock.luau @@ -0,0 +1,38 @@ + --!nonstrict + -- Config + local glyph_unlocked = noctalia.getConfig("unlocked") + local glyph_locked = noctalia.getConfig("locked") + + -- State + local locked = false + local glyph = glyph_unlocked + +local function render() + barWidget.setGlyph(glyph) +end + +local function apply_lock_state() + if locked then + glyph = glyph_locked + else + glyph = glyph_unlocked + end +end + +function onClick() + locked = not locked + noctalia.state.set("iio-state",locked) + render() +end + +noctalia.state.watch("iio-state", function (value) + locked = value + apply_lock_state() + render() +end) + +function onRightClick() + noctalia.togglePanel("nikolaj-zwergius/iio_lock:panel") +end + +render() diff --git a/iio_lock/iio-panel.luau b/iio_lock/iio-panel.luau new file mode 100644 index 0000000..fccf2d1 --- /dev/null +++ b/iio_lock/iio-panel.luau @@ -0,0 +1,30 @@ + --!nonstrict + local glyph_unlocked = noctalia.getConfig("unlocked") + local glyph_locked = noctalia.getConfig("locked") + + local locked = false + local glyph = glyph_unlocked + + local function render() + barWidget.setGlyph(glyph) + end + +local function apply_lock_state() + if locked then + glyph = glyph_locked + else + glyph = glyph_unlocked + end +end + +noctalia.state.watch("iio-state", function (value) + locked = value + apply_lock_state() + render() +end) + +function onClick() + noctalia.togglePanel("nikolaj-zwergius/iio_lock:panel") +end + +render() diff --git a/iio_lock/iio-service.luau b/iio_lock/iio-service.luau new file mode 100644 index 0000000..2393dc4 --- /dev/null +++ b/iio_lock/iio-service.luau @@ -0,0 +1,39 @@ +--!nonstrict + +local iio_tool = noctalia.getConfig("iio") +local locked = false + +-- Detect initial state by checking whether the IIO tool is running +local function refresh_state() + noctalia.runAsync("pgrep -fx "..iio_tool, function(result) + local pid = noctalia.string.trim(result.stdout) + if pid ~= "" then + noctalia.state.set("iio-state",false) + else + noctalia.state.set("iio-state",true) + end + end) +end + +refresh_state() + +local function kill_iio() + noctalia.runAsync("pkill -x "..iio_tool) +end + +local function start_iio() + noctalia.runAsync(iio_tool) +end + +local function apply_lock_state() + if locked then + kill_iio() + else + start_iio() + end +end + +noctalia.state.watch("iio-state", function (value) + locked = value + apply_lock_state() +end) diff --git a/iio_lock/panel.luau b/iio_lock/panel.luau new file mode 100644 index 0000000..4b9c1f2 --- /dev/null +++ b/iio_lock/panel.luau @@ -0,0 +1,136 @@ +--!nonstrict + +--config +local used_vm = noctalia.getConfig("vm") +local transform_order_string = noctalia.getConfig("transform-order") +local transform_order = {} + + +local function set_transform_order(order_string) + local index = 0 + for i in string.gmatch(order_string, "%d+") do + transform_order[index] = tonumber(i) + index += 1 + end +end + +set_transform_order(transform_order_string) + +--vm functions +function hl(value,screen) + screen = screen or "eDP-1" + local cmd = string.format([[hyprctl eval 'hl.monitor({ output = "%s", transform = %d })']], screen, value) + noctalia.runAsync(cmd) + cmd = string.format([[hyprctl eval 'hl.config({input = {touchdevice = { transform = %d },tablet= { transform = %d }}})']],value,value) + noctalia.runAsync(cmd) + cmd = string.format([[hyprctl eval 'hl.workspace_rule({workspace = "m[%s]"})']],screen) + noctalia.runAsync(cmd) +end + +function sw(value,screen) + screen = screen or "eDP-1" + local cmd = string.format("swaymsg \"output %s transform %d\"",screen,value) + noctalia.runAsync(cmd) +end + +local wm = { + hyprland = hl, + sway = sw, +} + + +--render and layout +local function section(title, control) + return ui.column({ gap = 8 }, { + ui.label({ text = title, fontWeight = "medium", color = "on_surface_variant" }), + control, + }) +end + +local function render() + panel.render(ui.column({ flexGrow = 1, gap = 12 }, { + ui.row({ align = "center", justify = "space_between", gap = 12 }, { + ui.label({ text = noctalia.tr("panel.title"), fontSize = 16, fontWeight = "bold", color = "on_surface", flexGrow = 1 }), + ui.button({ glyph = "close", onClick = "onCloseClicked" }), + }), + + section("", ui.column({ gap = 12, align = "center" }, { + ui.button({width = 60 , height=100, onClick = "onUp",glyph="arrow-big-up-filled",glyphSize=50}), + section("", ui.row({ gap = 12, align = "center" }, { + ui.button({width = 100 , height=60, onClick = "onLeft",glyph="arrow-big-left-filled",glyphSize=50}), + ui.button({width = 100 , height=60, onClick = "onLock",glyph="lock",glyphSize=50}), + ui.button({width = 100 , height=60, onClick = "onRight",glyph="arrow-big-right-filled",glyphSize=50}) + })), + ui.button({width = 60 , height=100, onClick = "onDown",glyph="arrow-big-down-filled",glyphSize=50}), + + })), + + + })) +end + +--actions +function onOpen(_context) + render() +end + +function onLock() + local locked = noctalia.state.get("iio-state") + noctalia.state.set("iio-state",not locked) + panel.close() +end + + +function onUp() + wm[used_vm](transform_order[0]) + noctalia.state.set("iio-state",true) + set_transform_order(table.concat({ + transform_order[0], + transform_order[1], + transform_order[2], + transform_order[3], + }, ",")) + panel.close() +end +function onLeft() + wm[used_vm](transform_order[1]) + noctalia.state.set("iio-state",true) + set_transform_order(table.concat({ + transform_order[1], + transform_order[2], + transform_order[3], + transform_order[0], + }, ",")) + panel.close() +end +function onDown() + wm[used_vm](transform_order[2]) + noctalia.state.set("iio-state",true) + set_transform_order(table.concat({ + transform_order[2], + transform_order[3], + transform_order[0], + transform_order[1], + }, ",")) + panel.close() +end +function onRight() + wm[used_vm](transform_order[3]) + noctalia.state.set("iio-state",true) + set_transform_order(table.concat({ + transform_order[3], --up + transform_order[0], --left + transform_order[1], --rig + transform_order[2], --down + }, ",")) + panel.close() +end +function onCloseClicked() + panel.close() +end + +noctalia.state.watch("iio-state", function (value) + if not value then + set_transform_order(transform_order_string) + end +end) diff --git a/iio_lock/plugin.toml b/iio_lock/plugin.toml new file mode 100644 index 0000000..7a15c5c --- /dev/null +++ b/iio_lock/plugin.toml @@ -0,0 +1,95 @@ +id = "nikolaj-zwergius/iio_lock" +name = "iio-lock" +version = "1.0.0" +min_noctalia = "5.0.0" +author = "nikolaj-zwergius" +license = "MIT" +dependencies = ["pgrep","pkill","iio-hyprland","iio-sway","hyprctl","swaymsg"] +tags = ["hyprland","sway","desktop","utility"] +icon = "lock" +description = "Orientation lock for 2‑in‑1 devices using iio-hyprland and similar." + + +[[setting]] +key = "iio" +type = "select" +label_key = "settings.iio.label" +description_key = "settings.iio.description" +default = "iio-hyprland" +options = [ + { value = "iio-hyprland", label_key = "settings.iio.options.hyprland" }, + { value = "iio-sway", label_key = "settings.iio.options.sway" }, +] + +[[setting]] +key = "transform-order" +type = "string" +label_key = "settings.transform.label" +description_key = "settings.transform.description" +default = "0,1,2,3" + +[[setting]] +key = "vm" +type = "select" +label_key = "settings.wm.label" +description_key = "settings.wm.description" +default = "hyprland" +options = [ + { value = "hyprland", label_key = "settings.wm.options.hyprland" }, + { value = "sway", label_key = "settings.wm.options.sway" }, +] + +[[setting]] +key = "locked" +type = "glyph" +label_key = "settings.glyph.locked.label" +description_key = "settings.glyph.locked.description" +default = "lock" + +[[setting]] +key = "unlocked" +type = "glyph" +label_key = "settings.glyph.unlocked.label" +description_key = "settings.glyph.unlocked.description" +default = "lock-open-2" + + +[[service]] +id = "iio-service" +entry = "iio-service.luau" + +[[widget]] +id = "iio-lock" +entry = "iio-lock.luau" + +[[widget]] +id = "lock-panel" +entry = "iio-panel.luau" + +[[widget.setting]] +key = "unlocked" +type = "glyph" +label_key = "settings.glyph.unlocked.label" +description_key = "settings.glyph.unlocked.description" +default = "rotate-rectangle" + +[[widget.setting]] +key = "locked" +type = "glyph" +label_key = "settings.glyph.locked.label" +description_key = "settings.glyph.locked.description" +default = "rotate-rectangle" + + + +[[shortcut]] +id = "toggle" +entry = "cc-toggle.luau" + +[[panel]] +id = "panel" +entry = "panel.luau" +width = 420 +height = 410 +placement = "floating" +position = "center" \ No newline at end of file diff --git a/iio_lock/thumbnail.webp b/iio_lock/thumbnail.webp new file mode 100644 index 0000000000000000000000000000000000000000..21e1c4cb5e8409fd330ed9282b943faa77f81f94 GIT binary patch literal 36076 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 QIce*pSrRMWF)%Oy02PzF(EtDd literal 0 HcmV?d00001 diff --git a/iio_lock/translations/en.json b/iio_lock/translations/en.json new file mode 100644 index 0000000..6d4f88c --- /dev/null +++ b/iio_lock/translations/en.json @@ -0,0 +1,29 @@ +{ + "settings.iio.label": "IIO Tool", + "settings.iio.description": "Executable used to control orientation", + "settings.iio.options.sway":"iio-sway", + "settings.iio.options.hyprland":"iio-hyprland", + + "settings.transform.label": "Transform Order", + "settings.transform.description":"Rotation values for Up, Left, Down, Right.", + + "settings.wm.label": "Window Manager", + "settings.wm.description": "Choose the window manager backend.", + "settings.wm.options.sway":"Sway", + "settings.wm.options.hyprland":"Hyprland", + + + "settings.glyph.locked.label": "Locked Glyph", + "settings.glyph.locked.description": "Icon displayed when the device is locked.", + + "settings.glyph.unlocked.label": "Unlocked Glyph", + "settings.glyph.unlocked.description": "Icon displayed when the device is unlocked.", + + + "panel.title": "iio-lock", + "panel.lock": "Toggle Lock", + + "widget.locked": "Locked", + "widget.unlocked": "Unlocked", + "toggle.description": "Toggle orientation lock" +}