Warning
Before installing V0.0.5 or later, please back up your snippets and completely uninstall the application.
QSnippet is a local-first application for system-wide text snippet expansion. While there are several feature-rich snippet tools available, many felt very overwhelming to get started and didn’t fit how I work.
I built QSnippet to be fast, predictable, and fully under my control. The goal was to provide a simple, reliable tool that improves my daily life without adding unnecessary complexity.
This project also serves to demonstrate my skills as a software developer and is purely a passion project. If you use QSnippet, consider supporting me.
QSnippet helps you:
- Replace repeated typing with short, easy-to-remember triggers
- Store and manage all snippets in one place
- Improve consistency in emails, notes, and documentation
- Work faster without relying on cloud services or browser extensions
QSnippet currently supports Windows and Linux only. Support for macOS is planned.
Prebuilt binaries are provided on the Releases page.
-
Windows: Installer or Portable version
-
Linux: Debian (.deb) package
If you prefer to build and run QSnippet from source, see the Development Notes below.
See the full Screenshots Gallery for a look at the homepage, snippet editor, and settings dialog across all built-in themes (Light, Dark, Nord, Pink).
QSnippet is written in Python and can be run directly from source or packaged as a standalone executable.
Clone the repository and start the application:
git clone "https://github.com/queball1999/QSnippet"
cd QSnippet
python main.py
To build a standalone executable, run:
pyinstaller --noconfirm --onefile --windowed --icon ".\images\QSnippet.ico" --add-data ".\images:images" ".\QSnippet.py"
or
python -m PyInstaller --noconfirm --onefile --windowed --icon ".\images\QSnippet.ico" --add-data ".\images:images" ".\QSnippet.py"
All QSnippet releases are cryptographically signed using GPG. Each downloadable file is accompanied by a corresponding .sig signature that allows you to verify its integrity and authenticity.
These steps assume you have downloaded the project’s public signing key gpg-public.asc and want to verify a release file.
-
Import the public key:
gpg --import gpg-public.asc -
Verify checksum:
gpg --verify SHA256SUMS.txt.sig SHA256SUMS.txt -
Verify binary:
sha256sum -c SHA256SUMS.txt
Important: Do not run any downloaded files unless they are successfully verified.
To help mitigate breaking changes, unit tests verify core functionality. The test suite includes regular tests and optional benchmark tests.
Run standard tests (recommended for CI/CD):
pytestRun only benchmark tests:
pytest --benchmark -m benchmarkRun all tests including benchmarks:
pytest --benchmarkStandard test run should produce output similar to:
===================== test session starts =====================
platform linux -- Python 3.13.12, pytest-9.0.2, pluggy-1.6.0
rootdir: .../QSnippet
plugins: Faker-37.4.0
collected 53 items (45 deselected by "-m not benchmark")
tests/core/test_flatten_yaml.py ... [ 5%]
tests/core/test_scaling.py ... [ 11%]
tests/service/test_snippet_service.py ....... [ 26%]
tests/utils/test_config_utils.py .......... [ 45%]
tests/utils/test_file_utils.py .......... [ 64%]
tests/utils/test_logging_utils.py ..... [ 73%]
tests/utils/test_reg_utils.py ...... [ 84%]
tests/utils/test_snippet_db.py ........ [100%]
===================== 45 passed in 2.34s ======================
Note: Benchmark tests are skipped by default to allow tests to run in environments without X11 display (like CI/CD runners). Use --benchmark flag to include them.
License Change Notice
As of January 2026, QSnippet is licensed under the GNU General Public License v3.0 (GPLv3).
- All releases and commits published on or after January 2026 are distributed under GPLv3.
- All releases published prior to this date remain licensed under the MIT License and are unaffected.
This project is licensed under the GNU General Public License v3.0 (GPLv3). See the LICENSE file for details.
All contributions are welcome! Feel free to contribute directly to the project as a developer, or support the project’s continued development.
