diff options
author | Benjamin Barenblat <bbaren@google.com> | 2020-11-18 13:15:35 -0500 |
---|---|---|
committer | Benjamin Barenblat <bbaren@google.com> | 2020-11-18 13:15:35 -0500 |
commit | da3eec3c212cb5f88d73ebadf5ccc4cf417d9507 (patch) | |
tree | 360fd2dccc510051340d20e5a85f5bf92e9f8840 | |
parent | 46269b7bbf36ba01fbdb4013038a206a7d58d4b1 (diff) |
-rw-r--r-- | README.md | 51 |
1 files changed, 5 insertions, 46 deletions
@@ -1,52 +1,11 @@ xssxss ====== -Normally, [Chrome](https://www.google.com/chrome/) pauses your screensaver while -you’re watching video. If you use [xmonad](https://xmonad.org/) and -[XScreenSaver](https://www.jwz.org/xscreensaver/) together, though, it won’t. -xssxss fixes this behavior; simply run - - make - LD_PRELOAD=$PWD/libxssxss.so google-chrome - -and ta-da, Chrome will disable your screensaver like it’s supposed to. - -Motivation ----------- - -Chromium disables the screensaver through D-Bus. Neither XScreenSaver nor xmonad -implements a D-Bus interface, so [Chromium falls back][XSSSuspendSet] to calling -[`XScreenSaverSuspend`][Xss(3)]. Despite its name, this is an X library function -and [completely unrelated to XScreenSaver][Ubuntu 718176 comment 3], so -XScreenSaver never picks up on it and remains active. - -xssxss (“`XScreenSaver`/XScreenSaver”) translates between X’s `XScreenSaver` -functions and XScreenSaver’s interface by executing `xdg-screensaver reset` when -Chrome calls `XScreenSaverSuspend`. - -[Ubuntu 718176 comment 3]: https://bugs.launchpad.net/ubuntu/+source/xscreensaver/+bug/718176/comments/3 -[XSSSuspendSet]: https://cs.chromium.org/chromium/src/services/device/wake_lock/power_save_blocker/power_save_blocker_x11.cc?l=225&rcl=2edab67ba89b69c8b6117440faf1b8397a62ace6 -[Xss(3)]: https://www.x.org/releases/X11R7.7/doc/man/man3/Xss.3.xhtml - -Future work ------------ - -Ideally, users would be able to control XScreenSaver using D-Bus. However, I -think adding a D-Bus dependency to XScreenSaver is not the best approach; -instead, someone should write an adapter daemon that implements [a reasonable -D-Bus interface][idle-inhibition-spec] and executes `xscreensaver-command` to -control XScreenSaver. - -Once that daemon’s written, Chromium will need to use it. There are multiple -D-Bus interfaces for disabling various screensavers, and Chromium [currently -picks based on the running desktop environment][SelectAPI]. Chromium will need -modification to probe the available interfaces on the bus and select an -appropriate one. There’s a [`TODO` to this effect][SelectAPI TODO], which -suggests the project would be receptive to a patch. - -[idle-inhibition-spec]: https://people.freedesktop.org/~hadess/idle-inhibition-spec/re01.html -[SelectAPI]: https://cs.chromium.org/chromium/src/services/device/wake_lock/power_save_blocker/power_save_blocker_x11.cc?l=450&rcl=fdece9dd1e1f7840a643c85e2d89f356b153fe2c -[SelectAPI TODO]: https://cs.chromium.org/chromium/src/services/device/wake_lock/power_save_blocker/power_save_blocker_x11.cc?l=447-448&rcl=999b2f18d8c62250dd19c85f6c2bb370e68fba8f +This repository used to provide an `LD_PRELOAD` that helped +[Chrome](https://www.google.com/chrome/) integrate with +[XScreenSaver](https://www.jwz.org/xscreensaver/). However, Chrome’s X interface +has changed, and it doesn’t work anymore. Use +[xscreensaver-dbus](https://github.com/google/xscreensaver-dbus) instead. Disclaimer ---------- |