-->
NOTE
Quickshell is still in a somewhat early stage of development. There will be breaking changes before 1.0, however a migration guide will be provided.
Since Quickshell 0.1, you can now choose whether to install by tracking the master branch, or install by latest release.
Note that you may want to install some additional packages (names vary by distro):
qtsvg
: support for SVG image loading (bundled with most packages)qtimageformats
: support for WEBP images as well as some less common onesqtmultimedia
: support for playing videos, audio, etcqt5compat
: extra visual effects, notably gaussian blur. MultiEffect is usually preferableThe Quickshell repo has an embedded flake. You can use either of the two:
git+https://git.outfoxxed.me/outfoxxed/quickshell
github:quickshell-mirror/quickshell
NOTE
You can use ?ref=
to specify a tag if you want a tagged release.
{
inputs = {
nixpkgs.url = "nixpkgs/nixos-unstable";
quickshell = {
# add ?ref=<tag> to track a tag
url = "git+https://git.outfoxxed.me/outfoxxed/quickshell";
# THIS IS IMPORTANT
# Mismatched system dependencies will lead to crashes and other issues.
inputs.nixpkgs.follows = "nixpkgs";
};
};
}
The package is available as quickshell.packages.<system>.default
, which can be added to
your environment.systemPackages
or home.packages
if you use home-manager.
Quickshell is available from the aur under:
WARNING
When using an AUR package, Quickshell may break whenever Qt is updated. The AUR gives us no way to actually fix this, but Quickshell will attempt to warn you if it detects a breakage when updating. If warned of a breakage, please reinstall the package.
Install using the command below:
yay -S quickshell
# or
yay -S quickshell-git
(or your AUR helper of choice)
Quickshell is available from the errornointernet/quickshell COPR, as either:
quickshell
that tracks the latest releasequickshell-git
that tracks the master branchInstall using the command below:
sudo dnf copr enable errornointernet/quickshell
sudo dnf install quickshell
# or
sudo dnf install quickshell-git
Quickshell’s source repository works as a channel. Add the following to your channel list:
(channel
(name quickshell)
(url "https://git.outfoxxed.me/outfoxxed/quickshell")
(branch "master"))
Then, you can install the package via guix install quickshell-git
or by adding quickshell-git
to your system or home definition.
You can also clone the repository and use guix shell -f quickshell.scm
to try out the package.
See BUILD.md for build instructions and configurations.
If you want to write your own configuration, installing a QML grammar and the LSP is recommended.
Read the Usage Guide after configuring your editor.
NOTE
Qmlls versions prior to 6.8.2 do not require -E
Install the yuja/tree-sitter-qml tree-sitter grammar, and the xhcoding/qml-ts-mode mode.
Both are packaged for nix via outfoxxed/nix-qml-support.
Either lsp-mode
or eglot
should be usable for LSP (caveats below).
The author’s personal emacs config uses lsp-mode
and qml-ts-mode
as follows:
(use-package qml-ts-mode
:after lsp-mode
:config
(add-to-list 'lsp-language-id-configuration '(qml-ts-mode . "qml-ts"))
(lsp-register-client
(make-lsp-client :new-connection (lsp-stdio-connection '("qmlls", "-E"))
:activation-fn (lsp-activate-on "qml-ts")
:server-id 'qmlls))
(add-hook 'qml-ts-mode-hook (lambda ()
(setq-local electric-indent-chars '(?\n ?\( ?\) ?{ ?} ?\[ ?\] ?\; ?,))
(lsp-deferred))))
Neovim has built-in syntax highlighting for QML, however tree-sitter highlighting
may work better than the built-in highlighting. You can install the grammar
using :TSInstall qmljs
.
To use the language server (caveats below), install nvim-lspconfig and the following snippet to your configuration:
require("lspconfig").qmlls.setup {
cmd = {"qmlls", "-E"}
}
Helix has built-in syntax highlighting for QML.
To use the language server, add the following snippet to your configuration:
[language-server.qmlls]
args = ["-E"]
command = "qmlls"
qt-qml.qmlls.useQmlImportPathEnvVar
setting.
The QML language has an associated language server, qmlls. We recommend using it, as it will catch a lot of bad practice that may make your configuration harder to maintain later.
We are aware of the following issues:
root:
imports cannot be resolved by the LSP.Keeping in mind the above caveats, qmlls should be able to guide you towards a more correct code should you choose to use it.
NOTE
Nix users should note that qmlls will not be able to pick up qml modules
that are not in QML2_IMPORT_PATH
. The easiest way to ensure this is by setting
qt.enable
to true
and installing the quickshell package globally.
Create your first configuration by reading the Intro.