mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-06-22 11:05:22 -04:00
distros(void linux): initial packaging support
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
# Void Linux packaging
|
||||
|
||||
XBPS templates for DankMaterialShell on [Void Linux](https://voidlinux.org).
|
||||
|
||||
| Package | Source repo | Template |
|
||||
| --- | --- | --- |
|
||||
| `dms` | DankMaterialShell | [`srcpkgs/dms/template`](srcpkgs/dms/template) |
|
||||
| `dms-greeter` (optional) | DankMaterialShell | [`srcpkgs/dms-greeter/template`](srcpkgs/dms-greeter/template) |
|
||||
| `dgop` | AvengeMedia/dgop | maintained in the **danklinux** repo (`distro/void/srcpkgs/dgop`) |
|
||||
| `danksearch` | AvengeMedia/danksearch | maintained in the **danklinux** repo (`distro/void/srcpkgs/danksearch`) |
|
||||
|
||||
All build from source.
|
||||
|
||||
## Distribution
|
||||
|
||||
These packages target the official
|
||||
[`void-linux/void-packages`](https://github.com/void-linux/void-packages)
|
||||
repository, so they install with a plain `xbps-install dms` and no extra setup.
|
||||
Most dependencies (`quickshell`, `matugen`, `cava`, `niri`, `greetd`, …) are
|
||||
already in Void; `dgop` and `danksearch` are packaged alongside in the
|
||||
[danklinux repo](https://github.com/AvengeMedia/danklinux/tree/master/distro/void).
|
||||
|
||||
The templates here are the source of truth: copy each into a void-packages
|
||||
checkout at `srcpkgs/<pkg>/template` to build or submit it. Only tagged releases
|
||||
are packaged (no `-git`/nightly variant).
|
||||
|
||||
## Dependencies
|
||||
|
||||
Installing `dms` automatically pulls in `quickshell`, `accountsservice`, `dgop`,
|
||||
and `matugen` (which drives the Material You theming). The rest are optional —
|
||||
install whichever features you want:
|
||||
|
||||
| Package | Enables |
|
||||
| --- | --- |
|
||||
| `danksearch` | launcher / filesystem search |
|
||||
| `cava` | audio visualiser widget |
|
||||
| `qt6-multimedia` | system sound feedback |
|
||||
| `qt6ct` | Qt app theming |
|
||||
| `wtype` | virtual keyboard input |
|
||||
| `power-profiles-daemon` | power profile control |
|
||||
| `cups-pk-helper` | printer management |
|
||||
| `NetworkManager` | network control |
|
||||
| `i2c-tools` | external-monitor brightness (DDC) |
|
||||
| `niri` / `hyprland` / `sway` | a Wayland compositor (niri is the team's choice) |
|
||||
|
||||
## Building & testing
|
||||
|
||||
Inside a `void-packages` checkout (symlink or copy these `srcpkgs/<pkg>` dirs in):
|
||||
|
||||
```sh
|
||||
# build the dependency packages first (dms requires dgop)
|
||||
./xbps-src pkg dgop
|
||||
./xbps-src pkg danksearch
|
||||
./xbps-src pkg dms
|
||||
./xbps-src pkg dms-greeter # optional
|
||||
|
||||
# lint (xlint ships in the xtools package)
|
||||
xlint srcpkgs/dms/template
|
||||
|
||||
# install the built packages
|
||||
sudo xbps-install --repository=hostdir/binpkgs dms dgop
|
||||
```
|
||||
|
||||
`dms` requires Go ≥ 1.26 in the build environment (per `core/go.mod`).
|
||||
|
||||
## Running the shell
|
||||
|
||||
DMS is a user-level Wayland shell with **no system service** — start it from your
|
||||
compositor's autostart, e.g. niri:
|
||||
|
||||
```kdl
|
||||
spawn-at-startup "dms" "run"
|
||||
```
|
||||
|
||||
or Hyprland: `exec-once = dms run`.
|
||||
|
||||
## Greeter (optional)
|
||||
|
||||
Install `dms-greeter`, then let the CLI do the setup:
|
||||
|
||||
```sh
|
||||
dms greeter enable # configures greetd + the Void seat/PAM bits below
|
||||
dms greeter sync # optional: share theming with the shell
|
||||
```
|
||||
|
||||
`dms greeter enable` handles what logind does automatically on systemd: it points
|
||||
greetd at the greeter, enables `seatd`, adds `_greeter` to the `_seatd`/`video`/
|
||||
`input` groups, and adds `pam_rundir` to `/etc/pam.d/greetd` (so the post-login
|
||||
session gets an `XDG_RUNTIME_DIR`). A Wayland compositor and a working DRM device
|
||||
(`/dev/dri/card*`) are required and not pulled in automatically.
|
||||
@@ -0,0 +1,15 @@
|
||||
dms-greeter installed.
|
||||
|
||||
Configure and enable it with:
|
||||
|
||||
dms greeter enable
|
||||
|
||||
This points greetd at the greeter and sets up everything Void needs that logind
|
||||
would handle on systemd: enables seatd, adds the greeter user to the seat/video/
|
||||
input groups, and adds pam_rundir to the greetd PAM stack. Optionally sync your
|
||||
shell theme into the greeter with:
|
||||
|
||||
dms greeter sync
|
||||
|
||||
Requirements not pulled in automatically: a Wayland compositor (niri, hyprland,
|
||||
sway, …) and a working DRM device (/dev/dri/card*; in a VM, enable virtio-gpu).
|
||||
@@ -0,0 +1,35 @@
|
||||
# Template file for 'dms-greeter'
|
||||
#
|
||||
# greetd greeter for DankMaterialShell
|
||||
# Builds from the same DMS release tarball as 'dms'; keep version/checksum in sync.
|
||||
# Setup is done by `dms greeter enable`, not by this package — see distro/void/README.md.
|
||||
pkgname=dms-greeter
|
||||
version=1.4.6
|
||||
revision=1
|
||||
short_desc="DankMaterialShell greeter for greetd"
|
||||
maintainer="AvengeMedia <AvengeMedia.US@gmail.com>"
|
||||
license="MIT"
|
||||
homepage="https://danklinux.com"
|
||||
distfiles="https://github.com/AvengeMedia/DankMaterialShell/archive/refs/tags/v${version}.tar.gz"
|
||||
checksum=f54601e522c883fa9cce02bec070e4321e47389a1cf453e7ad0bb7379ad91b61
|
||||
|
||||
depends="greetd quickshell acl-progs seatd pam_rundir"
|
||||
|
||||
# Cache dir the greeter uses as $HOME (owned by greetd's _greeter user).
|
||||
make_dirs="/var/cache/dms-greeter 0750 _greeter _greeter"
|
||||
|
||||
do_install() {
|
||||
# Launcher wrapper -> /usr/bin/dms-greeter
|
||||
vbin quickshell/Modules/Greetd/assets/dms-greeter
|
||||
|
||||
# Same QML tree as the shell; greeter mode is selected at runtime via DMS_RUN_GREETER.
|
||||
vmkdir usr/share/quickshell/dms-greeter
|
||||
vcopy "quickshell/*" usr/share/quickshell/dms-greeter
|
||||
|
||||
# Sample compositor configs for reference
|
||||
vinstall quickshell/Modules/Greetd/assets/dms-niri.kdl 644 usr/share/dms-greeter
|
||||
vinstall quickshell/Modules/Greetd/assets/dms-hypr.conf 644 usr/share/dms-greeter
|
||||
|
||||
vdoc quickshell/Modules/Greetd/README.md
|
||||
vlicense LICENSE
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
# Template file for 'dms'
|
||||
#
|
||||
# DankMaterialShell stable release
|
||||
#
|
||||
# NOTE: the binary is built with the `distro_binary` build tag, which is the
|
||||
# packaged variant upstream ships (it drops the in-app self-update command).
|
||||
pkgname=dms
|
||||
version=1.4.6
|
||||
revision=1
|
||||
build_style=go
|
||||
build_wrksrc="core"
|
||||
go_import_path="github.com/AvengeMedia/DankMaterialShell/core"
|
||||
go_package="${go_import_path}/cmd/dms"
|
||||
go_build_tags="distro_binary"
|
||||
go_ldflags="-X main.Version=${version}"
|
||||
short_desc="DankMaterialShell — Material 3 desktop shell for Wayland"
|
||||
maintainer="AvengeMedia <AvengeMedia.US@gmail.com>"
|
||||
license="MIT"
|
||||
homepage="https://danklinux.com"
|
||||
changelog="https://github.com/AvengeMedia/DankMaterialShell/releases"
|
||||
distfiles="https://github.com/AvengeMedia/DankMaterialShell/archive/refs/tags/v${version}.tar.gz"
|
||||
checksum=f54601e522c883fa9cce02bec070e4321e47389a1cf453e7ad0bb7379ad91b61
|
||||
|
||||
# Optional feature deps (XBPS has no "recommends") are listed in distro/void/README.md.
|
||||
depends="quickshell accountsservice dgop matugen"
|
||||
|
||||
post_install() {
|
||||
# QML shell tree (build_style=go already installed the dms binary)
|
||||
vmkdir usr/share/quickshell/dms
|
||||
vcopy "${wrksrc}/quickshell/*" usr/share/quickshell/dms
|
||||
echo "${version}" > "${DESTDIR}/usr/share/quickshell/dms/VERSION"
|
||||
|
||||
# Desktop entry + icon
|
||||
vinstall "${wrksrc}/assets/dms-open.desktop" 644 usr/share/applications
|
||||
vinstall "${wrksrc}/assets/danklogo.svg" 644 usr/share/icons/hicolor/scalable/apps
|
||||
|
||||
# Shell completions (generated by the built binary; skip when cross-building)
|
||||
vmkdir usr/share/bash-completion/completions
|
||||
vmkdir usr/share/zsh/site-functions
|
||||
vmkdir usr/share/fish/vendor_completions.d
|
||||
if [ -z "$CROSS_BUILD" ]; then
|
||||
"${DESTDIR}/usr/bin/dms" completion bash > "${DESTDIR}/usr/share/bash-completion/completions/dms"
|
||||
"${DESTDIR}/usr/bin/dms" completion zsh > "${DESTDIR}/usr/share/zsh/site-functions/_dms"
|
||||
"${DESTDIR}/usr/bin/dms" completion fish > "${DESTDIR}/usr/share/fish/vendor_completions.d/dms.fish"
|
||||
fi
|
||||
|
||||
vlicense "${wrksrc}/LICENSE"
|
||||
}
|
||||
Reference in New Issue
Block a user