[GH-ISSUE #1367] Very inconsistent brightness module scrolling #3217

Open
opened 2026-05-22 23:54:53 +01:00 by JakeStanger · 7 comments
Owner

Originally created by @imnotpoz on GitHub (Feb 10, 2026).
Original GitHub issue: https://github.com/JakeStanger/ironbar/issues/1367

Describe the bug

Very bad scrolling behaviour using the brightness module, seems like the value goes out of bounds and the issue could be fixed by adding that bound check and doing nothing

To reproduce
Steps to reproduce the behavior:

  1. Add module brightness
  2. Scroll up or down on it enough to go "above" 100% or "below" 0%
  3. Watch in utter horror and shock as you can't immediately scroll back as the value seems to have gone out of bounds

Expected behavior

I can scroll back immediately

System information:

  • Distro: NixOS Unstable (26.05)
  • Compositor: Niri
  • Ironbar version: 742de6b102

Configuration

Config
{
  "monitors": {
    "eDP-1": {
      "anchor_to_edges": true,
      "center": [
        {
          "show_icon": true,
          "show_title": true,
          "truncate": "end",
          "type": "focused"
        }
      ],
      "end": [
        {
          "type": "brightness"
        },
        {
          "marquee": {
            "enable": true
          },
          "max_volume": 150.0,
          "type": "volume"
        },
        {
          "format": "󱑁 %H:%M:%S 󰃰 %d/%m/%Y",
          "type": "clock"
        },
        {
          "type": "battery"
        }
      ],
      "height": 30,
      "name": "eDP-1",
      "position": "top",
      "start": [
        {
          "type": "tray"
        },
        {
          "all_monitors": false,
          "favorites": [
            "btop",
            "chat",
            "keepassxc",
            "niksos",
            "pipewire"
          ],
          "name_map": {
            "10": "5",
            "11": "6",
            "12": "7",
            "13": "8",
            "14": "9",
            "15": "10",
            "16": "11",
            "17": "12",
            "18": "13",
            "19": "14",
            "20": "15",
            "21": "16",
            "22": "17",
            "23": "18",
            "24": "19",
            "25": "20",
            "26": "21",
            "27": "22",
            "28": "23",
            "29": "24",
            "30": "25",
            "31": "26",
            "32": "27",
            "33": "28",
            "34": "29",
            "35": "30",
            "6": "1",
            "7": "2",
            "8": "3",
            "9": "4",
            "btop": "",
            "chat": "",
            "keepassxc": "",
            "niksos": "",
            "pipewire": ""
          },
          "sort": "index",
          "type": "workspaces"
        }
      ]
    }
  }
}
Styles
/* https://github.com/sainnhe/everforest */
/* dark hard */
:root {
    --transparent: rgba(0, 0, 0, 0);
    --bg_dim: #1E2326;
    --bg0: #272E33;
    --bg1: #2E383C;
    --bg2: #374145;
    --bg3: #414B50;
    --bg4: #495156;
    --bg5: #4F5B58;

    --bg_red: #493B40;
    --bg_yellow: #45443C;
    --bg_green: #3C4841;
    --bg_blue: #384B55;
    --bg_purple: #463F48;
    --bg_visual: #4C3743;
    --fg: #D3C6AA;

    --red: #E67E80;
    --yellow: #DBBC7F;
    --green: #A7C080;
    --blue: #7FBBB3;
    --purple: #D699B6;
    --aqua: #83C092;
    --orange: #E69875;

    --grey0: #7A8478;
    --grey1: #859289;
    --grey2: #9DA9A0;
    --statusline1: #A7C080;
    --statusline2: #D3C6AA;
    --statusline3: #E67E80;

    --common-border-bottom: 5px solid;
    --default-border-bottom: var(--common-border-bottom) var(--bg5);
    --active-border-bottom: var(--common-border-bottom) var(--aqua);
}

* {
    color: var(--fg);
    border: none;
    border-radius: 0px;
    font-family: Material Design Icons;
    font-size: 24px;
}

.widget {
    border-bottom: var(--default-border-bottom);
}

window#ironbar {
    background-color: var(--transparent);
}

.bar-container {
    background-color: var(--transparent);
}

window, .background {
    background-color: var(--transparent);
}

.tray {
    background-color: var(--bg_green);
}

/* .bluetooth.not-found, .bluetooth.disabled { */
/*     background-color: var(--bg_blue); */
/* } */

/* .bluetooth.enabled, .bluetooth.connected { */
/*     background-color: var(--blue); */
/* } */
/**/
/* .bluetooth.enabled label, .bluetooth.connected label { */
/*     color: var(--bg0); */
/* } */

.workspaces {
    border: none;
    border-spacing: 0.25em;
    margin: 0 0.25em 0;
}

.workspaces .item {
    border-bottom: var(--default-border-bottom);
}

.workspaces .item.focused {
    border-bottom: var(--active-border-bottom);
}

.workspaces .item.focused label {
    color: var(--bg0);
}

.workspaces .item {
    background-color: var(--bg_yellow);
    padding: 0 0.25em 0;
}

.workspaces .item.focused {
    background-color: var(--yellow);
}

/* special workspaces */
#eDP-1 .workspaces .item:nth-child(-n+5) {
    background-color: var(--bg_green);
    padding: 0 0.3em 0 0.1em;
}

#eDP-1 .workspaces .item.focused:nth-child(-n+5) {
    background-color: var(--green);
}

/* the rest */
#eDP-1 .workspaces .item:nth-child(n+6) {
    background-color: var(--bg_yellow);
    padding: 0 0.25em 0;
}

#eDP-1 .workspaces .item.focused:nth-child(n+6) {
    background-color: var(--yellow);
}

.focused {
    border-bottom: var(--active-border-bottom);
    padding: 0 0.25em 0;
}

.focused label {
    font-family: JetBrains Mono Nerd Font;
}

.brightness {
    background-color: var(--bg_yellow);
}

.volume {
    background-color: var(--bg_purple);
}

.clock {
    background-color: var(--bg_red);
}

.battery {
    background-color: var(--bg_yellow);
}

Additional context

Screenshots

Originally created by @imnotpoz on GitHub (Feb 10, 2026). Original GitHub issue: https://github.com/JakeStanger/ironbar/issues/1367 **Describe the bug** <!-- A clear and concise description of what the bug is. --> Very bad scrolling behaviour using the brightness module, seems like the value goes out of bounds and the issue could be fixed by adding that bound check and doing nothing **To reproduce** Steps to reproduce the behavior: 1. Add module `brightness` 2. Scroll up or down on it enough to go "above" 100% or "below" 0% 3. Watch in utter horror and shock as you can't immediately scroll back as the value seems to have gone out of bounds **Expected behavior** <!-- A clear and concise description of what you expected to happen. --> I can scroll back immediately **System information:** - Distro: NixOS Unstable (26.05) - Compositor: Niri - Ironbar version: 742de6b10296d276c73149b1f41a4a5c6f221d80 **Configuration** <!-- Share your bar configuration and stylesheet as applicable: --> <details><summary>Config</summary> ``` { "monitors": { "eDP-1": { "anchor_to_edges": true, "center": [ { "show_icon": true, "show_title": true, "truncate": "end", "type": "focused" } ], "end": [ { "type": "brightness" }, { "marquee": { "enable": true }, "max_volume": 150.0, "type": "volume" }, { "format": "󱑁 %H:%M:%S 󰃰 %d/%m/%Y", "type": "clock" }, { "type": "battery" } ], "height": 30, "name": "eDP-1", "position": "top", "start": [ { "type": "tray" }, { "all_monitors": false, "favorites": [ "btop", "chat", "keepassxc", "niksos", "pipewire" ], "name_map": { "10": "5", "11": "6", "12": "7", "13": "8", "14": "9", "15": "10", "16": "11", "17": "12", "18": "13", "19": "14", "20": "15", "21": "16", "22": "17", "23": "18", "24": "19", "25": "20", "26": "21", "27": "22", "28": "23", "29": "24", "30": "25", "31": "26", "32": "27", "33": "28", "34": "29", "35": "30", "6": "1", "7": "2", "8": "3", "9": "4", "btop": "", "chat": "", "keepassxc": "", "niksos": "", "pipewire": "" }, "sort": "index", "type": "workspaces" } ] } } } ``` </details> <details><summary>Styles</summary> ```css /* https://github.com/sainnhe/everforest */ /* dark hard */ :root { --transparent: rgba(0, 0, 0, 0); --bg_dim: #1E2326; --bg0: #272E33; --bg1: #2E383C; --bg2: #374145; --bg3: #414B50; --bg4: #495156; --bg5: #4F5B58; --bg_red: #493B40; --bg_yellow: #45443C; --bg_green: #3C4841; --bg_blue: #384B55; --bg_purple: #463F48; --bg_visual: #4C3743; --fg: #D3C6AA; --red: #E67E80; --yellow: #DBBC7F; --green: #A7C080; --blue: #7FBBB3; --purple: #D699B6; --aqua: #83C092; --orange: #E69875; --grey0: #7A8478; --grey1: #859289; --grey2: #9DA9A0; --statusline1: #A7C080; --statusline2: #D3C6AA; --statusline3: #E67E80; --common-border-bottom: 5px solid; --default-border-bottom: var(--common-border-bottom) var(--bg5); --active-border-bottom: var(--common-border-bottom) var(--aqua); } * { color: var(--fg); border: none; border-radius: 0px; font-family: Material Design Icons; font-size: 24px; } .widget { border-bottom: var(--default-border-bottom); } window#ironbar { background-color: var(--transparent); } .bar-container { background-color: var(--transparent); } window, .background { background-color: var(--transparent); } .tray { background-color: var(--bg_green); } /* .bluetooth.not-found, .bluetooth.disabled { */ /* background-color: var(--bg_blue); */ /* } */ /* .bluetooth.enabled, .bluetooth.connected { */ /* background-color: var(--blue); */ /* } */ /**/ /* .bluetooth.enabled label, .bluetooth.connected label { */ /* color: var(--bg0); */ /* } */ .workspaces { border: none; border-spacing: 0.25em; margin: 0 0.25em 0; } .workspaces .item { border-bottom: var(--default-border-bottom); } .workspaces .item.focused { border-bottom: var(--active-border-bottom); } .workspaces .item.focused label { color: var(--bg0); } .workspaces .item { background-color: var(--bg_yellow); padding: 0 0.25em 0; } .workspaces .item.focused { background-color: var(--yellow); } /* special workspaces */ #eDP-1 .workspaces .item:nth-child(-n+5) { background-color: var(--bg_green); padding: 0 0.3em 0 0.1em; } #eDP-1 .workspaces .item.focused:nth-child(-n+5) { background-color: var(--green); } /* the rest */ #eDP-1 .workspaces .item:nth-child(n+6) { background-color: var(--bg_yellow); padding: 0 0.25em 0; } #eDP-1 .workspaces .item.focused:nth-child(n+6) { background-color: var(--yellow); } .focused { border-bottom: var(--active-border-bottom); padding: 0 0.25em 0; } .focused label { font-family: JetBrains Mono Nerd Font; } .brightness { background-color: var(--bg_yellow); } .volume { background-color: var(--bg_purple); } .clock { background-color: var(--bg_red); } .battery { background-color: var(--bg_yellow); } ``` </details> **Additional context** <!-- Add any other context about the problem here. --> **Screenshots** <!-- If applicable, add screenshots to help explain your problem. -->
Author
Owner

@imnotpoz commented on GitHub (Feb 10, 2026):

Just checked and the bounds do actually exist, so this isn't the cause

<!-- gh-comment-id:3881325552 --> @imnotpoz commented on GitHub (Feb 10, 2026): Just checked and the bounds do actually exist, so this isn't the cause
Author
Owner

@imnotpoz commented on GitHub (Feb 10, 2026):

In the video I'm attaching, when my mouse is on the brightness module I'm scrolling up and down pretty fast, when it's off I'm not doing anything (obviously):

https://github.com/user-attachments/assets/f76171ad-66f7-4bb7-b05b-ca1673cd8e4d

All of this seems to stop when I use my brightness keybinds, which use brightnessctl with either -5% or +5%

<!-- gh-comment-id:3881356821 --> @imnotpoz commented on GitHub (Feb 10, 2026): In the video I'm attaching, when my mouse is on the brightness module I'm scrolling up and down pretty fast, when it's off I'm not doing anything (obviously): https://github.com/user-attachments/assets/f76171ad-66f7-4bb7-b05b-ca1673cd8e4d All of this seems to stop when I use my brightness keybinds, which use `brightnessctl` with either `-5%` or `+5%`
Author
Owner

@JakeStanger commented on GitHub (Feb 11, 2026):

I'm unable to replicate this with either a trackpad or mouse. Are you able to share your the mouse/trackpad parts of your niri config pls? I don't have it set up on my laptop currently but I'm wondering if it's emitting scroll events faster than Plasma.

<!-- gh-comment-id:3885566630 --> @JakeStanger commented on GitHub (Feb 11, 2026): I'm unable to replicate this with either a trackpad or mouse. Are you able to share your the mouse/trackpad parts of your niri config pls? I don't have it set up on my laptop currently but I'm wondering if it's emitting scroll events faster than Plasma.
Author
Owner

@imnotpoz commented on GitHub (Feb 11, 2026):

this is my entire niri config:
animations {
	horizontal-view-movement {
		spring damping-ratio=0.850000 epsilon=0.000100 stiffness=800
	}
	window-close {
		curve "ease-out-quad"
		duration-ms 250
	}
	window-open {
		curve "ease-out-expo"
		duration-ms 250
	}
	workspace-switch {
		spring damping-ratio=0.850000 epsilon=0.000010 stiffness=250
	}
}
binds {
	Ctrl+XF86MonBrightnessDown {
		spawn "/nix/store/ly3ci90lp6qwvbjp50ka5bp4gzwsz1j4-brightnessctl-0.5.1/bin/brightnessctl" "-d" "kbd_backlight" "set" "5%-"
	}
	Ctrl+XF86MonBrightnessUp {
		spawn "/nix/store/ly3ci90lp6qwvbjp50ka5bp4gzwsz1j4-brightnessctl-0.5.1/bin/brightnessctl" "-d" "kbd_backlight" "set" "5%+"
	}
	Mod+0 repeat=false {
		spawn-sh "/nix/store/qjn6jir3phz37m5cpqyflfw0sij10aim-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 10)"
	}
	Mod+1 repeat=false {
		spawn-sh "/nix/store/qjn6jir3phz37m5cpqyflfw0sij10aim-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 1)"
	}
	Mod+2 repeat=false {
		spawn-sh "/nix/store/qjn6jir3phz37m5cpqyflfw0sij10aim-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 2)"
	}
	Mod+3 repeat=false {
		spawn-sh "/nix/store/qjn6jir3phz37m5cpqyflfw0sij10aim-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 3)"
	}
	Mod+4 repeat=false {
		spawn-sh "/nix/store/qjn6jir3phz37m5cpqyflfw0sij10aim-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 4)"
	}
	Mod+5 repeat=false {
		spawn-sh "/nix/store/qjn6jir3phz37m5cpqyflfw0sij10aim-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 5)"
	}
	Mod+6 repeat=false {
		spawn-sh "/nix/store/qjn6jir3phz37m5cpqyflfw0sij10aim-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 6)"
	}
	Mod+7 repeat=false {
		spawn-sh "/nix/store/qjn6jir3phz37m5cpqyflfw0sij10aim-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 7)"
	}
	Mod+8 repeat=false {
		spawn-sh "/nix/store/qjn6jir3phz37m5cpqyflfw0sij10aim-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 8)"
	}
	Mod+9 repeat=false {
		spawn-sh "/nix/store/qjn6jir3phz37m5cpqyflfw0sij10aim-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 9)"
	}
	Mod+B repeat=false {
		focus-workspace "btop"
	}
	Mod+BracketLeft {
		consume-or-expel-window-left 
	}
	Mod+BracketRight {
		consume-or-expel-window-right 
	}
	Mod+C {
		center-column 
	}
	Mod+Comma {
		consume-window-into-column 
	}
	Mod+Ctrl+B {
		spawn "/nix/store/rsq32kn5jl0krkmb4sapsgcp7jbk2jcb-toggle-ironbar/bin/toggle-ironbar"
	}
	Mod+Ctrl+E {
		move-column-to-monitor-left 
	}
	Mod+Ctrl+I {
		move-column-to-monitor-right 
	}
	Mod+Ctrl+N {
		focus-monitor-left 
	}
	Mod+Ctrl+O {
		focus-monitor-right 
	}
	Mod+Ctrl+S {
		screenshot-screen 
	}
	Mod+Ctrl+Shift+E {
		quit 
	}
	Mod+Ctrl+WheelScrollDown cooldown-ms=150 {
		move-column-to-workspace-down 
	}
	Mod+Ctrl+WheelScrollLeft {
		move-column-left 
	}
	Mod+Ctrl+WheelScrollRight {
		move-column-right 
	}
	Mod+Ctrl+WheelScrollUp cooldown-ms=150 {
		move-column-to-workspace-up 
	}
	Mod+D {
		spawn "/nix/store/yi012cxxklwq0mk4kimjvv2pl3g2a1zk-toggle-anyrun/bin/toggle-anyrun"
		
	}
	Mod+E {
		focus-workspace-down 
	}
	Mod+Equal {
		set-column-width "+10%"
	}
	Mod+F {
		maximize-column 
	}
	Mod+I {
		focus-workspace-up 
	}
	Mod+Minus {
		set-column-width "-10%"
	}
	Mod+N {
		focus-column-left 
	}
	Mod+O {
		focus-column-right 
	}
	Mod+Period {
		expel-window-from-column 
	}
	Mod+Q {
		close-window 
	}
	Mod+R {
		switch-preset-column-width 
	}
	Mod+Return {
		spawn "/nix/store/20k54av3184kldcqfcbnbvvhgdzpm8j6-foot/bin/foot"
	}
	Mod+S {
		screenshot 
	}
	Mod+Shift+0 {
		spawn-sh "/nix/store/lfhajbf3qdz5bdivaqpxa9g8k4gpxhin-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 10)"
	}
	Mod+Shift+1 {
		spawn-sh "/nix/store/lfhajbf3qdz5bdivaqpxa9g8k4gpxhin-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 1)"
	}
	Mod+Shift+2 {
		spawn-sh "/nix/store/lfhajbf3qdz5bdivaqpxa9g8k4gpxhin-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 2)"
	}
	Mod+Shift+3 {
		spawn-sh "/nix/store/lfhajbf3qdz5bdivaqpxa9g8k4gpxhin-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 3)"
	}
	Mod+Shift+4 {
		spawn-sh "/nix/store/lfhajbf3qdz5bdivaqpxa9g8k4gpxhin-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 4)"
	}
	Mod+Shift+5 {
		spawn-sh "/nix/store/lfhajbf3qdz5bdivaqpxa9g8k4gpxhin-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 5)"
	}
	Mod+Shift+6 {
		spawn-sh "/nix/store/lfhajbf3qdz5bdivaqpxa9g8k4gpxhin-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 6)"
	}
	Mod+Shift+7 {
		spawn-sh "/nix/store/lfhajbf3qdz5bdivaqpxa9g8k4gpxhin-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 7)"
	}
	Mod+Shift+8 {
		spawn-sh "/nix/store/lfhajbf3qdz5bdivaqpxa9g8k4gpxhin-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 8)"
	}
	Mod+Shift+9 {
		spawn-sh "/nix/store/lfhajbf3qdz5bdivaqpxa9g8k4gpxhin-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 9)"
	}
	Mod+Shift+C repeat=false {
		focus-workspace "niksos"
	}
	Mod+Shift+Ctrl+B {
		spawn-sh "/nix/store/rv5q6iq1b76wnkldprl984z7gfpb00n7-procps-4.0.4/bin/pkill ironbar || /nix/store/g7cy24wfd0mvrmzqarnjcxal5nc58rhc-ironbar/bin/ironbar"
	}
	Mod+Shift+E {
		move-column-to-workspace-down 
	}
	Mod+Shift+Equal {
		set-window-height "+10%"
	}
	Mod+Shift+F {
		fullscreen-window 
	}
	Mod+Shift+I {
		move-column-to-workspace-up 
	}
	Mod+Shift+K repeat=false {
		focus-workspace "chat"
	}
	Mod+Shift+L {
		spawn "/nix/store/44k60k5x65xc3nxfaqim5rvw523fw5jv-systemd-258.3/bin/loginctl" "lock-session"
	}
	Mod+Shift+Minus {
		set-window-height "-10%"
	}
	Mod+Shift+N {
		move-column-left 
	}
	Mod+Shift+O {
		move-column-right 
	}
	Mod+Shift+P {
		power-off-monitors 
	}
	Mod+Shift+R {
		spawn-sh "/nix/store/p0pyx7jv8afsn4l1dl6wfa5kc5zp8f34-toggle-special-workspace/bin/toggle-special-workspace"
	}
	Mod+Shift+S {
		screenshot-window 
	}
	Mod+Shift+Slash {
		show-hotkey-overlay 
	}
	Mod+Shift+W {
		spawn-sh "/nix/store/7baii5ng1cxrgb1v4bnhjscb7anvakfn-pozfox-148.0b10/bin/firefox-devedition -P dev-edition-default"
	}
	Mod+Space {
		toggle-window-floating 
	}
	Mod+Tab {
		focus-workspace-previous 
	}
	Mod+TouchpadScrollDown {
		spawn "/nix/store/qyx07zaa1fc8d216n6qnikybj7snk2q8-wireplumber-0.5.13/bin/wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-"
	}
	Mod+TouchpadScrollUp {
		spawn "/nix/store/qyx07zaa1fc8d216n6qnikybj7snk2q8-wireplumber-0.5.13/bin/wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+"
	}
	Mod+V repeat=false {
		focus-workspace "pipewire"
	}
	Mod+W {
		spawn-sh "/nix/store/73y43n3shjr0b57qsw769n97dws1i8z0-librewolf-147.0.3-2/bin/librewolf -P default"
	}
	Mod+WheelScrollDown cooldown-ms=150 {
		focus-workspace-down 
	}
	Mod+WheelScrollLeft {
		focus-column-left 
	}
	Mod+WheelScrollRight {
		focus-column-right 
	}
	Mod+WheelScrollUp cooldown-ms=150 {
		focus-workspace-up 
	}
	Mod+X repeat=false {
		focus-workspace "keepassxc"
	}
	Mod+Z {
		spawn-sh "/nix/store/w9hzki676skn1w1d5fhnbaqkpww0wdk2-woomer-focused-monitor/bin/woomer-focused-monitor"
	}
	XF86AudioLowerVolume allow-when-locked=true {
		spawn "/nix/store/qyx07zaa1fc8d216n6qnikybj7snk2q8-wireplumber-0.5.13/bin/wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05-"
	}
	XF86AudioMute allow-when-locked=true {
		spawn "/nix/store/qyx07zaa1fc8d216n6qnikybj7snk2q8-wireplumber-0.5.13/bin/wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"
	}
	XF86AudioRaiseVolume allow-when-locked=true {
		spawn "/nix/store/qyx07zaa1fc8d216n6qnikybj7snk2q8-wireplumber-0.5.13/bin/wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05+"
	}
	XF86MonBrightnessDown allow-when-locked=true {
		spawn "/nix/store/ly3ci90lp6qwvbjp50ka5bp4gzwsz1j4-brightnessctl-0.5.1/bin/brightnessctl" "set" "5%-"
	}
	XF86MonBrightnessUp allow-when-locked=true {
		spawn "/nix/store/ly3ci90lp6qwvbjp50ka5bp4gzwsz1j4-brightnessctl-0.5.1/bin/brightnessctl" "set" "5%+"
	}
}
debug {
	render-drm-device "/dev/dri/renderD128"
}
environment {
	DISPLAY ":0"
}
input {
	focus-follows-mouse max-scroll-amount="25%"
	keyboard {
		repeat-delay 250
		repeat-rate 50
		xkb {
			layout "pl"
		}
	}
	tablet {
		map-to-output "eDP-1"
	}
	touch {
		map-to-output "eDP-1"
	}
	touchpad {
		accel-profile "flat"
		accel-speed 0.200000
		tap 
	}
	warp-mouse-to-focus 
	workspace-auto-back-and-forth 
}
layout {
	border {
		active-gradient angle=45 from="#83C092" relative-to="workspace-view" to="#7FBBB3"
		inactive-gradient angle=45 from="#272E33" relative-to="workspace-view" to="#2E383C"
		width 3
	}
	center-focused-column "never"
	default-column-width {
		proportion 0.500000
	}
	focus-ring {
		active-color "#7fc8ff"
		inactive-color "#505050"
		off 
		width 2
	}
	gaps 5
	preset-column-widths {
		proportion 0.333333
		proportion 0.500000
		proportion 0.666667
	}
}
output "eDP-1" {
	mode "3024x1890@120.000000"
	position x=0 y=0
	scale 1.000000
	transform "normal"
}

prefer-no-csd 
screenshot-path "~/Pictures/Screenshots/screenshot-%Y%m%d%H%M%S.png"
spawn-at-startup "/nix/store/8vswbm6nqd5yp1lslc2bxgf848gayh08-swww-0.11.2/bin/swww-daemon"
spawn-at-startup "/nix/store/40yrc02zwr17r300plw11f9pwbvi23m3-network-manager-applet-1.36.0/bin/nm-applet"
spawn-at-startup "/nix/store/g7cy24wfd0mvrmzqarnjcxal5nc58rhc-ironbar/bin/ironbar"
spawn-at-startup "/nix/store/yshmgpn7cdl8xpdn2vwfnzrx55bj3q0n-wlsunset-0.4.0/bin/wlsunset" "-S" "06:00" "-s" "20:00"
spawn-at-startup "/nix/store/ziynyk452z860cd4ry8y6x7pv83snjsi-anyrun/bin/.anyrun-wrapped_" "daemon"

spawn-at-startup "/nix/store/8vswbm6nqd5yp1lslc2bxgf848gayh08-swww-0.11.2/bin/swww" "img" "-o" "eDP-1" "/nix/store/k4mxap04bdaw30a0r724pdjrjrnlwfqi-poz-nix-wallpaper.png"
spawn-at-startup "/nix/store/20k54av3184kldcqfcbnbvvhgdzpm8j6-foot/bin/foot" "--app-id=btop" "--title=btop" "/nix/store/8n5lhf761h050am8085qazny52vnja9x-btop/bin/btop"
spawn-at-startup "/nix/store/ihni453y23z3jhpmh1hhl07a926gbdh3-keepassxc-2.7.11/bin/keepassxc"
spawn-at-startup "/nix/store/20k54av3184kldcqfcbnbvvhgdzpm8j6-foot/bin/foot" "--app-id=niksos" "--title=niksos" "--working-directory=niksos"
spawn-at-startup "/nix/store/fnh8prmi8f4irr4w1qmvz1j1kfv08mh5-helvum-0.5.1/bin/helvum"
spawn-at-startup "/nix/store/jpagl82vc2ms5kcbkr6v665wqa6jxiq5-pwvucontrol-0.5.1/bin/pwvucontrol"

window-rule {
	clip-to-geometry true
}
window-rule {
	match app-id="^(Tor Browser)$"
	match app-id="^(Mullvad Browser)$"
	match app-id="^(mpv)$"
	match app-id="^(imv)$"
	match title="^(Picture-in-Picture)$"
	match title="^(.*)(Choose User Profile)(.*)$"
	match title="^(blob:null/)(.*)$"
	match app-id="^(xdg-desktop-portal-gtk)$"
	match app-id="^(code)" title="^(Open*)"
	
	open-floating true
}
window-rule {
	default-floating-position relative-to="bottom-right" x=10 y=10
	match app-id="steam" title="^notificationtoasts_d+_desktop$"
}
window-rule {
	border {
		off 
	}
	geometry-corner-radius 0.000000 0.000000 0.000000 0.000000
	match app-id="^(btop)$"
	
	
	open-maximized true
	open-on-workspace "btop"
}
window-rule
window-rule {
	block-out-from "screencast"
	border {
		off 
	}
	geometry-corner-radius 0.000000 0.000000 0.000000 0.000000
	match app-id="^(org.keepassxc.KeePassXC)$"
	
	
	open-maximized true
	open-on-workspace "keepassxc"
}
window-rule {
	border {
		off 
	}
	geometry-corner-radius 0.000000 0.000000 0.000000 0.000000
	match app-id="^(niksos)$"
	
	
	open-maximized true
	open-on-workspace "niksos"
}
window-rule {
	border {
		off 
	}
	geometry-corner-radius 0.000000 0.000000 0.000000 0.000000
	match app-id="^(org.pipewire.Helvum)$"
	
	match app-id="^(com.saivert.pwvucontrol)$"
	
	
	open-on-workspace "pipewire"
}

workspace "btop"
workspace "chat"
workspace "keepassxc"
workspace "niksos"
workspace "pipewire"

and this is the input section:

input {
	focus-follows-mouse max-scroll-amount="25%"
	keyboard {
		repeat-delay 250
		repeat-rate 50
		xkb {
			layout "pl"
		}
	}
	tablet {
		map-to-output "eDP-1"
	}
	touch {
		map-to-output "eDP-1"
	}
	touchpad {
		accel-profile "flat"
		accel-speed 0.200000
		tap 
	}
	warp-mouse-to-focus 
	workspace-auto-back-and-forth 
}

I'm using my macbook's touchpad for this

<!-- gh-comment-id:3885855077 --> @imnotpoz commented on GitHub (Feb 11, 2026): <details> <summary>this is my entire niri config:</summary> ```kdl animations { horizontal-view-movement { spring damping-ratio=0.850000 epsilon=0.000100 stiffness=800 } window-close { curve "ease-out-quad" duration-ms 250 } window-open { curve "ease-out-expo" duration-ms 250 } workspace-switch { spring damping-ratio=0.850000 epsilon=0.000010 stiffness=250 } } binds { Ctrl+XF86MonBrightnessDown { spawn "/nix/store/ly3ci90lp6qwvbjp50ka5bp4gzwsz1j4-brightnessctl-0.5.1/bin/brightnessctl" "-d" "kbd_backlight" "set" "5%-" } Ctrl+XF86MonBrightnessUp { spawn "/nix/store/ly3ci90lp6qwvbjp50ka5bp4gzwsz1j4-brightnessctl-0.5.1/bin/brightnessctl" "-d" "kbd_backlight" "set" "5%+" } Mod+0 repeat=false { spawn-sh "/nix/store/qjn6jir3phz37m5cpqyflfw0sij10aim-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 10)" } Mod+1 repeat=false { spawn-sh "/nix/store/qjn6jir3phz37m5cpqyflfw0sij10aim-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 1)" } Mod+2 repeat=false { spawn-sh "/nix/store/qjn6jir3phz37m5cpqyflfw0sij10aim-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 2)" } Mod+3 repeat=false { spawn-sh "/nix/store/qjn6jir3phz37m5cpqyflfw0sij10aim-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 3)" } Mod+4 repeat=false { spawn-sh "/nix/store/qjn6jir3phz37m5cpqyflfw0sij10aim-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 4)" } Mod+5 repeat=false { spawn-sh "/nix/store/qjn6jir3phz37m5cpqyflfw0sij10aim-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 5)" } Mod+6 repeat=false { spawn-sh "/nix/store/qjn6jir3phz37m5cpqyflfw0sij10aim-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 6)" } Mod+7 repeat=false { spawn-sh "/nix/store/qjn6jir3phz37m5cpqyflfw0sij10aim-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 7)" } Mod+8 repeat=false { spawn-sh "/nix/store/qjn6jir3phz37m5cpqyflfw0sij10aim-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 8)" } Mod+9 repeat=false { spawn-sh "/nix/store/qjn6jir3phz37m5cpqyflfw0sij10aim-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 9)" } Mod+B repeat=false { focus-workspace "btop" } Mod+BracketLeft { consume-or-expel-window-left } Mod+BracketRight { consume-or-expel-window-right } Mod+C { center-column } Mod+Comma { consume-window-into-column } Mod+Ctrl+B { spawn "/nix/store/rsq32kn5jl0krkmb4sapsgcp7jbk2jcb-toggle-ironbar/bin/toggle-ironbar" } Mod+Ctrl+E { move-column-to-monitor-left } Mod+Ctrl+I { move-column-to-monitor-right } Mod+Ctrl+N { focus-monitor-left } Mod+Ctrl+O { focus-monitor-right } Mod+Ctrl+S { screenshot-screen } Mod+Ctrl+Shift+E { quit } Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down } Mod+Ctrl+WheelScrollLeft { move-column-left } Mod+Ctrl+WheelScrollRight { move-column-right } Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up } Mod+D { spawn "/nix/store/yi012cxxklwq0mk4kimjvv2pl3g2a1zk-toggle-anyrun/bin/toggle-anyrun" } Mod+E { focus-workspace-down } Mod+Equal { set-column-width "+10%" } Mod+F { maximize-column } Mod+I { focus-workspace-up } Mod+Minus { set-column-width "-10%" } Mod+N { focus-column-left } Mod+O { focus-column-right } Mod+Period { expel-window-from-column } Mod+Q { close-window } Mod+R { switch-preset-column-width } Mod+Return { spawn "/nix/store/20k54av3184kldcqfcbnbvvhgdzpm8j6-foot/bin/foot" } Mod+S { screenshot } Mod+Shift+0 { spawn-sh "/nix/store/lfhajbf3qdz5bdivaqpxa9g8k4gpxhin-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 10)" } Mod+Shift+1 { spawn-sh "/nix/store/lfhajbf3qdz5bdivaqpxa9g8k4gpxhin-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 1)" } Mod+Shift+2 { spawn-sh "/nix/store/lfhajbf3qdz5bdivaqpxa9g8k4gpxhin-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 2)" } Mod+Shift+3 { spawn-sh "/nix/store/lfhajbf3qdz5bdivaqpxa9g8k4gpxhin-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 3)" } Mod+Shift+4 { spawn-sh "/nix/store/lfhajbf3qdz5bdivaqpxa9g8k4gpxhin-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 4)" } Mod+Shift+5 { spawn-sh "/nix/store/lfhajbf3qdz5bdivaqpxa9g8k4gpxhin-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 5)" } Mod+Shift+6 { spawn-sh "/nix/store/lfhajbf3qdz5bdivaqpxa9g8k4gpxhin-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 6)" } Mod+Shift+7 { spawn-sh "/nix/store/lfhajbf3qdz5bdivaqpxa9g8k4gpxhin-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 7)" } Mod+Shift+8 { spawn-sh "/nix/store/lfhajbf3qdz5bdivaqpxa9g8k4gpxhin-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 8)" } Mod+Shift+9 { spawn-sh "/nix/store/lfhajbf3qdz5bdivaqpxa9g8k4gpxhin-do-workspace/bin/do-workspace $(/nix/store/m6lh7qy5nls1ss4n99y1s7050lj35imd-get-workspace/bin/get-workspace 9)" } Mod+Shift+C repeat=false { focus-workspace "niksos" } Mod+Shift+Ctrl+B { spawn-sh "/nix/store/rv5q6iq1b76wnkldprl984z7gfpb00n7-procps-4.0.4/bin/pkill ironbar || /nix/store/g7cy24wfd0mvrmzqarnjcxal5nc58rhc-ironbar/bin/ironbar" } Mod+Shift+E { move-column-to-workspace-down } Mod+Shift+Equal { set-window-height "+10%" } Mod+Shift+F { fullscreen-window } Mod+Shift+I { move-column-to-workspace-up } Mod+Shift+K repeat=false { focus-workspace "chat" } Mod+Shift+L { spawn "/nix/store/44k60k5x65xc3nxfaqim5rvw523fw5jv-systemd-258.3/bin/loginctl" "lock-session" } Mod+Shift+Minus { set-window-height "-10%" } Mod+Shift+N { move-column-left } Mod+Shift+O { move-column-right } Mod+Shift+P { power-off-monitors } Mod+Shift+R { spawn-sh "/nix/store/p0pyx7jv8afsn4l1dl6wfa5kc5zp8f34-toggle-special-workspace/bin/toggle-special-workspace" } Mod+Shift+S { screenshot-window } Mod+Shift+Slash { show-hotkey-overlay } Mod+Shift+W { spawn-sh "/nix/store/7baii5ng1cxrgb1v4bnhjscb7anvakfn-pozfox-148.0b10/bin/firefox-devedition -P dev-edition-default" } Mod+Space { toggle-window-floating } Mod+Tab { focus-workspace-previous } Mod+TouchpadScrollDown { spawn "/nix/store/qyx07zaa1fc8d216n6qnikybj7snk2q8-wireplumber-0.5.13/bin/wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02-" } Mod+TouchpadScrollUp { spawn "/nix/store/qyx07zaa1fc8d216n6qnikybj7snk2q8-wireplumber-0.5.13/bin/wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.02+" } Mod+V repeat=false { focus-workspace "pipewire" } Mod+W { spawn-sh "/nix/store/73y43n3shjr0b57qsw769n97dws1i8z0-librewolf-147.0.3-2/bin/librewolf -P default" } Mod+WheelScrollDown cooldown-ms=150 { focus-workspace-down } Mod+WheelScrollLeft { focus-column-left } Mod+WheelScrollRight { focus-column-right } Mod+WheelScrollUp cooldown-ms=150 { focus-workspace-up } Mod+X repeat=false { focus-workspace "keepassxc" } Mod+Z { spawn-sh "/nix/store/w9hzki676skn1w1d5fhnbaqkpww0wdk2-woomer-focused-monitor/bin/woomer-focused-monitor" } XF86AudioLowerVolume allow-when-locked=true { spawn "/nix/store/qyx07zaa1fc8d216n6qnikybj7snk2q8-wireplumber-0.5.13/bin/wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05-" } XF86AudioMute allow-when-locked=true { spawn "/nix/store/qyx07zaa1fc8d216n6qnikybj7snk2q8-wireplumber-0.5.13/bin/wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle" } XF86AudioRaiseVolume allow-when-locked=true { spawn "/nix/store/qyx07zaa1fc8d216n6qnikybj7snk2q8-wireplumber-0.5.13/bin/wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.05+" } XF86MonBrightnessDown allow-when-locked=true { spawn "/nix/store/ly3ci90lp6qwvbjp50ka5bp4gzwsz1j4-brightnessctl-0.5.1/bin/brightnessctl" "set" "5%-" } XF86MonBrightnessUp allow-when-locked=true { spawn "/nix/store/ly3ci90lp6qwvbjp50ka5bp4gzwsz1j4-brightnessctl-0.5.1/bin/brightnessctl" "set" "5%+" } } debug { render-drm-device "/dev/dri/renderD128" } environment { DISPLAY ":0" } input { focus-follows-mouse max-scroll-amount="25%" keyboard { repeat-delay 250 repeat-rate 50 xkb { layout "pl" } } tablet { map-to-output "eDP-1" } touch { map-to-output "eDP-1" } touchpad { accel-profile "flat" accel-speed 0.200000 tap } warp-mouse-to-focus workspace-auto-back-and-forth } layout { border { active-gradient angle=45 from="#83C092" relative-to="workspace-view" to="#7FBBB3" inactive-gradient angle=45 from="#272E33" relative-to="workspace-view" to="#2E383C" width 3 } center-focused-column "never" default-column-width { proportion 0.500000 } focus-ring { active-color "#7fc8ff" inactive-color "#505050" off width 2 } gaps 5 preset-column-widths { proportion 0.333333 proportion 0.500000 proportion 0.666667 } } output "eDP-1" { mode "3024x1890@120.000000" position x=0 y=0 scale 1.000000 transform "normal" } prefer-no-csd screenshot-path "~/Pictures/Screenshots/screenshot-%Y%m%d%H%M%S.png" spawn-at-startup "/nix/store/8vswbm6nqd5yp1lslc2bxgf848gayh08-swww-0.11.2/bin/swww-daemon" spawn-at-startup "/nix/store/40yrc02zwr17r300plw11f9pwbvi23m3-network-manager-applet-1.36.0/bin/nm-applet" spawn-at-startup "/nix/store/g7cy24wfd0mvrmzqarnjcxal5nc58rhc-ironbar/bin/ironbar" spawn-at-startup "/nix/store/yshmgpn7cdl8xpdn2vwfnzrx55bj3q0n-wlsunset-0.4.0/bin/wlsunset" "-S" "06:00" "-s" "20:00" spawn-at-startup "/nix/store/ziynyk452z860cd4ry8y6x7pv83snjsi-anyrun/bin/.anyrun-wrapped_" "daemon" spawn-at-startup "/nix/store/8vswbm6nqd5yp1lslc2bxgf848gayh08-swww-0.11.2/bin/swww" "img" "-o" "eDP-1" "/nix/store/k4mxap04bdaw30a0r724pdjrjrnlwfqi-poz-nix-wallpaper.png" spawn-at-startup "/nix/store/20k54av3184kldcqfcbnbvvhgdzpm8j6-foot/bin/foot" "--app-id=btop" "--title=btop" "/nix/store/8n5lhf761h050am8085qazny52vnja9x-btop/bin/btop" spawn-at-startup "/nix/store/ihni453y23z3jhpmh1hhl07a926gbdh3-keepassxc-2.7.11/bin/keepassxc" spawn-at-startup "/nix/store/20k54av3184kldcqfcbnbvvhgdzpm8j6-foot/bin/foot" "--app-id=niksos" "--title=niksos" "--working-directory=niksos" spawn-at-startup "/nix/store/fnh8prmi8f4irr4w1qmvz1j1kfv08mh5-helvum-0.5.1/bin/helvum" spawn-at-startup "/nix/store/jpagl82vc2ms5kcbkr6v665wqa6jxiq5-pwvucontrol-0.5.1/bin/pwvucontrol" window-rule { clip-to-geometry true } window-rule { match app-id="^(Tor Browser)$" match app-id="^(Mullvad Browser)$" match app-id="^(mpv)$" match app-id="^(imv)$" match title="^(Picture-in-Picture)$" match title="^(.*)(Choose User Profile)(.*)$" match title="^(blob:null/)(.*)$" match app-id="^(xdg-desktop-portal-gtk)$" match app-id="^(code)" title="^(Open*)" open-floating true } window-rule { default-floating-position relative-to="bottom-right" x=10 y=10 match app-id="steam" title="^notificationtoasts_d+_desktop$" } window-rule { border { off } geometry-corner-radius 0.000000 0.000000 0.000000 0.000000 match app-id="^(btop)$" open-maximized true open-on-workspace "btop" } window-rule window-rule { block-out-from "screencast" border { off } geometry-corner-radius 0.000000 0.000000 0.000000 0.000000 match app-id="^(org.keepassxc.KeePassXC)$" open-maximized true open-on-workspace "keepassxc" } window-rule { border { off } geometry-corner-radius 0.000000 0.000000 0.000000 0.000000 match app-id="^(niksos)$" open-maximized true open-on-workspace "niksos" } window-rule { border { off } geometry-corner-radius 0.000000 0.000000 0.000000 0.000000 match app-id="^(org.pipewire.Helvum)$" match app-id="^(com.saivert.pwvucontrol)$" open-on-workspace "pipewire" } workspace "btop" workspace "chat" workspace "keepassxc" workspace "niksos" workspace "pipewire" ``` </details> and this is the input section: ```kdl input { focus-follows-mouse max-scroll-amount="25%" keyboard { repeat-delay 250 repeat-rate 50 xkb { layout "pl" } } tablet { map-to-output "eDP-1" } touch { map-to-output "eDP-1" } touchpad { accel-profile "flat" accel-speed 0.200000 tap } warp-mouse-to-focus workspace-auto-back-and-forth } ``` I'm using my macbook's touchpad for this
Author
Owner

@JakeStanger commented on GitHub (Feb 11, 2026):

would anybody like to send me a macbook to test?

I'll try and get Niri set up on my laptop soon and see if I can replicate it there. If not, and if you're willing, it might not be a terrible issue to dive into yourself

<!-- gh-comment-id:3887792120 --> @JakeStanger commented on GitHub (Feb 11, 2026): ~~would anybody like to send me a macbook to test?~~ I'll try and get Niri set up on my laptop soon and see if I can replicate it there. If not, and if you're willing, it might not be a terrible issue to dive into yourself
Author
Owner

@imnotpoz commented on GitHub (Feb 12, 2026):

All of this seems to stop when I use my brightness keybinds, which use brightnessctl with either -5% or +5%

This doesn't work all of the time, I might have just pressed it just as it fizzled out by itself

<!-- gh-comment-id:3889796738 --> @imnotpoz commented on GitHub (Feb 12, 2026): > All of this seems to stop when I use my brightness keybinds, which use `brightnessctl` with either `-5%` or `+5%` This doesn't work all of the time, I might have just pressed it just as it fizzled out by itself
Author
Owner

@JakeStanger commented on GitHub (Feb 12, 2026):

To me it looks like channel lag from the video, ie update messages are being sent faster than they are received. That's likely either due to a delay in processing due to something weird on the Mac, or it's because your trackpad sends way more events than expected.

<!-- gh-comment-id:3889809348 --> @JakeStanger commented on GitHub (Feb 12, 2026): To me it looks like channel lag from the video, ie update messages are being sent faster than they are received. That's likely either due to a delay in processing due to something weird on the Mac, or it's because your trackpad sends way more events than expected.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
JakeStanger/ironbar#3217
No description provided.