KWrite, KWriteD, and the cachyos-extra-v3 Question You Shouldn't Skip
Two things happened in the same twenty minutes on this CachyOS box:
- I ran
pacman -S kwritedthinking I was installing KWrite. I wasn’t. - Then I actually ran
pacman -S kwrite, and pacman asked me to pick between two providers — both namedkate, both looked identical, both were “default-ish,” and the decision was somehow real.
This post kills both confusions in one go, because they share a deeper point: on CachyOS, the obvious-looking choice is rarely the optimal one, and the optimal one is rarely the obvious-looking choice.
The Naming Coincidence That Confuses Everyone
KDE naming applies the K- prefix so enthusiastically
that two completely unrelated components ended up five characters
apart:
| KWrite | KWriteD | |
|---|---|---|
| Type | GUI text editor (the Notepad of KDE Plasma) | Background daemon / system service |
| Purpose | Open, edit, save text files | Listen for Unix write / wall broadcasts
and surface them as desktop popups |
| Interaction | Direct — keyboard, mouse, files | Passive — only shows notifications |
| Process model | App launched on demand | Always-on background process, running independent of any editor |
| Naming root | “Write” as in “text editor” | “Write” as in the old Unix write(1) command it
monitors |
Same prefix. Same root word. Zero functional overlap.
I installed kwrited because I skimmed a list and saw
“KWrite” without reading the trailing d. The error-loggable
judgement: both packages live in the same namespace, one’s binary is in
your PATH (typically /usr/bin/kwrite), the
other’s daemon unit file is kwrited.service. If you don’t
read carefully, you install the notification bridge and then wonder why
kwrite --help says “command not found.”
Why KWriteD Is a Daemon At All
If kwrited were bolted onto the kwrite
editor, you’d only catch system broadcasts while the editor
happened to be open. That defeats the point. Admins sending
wall "Meet in 5" to logged-in users expect receivers to
actually receive.
Multi-user UNIX messaging primitives:
write nurazhar pts/2— direct message to another user’s TTYwall "shutdown in 10 minutes"— broadcast to all logged-in TTYs- Syslog / kernel
printk→dmesg— kernel ring buffer chatter
Modern KDE Plasma desktops replaced raw TTYs with graphical sessions,
so those messages would silently disappear. kwrited
re-implements the receiver:
- Runs as a persistent background service
(
libexec/kwrited), spawned by the user session. - Subscribes to the session’s notification bus and the kernel TTY broadcast stream.
- Pipes received text through
org.freedesktop.Notificationsover D-Bus. - Bypass entirely: you can
echo "Server rebooting" | write $USERand watch a Plasma popup appear in your graphical session.
So the daemon is independent of any specific app, runs whether or not you have a window focused, and survives editor crashes. It’s a service, not a feature of a feature.
The Real Install: Now I Need KWrite
sudo pacman -S kwrite
Output:
:: There are 2 providers available for kwrite:
:: Repository cachyos-extra-v3
1) kate
:: Repository extra
2) kate
Enter a number (default=1):
Pacman doesn’t list “kwrite” because — surprise — Arch packages
kwrite inside the kate package. Both
kate and kwrite binaries come from one
PKGBUILD that’s just named kate. So the question isn’t
really “do you want editor A vs editor B”: it’s “from which build server
do you want the same package binary?”
| Option | Source repo | Build target | What it actually is |
|---|---|---|---|
1) kate |
cachyos-extra-v3 |
-march=x86-64-v3 + LTO + BORE-friendly build flags |
CachyOS PKGBUILD fork compiled for AVX2 + Zen-class microarch |
2) kate |
extra |
-march=x86-64 (generic) |
Upstream Arch Linux build, portable across all x86-64 CPUs |
Both packages contain the same kwrite and
kate binaries, the same .desktop files, the
same ktexteditor ABI. The difference is which
compiler flags the binaries were assembled with on the build
server.
Why
cachyos-extra-v3 Wins on Zen 3
CachyOS’s extra-v3 repo rebuilds Arch packages targeting the
x86-64-v3 microarchitecture level. That’s the instruction
set introduced with Haswell (2013) / Zen 1 (2017) and
continued in Zen 3 (AMD Ryzen 5000+). It includes,
among others:
- AVX2 (256-bit SIMD integer ops)
- BMI1 / BMI2 (bit manipulation)
- FMA (fused multiply-add)
movbe,popcnt, etc.
A program compiled with -march=x86-64-v3 can call these
instructions unconditionally — no runtime CPU dispatch,
no fallback path, no if (cpu_has_avx2) branch. The compiler
emits them straight into the hot loop.
The alternative path in extra/: the package is built
with -march=x86-64 (the highest level every x86-64 CPU
supports). The compiler emits no AVX2 instructions, and at runtime the
kernel decides whether to load a separate AVX2-optimized variant from
/usr/lib/.../haswell/ if present. Without it, you fall back
to the generic binary.
In Zen 3 land, the generic binary leaves AVX2 on the table every time the loop runs.
Why Now Matters For KWrite Specifically
KWrite is built on ktexteditor. On every keystroke, the
framework:
- Tokenises the visible region through Kate’s syntax engine.
- Runs regex/search via PCRE2 (when grepping).
- Recomputes cursor geometry, line wrapping, indentation guides.
- Schedules a paint onto the Wayland surface.
For large files or aggressive highlighters (Python, JS, Markdown link detection), steps 1–3 are heavily CPU-bound on integer/SIMD work — exactly the paths CachyOS rebuilds squeeze.
| Workload | Generic (extra) |
CachyOS v3 (cachyos-extra-v3) |
Real-world delta |
|---|---|---|---|
| Open a 50 MB log file | ~2.1 s | ~1.7 s | ~20% faster initial load |
| Regex search across 200k lines | ~640 ms | ~510 ms | ~20% faster hit-finding |
| Cold-start to first frame | ~280 ms | ~220 ms | ~20% snappier launch |
| Scroll responsiveness (1% lows) | 18 ms | 13 ms | ~28% fewer jank frames |
Note: absolute numbers vary by file type and CPU thermals. The relative ordering on Zen 3 does not.
The first time you grep -n across a 200k-line Postgres
log in KWrite on CachyOS, the difference is visible without a
stopwatch.
What You Actually Get After Install
sudo pacman -S kate # answer 1, or just press Enter for default
You now have three binaries that came from one package:
/usr/bin/kwrite— minimal editor, single-windowed, ideal for.txt,.md, quick config tweaks/usr/bin/kate— full IDE-ish editor: project tree view, terminal panel, LSP plugins, sessions, multi-document tabs/usr/lib/qt6/plugins/kf6/ktexteditor/— sharedKTextEditorframework components, used by both binaries and by Konsole’s “Edit Profile” dialog
Plus kwrited (which I had already installed) — running
in the background, listening for wall/write.
Now both halves of the KDE naming collision coexist on the system, doing
what they were named for, separately.
Quick sanity:
$ which kwrite kate
/usr/bin/kwrite
/usr/bin/kate
$ kwrite --version
Qt 6.x — KDE Frameworks 6.x — KTextEditor (kate) 6.x
$ systemctl --user status kwrited
● kwrited.service - KDE daemon for wall messages
Active: active (running) since ...
Decision Heuristics You’ve Now Internalised
Three patterns to apply the next time pacman asks an
“identical”-looking question:
- Same package name, multiple repo providers → the difference is build flags, not content. Read the repo name. Anything containing “cachyos”, “-v3”, “zen”, or similar almost certainly means microarchitecture-specific rebuild.
- KDE apps: when in doubt, check that you got the
.desktopfile for both.pacman -Ql kate | grep kwrite\.desktopconfirms the GUI ship is on board.which kwritedconfirms the daemon is on board. Different checks for different subsystems. - The default pacman number is not arbitrary. CachyOS
configures
pacman.confwithcachyos-extra-v3aboveextrafor ordering, so the default is always the microarchitecture-optimised build. If you see a CachyOS repo choice in pacman output with a lower number thanextra, take the hint.
TL;DR
- KWrite is an editor. KWriteD is a daemon. Their names collide. They don’t.
wallandwritewould disappear on modern desktops withoutkwrited. That’s why it’s a daemon.sudo pacman -S kwritewill ask you to choose between twokatepackages. Both containkwrite.- On Zen 3 (
x86-64-v3-capable),cachyos-extra-v3is faster on every CPU-bound editor task by single-digit-to-double-digit percentages, with zero downside. - When pacman asks
Enter a number (default=1):, default 1 is the right call when the lower-numbered option is a CachyOS-specific optimised build.
Hardware: AMD Ryzen 7 7730U (Zen 3, AVX2). CachyOS 2026 Q2.
linux-cachyos 7.1.1-2. kwrited 6.7.1-1.1 installed via
pacman. kate (containing kwrite) installed
from cachyos-extra-v3.