# Vicinae > Vicinae is a cross-desktop, keyboard-driven application launcher for Linux. It supports extensions, theming, clipboard management, and more. ## Installation # Vicinae Vicinae is a keyboard-driven command launcher for Linux and macOS, inspired by [Raycast](https://www.raycast.com/). It puts common actions within keyboard reach: launching apps, switching windows, managing clipboard history, searching files, and more. ![](./main.png) ## Getting started Install Vicinae on [Linux](https://docs.vicinae.com/install/linux) or [macOS](https://docs.vicinae.com/install/macos) and then follow the quickstart guide for your environment. If you want to learn a bit more about Vicinae, continue reading. ## Philosophy Vicinae aims to be a shortcut for most simple actions on your system. It ships with a broad feature set and integrates seamlessly with native OS features like window management and clipboard. With minimal configuration, it works as a clipboard manager, window switcher, app launcher, calculator, web searcher, and more. For anything too niche for the core, Vicinae can be extended via [dmenu mode](https://docs.vicinae.com/dmenu), [script commands](https://docs.vicinae.com/scripts/getting-started), or [full extensions built with React and TypeScript](https://docs.vicinae.com/extensions/introduction). Extensions made by the [community](https://github.com/vicinaehq/extensions) can be installed from vicinae itself in a few clicks. ## Performance Vicinae is built with performance in mind. When given the choice, vicinae will prefer to cache things in memory to lower CPU usage in order to keep battery drain minimal and remain snappy. The amount of memory vicinae really needs to function properly is generally lower than what most process monitors report. [Read more](https://docs.vicinae.com/faq#vicinae-uses-a-lot-of-ram). ## Raycast compatibility One of Vicinae's flagship features is its compatibility with the Raycast ecosystem. Currently Vicinae has decent support for many Raycast extensions. Your mileage will vary depending on the extension, but simpler ones work well. Vicinae also implements script commands that mimic most of the Raycast feature of the same name. The design is similar, but Vicinae does some things differently and unlocks things that Raycast locks behind a paywall, such as theming and window management APIs. --- # Install on Linux All the ways to install Vicinae on Linux: from your distribution's package repositories, using the installation script, or [building from source](https://docs.vicinae.com/build). ## Package repositories The most direct way to install Vicinae, if your distribution is covered. If it's not, use the [install script](#install-script) instead. ### Arch Linux (AUR) Vicinae is available on the Arch User Repository (AUR) in three variants: * **Source build** * [vicinae](https://aur.archlinux.org/packages/vicinae) – stable release, compiled from source * [vicinae-git](https://aur.archlinux.org/packages/vicinae-git) – latest development version, compiled from source * **Prebuilt binary** * [vicinae-bin](https://aur.archlinux.org/packages/vicinae-bin) – stable release, precompiled binary You can install Vicinae using your preferred AUR helper. ```bash yay -S vicinae-bin ``` ### Gentoo Thanks to [jaredallard](https://github.com/jaredallard) for providing an [ebuild](https://github.com/jaredallard/overlay/tree/main/gui-apps/vicinae) through his overlay! ```bash eselect repository add jaredallard-overlay git https://github.com/jaredallard/overlay.git emerge --sync jaredallard-overlay emerge gui-apps/vicinae ``` ### Fedora and Derivatives #### COPR Vicinae is packaged on [COPR](https://copr.fedorainfracloud.org/coprs/quadratech188/vicinae/). ```bash dnf copr enable quadratech188/vicinae dnf install vicinae ``` #### Terra Vicinae is also availible from [Terra](https://terra.fyralabs.com). Start with installing Terra: ```bash sudo dnf install --nogpgcheck --repofrompath 'terra,https://repos.fyralabs.com/terra$releasever' terra-release ``` Then install Vicinae: ```bash sudo dnf install vicinae ``` On Fedora Atomic: ```bash curl -fsSL https://github.com/terrapkg/subatomic-repos/raw/main/terra.repo | pkexec tee /etc/yum.repos.d/terra.repo sudo rpm-ostree install terra-release vicinae ``` Bazzite users don't need to install Terra. Just set `enabled` to `1` in `/etc/yum.repos.d/terra.repo` then use `rpm-ostree`: ```bash sudo rpm-ostree install vicinae ``` ### NixOS Vicinae ships its own Nix flake and Home Manager module. See the dedicated [NixOS page](https://docs.vicinae.com/nixos). ## Install script If your distribution is not covered above, Vicinae can be installed using an automated installation script that provides a hassle-free setup experience with minimal configuration required. If Vicinae is already packaged by your distribution, you should install it through your package manager instead for better system integration and automatic updates. Installation script by @dagimg-dot ### Quick Install Run the following command to install Vicinae: ```bash curl -fsSL https://vicinae.com/install | bash ``` The above command will prompt you to enter your sudo password, as elevated privileges are required to install Vicinae under `/usr/local`, which is the default installation prefix. Note that it is possible to install Vicinae without root access, although it requires more setup. More on that below. The installation script will automatically: * Download the latest AppImage from GitHub releases * Extract Vicinae and all its runtime dependencies to `/usr/local/lib/vicinae` * Create symbolic links for binaries in your PATH * Install desktop files, icons, and default themes * Set up `vicinae-node` for seamless TypeScript extension support. This is a regular Node.js binary included to run extensions. After installation completes, verify it was successful: ``` $> vicinae version Version v0.16.2 (commit b99015bc2) Build: GCC 15.2.0 - Release - LTO Provenance: appimage ``` ### Update To update Vicinae, run the installation script again. It will detect your existing installation (if using the same prefix) and update it. ```bash curl -fsSL https://vicinae.com/install | bash ``` ### Uninstall To uninstall Vicinae, run the installation script with the `--uninstall` argument: ```bash curl -fsSL https://vicinae.com/install | bash -s -- --uninstall ``` ### Install with custom prefix By default, the script tries to install Vicinae under `/usr/local`, but for users with specific constraints (e.g., no root access), this might not be desirable. To accommodate these users, the script provides a `--prefix` option: ```bash curl -fsSL https://vicinae.com/install | bash -s -- --prefix ~/.local ``` #### Custom prefix caveats In order to have a fully working installation of Vicinae, you need to make sure that: * The Vicinae server knows where to find the `vicinae-node` binary. If you set your PATH in `~/.bashrc` or `~/.zshrc`, the Vicinae server might not have the correct PATH set, as it might be started before those files are sourced. * The Vicinae desktop file that declares the `x-scheme-handler/vicinae` and `x-scheme-handler/raycast` MIME type associations should be searchable by the standard XDG tooling. You can verify this is working by opening any Vicinae deeplink, e.g., `xdg-open vicinae://toggle`. If this is not working, some features such as the OAuth extension flow will not work. ## Build from source If none of the above fits your needs, you can always [build Vicinae from source](https://docs.vicinae.com/build). --- # Install on macOS Vicinae ships as a notarized `.dmg` for Apple Silicon Macs. macOS support is in **beta** since `v0.23.0`. All current Vicinae features are supported on macOS. Please report anything odd using the "Report a Vicinae bug" command. ## Requirements * macOS Tahoe (26) or newer * An Apple Silicon Mac: Intel Macs are not supported ## Install from DMG Download [Vicinae.dmg](https://github.com/vicinaehq/vicinae/releases/latest/download/Vicinae.dmg) from the [latest release](https://github.com/vicinaehq/vicinae/releases/latest), open it, and drag `Vicinae.app` into your `Applications` folder. The app is notarized, so no Gatekeeper workaround is needed: just launch it like any regular app. On first launch, an onboarding process will guide you through the initial setup. ### CLI usage You can access the `vicinae` CLI by symlinking it from the bundle like so: ```bash ln -sf /Applications/Vicinae.app/Contents/MacOS/vicinae-cli ~/.local/bin/vicinae ``` ### Update Vicinae will inform you when an update is ready to install. ## Homebrew install You can install the cask for Vicinae as follows: ```bash brew install --cask vicinae ``` This assumes you will handle updates using `brew` as Vicinae will not propose you to manually update if you installed it from homebrew. Note that the `vicinae` CLI is also automatically installed and linked for you. --- # Build from source This guide will teach you how to install Vicinae from source and build an optimized version of the binary. ## Why build from source Vicinae is a decently sized mostly C++ code base. As such, compiling it can be quite resource demanding and time consuming, in particular if you enable specific optimizations such as LTO. The main reward for compiling it yourself is the ability to compile Vicinae with [optimizations that are specific to your CPU model](https://docs.vicinae.com/build#optimized-build), provided that it's recent enough. And also, it's fun 😏. If your goal is to get Vicinae up and running on your system as quickly as possible please consider [installing from a repository](https://docs.vicinae.com/install/linux#package-repositories) if your distribution is supported or [installing from the script](https://docs.vicinae.com/install/linux#install-script) if that is not the case. ## Build requirements To build Vicinae, you need a working C++23-capable compiler. We mostly make use of `gcc` (v15+) but `clang` should also work and is the supported way to [build for macOS](https://docs.vicinae.com/build-macos). You will also need a few dependencies, listed below. If you distribution does not appear in this list, you are on your own to figure out the exact packages to install. If you still manage to build it, don't forget to contribute to this documentation by adding your list here! ```bash {{ title: 'Arch Linux' }} pacman -Syu \ base-devel \ cmake \ ninja \ nodejs \ npm \ qt6-base \ qt6-svg \ protobuf \ cmark-gfm \ layer-shell-qt \ libqalculate \ minizip \ qtkeychain-qt6 \ rapidfuzz-cpp \ icu ``` ```bash {{ title: 'Ubuntu' }} apt install -y \ build-essential \ cmake \ ninja-build \ nodejs \ npm \ qt6-base-dev \ qt6-svg-dev \ qt6-wayland-dev \ libqt6svg6 \ libprotobuf-dev \ cmark-gfm \ layer-shell-qt \ liblayershellqtinterface-dev \ libqalculate-dev \ libminizip-dev \ libabsl-dev \ libcmark-gfm-dev \ zlib1g-dev \ qtkeychain-qt6-dev \ librapidfuzz-cpp-dev \ libicu-dev ``` ```bash {{ title: 'Fedora' }} dnf install -y \ cmake \ g++ \ git \ mold \ ninja-build \ nodejs-npm \ 'cmake(Qt6Core)' \ 'cmake(Qt6Qml)' \ 'pkgconfig(openssl)' \ 'cmake(Qt6Core)' \ 'cmake(Qt6Network)' \ 'cmake(Qt6Svg)' \ 'cmake(Qt6Concurrent)' \ 'cmake(Qt6Quick)' \ 'cmake(Qt6Qml)' \ 'cmake(Qt6GuiPrivate)' \ 'cmake(Qt6QuickDialogs2)' \ 'cmake(Qt6QuickControls2)' \ 'cmake(Qt6ShaderTools)' \ 'cmake(Qt6LinguistTools)' \ 'cmake(KF6SyntaxHighlighting)' \ 'cmake(LayerShellQt)' \ 'pkgconfig(xcb-keysyms)' \ 'pkgconfig(wayland-protocols)' \ 'cmake(Qt6Keychain)' \ 'pkgconfig(libqalculate)' \ 'qt6qml(org.kde.layershell)' \ 'nodejs(engine)' ``` ```bash {{ title: 'Gentoo Linux' }} emerge -av \ qtkeychain \ qtbase \ minizip-ng \ rapidfuzz-cpp \ layer-shell-qt \ libqalculate \ nodejs \ cmake \ cmark-gfm \ dev-qt/qtsvg \ protobuf \ dev-build/ninja \ dev-libs/icu ``` ## Recommended build tools In order to make building and rebuilding Vicinae easier we recommend installing the following: * Install `ccache` to automatically cache most compilations and significantly decrease build times. * Install the `mold` linker to link the Vicinae binary significantly faster. All you need is to install these tools, the Vicinae build system will take care of the rest for you. ## Build Flags Several build flags are available to tweak what features are built into the final binary. The best way to know about them is to read the beginning of the top level `CMakeLists.txt`. Flags are easily identified by the use of the `option` cmake function: ```cmake option(LTO "Enable Link Time Optimization (LTO). This will result in better performance, but greatly increased compile time." OFF) option(NOSTRIP "Never strip debug symbols from the binary, even in release mode. Note that symbols are never stripped for debug releases." OFF) option(USE_SYSTEM_PROTOBUF "Use system protobuf instead of building it from source" ON) option(USE_SYSTEM_ABSEIL "Use system abseil (libabsl) instead of building it from source" ON) option(USE_SYSTEM_CMARK_GFM "Use system cmark-gfm (github's fork of cmark) instead of building it from source" ON) ``` You can enable or disable a given option by passing a `-D