Install this version:
emerge -a =gui-apps/dankmaterialshell-1.4.6-r1
If this version is masked, you can unmask it using the autounmask tool or standard emerge options:
autounmask =gui-apps/dankmaterialshell-1.4.6-r1
Or alternatively:
emerge --autounmask-write -a =gui-apps/dankmaterialshell-1.4.6-r1
# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit desktop optfeature shell-completion systemd tmpfiles xdg-utils
DESCRIPTION="Desktop shell for wayland compositors built with Quickshell"
HOMEPAGE="https://github.com/AvengeMedia/DankMaterialShell"
# dms-cli tarball includes vendored Go deps; dms-qml contains the QML shell
SRC_URI="https://github.com/AvengeMedia/DankMaterialShell/releases/download/v${PV}/dms-cli-${PV}.tar.gz
https://github.com/AvengeMedia/DankMaterialShell/releases/download/v${PV}/dms-qml.tar.gz -> dms-qml-${PV}.tar.gz"
S="${WORKDIR}/dms-cli-${PV}"
LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64 ~arm64"
IUSE="cups greeter"
DEPEND="
dev-qt/qtbase:6[dbus,wayland,opengl,vulkan,widgets]
dev-qt/qtdeclarative:6[opengl,vulkan]
dev-qt/qtmultimedia:6[dbus,opengl,vulkan,wayland]
dev-qt/qtshadertools:6
dev-qt/qtwayland:6
gui-apps/quickshell
sys-apps/accountsservice
sys-apps/xdg-desktop-portal-gtk[wayland]
sys-power/upower
kde-frameworks/kimageformats
cups? ( net-print/cups-pk-helper )
greeter? ( gui-libs/greetd )
"
RDEPEND="
${DEPEND}
app-misc/jq
"
BDEPEND="
dev-lang/go
dev-util/pkgconf
"
# set variables
QML_DIR="${WORKDIR}"/dms # qml assets location
GRT_DIR="${QML_DIR}"/Modules/Greetd # greeter location
_dms_goarch() {
case $(uname -m) in
x86_64) echo amd64 ;;
aarch64) echo arm64 ;;
*) die "unsupported arch: $(uname -m)" ;;
esac
}
src_unpack() {
# unpack dms source
unpack dms-cli-"${PV}".tar.gz
# unpack QML assets in ${QML_DIR}
mkdir -p ${QML_DIR} || die "failed to create directory: ${QML_DIR}"
cd "${QML_DIR}" || die "cd into ${QML_DIR} failed"
unpack dms-qml-"${PV}".tar.gz
}
src_configure() {
if use greeter; then
# set DMS_PATH: /usr/share/quickshell/dms
sed -i 's|^DMS_PATH=.*$|DMS_PATH="/usr/share/quickshell/dms"|' \
"${GRT_DIR}"/assets/dms-greeter || die
# fix tmpfile usergroup: greeter -> greetd
sed -i "s/\sgreeter/ greetd/g" \
"${QML_DIR}"/systemd/tmpfiles-dms-greeter.conf || die
fi
}
src_compile() {
# build dms binary from vendored source
emake VERSION="${PV}" dist
local goarch=$(_dms_goarch)
# generate shell completions
"${S}"/bin/dms-linux-${goarch} completion bash > "${S}"/dms-bashcomp || die
"${S}"/bin/dms-linux-${goarch} completion zsh > "${S}"/dms-zshcomp || die
}
src_test() {
cd "${S}" || die
CGO_ENABLED=0 go test ./... || true
}
src_install() {
local goarch=$(_dms_goarch)
# install dms binary
newbin "${S}"/bin/dms-linux-${goarch} dms
if use greeter; then
dobin "${GRT_DIR}"/assets/dms-greeter
newtmpfiles "${QML_DIR}"/systemd/tmpfiles-dms-greeter.conf dms-greeter.conf
fi
# install qml sources at /usr/share/quickshell/dms
insinto /usr/share/quickshell
doins -r "${QML_DIR}"
# install shell completions
newbashcomp "${S}"/dms-bashcomp dms
newzshcomp "${S}"/dms-zshcomp _dms
# systemd unit
systemd_douserunit "${QML_DIR}"/assets/systemd/dms.service
# desktop entry and icon
domenu "${QML_DIR}"/assets/dms-open.desktop
doicon -s scalable "${QML_DIR}"/assets/danklogo.svg
}
pkg_postinst() {
use greeter && tmpfiles_process dms-greeter.conf
xdg_desktop_database_update
xdg_icon_cache_update
optfeature_header "Optional programs for extra features:"
optfeature "Audio visualizer" media-sound/cava
optfeature "I2C monitor brightness control" app-misc/ddcutil
optfeature "Power profile options" sys-power/power-profiles-daemon
optfeature "Volume & Speaker control" media-video/wireplumber
optfeature "Bluetooth & file transfer" net-wireless/bluez
optfeature "Calendar integration" app-misc/khal
optfeature "Fingerprint unlock notifier" sys-auth/fprintfd
optfeature "Wallpaper based colorscheme" x11-misc/matugen
optfeature "Wifi & Ethernet connection" net-misc/networkmanager
if use greeter; then
elog "To use dms-greeter as your default greetd greeter run the following:"
elog " \$ dms greeter enable"
elog " \$ systemctl disable --now gdm.service sddm.service lightdm.service"
elog " \$ systemctl enable --now greetd.service"
fi
}
pkg_postrm() {
xdg_desktop_database_update
xdg_icon_cache_update
}
Manage flags for this package:
euse -i <flag> -p gui-apps/dankmaterialshell |
euse -E <flag> -p gui-apps/dankmaterialshell |
euse -D <flag> -p gui-apps/dankmaterialshell
dev-qt/qtbase:6[dbus,wayland,opengl,vulkan,widgets] dev-qt/qtdeclarative:6[opengl,vulkan] dev-qt/qtmultimedia:6[dbus,opengl,vulkan,wayland] dev-qt/qtshadertools:6 dev-qt/qtwayland:6 gui-apps/quickshell sys-apps/accountsservice sys-apps/xdg-desktop-portal-gtk[wayland] sys-power/upower kde-frameworks/kimageformats cups? ( net-print/cups-pk-helper ) greeter? ( gui-libs/greetd )
dev-qt/qtbase:6[dbus,wayland,opengl,vulkan,widgets] dev-qt/qtdeclarative:6[opengl,vulkan] dev-qt/qtmultimedia:6[dbus,opengl,vulkan,wayland] dev-qt/qtshadertools:6 dev-qt/qtwayland:6 gui-apps/quickshell sys-apps/accountsservice sys-apps/xdg-desktop-portal-gtk[wayland] sys-power/upower kde-frameworks/kimageformats cups? ( net-print/cups-pk-helper ) greeter? ( gui-libs/greetd ) app-misc/jq
dev-lang/go dev-util/pkgconf