- index.theme con Directories=stereo, OutputProfile=stereo, Inherits=freedesktop ed Example=theme-demo - 61 cue sintetizzati da zero (Ogg Vorbis 48 kHz stereo) piu' il montaggio di anteprima theme-demo.oga - tools/gen_sounds.py: motore di sintesi riproducibile (voci FM, pluck Karplus-Strong, rumore a banda variabile, sub-impact, pad additivi, riverbero a convoluzione, modello di degrado) - tools/verify_theme.py: verifica della spec, igiene audio (clipping, DC, click ai bordi) e copertura dei nomi suono richiesti dai notifyrc di KDE - preview/index.html: player nel browser per ogni cue del tema - Makefile, install.sh, LICENSES (audio CC-BY-SA-4.0, codice BSD-2-Clause)
9.1 KiB
DeepSpace — sound theme for KDE Plasma
Operational telemetry for the long haul
A complete, freedesktop Sound Theme
specification
compliant sound theme for KDE Plasma 6 (and any other desktop that honours
the spec). 61 cues, all of them synthesised from scratch — no sample
library, no third-party audio, no attribution burden. The whole theme is
reproducible from the script in tools/.
kde-sound-theme-deepspace/
├── DeepSpace/
│ ├── index.theme # [Sound Theme] + [stereo] OutputProfile
│ └── stereo/ # 61 × Ogg Vorbis 48 kHz stereo
├── tools/
│ ├── gen_sounds.py # the synthesis engine (reproducible)
│ ├── verify_theme.py # spec + audio + KDE coverage checks
│ ├── make_preview.py # rebuilds preview/index.html
│ └── preview_template.html
├── preview/index.html
├── LICENSES/
├── Makefile
└── install.sh
Character
DeepSpace is the operational voice of a ship underway: inharmonic FM bells (ratio 2.76) over a sub-bass drone rooted on A2, short band-limited noise sweeps for anything that opens, closes or docks, and a hall that is present but never washy. Cues are meant to be read at a glance: rising fifths say nominal, a detuned cluster over a sub impact says attention.
| Motif | Used for |
|---|---|
| Rising perfect fifth (0 → 7) | nominal, completed, received |
| Falling fourth (7 → 0) | warning, lost, removed |
| Detuned cluster + sub impact | error, failure, suspend |
| Band-limited noise sweep | plug, unplug, dock, trash |
| Metallic bell arpeggio | success, winner, connectivity |
Requirements
- KDE Plasma 6, or any desktop implementing the freedesktop sound theme spec
- nothing at runtime — the cues are plain Ogg Vorbis files
ffmpeg(libvorbis),python3,numpy,scipyonly if you want to regenerate the audio
Install
User-local (recommended, no root needed):
git clone https://git.enne2.net/enne2/kde-sound-theme-deepspace.git
cd kde-sound-theme-deepspace
./install.sh # copies DeepSpace/ into ~/.local/share/sounds/
System-wide:
sudo make install-system # copies DeepSpace/ into /usr/share/sounds/
Select the theme
System Settings → Colors & Themes → System Sounds → DeepSpace
Or from the command line:
kwriteconfig6 --file kdeglobals --group Sounds --key Theme DeepSpace
To go back to the Plasma default:
kwriteconfig6 --file kdeglobals --group Sounds --key Theme ocean
The theme declares Inherits=freedesktop, so any event it does not provide
(e.g. multi-channel test signals) falls back to the stock desktop theme instead
of going silent.
What is inside
DeepSpace/index.theme declares the theme, Directories=stereo,
OutputProfile=stereo and Example=theme-demo. The Example key is what the
Plasma System Sounds KCM uses for its preview button, so theme-demo.oga is a
montage of the theme's signatures rather than an arbitrary cue.
Name[it] and Comment[it] are also provided, so Plasma in an Italian locale
lists the theme as Spazio Profondo. That is a display name only: the theme id — the
folder name in ~/.local/share/sounds/ and the value written to
kdeglobals — is always DeepSpace, exactly like KDE's own Ocean theme shows up
as Oceano in Italian.
| sound name | duration | size |
|---|---|---|
alarm-clock-elapsed |
2.66 s | 37.7 KiB |
audio-test-signal |
1.10 s | 20.5 KiB |
audio-volume-change |
0.13 s | 6.7 KiB |
battery-caution |
1.18 s | 19.9 KiB |
battery-full |
1.05 s | 18.4 KiB |
battery-low |
1.18 s | 18.2 KiB |
bell-terminal |
0.15 s | 7.0 KiB |
bell-window-system-attention |
0.94 s | 15.6 KiB |
bell-window-system |
0.88 s | 15.0 KiB |
bell |
1.26 s | 19.8 KiB |
button-pressed-modifier |
0.12 s | 7.1 KiB |
button-pressed |
0.11 s | 6.7 KiB |
camera-shutter |
0.26 s | 9.7 KiB |
complete-media-burn |
2.26 s | 37.9 KiB |
complete-media-error |
1.72 s | 36.1 KiB |
complete |
0.83 s | 15.2 KiB |
completion-fail |
1.38 s | 19.9 KiB |
completion-partial |
1.12 s | 18.3 KiB |
completion-rotation |
1.68 s | 24.6 KiB |
completion-success |
2.14 s | 36.6 KiB |
desktop-login |
2.90 s | 39.6 KiB |
desktop-logout |
2.20 s | 28.0 KiB |
device-added |
0.64 s | 15.2 KiB |
device-removed |
0.64 s | 15.1 KiB |
dialog-error-critical |
2.32 s | 45.9 KiB |
dialog-error-serious |
1.80 s | 37.3 KiB |
dialog-error-veryserious |
2.70 s | 35.9 KiB |
dialog-error |
1.48 s | 31.5 KiB |
dialog-information |
1.13 s | 18.2 KiB |
dialog-question |
1.14 s | 19.1 KiB |
dialog-special |
1.86 s | 33.4 KiB |
dialog-warning-auth |
1.00 s | 19.1 KiB |
dialog-warning |
1.27 s | 19.8 KiB |
game-over-loser |
2.60 s | 50.0 KiB |
game-over-winner |
3.02 s | 50.3 KiB |
media-insert-request |
0.87 s | 16.5 KiB |
message-attention |
1.16 s | 23.8 KiB |
message-contact-in |
1.05 s | 17.0 KiB |
message-contact-out |
1.05 s | 16.5 KiB |
message-highlight |
0.86 s | 16.8 KiB |
message-new-email |
1.48 s | 25.0 KiB |
message-new-instant |
0.92 s | 15.6 KiB |
message-sent-instant |
0.45 s | 10.3 KiB |
message |
0.80 s | 14.8 KiB |
network-connectivity-established |
1.66 s | 28.8 KiB |
network-connectivity-lost |
1.26 s | 19.2 KiB |
outcome-failure |
1.32 s | 28.6 KiB |
outcome-success |
1.62 s | 28.4 KiB |
phone-incoming-call |
2.44 s | 39.4 KiB |
phone-outgoing-busy |
1.30 s | 23.6 KiB |
phone-outgoing-calling |
1.16 s | 23.8 KiB |
power-plug |
0.78 s | 15.3 KiB |
power-unplug |
0.88 s | 18.9 KiB |
screen-capture |
0.30 s | 10.4 KiB |
service-login |
1.34 s | 20.7 KiB |
service-logout |
1.24 s | 19.0 KiB |
suspend-error |
1.92 s | 39.5 KiB |
theme-demo |
11.39 s | 168.6 KiB |
trash-empty |
0.95 s | 20.3 KiB |
window-attention |
1.43 s | 21.4 KiB |
window-question |
1.04 s | 18.0 KiB |
Rebuilding from source
The audio is generated, not sampled, so it is fully reproducible:
make generate # rewrites DeepSpace/stereo/*.oga from tools/gen_sounds.py
make verify # spec + audio + KDE coverage checks
make preview # rebuild preview/index.html
make dist # build dist/kde-sound-theme-deepspace-1.0.0.tar.gz
make verify fails loudly on a clipped sample, a DC offset, a click at a file
edge, a wrong sample rate or channel count, a missing stereo directory in
Directories=, a broken Example/Inherits reference, and it reports how many
of the sound names actually requested by the installed KDE *.notifyrc files
the theme resolves.
Design notes
One instrument set, not sixty unrelated beeps
Every cue is assembled from the same small library of motifs — FM bells, sub impacts, band-limited noise sweeps, additive pads, plucked strings, telemetry blips — so the theme reads as a single instrument rather than a folder of noises. The palette below is what turns that library into this theme:
| Parameter | DeepSpace |
|---|---|
| Root | A2 — 110.00 Hz |
| Scale | minor pentatonic (0 3 5 7 10) |
| FM voice | ratio 2.76, index 2.4, index decay 130 ms |
| Detune | ±6 cents |
| Space | 2.2 s synthetic hall, 28–36 % wet on medium cues, near-dry on clicks |
A differentiated reverb bus
A single reverb setting is wrong for a desktop theme: frequent cues (chat, volume, button clicks) would smear into each other during a burst, while rare dramatic cues would sound dry and small. Cues here are assigned one of five reverb classes — from near-dry clicks through a small room up to a vast hall with an extra half-second of tail — by motif, with per-sound overrides. The result is that a chat notification stays crisp and a login blooms.
Loudness-aware normalisation
Peak-normalising every file is not enough: a sparse bell and a dense error cluster end up at wildly different perceived levels. After peak normalisation each cue gets a bounded gain (±6 dB) that pulls the RMS of its active portion towards −16 dBFS, with the peak ceiling always winning. That keeps the theme consistent without introducing clipping.
No clicks
Every cue is high-passed (30–130 Hz depending on the class), given a 1.5 ms
raised-cosine fade in and a 35 ms fade out before the reverb is applied, so the
convolution never sees a discontinuity. make verify enforces this: it rejects
any file whose first samples are not at zero.
Licence
- Audio (
DeepSpace/stereo/*.oga,DeepSpace/index.theme) — CC BY-SA 4.0, the same licence the KDE sound themes use. - Code and documentation (
tools/,Makefile,install.sh,preview/,README.md) — BSD-2-Clause.
The sounds are original synthesis; nothing is derived from the KDE Ocean sound theme or any other recording. You may therefore use this theme commercially and adapt it freely, subject to CC BY-SA 4.0's attribution and share-alike terms.
Credits
Created by enne2 (2026). Designed for Plasma 6.3 on Debian 13.