The level bezel
The on-screen display for brightness, keyboard light and volume keys.
When a brightness, keyboard-light or volume key is pressed, the desktop shows the familiar bezel: a dark translucent rounded square with a white glyph and a 16-segment level bar.
| Key | Glyph | Level shown |
|---|---|---|
| Screen brightness up/down | Sun | The preferred backlight's current and maximum |
| Keyboard light up/down/toggle | Keyboard with light rays | The keyboard backlight LED's current and maximum |
| Volume up/down | Speaker with one to three waves | The master volume |
| Mute, or volume at zero | Crossed speaker | An empty bar |
It appears on the press, follows the level while the key is pressed again, holds 1.5 s after the last change and fades over 0.4 s.
It is not a window. It never takes keyboard focus, never takes a click, and is drawn over every window — fullscreen ones included — and over notification banners. Only the screen saver covers it.
Who does what
The kernel applies the key: volume through the mixer, brightness through the backlight class, the keyboard light through the LED class. It has to, because the keys must work at a console with no desktop running.
The compositor only displays. It never applies the key a second time.
After the kernel's action has returned, the key is reported on an input device
named AnotherOS Hotkeys, using the standard Linux input ABI with per-reader
queues. The compositor reads that device and, on each press, reads back the
level the kernel just applied:
- screen brightness from
/sys/class/backlight, preferring firmware, then platform, then raw — the same rule GNOME and upower use, and the one the kernel uses to decide which backlight the keys drive; - the keyboard light from the first keyboard-backlight LED;
- volume from the mixer, never from the audio device directly.
A machine without a backlight shows no brightness bezel, and one without a keyboard light shows no keyboard bezel. The compositor logs one line saying so rather than showing an empty bar.
Sliders do not raise it
Changing brightness or volume from System Preferences, from the tray's sound
slider, or by writing to /sys does not show the bezel.
macOS behaves the same way, for the same reason: the slider is its own feedback. Only a hotkey raises it.
Mute
The kernel represents mute as volume zero, remembering the previous level privately and restoring it on the next mute or volume key. The bezel therefore shows the crossed speaker whenever the level is zero.
Geometry
The bezel is drawn in points on a surface carrying the backing scale, so on a HiDPI panel every edge is rasterised at device resolution rather than being scaled up.
| Part | Value |
|---|---|
| Bezel | 200 × 200, corner radius 18, near-black at 62 % |
| Position | Centred horizontally; bottom edge 140 above the display's bottom, never above the vertical centre |
| Glyph centre | 84 below the bezel's top |
| Bar | 16 segments, 9 wide, 1 apart, 6 tall, 160 below the bezel's top, on a darker track |
| Segments lit | The level scaled to 16, but at least one for any non-zero level, and 16 at full |
| Speaker waves | One for 1–6 segments, two for 7–11, three for 12–16 |
The "at least one" rule matters: a level of 2 % that lit no segments would read as muted, which is exactly wrong.
Turning it off
Set FZ_OSD=0 in the compositor's environment. It logs that it is disabled, so
a machine that is not showing the bezel can be told apart from one that has no
backlight.
More documentation
- Booting the live image
- Installing to disk
- Packages and the filesystem
- How it boots
- The syscall ABI
- Hardware support
- ACPI
- UEFI boot entries
- NetBooting a Mac
- The AO toolkit
- Grafika — the graphics API
- The display protocol
- Desktop effects
- Notifications
- Rastinis — the file manager
- File operations
- Audio — Garsas
- Hardware video decode
- Networking — Tinklas
- Network shares — SMB and NFS
- Remote control
- The Win32 subsystem
- DirectX and OpenGL for Win32 programs
- Ports and packaging