Commit Graph

274 Commits

Author SHA1 Message Date
BB f74d83dcca niri-config: add keep-max-bpc-unchanged option (#2195)
* niri-config: add disable-set-bpc option
setting bpc to 8 bricks some OLED displays driven by amdgpu

* change to keep-max-bpc-unchanged and add to wiki

* fmt

* Update wiki/Configuration:-Debug-Options.md

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-08-07 11:06:11 -07:00
sodiboo 52c579d556 fix hot reloading /etc/niri/config.kdl (#1907)
* refactor config load logic, and properly watch the system config path

* move config creation to niri-config, and make the errors a bit nicer

notably, "error creating config" is now a cause for "error loading
config", instead of it being one error and then "error loading config:
no such file or directory". also, failure to load a config is now
printed as an error level diagnostic (because it is indeed an error, not
just a warning you can shrug off)

* refactor watcher tests; add some new ones

now they check for the file contents too! and i added some tests for
ConfigPath::Regular, including a messy one with many symlink swaps

* fixes

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-08-05 06:27:28 -07:00
Ivan Molodetskikh f49ecc31c4 pw_utils: Wait for frame completion before queueing
Without explicit sync, we have no way to signal the PipeWire consumer when the
rendering is done. So, wait until it's done before giving it the frame.

This should fix flickering screencasts on NVIDIA.
2025-08-04 14:36:34 +02:00
Ivan Molodetskikh dfb3683187 Fix new Clippy warnings 2025-07-13 12:54:03 +03:00
Nikolay Yakimov e0b0b04b44 Expose libinput Button Scrolling Button Lock Enabled property 2025-06-19 05:05:47 -07:00
Andrew Davis 07080a0431 Clamp colors to valid values when parsing config
The oklch color space often creates weird values when parsed by csscolorparser.
clamping the output to values between 0 and 1 should fix inconsistent color handling
on borders.
2025-06-11 02:40:36 -07:00
Ivan Molodetskikh aa47223c19 Upgrade deps and Smithay (cursor-shape v2) 2025-06-11 10:21:17 +03:00
sashomasho 8d7b22d1a8 Add deactivate-unfocused-windows debug flag (#1706)
* force xdg deactivation on invisable workspaces

This debug option provides a workaround for many Chromium-based chat
applications that fail to show notifications when they're active in
a workspace that's not currently visible and don't have keyboard focus

Signed-off-by: Alex Yosifov <sashomasho@gmail.com>

* fixes

---------

Signed-off-by: Alex Yosifov <sashomasho@gmail.com>
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-06-11 06:05:14 +00:00
Ivan Molodetskikh a18d24fc24 Don't forget to update insta snapshots 2025-06-09 16:13:40 +03:00
Ivan Molodetskikh 6bab912383 Accept FloatOrInt for input accel_speed, animation slowdown
Technically cfg-breaking due to introducing min/max limits at parse time, but
values outside these limits were invalid anyway, so maybe it's fine?
2025-06-09 14:04:56 +03:00
Ivan Molodetskikh f918eabe6a Implement xwayland-satellite integration 2025-06-07 13:12:50 -07:00
Kent Daleng abac28a65c add option to hide unbound actions in hotkey overlay (#1618)
* add option to hide unbound actions in hotkey overlay

* fix config test, add some docs

* Add kdl language hint

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>

* Improve docs

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>

* hide_unbound -> hide_not_bound

* forgot to rename in wiki

* filter actions before calling format

* use any instead of contains

* retain instead of filter

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-06-03 20:31:18 +03:00
Gwen a7186a0441 Add debug option to skip cursor-only updates while VRR is active (#1616)
* Add debug option to skip cursor-only updates while VRR is active

* Update niri-config/src/lib.rs

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>

* Update src/backend/tty.rs

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>

* Update wiki/Configuration:-Debug-Options.md

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>

* Update Configuration:-Debug-Options.md

* Update tty.rs

* Update lib.rs

* Update Configuration:-Debug-Options.md

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-06-03 15:56:21 +00:00
Ivan Molodetskikh 8ba57fcf25 Bump version to 25.05.1 2025-05-25 08:45:41 +03:00
Ivan Molodetskikh 126ca37d96 Rename Un/Set/ToggleUrgent to Un/Set/ToggleWindowUrgent
Overlooked this when reviewing. This change is not cfg-breaking (since you
can't bind these directly), but it does break calling these actions through
IPC. I don't imagine they are widely used though, and the original PR author
who also implemented urgency for bars said he didn't use these actions either.
2025-05-25 08:43:27 +03:00
Ivan Molodetskikh 3b864dc104 Bump version to 25.05 2025-05-17 13:50:36 +03:00
Ivan Molodetskikh defd4c5c4d Add center-visible-columns action 2025-05-12 14:13:51 +03:00
Ivan Molodetskikh c98537a2b0 Implement baba-is-float for layers 2025-05-12 09:10:59 +03:00
Ivan Molodetskikh a2efaf2816 Add is-urgent window rule matcher 2025-05-10 22:49:55 +03:00
Ivan Molodetskikh 5816691460 Add urgent color support to tab indicators 2025-05-10 22:42:45 +03:00
Duncan Overbruck 9d3d7cb0e9 add {toggle,set,unset}-urgent cli actions 2025-05-10 12:14:41 -07:00
Duncan Overbruck 398bc78ea0 add urgent border color and gradient 2025-05-10 12:14:41 -07:00
Ivan Molodetskikh 497f186422 Add layout background-color setting 2025-05-06 17:34:40 +03:00
Ivan Molodetskikh 3e31c134a6 Implement place-within-backdrop layer rule 2025-05-06 17:34:40 +03:00
Aberter Yan eb590c5346 Implement --focus for MoveColumnToWorkspace/Up/Down 2025-05-01 11:06:34 -07:00
Ivan Molodetskikh f2c690802b Adjust the workspace shadow defaults some more 2025-05-01 11:04:47 +03:00
Ivan Molodetskikh 9d6037b94c Normalize workspace shadows to 1080 px tall screen, adjust defaults
Workspace gaps are dependent on screen size, so it makes sense to make shadows
depend on the screen size to, to avoid them filling more or less of the gap.
2025-05-01 10:33:53 +03:00
Ivan Molodetskikh 446bc155ce Add workspace-shadow {} config to overview {} 2025-05-01 09:45:38 +03:00
erdii 82dabc21f3 feat: implement support to enable numlock at startup
Signed-off-by: erdii <me@erdii.engineering>
2025-04-30 09:54:19 -07:00
Ivan Molodetskikh fd389af6d8 Add backdrop-color setting to overview {} 2025-04-28 09:14:43 +03:00
Ivan Molodetskikh e6d82d3ee3 Implement top-left hot corner to toggle the Overview
Compared to third-party implementations such as waycorner:

- It works during interactive window move (no surfaces receive pointer
  focus in this case, so this cannot work through layer-shell).
- It works during drag-and-drop.
- It disables itself over fullscreen windows.
- It does not prevent direct scanout.
2025-04-25 02:00:18 -07:00
Ivan Molodetskikh 31e76cf451 overview: Add DnD up/down scrolling 2025-04-25 02:00:18 -07:00
Ivan Molodetskikh bd3d554389 overview: Add hardcoded mouse scroll binds 2025-04-25 02:00:18 -07:00
Ivan Molodetskikh af1fca35bb Implement an Overview 2025-04-25 02:00:18 -07:00
Ivan Molodetskikh 9571d149b2 Render workspaces separately with gaps between
This design makes more sense spatially, and is required for the
Overview. Gaps also make it clear how clipping windows to workspace
bounds works.

Background and bottom layer-shell surfaces get duplicated for each
workspace, while top and overlay stay "on top".
2025-04-25 02:00:18 -07:00
LunarEclipse 3b1bf34e21 Allow negative shadow spread 2025-03-31 14:13:20 +03:00
sodiboo 36489f1daa add toggle-keyboard-shortcuts-inhibit to CLI/IPC (#1366)
* add toggle-keyboard-shortcuts-inhibit to CLI/IPC

missed it in ef8d5274b8
or https://github.com/YaLTeR/niri/pull/630
or 0584dd2f1e
or whatever

* Update niri-ipc/src/lib.rs

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-03-31 05:00:10 +00:00
lualeet 8d43efe4ac Add option 'focus-at-startup' to focus a chosen output on start (#1323)
* Implement default-output

* Fix incorrect wiki string

* Center mouse on start

* Move default-output to Output.focus-at-startup

* fixes

---------

Co-authored-by: lualeet <lualeet@null.null>
Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-03-29 10:13:59 +00:00
nyx 0db48e2f1b Add focus argument to move-window-to-workspace (#1332)
* layout: add focus flag to move-window-to-workspace

* lib: update comment

* misc: minor dup refactor

* input: format code

* layout: minor nit

* layout: update comment

* input: remove unnecessary conditionals

* misc: replace boolean

* tests: fix the failing one

* layout: change to smart

* ipc: Option<bool> -> bool

* lib: format code

* Rewrite focus doc comment

---------

Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
2025-03-29 06:40:08 +00:00
Florian Finkernagel 7f72c358d5 Add option to warp-mouse-to-focus to always center 2025-03-22 01:00:43 -07:00
peelz c3609efb7a Add mod-key and mod-key-nested settings 2025-03-22 00:03:33 -07:00
Ivan Molodetskikh 39f52b7585 Implement toggle-windowed-fullscreen
Windowed, or fake, or detached, fullscreen, is when a window thinks that it's
fullscreen, but the compositor treats it as a normal window.
2025-03-17 22:31:19 -07:00
Cole Leavitt 5b6b6a5fe1 Add wait-for-frame-completion-in-pipewire debug flag for NVIDIA screencasts 2025-03-17 12:03:43 -07:00
Ivan Molodetskikh 31891e6642 Implement dynamic screencast target 2025-03-15 09:55:46 -07:00
Duncan Overbruck f6aa8c1793 Add move-column-to-index action 2025-03-14 12:57:33 -07:00
Duncan Overbruck a5d58d670b Add focus-column (by index) action 2025-03-14 12:57:33 -07:00
Ivan Molodetskikh 1c6037e612 Add tiled-state window rule, update the tiled state live 2025-03-13 14:14:54 +03:00
dbeley 3e21585861 feat(trackpoint): add left-handed option support 2025-03-13 03:36:20 -07:00
Annika Hannig 8737067af5 added move window to monitor by id 2025-03-10 23:17:36 -07:00
Annika Hannig 50a99f6356 Implemented move-window-to-monitor and move-column-to-monitor 2025-03-10 23:17:36 -07:00