Note: Preface aside, feel free to skip the introduction and go straight to Getting Started but if you intend to contact me, please read everything to make sure that your question hasn't already been answered.
- Preface
- Introduction
- Getting Started
- Dependencies
- Incompatibilities
- Incompatibilities (
ConsoleKit
) - Incompatibilities (
elogind
) - Derivatives
- Known Issues
- Preparing Overlays
- Fetching Overlays
- Profile Selection
- Profile Selection (
Gentoo Linux
) - Configuration (Optional GNOME Applications)
- Configuration (Optional Quality of Life Improvements)
- Configuration (Wayland)
- Upgrading
- Installation
- Finishing Touches
- Finishing Touches (
ConsoleKit
) - Finishing Touches (
elogind
) - Finishing Touches (text-based login)
- Finishing Touches (text-based login with
ConsoleKit
) - Finishing Touches (text-based login with
elogind
) - Switching
- Uninstallation
- Tips
- External Resources
- Internals
¹ For details, see: Distributions based on Gentoo. ↩
(more)
For those not familiar with the matter, the state of GNOME was such that while:
- systemd was not a hard compile time dependency
- systemd was a hard run time dependency for basic functionality
Basic functionality was what the GNOME team decided included:
- power management
- session tracking
- lid close handling
- log/event viewing
- Wayland (in GNOME, not in general)
This means that before, without applying any patches, you could run GNOME in two official conditions:
- GNOME with systemd and with basic functionality
- GNOME without systemd and without basic functionality¹
This project delivered (and still does deliver for a range of GNOME release versions):
- GNOME without systemd and with basic functionality
For our purposes this means a dependency on OpenRC
, ConsoleKit
(or elogind
) and UPower
with Power Management Utilities (pm-utils
) reintegrated (or elogind
support).
Searching for information on this subject in places other than my official contributions on Gentoo Linux
(e.g. forum topic #1022050) and Funtoo Linux
(e.g. issues #1329, #1637 & #2485 and forum topic #263) will turn up information that is in many cases almost entirely dead wrong. So let me emphasize that this was indeed the full GNOME experience without systemd and with minimal divergence from the vanilla default.
The only feature which did not work was Wayland
(unless you were/are using an elogind
implementation).
Of course, this is a mostly a matter of the past. Now that Gentoo has a systemdless GNOME, this project's focus has changed to its secondary purpose which is to allow switching between GNOME release versions.
¹ For details, see: "Basic" OpenRC Mode. ↩
Timeline | Description |
---|---|
25 Jun 2015 | Initial commits¹ |
16 Jul 2015 | Project announcement (and support thread) |
05 Jun 2018 | Support thread (part 2) |
27 Aug 2018 | Funtoo Linux stage 3 tarballs no longer Portage-compatible with Gentoo Linux |
03 Dec 2018 | Funtoo Linux announces GNOME 3.30 without systemd |
26 Mar 2019 | Gentoo Linux announces GNOME 3.30 for all init systems |
08 Apr 2019 | Support thread (part 3) |
05 Mar 2021 | Support thread (part 4) |
20 Apr 2022 | Support thread (part 5) |
28 Mar 2023 | Gentoo Linux stage 3 tarballs (20230220 & older) confirmed to be compatible with the project |
17 Feb 2024 | GNOME 3.14 through 42 confirmed to be build passing with GCC 13, Clang 17 & Python 11 |
04 Mar 2024 | Documentation revision #359² |
² Commit history is not displayed because updates mirror the effect of a git shallow clone with "--depth 1". ↩
GNOME Series | Basic Functionality⁵ | Quality of Life Improvements⁶ | Grading⁷ | Availability⁸ | |
---|---|---|---|---|---|
true eol³ | 3.14 | ConsoleKit & elogind | 14 of 14 (100%) | Platinum | 3.14.2 |
true eol³ | 3.16 | ConsoleKit & elogind | 15 of 16 (~94%) | Silver | 3.16.2 |
true eol³ | 3.18 | ConsoleKit & elogind | 15 of 16 (~94%) | Silver | 3.18.2 |
true eol³ | 3.20 | ConsoleKit & elogind | 15 of 15 (100%) | Gold | 3.20.2 |
true eol³ | 3.22 | ConsoleKit & elogind | 16 of 16 (100%) | Silver | 3.22.2 |
true eol³ | 3.24 | elogind | 14 of 16 (~88%) | Silver | 3.24.2 |
eol | 3.26 | elogind | 14 of 16 (~88%) | Bronze | 3.26.2 (🗘) |
eol | 3.28 | elogind | 14 of 16 (~88%) | Bronze | 3.28.2 (🗘) |
eol | 3.30 | elogind | 16 of 18 (~89%) | Bronze | 3.30.2 (🗘) |
eol | 3.32 | elogind | 15 of 17 (~88%) | Silver | 3.32.2 |
eol | 3.34 | elogind | 15 of 17 (~88%) | Silver | 3.34.8 |
eol | 3.36 | elogind | 15 of 17 (~88%) | Bronze | 3.36.10 |
sunsetting⁴ | 3.38 | elogind | 15 of 17 (~88%) | Bronze | 3.38.9 |
longterm | 40 | elogind | 3 of 15 (~20%) | Aluminum | 40.9 |
longterm | 41 | elogind | 3 of 15 (~20%) | Aluminum | 41.8 |
longterm | 42 | elogind | 3 of 15 (~20%) | Aluminum | 42.9 |
longterm | 43 | elogind | 3 of 15 (~20%) | Aluminum | 43.4 |
next | 44 | ||||
next | 45 | ||||
next | 46 |
³ These GNOME release versions depend on Python 2.7 and require the restoration of some deleted packages and removed functionality. Although end-of-lifed, they were recently tested and confirmed to be build passing.
⁴ These GNOME release versions received less upstream bugfixes. They are tested at a lower priority than longterm and stable releases.
⁵ Power management, session tracking and log/event viewing. ↩
⁶ These are optional patches which improve the GNOME experience. ↩
⁷ There are three classes of grading: "gold", superb; "silver", satisfactory; and "bronze", acceptable. Loosely speaking, three aspects are graded: accessibility, usability and stability. Each qualifying aspect gives a grade increase. If a GNOME release version is not "gold" and it is not considered "alpha" or "beta", it is lacking in one or multiple aspects.↩
⁸ Full GNOME release versions are in the form of MAJOR.MINOR.PATCH. For the purposes of this project, PATCH at: 0 is considered "alpha", 1 is considered "beta" and 2 or higher is considered "stable". A
🗘
symbol is for internal purposes and denotes that the relevant ebuilds should be synced against the main tree. ↩
(more)
Note:
Gentoo Linux
users can choose to follow Sakaki's more detailed instructions (GNOME/GNOME Without systemd/Dantrell) for this project instead of continuing below. Likewise, there is also an excellent resource (Sakaki's EFI Install Guide) for those wanting to dual-boot with Windows 8+.
It is assumed you followed the Gentoo Handbook (or what's mentioned in relevant Derivatives section) and have a machine running with the default SysV-style OpenRC init system with an appropriately configured user account for daily use.
It is further assumed that you set VIDEO_CARDS
and INPUT_DEVICES
in /etc/portage/make.conf
and configured the kernel accordingly for the following dependencies:
- X Window server
- udev (or eudev which is now obsolete)
- synaptics
- PulseAudio
- ACPI
The remaining dependencies require no kernel configuration:
- ConsoleKit (not
ConsoleKit2
) orelogind
- D-Bus
UPower
with Power Management Utilities (pm-utils
) reintegrated orelogind
support
All of the above packages are pulled in automatically. Relevant services will be activated in the Finishing Touches section.
(more)
-
NVIDIA Drivers with Userspace VESA Framebuffer (
uvesafb
)Starting from version 358, the NVIDIA drivers are incompatible with the Userspace VESA Framebuffer (
uvesafb
) and will crash your system if you attempt to: (1) change between VTT and X, or (2) suspend or hibernate.You can work around the issue by switching from
uvesafb
to the EFI Framebuffer (efifb
) with or without the Simple Framebuffer (simplefb
). However, this also requires you to switch from a BIOS to a UEFI bootloader and depending on your hardware (especially your monitor) it may disable your high-resolution console.If you want to continue using
uvesafb
feel free to remain on the last working long-lived branch release of the NVIDIA drivers, 352.79 (25 Jan 2016). However, it is only compatible with Linux Kernel versions older than 4.5.Reference:
-
ConsoleKit2
ConsoleKit2 is supposed to be backwards compatible with ConsoleKit (which this project is based around) but this is not the case.
-
NVIDIA Drivers with Wayland
The nouveau drivers have better support.
Note: If you are using a
Gentoo Linux
derivative that is build passing, now is a good time to check if there are any instructions related to getting started.
Last Release Tested | Name | Status¹ |
---|---|---|
27 Aug 2018 | Funtoo Linux stage 3 tarballs |
build failing |
¹ Derivatives that are build failing are considered to have broken compatibility with
Gentoo Linux
and are not supported. ↩
(more)
-
GNOME Boxes & libvirt Circular Dependencies
Can occur during the initial install of GNOME Boxes on all profiles. Primarily requires the qemu USE flag to be temporarily disabled:
app-emulation/libvirt (Change USE: lxc -qemu)
-
Python & SQLite Circular Dependencies
Can occur during new installs using the combined (plasma+gnome) profiles. Might require a USE flag to be temporarily disabled on one of two packages:
dev-lang/python (Change USE: -sqlite) dev-db/sqlite (Change USE: -icu)
We could handle this seamlessly on our end but we want users to be aware of this particular circular dependency.
-
Rust (on x86 or multilib systems)
Set abi_x86_32 on dev-lang/rust or gnome-base/librsvg will fail to build.
-
librsvg
Might require dev-lang/vala to be manually installed first.
-
GTK+
Might require app-i18n/ibus² (if present) to be rebuilt first otherwise it will build but fail to install.
¹ For details, see: Gentoo bug #550446.
Install Layman¹ (checking that the git
USE flag is enabled or dev-vcs/git
is separately installed):
emerge --ask layman
Add our repositories.xml
file to Layman with nano -w /etc/layman/layman.cfg
:
# original unsigned lists and definitions
# one url per line, indented
overlays :
https://api.gentoo.org/overlays/repositories.xml
https://raw.githubusercontent.com/dantrell/gentoo-overlay-dantrell-gnome/master/repositories.xml
Update the cached remote list(s):
layman --fetch
If it went right it will say something similar to:
Fetching remote list,...
Remote list already up to date: http://www.gentoo.org/proj/en/overlays/repositories.xml
Last-modified: Sat, 01 Oct 2016 21:40:18 GMT
Fetching new list... https://raw.githubusercontent.com/dantrell/gentoo-overlay-dantrell-gnome/master/repositories.xml
Last-modified: Mon, 03 Oct 2016 00:31:03 GMT
Fetch Ok
Warnings like "an installed db file was not found at" are okay if Layman previously had no cached remote list.
¹ If updating old (<=2.0) layman installations, see: Updating Old Layman Installations. ↩
Note: You can add as many GNOME release overlays as you want (even all of them). Your profile selection will determine which one takes precedence.
Add the generic GNOME overlay:
layman --add dantrell-gnome
Add your preferred GNOME release overlay such as GNOME 42
:
layman --add dantrell-gnome-42
In the future, to update all overlays, use:
layman --sync-all
Note: If you do not select a profile, you are on your own.
There are two sets of bundled profiles:
-
The "defaults" which globally turns on GNOME related USE flags.
-
The "extended versions" which closely mirrors Gentoo's GNOME profile¹ and globally turns on USE flags which indirectly affect GNOME in addition to the defaults.
¹ For details, see: Differences Between GNOME Profiles. ↩
For immediate access to hidden profiles do:
emerge --ask --oneshot --verbose app-admin/eselect
To list the bundled profiles use:
eselect profile list
The relevant output will look similar to:
[36] dantrell-gnome:default/linux/amd64/17.1/desktop/plasma+gnome/3.38 (stable)
[37] dantrell-gnome:default/linux/amd64/17.1/desktop/plasma+gnome/40 (stable)
[38] dantrell-gnome:default/linux/amd64/17.1/desktop/plasma+gnome/41 (stable)
[39] dantrell-gnome:default/linux/amd64/17.1/desktop/plasma+gnome/42 (stable)
[40] dantrell-gnome-42:default/linux/amd64/17.1/desktop/gnome/42 (stable)
[41] dantrell-gnome-42:default/linux/amd64/17.1/desktop/gnome/42/extended (stable)
To expedite matters for a default install, use the bundled profile for either amd64
:
eselect profile set dantrell-gnome-42:default/linux/amd64/17.1/desktop/gnome/42
or x86
:
eselect profile set dantrell-gnome-42:default/linux/x86/17.0/desktop/gnome/42
Note: If you are using a
Gentoo Linux
derivative, now is a good time to check if there are any instructions related to profile selection.
(more)
Even if you choose gnome
instead of gnome-light
in the Installation section, there are still some GNOME applications that won't be pulled in automatically. You can manage those through the USE flags on gnome-base/gnome
with nano -w /etc/portage/package.use/gnome
:
USE flag | Default | Release Version Supported¹ | Description |
---|---|---|---|
eog-plugins | ✔ Yes | Install media-gfx/eog-plugins (image viewer plugins) | |
gedit-plugins | ✔ Yes | Install app-editors/gedit-plugins (text editor plugins) |
and through the USE flags on gnome-base/gnome-extra-apps
with nano -w /etc/portage/package.use/gnome-extra-apps
:
USE flag | Default | Release Version Supported¹ | Description |
---|---|---|---|
anjuta | ✘ No | Install dev-util/anjuta (IDE) | |
bijiben | ✔ Yes | Install app-misc/bijiben (note editor) | |
boxes | ✘ No | Install gnome-extra/gnome-boxes (remote and virtual system manager) | |
builder | ✘ No | 3.16 + |
Install dev-util/gnome-builder (IDE) |
california | ✘ No | Install gnome-extra/california (calendar) | |
celluloid | ✔ Yes | 3.36 + |
Install media-video/celluloid (media player) |
connections | ✔ Yes | 42 + |
Install net-misc/gnome-connections (remote desktop client) |
console | ✔ Yes | 42 + |
Install gui-apps/gnome-console (terminal emulator) |
dino | ✔ Yes | 3.32 + |
Install net-im/dino (chat client) |
empathy | ✘ No | Install net-im/empathy (chat client) | |
epiphany | ✘ No | Install www-client/epiphany (web browser) | |
evolution | ✔ Yes | Install mail-client/evolution (mail client) | |
flashback | ✘ No | (WIP ) |
Install gnome-base/gnome-flashback (session and helper application) |
foliate | ✔ Yes | 3.36 + |
Install app-text/foliate (ebook viewer) |
fonts | ✔ Yes | Install media-fonts/{noto,symbola,unifont} to complement media-fonts/cantarell | |
games | ✔ Yes | Install GNOME Games (a collection of small five-minute games in a variety of styles and genres) | |
gconf | ✘ No | Install gnome-extra/gconf-editor (GNOME configuration system and editor) | |
geary | ✘ No | Install mail-client/geary (mail client) | |
ghex | ✔ Yes | Install app-editors/ghex (hexadecimal editor) | |
gnote | ✘ No | Install app-misc/gnote (note editor) | |
gpaste | ✘ No | Install x11-misc/gpaste (clipboard management system) | |
latexila | ✘ No | Install app-editors/latexila (integrated LaTeX environment) | |
multiwriter | ✘ No | 3.16 + |
Install gnome-extra/gnome-multi-writer (USB device writer) |
plots | ✔ Yes | 3.32 + |
Install sci-visualization/plots (graph plotter) |
polari | ✔ Yes | Install net-irc/polari (IRC client) | |
recipes | ✔ Yes | 3.22 + |
Install gnome-extra/gnome-recipes (live cookbook) |
share | ✔ Yes | Install gnome-extra/gnome-user-share (personal file sharing tool) | |
shotwell | ✔ Yes | Install media-gfx/shotwell (photo manager) | |
simple-scan | ✘ No | Install media-gfx/simple-scan (document scanning utility) | |
software | ✘ No | Install gnome-extra/gnome-software (package manager) | |
text-editor | ✔ Yes | 41 + |
Install app-editors/gnome-text-editor (text editor) |
todo | ✔ Yes | 3.18 + |
Install gnome-extra/gnome-todo (task manager) |
tracker | ✔ Yes | Install app-misc/tracker (search engine, search tool and metadata storage system) | |
usage | ✔ Yes | 3.28 + |
Install gnome-extra/gnome-usage (system resources) |
¹ If no release version is specified then all available versions are supported. ↩
(more)
Google's Noto Fonts are (arguably) the most expansive typographic families ever made, supporting over 800 languages (even dead ones) and over 110,000 characters. As a result, however, it is enormous and subsequently can (in some cases) have a noticeable and reproducible impact on performance (directly related to the number of fonts processed).
You can manage this through the USE flags on media-fonts/noto
with nano -w /etc/portage/package.use/noto
:
USE flag | Default | Release Version Supported¹ | Description |
---|---|---|---|
emoji | ✘ No | Support Emojis² | |
extra | ✘ No | Support Condensed, Extra or SemiBold styles² | |
minimal | ✘ No | Only support Latin, Greek and Cyrillic glyphs (~600 language)² | |
ttf | ✔ Yes | Use the TTF format (instead of the OTF format)² |
By default, we mirror the result of the main tree but you may want to change this.²
¹ If no release version is specified then all available versions are supported. ↩
² For details, see: Alternatives to media-fonts/noto{,-cjk,-emoji}?. ↩
(more)
These are optional patches which aim to improve the GNOME experience and are mostly aesthetic and performant in nature. They can be managed through the deprecated*
and vanilla*
USE flags (to determine what flag does what check their classification) on the following packages:
Package | Default | Release Version Supported¹ | Description |
---|---|---|---|
gnome-base/gnome-control-center |
✔ Yes | 3.14 - 3.30 |
Disables automatic datetime and timezone options |
✔ Yes | 3.14 - 3.30 |
Disables changing hostname | |
gnome-base/gnome-settings-daemon |
✔ Yes | 3.28 + |
Restores old timeout for user inactivity |
gnome-base/gnome-shell |
✔ Yes | 3.14 - 3.24 |
Restores old background code (avoids wallpaper corruption when resuming from suspend) |
✔ Yes | Disables multiple asynchronous allocations (prevents a never-ending asynchronous loop)² | ||
✔ Yes | Forces more frequent garbage collection | ||
✔ Yes | Improves handling of motd when logging in (displays text in monospace and decreases the display time) | ||
✔ Yes | Improves handling of screen blanking (uses the "Blank Screen" time as the idle delay) | ||
gnome-base/gsettings-desktop-schemas |
✔ Yes | 3.32 + |
Restores old Document and Monospace font defaults |
gnome-base/nautilus |
✔ Yes | 3.16 & 3.18 |
Improves icons (adds another zoom level) |
✘ No | 3.16 & 3.18 (Shelved ) |
Use old icon grid and text width proportions (makes text labels in icon view warp at ~16 characters) | |
✔ Yes | Reorder context menu (primarily places "Open In Terminal" below "Open in New Tab" and other extensions below "Open With") | ||
✔ Yes | Support slow double click to rename (triggers rename mode by clicking an icon twice with a pause in between) | ||
✔ Yes | 3.20 + |
Support alternative search (find without recursion by pressing CTRL + SHIFT + F ) |
|
✔ Yes | 3.22 + |
Use old compress extension from File Roller instead of the native one | |
✔ Yes | Use FFmpeg as the video thumbnailer instead of Totem | ||
media-video/totem |
✔ Yes | Use FFmpeg as the video thumbnailer instead of Totem | |
x11-libs/gtk+ |
✘ No | 3.14 |
Simplifies GTK sidebars (e.g. Nautilus "Places") |
x11-libs/vte |
✔ Yes | 3.32 + |
Support desktop notifications from OSC 777 |
x11-terms/gnome-terminal |
✔ Yes | Restores background transparency | |
✔ Yes | Disables function keys (avoids clashes with command line utilities) | ||
✘ No | 3.32 + |
Restores old desktop icon name (fixes missing icon for some use cases) | |
✔ Yes | 3.30 + |
Separate "New Window/Tab" menu entries by default | |
✔ Yes | 3.32 + |
Support desktop notifications from OSC 777 | |
x11-themes/gnome-backgrounds |
✔ Yes | Replaces Adwaita live backgrounds (800x600) with the set from GNOME 3.10 (2560x1440) | |
x11-wm/mutter |
✔ Yes | 3.14 - 3.24 |
Restores old background code (avoids wallpaper corruption when resuming from suspend) |
✘ No | Disables mipmapping (trades scaled and smoothed window previews for a measurable performance increase) |
¹ If no release version is specified then all available versions are supported. ↩
² For details, see: gtk-embed: Don't allow multiple async allocations.
Note: This step is necessary since
X
is the default andWayland
requires theelogind
implementation.
Assuming all other conditions are met, you can enable Wayland
with nano -w /etc/portage/make.conf
:
USE="${USE} -ck elogind"
USE="${USE} egl wayland"
Regardless of whether GNOME is already installed or not, upgrade all installed packages, dependencies, and deep dependencies that are outdated or have USE flag changes (avoiding unnecessary rebuilds when USE changes have no impact):
emerge --ask --update --deep --changed-use --with-bdeps=y @world
This step is necessary to switch to my forks of certain packages. As an added bonus, if you already have GNOME installed, it should just Do The Right Thing™.
Note: Build failures are possible if you have parallelism enabled. In such cases, re-issue the previous command.
Proceed with either:
emerge --ask --keep-going gnome
or:
emerge --ask --keep-going gnome-light
Note: The following commands assume you want a GUI-based login and NetworkManager support.
Configure xdm
with nano -w /etc/conf.d/xdm
:
# We always try and start X on a static VT. The various DMs normally default
# to using VT7. If you wish to use the xdm init script, then you should ensure
# that the VT checked is the same VT your DM wants to use. We do this check to
# ensure that you haven't accidentally configured something to run on the VT
# in your /etc/inittab file so that you don't get a dead keyboard.
CHECKVT=7
# What display manager do you use ? [ xdm | gdm | kdm | gpe | entrance ]
# NOTE: If this is set in /etc/rc.conf, that setting will override this one.
DISPLAYMANAGER="gdm"
Allow users to use direct rendering:
getent group video && gpasswd --add <username> video
Allow users to manage devices:
getent group plugdev && gpasswd --add <username> plugdev
Allow users to run games which reside in /usr/games/bin/
:
getent group games && gpasswd --add <username> games
Configure services:
rc-update del dhcpcd default
rc-update add NetworkManager default
rc-update add dbus default
rc-update add xdm default
Configure services:
rc-update add acpid default
rc-update add consolekit default
rc && exit
Configure services:
rc-update add elogind boot
rc && exit
Configure autostart
(startup applications) with nano -w ~/.xprofile
:
gnome-terminal
Configure startx
(or anything that calls xinit) with nano -w ~/.xinitrc
:
# Fix Missing Applications in GNOME
export XDG_MENU_PREFIX=gnome-
# Properly Launch the Desired X Session
exec ck-launch-session gnome-session
Configure startx
(or anything that calls xinit) with nano -w ~/.xinitrc
:
# Fix Missing Applications in GNOME
export XDG_MENU_PREFIX=gnome-
# Properly Launch the Desired X Session
exec gnome-session
Note: If downgrading, use of binary packages will complicate the process.
Update all overlays (and fetch new ones):
layman --sync-all
Add your preferred GNOME release overlay:
layman --add dantrell-gnome-42
Set your profile to your preferred GNOME release:
eselect profile set dantrell-gnome-42:default/linux/amd64/17.1/desktop/gnome/42
Upgrade all installed packages, dependencies, and deep dependencies that are outdated or have USE flag changes (avoiding unnecessary rebuilds when USE changes have no impact):
emerge --ask --update --deep --changed-use --with-bdeps=y @world
Clean dependencies:
emerge --ask --depclean
Note: The overlays do some of their work even if you don't use one of the bundled profiles so if you don't want to delete them, you must dereference them.
Start with either:
emerge --ask --unmerge gnome
or:
emerge --ask --unmerge gnome-light
Remove all of the project overlays:
layman --delete dantrell-gnome
layman --delete dantrell-gnome-42
Switch profiles (after reviewing any relevant¹ Gentoo Linux
news items):
eselect profile list
eselect profile set <target>
Update @world
:
emerge --ask --update --deep --changed-use --with-bdeps=y @world
Clean dependencies:
emerge --ask --depclean
² For details, see: New 17.0 profiles in the Gentoo repository & amd64 17.1 profiles are now stable.
-
13.0, 17.0 & 17.1 Portage Profiles
Version Description Status 13.0 Optional PIE Hidden¹ 17.0 Enforces PIE Hidden¹ for amd64; Visible for x86 17.1 Enforces PIE & Removes /lib32 Directory Visible 23.0 Enforces PIE & Merges /usr Directory² Testing -
Sleep and Shutdown Hooks:
Implementation Sleep Shutdown ConsoleKit /etc/pm/sleep.d /etc/pm/sleep.d elogind-227.* /lib/elogind/system-sleep /lib/elogind/system-shutdown elogind-234.0+ /usr/lib/elogind/system-sleep /usr/lib/elogind/system-shutdown
¹ For details, see: the latter half of Gentoo post #8438940. ² For details, see: The Case for the /usr Merge.