Installing Sotto

Install Sotto from the AppImage or build it with the GPU backend that matches your hardware, then complete first-run setup.

The AppImage

The download on mauvely.com is a single-file AppImage:

chmod +x Sotto-x86_64.AppImage
./Sotto-x86_64.AppImage

Nothing to install, nothing to uninstall — delete the file to remove it.

Sotto needs a way to put text into other applications. On Arch:

sudo pacman -S --needed wl-clipboard ydotool
Package Why
wl-clipboard Setting and restoring the clipboard on Wayland
ydotool Synthesising the paste keystroke, or typing text directly

Without either, Sotto can still transcribe — the text just ends up somewhere you have to fetch it from. See Dictating.

Setting up ydotool

Once:

sudo systemctl enable --now ydotool

Your user needs write access to /dev/uinput; the ydotool package ships udev rules for that.

If you would rather not run ydotool, Sotto can use the desktop’s RemoteDesktop portal instead — it asks for permission once and remembers it.

Building from source

Building lets you pick the GPU backend, which is the single biggest factor in transcription speed.

Dependencies (Arch)

sudo pacman -S --needed base-devel cmake ninja git \
    qt6-base qt6-declarative qt6-multimedia qt6-svg layer-shell-qt

Pick a backend

Backend Packages Flag
ROCm (AMD) rocm-hip-sdk -DSOTTO_GPU=hip
Vulkan (any GPU) vulkan-headers vulkan-icd-loader glslang shaderc -DSOTTO_GPU=vulkan
CUDA (NVIDIA) cuda -DSOTTO_GPU=cuda
CPU only — -DSOTTO_GPU=cpu

Build

cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DSOTTO_GPU=vulkan
cmake --build build -j$(nproc)

./build/sotto              # first run opens Settings
sudo cmake --install build # optional

whisper.cpp is fetched during configuration and linked statically, so the result is one binary.

First run

  1. 1
    Download a model

    Settings opens automatically. Nothing works until a speech model is installed.

    Large v3 Turbo (~1.6 GB) is the recommended default on a discrete GPU. Small (~488 MB) if you want something lighter. See Speech models.

  2. 2
    Confirm the shortcut

    KDE asks you to confirm the global shortcut binding — Meta+Alt+D by default. You can change or disable it at any time; it also appears in System Settings → Shortcuts.

  3. 3
    Try it

    Focus any text field, press the shortcut, talk, and press it again. Watch the pill at the bottom of your active screen.

Desktop support

Desktop State
KDE Plasma / KWin (Wayland) The primary target. Fully supported.
Hyprland and other wlroots compositors The overlay works; text injection needs ydotool. On the roadmap.
GNOME Layer-shell is unsupported, so the overlay falls back to an ordinary always-on-top window. Portals work.
X11 Works, with the fallback overlay positioned on the screen under the pointer.

Verifying your GPU is being used

The bottom of the Settings window names the active backend. If it says cpu, transcription will be noticeably slow — rebuild with -DSOTTO_GPU=vulkan or hip.

Ask AI

Ask anything about Mauvely

Answers come from this documentation.