Install Now
diff --git a/web/src/app/changelog/page.tsx b/web/src/app/changelog/page.tsx
index c4219e8..2174c01 100644
--- a/web/src/app/changelog/page.tsx
+++ b/web/src/app/changelog/page.tsx
@@ -273,7 +273,7 @@ export default function ChangelogPage() {
{release.highlights.map((highlight) => (
-
+
{highlight}
@@ -300,15 +300,15 @@ export default function ChangelogPage() {
Stay Updated
-
+
Watch the repository on GitHub for release notifications
-
+
Re-run the installer to update to the latest version
-
+
Check the{" "}
diff --git a/web/src/app/compare/page.tsx b/web/src/app/compare/page.tsx
index 98aa054..c5f8e07 100644
--- a/web/src/app/compare/page.tsx
+++ b/web/src/app/compare/page.tsx
@@ -60,7 +60,7 @@ export default function CompareEnginesPage() {
headline: "Whisper.cpp vs Whisper vs VOSK for Linux Voice Dictation",
description:
"Technical comparison of speech recognition engines for offline Linux voice typing.",
- dateModified: "2026-02-12",
+ dateModified: "2026-03-30",
author: {
"@type": "Person",
name: "Jatin K Malik",
@@ -138,12 +138,22 @@ export default function CompareEnginesPage() {
+
+
Switching Between Engines
+
+ You can switch between whisper.cpp, Whisper, and VOSK at any time from Settings. v0.10.1+
+ safely stops recognition before switching to prevent segfaults. Each engine has its own
+ model files.
+
+
+
When to pick whisper.cpp
Choose whisper.cpp when you want the best speed-to-accuracy ratio and broad hardware support.
- It is the default in Vocalinux for a reason.
+ It is the default in Vocalinux for a reason. Safe engine switching - v0.10.1+ stops
+ recognition before switching to prevent crashes.
diff --git a/web/src/app/faq/page.tsx b/web/src/app/faq/page.tsx
index 4d32a8d..9a00c15 100644
--- a/web/src/app/faq/page.tsx
+++ b/web/src/app/faq/page.tsx
@@ -2,7 +2,7 @@ import Link from "next/link";
import { type Metadata } from "next";
import { BookOpen, ChevronRight, CircleHelp, Cpu, Laptop, Lock, Mic, Volume2, Zap } from "lucide-react";
import { SeoSubpageShell } from "@/components/seo-subpage-shell";
-import { absoluteUrl, buildPageMetadata } from "@/lib/seo";
+import { buildPageMetadata } from "@/lib/seo";
const faqCategories = [
{
@@ -75,6 +75,14 @@ const faqCategories = [
q: "Does Vocalinux work with Wayland?",
a: "Yes. Vocalinux supports both X11 and Wayland, including IBus-based flows on Wayland with improved active-method detection for more reliable text injection.",
},
+ {
+ q: "What happens when I close my laptop lid?",
+ a: "Vocalinux v0.10.1+ automatically recovers speech recognition after system suspend/resume. The app detects when your system wakes up and restarts the recognition engine and keyboard shortcuts. No manual restart needed - just start dictating as usual.",
+ },
+ {
+ q: "Does Vocalinux preserve my keyboard layout?",
+ a: "Yes! v0.10.1+ preserves your XKB keyboard layout when activating IBus for text injection. Unlike other tools that switch to US layout, Vocalinux keeps your configured layout so you can dictate without unexpected character changes.",
+ },
{
q: "Can I use voice commands?",
a: "Yes. Vocalinux supports commands like 'new line', 'delete that', 'select all', and more. Voice commands are optional and can be enabled or disabled in Settings.",
@@ -119,6 +127,7 @@ export default function FaqPage() {
const faqJsonLd = {
"@context": "https://schema.org",
"@type": "FAQPage",
+ dateModified: "2026-03-30",
mainEntity: faqCategories.flatMap((cat) =>
cat.questions.map((q) => ({
"@type": "Question",
diff --git a/web/src/app/for-developers/page.tsx b/web/src/app/for-developers/page.tsx
index 2025d15..0720de0 100644
--- a/web/src/app/for-developers/page.tsx
+++ b/web/src/app/for-developers/page.tsx
@@ -282,7 +282,7 @@ export default function ForDevelopersPage() {
Install Now
diff --git a/web/src/app/gnome-kde/page.tsx b/web/src/app/gnome-kde/page.tsx
new file mode 100644
index 0000000..e1e5234
--- /dev/null
+++ b/web/src/app/gnome-kde/page.tsx
@@ -0,0 +1,259 @@
+import Link from "next/link";
+import { type Metadata } from "next";
+import {
+ CheckCircle2,
+ ChevronRight,
+ Keyboard,
+ Monitor,
+ Settings2,
+ Waypoints,
+ Wrench,
+} from "lucide-react";
+import { SeoSubpageShell } from "@/components/seo-subpage-shell";
+import { absoluteUrl, buildPageMetadata } from "@/lib/seo";
+
+const comparisonRows = [
+ {
+ feature: "Default display stack",
+ gnome: "Wayland by default on most modern GNOME distributions",
+ kde: "Wayland or X11, with X11 still common in some setups",
+ icon: Monitor,
+ },
+ {
+ feature: "Text injection approach",
+ gnome: "IBus-first for native Wayland dictation",
+ kde: "IBus-first on Wayland, with xdotool fallback on X11",
+ icon: Keyboard,
+ },
+ {
+ feature: "Input method setup",
+ gnome: "Typically straightforward with existing IBus defaults",
+ kde: "May need explicit IBus selection in System Settings",
+ icon: Settings2,
+ },
+ {
+ feature: "Tray indicator behavior",
+ gnome: "Usually needs AppIndicator extension for tray visibility",
+ kde: "Native system tray support out of the box",
+ icon: Waypoints,
+ },
+ {
+ feature: "Troubleshooting profile",
+ gnome: "Extension + IBus engine activation checks",
+ kde: "Session type checks (X11 vs Wayland) + input method routing",
+ icon: Wrench,
+ },
+];
+
+export const metadata: Metadata = buildPageMetadata({
+ title: "Voice Typing on GNOME vs KDE Plasma: Linux Desktop Comparison",
+ description:
+ "Compare voice dictation on GNOME vs KDE Plasma. How desktop environment affects text injection, IBus setup, and Wayland compatibility for Linux voice typing.",
+ path: "/gnome-kde",
+ keywords: [
+ "voice typing GNOME linux",
+ "voice dictation KDE plasma",
+ "linux desktop voice recognition comparison",
+ "GNOME vs KDE voice input",
+ ],
+});
+
+export default function GnomeVsKdePage() {
+ const articleJsonLd = {
+ "@context": "https://schema.org",
+ "@type": "Article",
+ headline: "Voice Typing on GNOME vs KDE Plasma: Linux Desktop Comparison",
+ description:
+ "Compare voice dictation on GNOME vs KDE Plasma. How desktop environment affects text injection, IBus setup, and Wayland compatibility for Linux voice typing.",
+ dateModified: "2026-03-30",
+ author: {
+ "@type": "Person",
+ name: "Jatin K Malik",
+ url: "https://github.com/jatinkrmalik",
+ },
+ publisher: {
+ "@type": "Organization",
+ name: "Vocalinux",
+ logo: {
+ "@type": "ImageObject",
+ url: absoluteUrl("/vocalinux.png"),
+ },
+ },
+ mainEntityOfPage: absoluteUrl("/gnome-kde"),
+ };
+
+ return (
+
+
+
+
+
+
+ Linux Desktop Comparison
+
+
+ Voice Typing on GNOME vs KDE Plasma: Linux Desktop Comparison
+
+
+ GNOME and KDE Plasma both support excellent Linux voice dictation, but the desktop environment
+ changes how text injection behaves, how IBus is configured, and what setup steps you need for a
+ smooth daily workflow.
+
+
+
+
+
Why desktop environment matters for voice dictation
+
+ Voice typing quality is not just about the speech engine. Your desktop environment determines
+ session type defaults, tray behavior, and input method routing. That affects whether dictation
+ appears reliably in every app, especially under Wayland.
+
+
+
+
+
GNOME: what to expect
+
+
+
+
+ Wayland is the default on modern GNOME sessions, so IBus-backed text
+ injection is usually the primary path.
+
+
+
+
+
+ IBus integration is central for reliable cross-app dictation behavior on
+ Wayland.
+
+
+
+
+
+ Tray icon often needs AppIndicator support via GNOME extension, because
+ legacy tray behavior differs from KDE.
+
+
+
+
+
+ Known issues and workarounds: if the tray icon is missing, install/enable
+ AppIndicator extension; if text does not appear in apps, verify IBus daemon/engine state.
+
+
+
+
+
+
+
KDE Plasma: what to expect
+
+
+
+
+ X11 vs Wayland matters: Plasma supports both widely, so behavior can differ
+ between sessions.
+
+
+
+
+
+ IBus setup may be more explicit compared with GNOME defaults, depending on
+ distro and prior input method configuration.
+
+
+
+
+
+ System Settings integration is strong, making it easier to inspect session
+ type, input method behavior, and tray settings from one place.
+
+
+ Choose GNOME when you want a Wayland-first environment with familiar IBus defaults and a
+ minimal, focused workflow. Add AppIndicator extension once and day-to-day dictation is
+ typically very consistent.
+
+
+
+
+
When KDE Plasma is a better fit
+
+ Choose KDE Plasma when you want deeper system configurability, flexible X11/Wayland session
+ choices, and richer control over desktop behaviors while tuning a dictation setup.
+
+
+
+
+
+
Helpful guides
+
+
+ Wayland setup and architecture
+
+
+ Troubleshooting checklist
+
+
+ Install guide by distro
+
+
+
+
+
+
Ready to set up voice typing on your desktop?
+
+ Install Vocalinux and get reliable offline voice dictation on GNOME or KDE Plasma, with the
+ right text injection path for your session type.
+
@@ -369,7 +369,7 @@ export default async function DistroInstallPage({
{config.postInstallChecks.map((item) => (
-
+
{item}
diff --git a/web/src/app/languages/page.tsx b/web/src/app/languages/page.tsx
index d8c7d26..ca8476c 100644
--- a/web/src/app/languages/page.tsx
+++ b/web/src/app/languages/page.tsx
@@ -226,15 +226,15 @@ export default function LanguagesPage() {
Language Selection
-
+
Select your language in Settings → Speech Engine → Language
-
+
Use "Auto" for automatic language detection (whisper.cpp/Whisper)
-
+
Switch languages on-the-fly without restarting
@@ -243,15 +243,15 @@ export default function LanguagesPage() {
Model Selection
-
+
Larger models provide better accuracy for all languages
-
+
"tiny" model works for all supported languages
-
+
Models are downloaded automatically on first use
@@ -269,7 +269,7 @@ export default function LanguagesPage() {
Install Now
diff --git a/web/src/app/offline/page.tsx b/web/src/app/offline/page.tsx
index eea7a6e..48cccd8 100644
--- a/web/src/app/offline/page.tsx
+++ b/web/src/app/offline/page.tsx
@@ -226,16 +226,16 @@ export default function OfflinePage() {
Vocalinux uses speech recognition models that run entirely on your CPU or GPU:
-
+
whisper.cpp — C++ port of OpenAI Whisper, runs locally with GPU
acceleration