1
0
Fork
You've already forked ewm
0
forked from ezemtsov/ewm

feat: add idle inhibition support (Wayland protocol, D-Bus, fullscreen heuristic, Emacs command) #1

Closed
avph wants to merge 1 commit from inhibit_idle into master
pull from: inhibit_idle
merge into: avph:master
avph:master
avph:ewm-native-overlays
avph:vulkan-backend
avph:per-keyboard-settings
avph:QutebrowserFix
avph:typing-latency-flush
avph:typing-latency-logging
avph:EmacsScreencast
avph:VirtualOutput
avph:fix/text-input-key-leak
avph:input-mode-toggle
avph:multigpu
avph:fix/startup-focus-and-dashboard
avph:output-info
avph:fix/startup-focus-nil-output
avph:virtual-keyboard
avph:window-recording
avph:cargo-fmt
avph:fix/shifted-intercept-prefixes
avph:Flake
avph:FuncDecl
avph:fix/boundp-guard-in-fixup-customs
Owner
Copy link

Implement idle inhibition so watching videos or giving presentations
doesn't trigger screen blanking or swayidle. Three automatic sources
plus a manual Emacs toggle:

  • zwp-idle-inhibit-v1 Wayland protocol via Smithay delegation, with
    visibility check (only surfaces with a primary scanout output inhibit)
  • org.freedesktop.ScreenSaver D-Bus interface for Firefox/Chrome, with
    cookie tracking and automatic cleanup on client disconnect
  • Fullscreen heuristic: any fullscreen output layout entry inhibits idle

Manual inhibition from Emacs via ewm-set-idle-inhibited (Rust defun),
ewm-idle-inhibit command, and ewm-idle-inhibit-mode global minor mode.

Both idle systems are suppressed: ext-idle-notify-v1 (swayidle) via
set_is_inhibited(), and native idle timer (monitor blanking) via
cancel/restart. On idle timer fire, refresh inhibition state first to
catch stale D-Bus inhibits that arrived without input/render activity.

Implement idle inhibition so watching videos or giving presentations doesn't trigger screen blanking or swayidle. Three automatic sources plus a manual Emacs toggle: - zwp-idle-inhibit-v1 Wayland protocol via Smithay delegation, with visibility check (only surfaces with a primary scanout output inhibit) - org.freedesktop.ScreenSaver D-Bus interface for Firefox/Chrome, with cookie tracking and automatic cleanup on client disconnect - Fullscreen heuristic: any fullscreen output layout entry inhibits idle Manual inhibition from Emacs via ewm-set-idle-inhibited (Rust defun), ewm-idle-inhibit command, and ewm-idle-inhibit-mode global minor mode. Both idle systems are suppressed: ext-idle-notify-v1 (swayidle) via set_is_inhibited(), and native idle timer (monitor blanking) via cancel/restart. On idle timer fire, refresh inhibition state first to catch stale D-Bus inhibits that arrived without input/render activity.
Implement idle inhibition so watching videos or giving presentations
doesn't trigger screen blanking or swayidle. Three automatic sources
plus a manual Emacs toggle:
- zwp-idle-inhibit-v1 Wayland protocol via Smithay delegation, with
 visibility check (only surfaces with a primary scanout output inhibit)
- org.freedesktop.ScreenSaver D-Bus interface for Firefox/Chrome, with
 cookie tracking and automatic cleanup on client disconnect
- Fullscreen heuristic: any fullscreen output layout entry inhibits idle
Manual inhibition from Emacs via ewm-set-idle-inhibited (Rust defun),
ewm-idle-inhibit command, and ewm-idle-inhibit-mode global minor mode.
Both idle systems are suppressed: ext-idle-notify-v1 (swayidle) via
set_is_inhibited(), and native idle timer (monitor blanking) via
cancel/restart. On idle timer fire, refresh inhibition state first to
catch stale D-Bus inhibits that arrived without input/render activity.
avph closed this pull request 2026年04月09日 19:39:19 +02:00

Pull request closed

Please reopen this pull request to perform a merge.
Sign in to join this conversation.
No reviewers
Labels
Clear labels
No items
No labels
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
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
avph/ewm!1
Reference in a new issue
avph/ewm
No description provided.
Delete branch "inhibit_idle"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?