Skip to content

eklonofficial/Vice

Repository files navigation

Vice icon

Vice

Medal.tv-style game clip recorder for Linux. Press a hotkey to instantly save the last few seconds of gameplay.

Website: https://viceclipper.framer.website/

Vice is actively maintained. Bug reports and PR requests are welcome.


Installation

Arch Linux / Manjaro / Arch-based (AUR recommended)

yay -S vice-clipper
# or
paru -S vice-clipper

Then launch Vice from your app launcher or run vice-app.

Arch users should update through their AUR helper, not by running ./install.sh over an existing vice-clipper install.

vice-clipper now installs the official gpu-screen-recorder package on Arch by default so a working capture backend is present immediately after install.

Ubuntu / Debian / Ubuntu-based distros

git clone https://github.com/eklonofficial/Vice
cd Vice
./install.sh

The installer detects apt from your distro metadata, installs the required packages, and supports Ubuntu derivatives such as Pop!_OS, Linux Mint, Kubuntu, and similar Debian/Ubuntu-based systems. It now verifies that a usable recording backend was actually installed before it finishes.

Fedora / other non-AUR distros

git clone https://github.com/eklonofficial/Vice
cd Vice
./install.sh

The installer detects the correct package manager from your distro metadata, so Fedora uses dnf even if tools like pacman are also installed on the machine. It now verifies that a usable recording backend was actually installed before it finishes.

After the installer finishes, restart your terminal, then launch Vice from your app launcher (or run vice-app).

Do not mix the AUR package with the git clone installer on the same user install. Remove vice-clipper first if you are switching away from the AUR package.

If the vice command isn't found after restart, run exec $SHELL (or exec fish on fish shell).

Updating

AUR: Your AUR helper handles updates automatically.

yay -Syu
# or
paru -Syu

Git clone (Ubuntu/Fedora/other non-AUR installs):

cd Vice
git pull
./install.sh

Do not use git pull && ./install.sh to update an AUR installation.


How It Works

Action What happens
F9 Save the last 15 seconds as a clip
Double-tap F9 Start a session recording (records continuously until you double-tap again)
F9 during session Mark a highlight at that timestamp — it shows up in the viewer once the session ends
Double-tap F9 again Stop the session and save the full recording with your highlights baked in
Click a thumbnail Open the video viewer — use ← / → to navigate, H to add a highlight, Esc to close
Share button Copy a public link that works outside your WiFi and embeds in Discord
Trim Visually trim a clip in-place
Settings → Hotkeys Rebind the clip key — click the button and press any key

Clips are saved to ~/Videos/Vice/. Closing the window keeps the daemon running — reopen from your launcher any time.


What It Does

Instant clips Rolling buffer saves the last 15 seconds on a single keypress
Session recording Double-tap to record continuously for as long as you want
Hotkey highlights Tap the clip key during a session to mark timestamps — no need to edit later
Clip gallery Browse, watch, rename, trim, and share clips
Share links Public view-only URLs via Cloudflare Tunnel — embeds in Discord
Viewer highlights Press H in the viewer to mark timestamps, colour-code and rename them
Themes Blue, purple, green, red, or orange accent colour

Why Vice?

OBS has a replay buffer. So why use Vice?

OBS Replay Buffer Vice
Setup Open OBS, configure scene, enable replay buffer, press hotkey Install once, press F9
Always on OBS must be open and a scene active Daemon runs silently in the background
GPU overhead OBS encodes a full scene continuously gpu-screen-recorder captures the compositor's framebuffer directly — near-zero overhead
Hotkey scope OBS window must be focused, or use global hotkey plugin Works globally on any compositor via evdev
Share links Manual upload Built-in public URLs, Discord embeds
Clip management None Gallery, viewer, trim, highlights, rename

Performance: Vice uses gpu-screen-recorder by default, which hooks into NVIDIA's NVENC or AMD/Intel VAAPI at the driver level — the same approach ShadowPlay uses. CPU usage is typically under 1%. On hardware that doesn't support it, Vice falls back to wf-recorder or ffmpeg.


CLI Reference

vice start          Start the recording daemon
vice stop           Stop the daemon
vice clip           Save a clip right now
vice status         Show daemon status, backend, and share URL
vice ui             Open the web UI in your browser
vice clips          List saved clips
vice config         Print current config
vice open-config    Open config in $EDITOR
vice list-keys      Show valid hotkey names (KEY_F9, KEY_INSERT, …)
vice uninstall      Remove Vice cleanly

Credits

Created by Andrew Maringithub.com/eklonofficial


Details

Compatibility

Environment Status
Hyprland (Wayland)
GNOME (Wayland)
KDE Plasma (Wayland)
sway (Wayland)
Any X11 WM
NVIDIA GPU ✅ NVENC hardware encoding
AMD / Intel GPU ✅ VAAPI hardware encoding
Software encoding ✅ libx264 fallback
fish / bash / zsh ✅ PATH configured automatically

Recording Backends

Vice picks the best available backend automatically:

Backend Wayland X11 NVIDIA AMD/Intel
gpu-screen-recorder ✅ NVENC ✅ VAAPI
wf-recorder
ffmpeg x11grab

Vice uses evdev to read hotkeys directly from /dev/input/ — works on any compositor, no keybind config needed.

Configuration

~/.config/vice/config.toml — created on first run, all settings editable in the GUI:

[recording]
buffer_duration = 120   # seconds kept in rolling buffer
clip_duration   = 15    # seconds saved per clip
fps             = 60
display         = "DP-1"   # optional; omit to auto-select the current display
encoder         = "auto"   # auto | h264_nvenc | libx264 | hevc_nvenc | h264_vaapi
backend         = "auto"   # auto | gsr | wf-recorder | ffmpeg
capture_audio   = true
apply_watermark = false   # enable only if you want watermark text on exports
gsr_args        = ""      # optional extra gpu-screen-recorder flags, e.g. "-k hevc -bm cbr -q 20000 -fm cfr -a {default_sink_monitor}"

[hotkeys]
clip = "KEY_F9"

[output]
directory       = "~/Videos/Vice"

[sharing]
enabled           = true
port              = 8765
public_port       = 8766   # optional; defaults to port + 1 for the public share-only server
cloudflare_tunnel = true
base_url          = "https://clips.example.com"   # optional public share origin override

recording.gsr_args supports environment/tilde expansion and a {default_sink_monitor} placeholder for desktop audio capture.

Troubleshooting

vice: command not found after install

Restart your terminal or run exec $SHELL. On fish: exec fish.

App launcher icon does nothing

Check the log: cat ~/.local/share/vice/vice-app.log Common cause: recording backend not found. Install gpu-screen-recorder, wf-recorder, or ffmpeg. If the log says GStreamer element autoaudiosink not found, install your distro's GStreamer base/good plugin packages and relaunch Vice.

Launcher/service starts the UI shell, but Vice still fails to start

Run the built-in diagnostics first:

vice doctor

Then confirm which install you are actually running:

which vice
readlink -f "$(which vice)"
python3 -c 'import vice, inspect; print(vice.__file__)'

If the path points at an AUR install, update with yay -Syu / paru -Syu. If it points at your git clone install, update with git pull && ./install.sh.

Hotkey not working

You may need to be in the input group:

sudo usermod -aG input $USER
newgrp input

Share link only works on my WiFi

Make sure cloudflare_tunnel = true in Settings. Install cloudflared if it's missing.

Why can I open the UI locally but not from another device anymore?

Vice now keeps the control UI local-only on 127.0.0.1 and exposes a separate public share server for clip links. If you use a reverse proxy, point it at sharing.public_port, not sharing.port.

Vice fails only from a manual systemd --user service

Do not use shell syntax like Environment=HOME=${HOME} or Environment=XDG_RUNTIME_DIR=/run/user/$(id -u) in the unit file. systemd does not evaluate those expressions there. Omit those overrides unless you need them, or use concrete values only. Recent Vice builds also recover WAYLAND_DISPLAY from a live Wayland socket when launcher contexts omit it, and the generated vice.service passes through the current display-session variables automatically. If you hand-edited the service earlier, reinstall or remove the custom overrides before testing again.

Uninstall

AUR:

sudo pacman -Rns vice-clipper

Git clone:

vice uninstall
rm -rf Vice

License

GPL-3.0

About

A Medal.tv-style game clipper for Linux, featuring instant replay, game recording, near zero performance impact, free and instant cloud sharing with friends, highlight features, and more! New features will be added as this is in active development.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors