mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-10-30 06:57:49 -04:00
branding: rebrand to dux
This commit is contained in:
1 parent
788b722702
commit
789a968cde
537 files changed
+1756
-1459
No files matched your search
@@ -8,7 +8,7 @@ Each skill is a directory with a `SKILL.md` entrypoint, optional reference docs,
|
||||
|
||||
| Skill | Description |
|
||||
|-------|-------------|
|
||||
| [dms-plugin-dev](dms-plugin-dev/) | Develop plugins for DankMaterialShell - covers all 4 plugin types (widget, daemon, launcher, desktop), manifest creation, QML components, settings UI, data persistence, theme integration, and PopoutService usage. |
|
||||
| [dms-plugin-dev](dms-plugin-dev/) | Develop plugins for Dux Shell - covers all 4 plugin types (widget, daemon, launcher, desktop), manifest creation, QML components, settings UI, data persistence, theme integration, and PopoutService usage. |
|
||||
|
||||
## Installation
|
||||
|
||||
@@ -28,7 +28,7 @@ ln -s ../../.agents/skills/dms-plugin-dev .claude/skills/dms-plugin-dev
|
||||
**Personal** (all your projects):
|
||||
|
||||
```bash
|
||||
ln -s /path/to/DankMaterialShell/.agents/skills/dms-plugin-dev ~/.claude/skills/dms-plugin-dev
|
||||
ln -s /path/to/dms/.agents/skills/dms-plugin-dev ~/.claude/skills/dms-plugin-dev
|
||||
```
|
||||
|
||||
After linking, the skill appears in Claude Code's `/` menu as `/dms-plugin-dev`, and Claude loads it automatically when you ask about DMS plugin development.
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: dms-plugin-dev
|
||||
description: >
|
||||
Develop plugins for DankMaterialShell (DMS), a QML-based Linux desktop shell built on
|
||||
Develop plugins for Dux Shell (DMS), a QML-based Linux desktop shell built on
|
||||
Quickshell. Supports widget (bar, dock + Control Center), daemon (background service),
|
||||
launcher (search + actions), desktop (draggable desktop widgets), dash (dash tab),
|
||||
dashCard (dash overview card), and composite (multi-surface) plugins. Covers manifest
|
||||
@@ -11,33 +11,33 @@ description: >
|
||||
or debug a DMS plugin, or asks about the DMS plugin API.
|
||||
compatibility: Designed for Claude Code (or similar products)
|
||||
metadata:
|
||||
author: DankMaterialShell
|
||||
author: Dux Shell
|
||||
version: "1.2"
|
||||
domain: qml-desktop-development
|
||||
framework: DankMaterialShell
|
||||
framework: Dux Shell
|
||||
languages: qml, javascript
|
||||
allowed-tools: Bash Read Write Edit
|
||||
---
|
||||
|
||||
# DankMaterialShell Plugin Development
|
||||
# Dux Shell Plugin Development
|
||||
|
||||
## Overview
|
||||
|
||||
DMS plugins extend the desktop shell with bar and dock widgets, background services, launcher
|
||||
integrations, desktop widgets, and dash tabs and cards. Plugins are QML components discovered from
|
||||
`~/.config/DankMaterialShell/plugins/`.
|
||||
`~/.config/dms/plugins/`.
|
||||
|
||||
**Minimum plugin structure:**
|
||||
|
||||
```
|
||||
~/.config/DankMaterialShell/plugins/YourPlugin/
|
||||
~/.config/dms/plugins/YourPlugin/
|
||||
plugin.json # Required: manifest with metadata
|
||||
YourComponent.qml # Required: main QML component
|
||||
YourSettings.qml # Optional: settings UI
|
||||
*.js # Optional: JavaScript utilities
|
||||
```
|
||||
|
||||
**Plugin registry:** Community plugins are available at https://plugins.danklinux.com/
|
||||
**Plugin registry:** Community plugins are available at https://plugins.duxlabs.dev/
|
||||
|
||||
**Plugin types:**
|
||||
|
||||
@@ -480,7 +480,7 @@ Always use `Theme.*` properties from `qs.Common` - never hardcode colors or size
|
||||
- Radius: `Theme.cornerRadius`, `Theme.cornerRadiusSmall`, `Theme.cornerRadiusLarge`
|
||||
- Icons: `Theme.iconSizeSmall` (16), `Theme.iconSize` (24), `Theme.iconSizeLarge` (32)
|
||||
|
||||
**Common widgets from `qs.Widgets`:** `StyledText`, `StyledRect`, `DankIcon`, `DankButton`, `DankToggle`, `DankTextField`, `DankSlider`, `DankGridView`, `CachingImage`.
|
||||
**Common widgets from `qs.DCommon.Widgets`:** `StyledText`, `StyledRect`, `DIcon`, `DButton`, `DToggle`, `DTextField`, `DSlider`, `DGridView`, `CachingImage`. The old `Dank*` names in `qs.Widgets` are deprecated.
|
||||
|
||||
See [theme-reference.md](references/theme-reference.md) for the complete property list.
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
{
|
||||
"$schema": "http://json-schema.org/draft-07/schema#",
|
||||
"$id": "https://danklinux.com/schemas/plugin.json",
|
||||
"title": "DankMaterialShell Plugin Manifest",
|
||||
"description": "Schema for DankMaterialShell plugin.json manifest files",
|
||||
"$id": "https://duxlabs.dev/schemas/plugin.json",
|
||||
"title": "Dux Shell Plugin Manifest",
|
||||
"description": "Schema for Dux Shell plugin.json manifest files",
|
||||
"type": "object",
|
||||
"required": [
|
||||
"id",
|
||||
|
||||
@@ -43,7 +43,7 @@ PluginSettings {
|
||||
pluginId: "exampleVariants"
|
||||
|
||||
// Variant creation UI
|
||||
DankButton {
|
||||
DButton {
|
||||
text: "Add New Instance"
|
||||
onClicked: {
|
||||
var id = "variant_" + Date.now()
|
||||
|
||||
@@ -32,6 +32,7 @@ Add the optional `dash` block for labels, card size and options (see plugin-mani
|
||||
import QtQuick
|
||||
import qs.Common
|
||||
import qs.Widgets
|
||||
import qs.DCommon.Widgets
|
||||
import qs.Modules.Plugins
|
||||
import qs.Modules.DankDash
|
||||
|
||||
@@ -79,7 +80,7 @@ DashTabComponent {
|
||||
color: Theme.surfaceText
|
||||
}
|
||||
|
||||
DankButton {
|
||||
DButton {
|
||||
id: button
|
||||
text: I18n.trFor("myPlugin", "Refresh")
|
||||
onClicked: root.refresh()
|
||||
|
||||
@@ -174,7 +174,7 @@ Retrieve a plugin's installation directory at runtime:
|
||||
var dir = pluginService.getPluginPath(pluginId)
|
||||
```
|
||||
|
||||
Returns the absolute path to the plugin's directory (e.g., `~/.config/DankMaterialShell/plugins/MyPlugin`), or an empty string if the plugin is not found. Useful for loading bundled assets (images, data files) relative to the plugin's location.
|
||||
Returns the absolute path to the plugin's directory (e.g., `~/.config/dms/plugins/MyPlugin`), or an empty string if the plugin is not found. Useful for loading bundled assets (images, data files) relative to the plugin's location.
|
||||
|
||||
## Important Notes
|
||||
|
||||
|
||||
@@ -83,11 +83,12 @@ Theme.popupBackground() // Popup background with proper opacity
|
||||
|
||||
```qml
|
||||
import qs.Widgets
|
||||
import qs.DCommon.Widgets
|
||||
|
||||
Row {
|
||||
spacing: Theme.spacingS
|
||||
|
||||
DankIcon {
|
||||
DIcon {
|
||||
name: "icon_name"
|
||||
color: Theme.onSurface
|
||||
font.pixelSize: Theme.iconSize
|
||||
@@ -151,7 +152,7 @@ StyledRect {
|
||||
anchors.centerIn: parent
|
||||
spacing: Theme.spacingS
|
||||
|
||||
DankIcon {
|
||||
DIcon {
|
||||
name: "star"
|
||||
color: Theme.surfaceText
|
||||
font.pixelSize: Theme.iconSize
|
||||
@@ -191,17 +192,17 @@ font.pixelSize: 14 // Use Theme.fontSizeMedium
|
||||
|--------|-------------|
|
||||
| `StyledText` | Themed text with proper color defaults |
|
||||
| `StyledRect` | Themed rectangle |
|
||||
| `DankIcon` | Material Symbols icon renderer |
|
||||
| `DIcon` | Material Symbols icon renderer |
|
||||
| `DankNFIcon` | Nerd Font icon renderer |
|
||||
| `DankButton` | Themed button |
|
||||
| `DankToggle` | Toggle switch |
|
||||
| `DankTextField` | Text input field |
|
||||
| `DankSlider` | Slider control |
|
||||
| `DankDropdown` | Dropdown menu |
|
||||
| `DankGridView` | Grid layout view |
|
||||
| `DankListView` | List layout view |
|
||||
| `DankFlickable` | Scrollable container |
|
||||
| `DankTabBar` | Tab bar navigation |
|
||||
| `DButton` | Themed button |
|
||||
| `DToggle` | Toggle switch |
|
||||
| `DTextField` | Text input field |
|
||||
| `DSlider` | Slider control |
|
||||
| `DDropdown` | Dropdown menu |
|
||||
| `DGridView` | Grid layout view |
|
||||
| `DListView` | List layout view |
|
||||
| `DFlickable` | Scrollable container |
|
||||
| `DTabBar` | Tab bar navigation |
|
||||
| `DankCollapsibleSection` | Collapsible content section |
|
||||
| `DankTooltip` | Hover tooltip |
|
||||
| `DankNumberStepper` | Number +/- control |
|
||||
|
||||
@@ -59,7 +59,7 @@ horizontalBarPill: Component {
|
||||
anchors.centerIn: parent
|
||||
spacing: Theme.spacingS
|
||||
|
||||
DankIcon {
|
||||
DIcon {
|
||||
name: "star"
|
||||
color: Theme.surfaceText
|
||||
font.pixelSize: Theme.iconSize
|
||||
@@ -92,7 +92,7 @@ verticalBarPill: Component {
|
||||
anchors.centerIn: parent
|
||||
spacing: Theme.spacingS
|
||||
|
||||
DankIcon {
|
||||
DIcon {
|
||||
name: "star"
|
||||
color: Theme.surfaceText
|
||||
font.pixelSize: Theme.iconSizeSmall
|
||||
@@ -261,7 +261,7 @@ PluginComponent {
|
||||
padding: Theme.spacingM
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankButton {
|
||||
DButton {
|
||||
text: I18n.trFor("myPlugin", "Close")
|
||||
onClicked: root.surfaceContext.dismissExpansion()
|
||||
}
|
||||
@@ -311,6 +311,7 @@ import QtQuick
|
||||
import Quickshell
|
||||
import qs.Common
|
||||
import qs.Widgets
|
||||
import qs.DCommon.Widgets
|
||||
import qs.Services
|
||||
import qs.Modules.Plugins
|
||||
|
||||
@@ -367,7 +368,7 @@ PluginComponent {
|
||||
PopoutComponent {
|
||||
headerText: "Emoji Picker"
|
||||
|
||||
DankGridView {
|
||||
DGridView {
|
||||
width: parent.width
|
||||
height: 300
|
||||
cellWidth: 50
|
||||
|
||||
@@ -6,7 +6,7 @@ body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
## DankMaterialShell Bug Report
|
||||
## Dux Shell Bug Report
|
||||
Limit your report to one issue per submission unless similarly related
|
||||
- type: dropdown
|
||||
id: compositor
|
||||
|
||||
@@ -6,7 +6,7 @@ body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
## DankMaterialShell Feature Request
|
||||
## Dux Shell Feature Request
|
||||
- type: textarea
|
||||
id: feature_description
|
||||
attributes:
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
name: Support Request
|
||||
description: Help with installation, usage, or general questions about DankMaterialShell
|
||||
description: Help with installation, usage, or general questions about Dux Shell
|
||||
labels:
|
||||
- support
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
## DankMaterialShell Support Request
|
||||
## Dux Shell Support Request
|
||||
- type: dropdown
|
||||
id: compositor
|
||||
attributes:
|
||||
|
||||
@@ -28,4 +28,4 @@
|
||||
- [ ] New user-facing strings are wrapped in `I18n.tr()` with translator context, reusing existing terms where possible
|
||||
- [ ] Go changes: ran `make fmt`, added/updated tests, `make test` passes, and `go mod tidy` is clean
|
||||
- [ ] QML changes: ran `make lint-qml` with no new warnings
|
||||
- [ ] I have opened a corresponding pull request in dlx-docs to document any new behaviors: https://github.com/AvengeMedia/DankLinux-Docs
|
||||
- [ ] I have opened a corresponding pull request in dlx-docs to document any new behaviors: https://github.com/duxlabs-dev/dux-docs
|
||||
@@ -38,7 +38,7 @@ jobs:
|
||||
submodule_rev=$(git ls-tree HEAD dank-qml-common --object-only)
|
||||
flake_rev=$(python3 -c "import json; print(json.load(open('flake.lock'))['nodes']['dank-qml-common']['locked']['rev'])")
|
||||
[ "$submodule_rev" = "$flake_rev" ] && { echo "flake.lock already matches $submodule_rev"; exit 0; }
|
||||
nix flake lock --override-input dank-qml-common "github:AvengeMedia/dank-qml-common/$submodule_rev"
|
||||
nix flake lock --override-input dank-qml-common "github:duxlabs-dev/dux-qml-common/$submodule_rev"
|
||||
|
||||
- name: Commit and push flake.lock update
|
||||
env:
|
||||
|
||||
@@ -42,7 +42,7 @@ jobs:
|
||||
prune:
|
||||
name: Prune archive snapshots
|
||||
runs-on: ubuntu-latest
|
||||
if: github.repository == 'AvengeMedia/DankMaterialShell'
|
||||
if: github.repository == 'duxlabs-dev/dux-shell'
|
||||
env:
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
|
||||
|
||||
@@ -280,7 +280,7 @@ jobs:
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
curl -fsSL https://install.danklinux.com | sh
|
||||
curl -fsSL https://install.duxlabs.dev | sh
|
||||
```
|
||||
|
||||
## Assets
|
||||
@@ -420,7 +420,7 @@ jobs:
|
||||
|
||||
# Create installation guide
|
||||
cat > _temp_full/INSTALL.md << 'EOFINSTALL'
|
||||
# DankMaterialShell Installation
|
||||
# Dux Shell Installation
|
||||
|
||||
## Requirements
|
||||
|
||||
@@ -458,8 +458,8 @@ jobs:
|
||||
|
||||
## Configuration
|
||||
|
||||
- Settings are stored in `~/.config/DankMaterialShell/settings.json`
|
||||
- Plugins go in `~/.config/DankMaterialShell/plugins/`
|
||||
- Settings are stored in `~/.config/dms/settings.json`
|
||||
- Plugins go in `~/.config/dms/plugins/`
|
||||
- See the documentation in the `dms/` directory for more details
|
||||
|
||||
## Troubleshooting
|
||||
@@ -531,13 +531,13 @@ jobs:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
repo:
|
||||
- dgop
|
||||
- dankgo
|
||||
- dank-qml-common
|
||||
- dankcalendar
|
||||
- danksearch
|
||||
- dank-greeter
|
||||
- dfiles
|
||||
- dux-gop
|
||||
- dux-go
|
||||
- dux-qml-common
|
||||
- dux-calendar
|
||||
- dux-search
|
||||
- dux-greeter
|
||||
- dux-files
|
||||
steps:
|
||||
- name: Create GitHub App token
|
||||
id: app_token
|
||||
|
||||
@@ -78,7 +78,7 @@ jobs:
|
||||
echo "📦 Downloading DMS QML source for v${VERSION}..."
|
||||
|
||||
# Download DMS QML source
|
||||
wget "https://github.com/AvengeMedia/DankMaterialShell/releases/download/v${VERSION}/dms-qml.tar.gz" || {
|
||||
wget "https://github.com/duxlabs-dev/dux-shell/releases/download/v${VERSION}/dms-qml.tar.gz" || {
|
||||
echo "❌ Failed to download dms-qml.tar.gz for v${VERSION}"
|
||||
exit 1
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ jobs:
|
||||
check-updates:
|
||||
name: Check for updates
|
||||
runs-on: ubuntu-latest
|
||||
if: github.repository == 'AvengeMedia/DankMaterialShell'
|
||||
if: github.repository == 'duxlabs-dev/dux-shell'
|
||||
|
||||
outputs:
|
||||
has_updates: ${{ steps.check.outputs.has_updates }}
|
||||
@@ -61,7 +61,7 @@ jobs:
|
||||
# Helper function to check dms stable tag
|
||||
# Sets LATEST_TAG variable in parent scope if update needed
|
||||
check_dms_stable() {
|
||||
LATEST_TAG=$(curl -s https://api.github.com/repos/AvengeMedia/DankMaterialShell/releases/latest | grep '"tag_name"' | sed 's/.*"tag_name": "\([^"]*\)".*/\1/' || echo "")
|
||||
LATEST_TAG=$(curl -s https://api.github.com/repos/duxlabs-dev/dux-shell/releases/latest | grep '"tag_name"' | sed 's/.*"tag_name": "\([^"]*\)".*/\1/' || echo "")
|
||||
local OBS_SPEC=$(curl -s -u "$OBS_USERNAME:$OBS_PASSWORD" "https://api.opensuse.org/source/home:AvengeMedia:dms/dms/dms.spec" 2>/dev/null || echo "")
|
||||
local OBS_VERSION=$(echo "$OBS_SPEC" | grep "^Version:" | awk '{print $2}' | xargs || echo "")
|
||||
|
||||
@@ -192,7 +192,7 @@ jobs:
|
||||
# Determine version for dms stable using the API
|
||||
# GITHUB_REF is unreliable when "Use workflow from" a tag; API works from any ref
|
||||
if [[ "${{ github.event.inputs.package }}" == "dms" ]] || [[ "${{ github.event.inputs.package }}" == "all" ]]; then
|
||||
LATEST_TAG=$(curl -s https://api.github.com/repos/AvengeMedia/DankMaterialShell/releases/latest | grep '"tag_name"' | sed 's/.*"tag_name": "\([^"]*\)".*/\1/' || echo "")
|
||||
LATEST_TAG=$(curl -s https://api.github.com/repos/duxlabs-dev/dux-shell/releases/latest | grep '"tag_name"' | sed 's/.*"tag_name": "\([^"]*\)".*/\1/' || echo "")
|
||||
if [[ -n "$LATEST_TAG" ]]; then
|
||||
echo "version=$LATEST_TAG" >> $GITHUB_OUTPUT
|
||||
echo "Using latest release from API: $LATEST_TAG"
|
||||
|
||||
@@ -23,7 +23,7 @@ jobs:
|
||||
check-updates:
|
||||
name: Check package/series updates
|
||||
runs-on: ubuntu-latest
|
||||
if: github.repository == 'AvengeMedia/DankMaterialShell'
|
||||
if: github.repository == 'duxlabs-dev/dux-shell'
|
||||
|
||||
outputs:
|
||||
has_updates: ${{ steps.check.outputs.has_updates }}
|
||||
|
||||
@@ -61,7 +61,7 @@ jobs:
|
||||
name: Build & Deploy XBPS packages
|
||||
runs-on: ubuntu-latest
|
||||
needs: preflight
|
||||
if: github.repository == 'AvengeMedia/DankMaterialShell' && needs.preflight.outputs.should_build == 'true'
|
||||
if: github.repository == 'duxlabs-dev/dux-shell' && needs.preflight.outputs.should_build == 'true'
|
||||
env:
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.R2_ACCESS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.R2_SECRET_ACCESS_KEY }}
|
||||
|
||||
+1
-1
@@ -64,7 +64,7 @@ AGENTS-temp.md
|
||||
niri-colors.generated.kdl
|
||||
ghostty-colors.generated.conf
|
||||
|
||||
# Notepad files (should be in ~/.local/state/DankMaterialShell/)
|
||||
# Notepad files (should be in ~/.local/state/dms/)
|
||||
untitled-*.txt
|
||||
file:*
|
||||
notepad-files/
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
[submodule "dank-qml-common"]
|
||||
path = dank-qml-common
|
||||
url = https://github.com/AvengeMedia/dank-qml-common.git
|
||||
url = https://github.com/duxlabs-dev/dux-qml-common.git
|
||||
branch = master
|
||||
@@ -5,7 +5,7 @@ DMS is an open-source desktop shell for Wayland compositors on linux, built to w
|
||||
## Repo Structure
|
||||
|
||||
- core/ - Go. `cmd/dms` runs quickshell, CLI utilities, and the unix socket server the UI depends on. `cmd/dankinstall` is a separate installer TUI.
|
||||
- quickshell/ - the entire UI: Common/ (singletons, Theme, settings), Services/ (system and core access), Modules/ (bar, dock, lock, ...), Modals/, Widgets/ (Dank* components), PLUGINS/, translations/
|
||||
- quickshell/ - the entire UI: Common/ (singletons, Theme, settings), Services/ (system and core access), Modules/ (bar, dock, lock, ...), Modals/, Widgets/ (shell-specific widgets and deprecated Dank* shims), PLUGINS/, translations/
|
||||
- dank-qml-common/ - submodule of shared QML widgets
|
||||
- docs/, distro/ - IPC and theme docs, packaging
|
||||
|
||||
@@ -18,7 +18,7 @@ DMS is an open-source desktop shell for Wayland compositors on linux, built to w
|
||||
- The shell runs 24/7. Audit every change for idle CPU, extra processes, timers, and retained memory.
|
||||
- `core` and `quickshell` share the socket protocol. Changing one means checking the other.
|
||||
- QML uses Theme tokens, never hardcoded colors, spacing, or constants.
|
||||
- Use the Dank* wrappers in Widgets/ instead of raw ListView/Flickable/ScrollView.
|
||||
- Use the D* widgets from qs.DCommon.Widgets (DListView, DFlickable, and so on) instead of raw ListView/Flickable/ScrollView. The Dank* names in Widgets/ are deprecated shims.
|
||||
- User-facing text goes through I18n.tr(). Reuse catalog terms. Never edit translation catalogs.
|
||||
- Guard clauses, early returns.
|
||||
- Comment only what the code cannot say: a non-obvious why, a trap, a workaround. Never narrate what the code does or restate a name. Keep it to a line or two, and delete useless or paragraph comments you come across.
|
||||
|
||||
+5
-5
@@ -6,10 +6,10 @@ To contribute fork this repository, make your changes, and open a pull request.
|
||||
|
||||
## Setup
|
||||
|
||||
Clone with submodules — the shared widget library ([dank-qml-common](https://github.com/AvengeMedia/dank-qml-common)) is vendored at `dank-qml-common/` and symlinked into `quickshell/DCommon`:
|
||||
Clone with submodules — the shared widget library ([dank-qml-common](https://github.com/duxlabs-dev/dux-qml-common)) is vendored at `dank-qml-common/` and symlinked into `quickshell/DCommon`:
|
||||
|
||||
```bash
|
||||
git clone --recurse-submodules https://github.com/AvengeMedia/DankMaterialShell.git
|
||||
git clone --recurse-submodules https://github.com/duxlabs-dev/dux-shell.git
|
||||
# or, in an existing clone:
|
||||
git submodule update --init
|
||||
```
|
||||
@@ -54,7 +54,7 @@ make run # dev build, then launch against the live quickshell/ tree
|
||||
|
||||
The UI config dir resolves in order: `-c <dir>`, `DMS_SHELL_DIR`, the dir a running instance is using, then the embedded UI. Each candidate must contain `shell.qml`. `make run` uses `-c $(pwd)/quickshell`, so QML edits hot-reload from the working tree.
|
||||
|
||||
The Go core depends on [dankgo](https://github.com/AvengeMedia/dankgo) for logging, XDG paths, the IPC transport, and the quickshell process lifecycle. To develop against a local dankgo checkout, create a gitignored `go.work` at the repo root:
|
||||
The Go core depends on [dankgo](https://github.com/duxlabs-dev/dux-go) for logging, XDG paths, the IPC transport, and the quickshell process lifecycle. To develop against a local dankgo checkout, create a gitignored `go.work` at the repo root:
|
||||
|
||||
```
|
||||
go work init ./core ../dankgo
|
||||
@@ -71,12 +71,12 @@ Everything under `quickshell/DCommon/` (core widgets, the file browser, scroll p
|
||||
The submodule URL in `.gitmodules` is HTTPS so CI and anonymous clones keep working. To push over SSH instead of being prompted for credentials, add a push rewrite to your git config — fetches stay HTTPS, pushes use SSH:
|
||||
|
||||
```bash
|
||||
git config --global url."[email protected]:AvengeMedia/".pushInsteadOf "https://github.com/AvengeMedia/"
|
||||
git config --global url."[email protected]:duxlabs-dev/".pushInsteadOf "https://github.com/duxlabs-dev/"
|
||||
```
|
||||
|
||||
Shared widgets read app-provided singletons (`Theme`, `SettingsData`, ...) through a documented contract — see the dank-qml-common README. If your change needs a new contract property, add it to the library's stub singletons in the same PR, then to `quickshell/Common/` here when you bump.
|
||||
|
||||
Files in `quickshell/Widgets/`, `quickshell/Common/`, and `quickshell/Modals/FileBrowser/` that moved to the library remain in place as thin wrappers, so `import qs.Widgets`, `qs.Common`, and `qs.Modals.FileBrowser` keep working for the shell and for plugins.
|
||||
Files in `quickshell/Widgets/`, `quickshell/Common/`, and `quickshell/Modals/FileBrowser/` that moved to the library remain in place as thin wrappers, so existing `qs.Widgets`, `qs.Common`, and `qs.Modals.FileBrowser` imports keep working for the shell and for plugins. The `Dank*` widget names are deprecated: each one logs a warning naming its replacement. New code imports `qs.DCommon.Widgets` and uses the `D*` names (`DButton`, `DIcon`, `DListView`, and so on).
|
||||
|
||||
## VSCode Setup
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Root Makefile for DankMaterialShell (DMS)
|
||||
# Root Makefile for Dux Shell (DMS)
|
||||
# Orchestrates building, installation, and systemd management
|
||||
|
||||
# Build configuration
|
||||
@@ -83,15 +83,17 @@ endif
|
||||
|
||||
install-icon:
|
||||
@echo "Installing icon..."
|
||||
@install -D -m 644 $(ASSETS_DIR)/com.danklinux.dms.svg $(ICON_DIR)/com.danklinux.dms.svg
|
||||
@install -D -m 644 $(ASSETS_DIR)/dev.duxlabs.shell.svg $(ICON_DIR)/dev.duxlabs.shell.svg
|
||||
@rm -f $(ICON_DIR)/com.danklinux.dms.svg
|
||||
@gtk-update-icon-cache -q $(DATA_DIR)/icons/hicolor 2>/dev/null || true
|
||||
@echo "Icon installed"
|
||||
|
||||
install-desktop:
|
||||
@echo "Installing desktop entries..."
|
||||
@install -D -m 644 $(ASSETS_DIR)/dms-open.desktop $(APPLICATIONS_DIR)/dms-open.desktop
|
||||
@install -D -m 644 $(ASSETS_DIR)/com.danklinux.dms.desktop $(APPLICATIONS_DIR)/com.danklinux.dms.desktop
|
||||
@install -D -m 644 $(ASSETS_DIR)/com.danklinux.dms.notepad.desktop $(APPLICATIONS_DIR)/com.danklinux.dms.notepad.desktop
|
||||
@install -D -m 644 $(ASSETS_DIR)/dev.duxlabs.shell.desktop $(APPLICATIONS_DIR)/dev.duxlabs.shell.desktop
|
||||
@install -D -m 644 $(ASSETS_DIR)/dev.duxlabs.shell.notepad.desktop $(APPLICATIONS_DIR)/dev.duxlabs.shell.notepad.desktop
|
||||
@rm -f $(APPLICATIONS_DIR)/com.danklinux.dms.desktop $(APPLICATIONS_DIR)/com.danklinux.dms.notepad.desktop
|
||||
@update-desktop-database -q $(APPLICATIONS_DIR) 2>/dev/null || true
|
||||
@echo "Desktop entries installed"
|
||||
|
||||
@@ -127,6 +129,7 @@ uninstall-systemd:
|
||||
|
||||
uninstall-icon:
|
||||
@echo "Removing icon..."
|
||||
@rm -f $(ICON_DIR)/dev.duxlabs.shell.svg
|
||||
@rm -f $(ICON_DIR)/com.danklinux.dms.svg
|
||||
@rm -f $(ICON_DIR)/danklogo.svg
|
||||
@gtk-update-icon-cache -q $(DATA_DIR)/icons/hicolor 2>/dev/null || true
|
||||
@@ -135,8 +138,9 @@ uninstall-icon:
|
||||
uninstall-desktop:
|
||||
@echo "Removing desktop entries..."
|
||||
@rm -f $(APPLICATIONS_DIR)/dms-open.desktop
|
||||
@rm -f $(APPLICATIONS_DIR)/com.danklinux.dms.desktop
|
||||
@rm -f $(APPLICATIONS_DIR)/com.danklinux.dms.notepad.desktop
|
||||
@rm -f $(APPLICATIONS_DIR)/dev.duxlabs.shell.desktop
|
||||
@rm -f $(APPLICATIONS_DIR)/dev.duxlabs.shell.notepad.desktop
|
||||
@rm -f $(APPLICATIONS_DIR)/com.danklinux.dms.desktop $(APPLICATIONS_DIR)/com.danklinux.dms.notepad.desktop
|
||||
@update-desktop-database -q $(APPLICATIONS_DIR) 2>/dev/null || true
|
||||
@echo "Desktop entries removed"
|
||||
|
||||
|
||||
@@ -1,32 +1,32 @@
|
||||
# DankMaterialShell
|
||||
# Dux Shell
|
||||
|
||||
<div align="center">
|
||||
<a href="https://danklinux.com">
|
||||
<img src="assets/danklogo.svg" alt="DankMaterialShell" width="200">
|
||||
<a href="https://duxlabs.dev">
|
||||
<img src="assets/danklogo.svg" alt="Dux Shell" width="200">
|
||||
</a>
|
||||
|
||||
### A modern desktop shell for Wayland
|
||||
|
||||
Built with [Quickshell](https://quickshell.org/) and [Go](https://go.dev/)
|
||||
|
||||
[](https://danklinux.com/docs)
|
||||
[](https://github.com/AvengeMedia/DankMaterialShell/stargazers)
|
||||
[](https://github.com/AvengeMedia/DankMaterialShell/blob/master/LICENSE)
|
||||
[](https://github.com/AvengeMedia/DankMaterialShell/releases)
|
||||
[](https://duxlabs.dev/docs)
|
||||
[](https://github.com/duxlabs-dev/dux-shell/stargazers)
|
||||
[](https://github.com/duxlabs-dev/dux-shell/blob/master/LICENSE)
|
||||
[](https://github.com/duxlabs-dev/dux-shell/releases)
|
||||
[](https://archlinux.org/packages/extra/x86_64/dms-shell/)
|
||||
[>)](https://aur.archlinux.org/packages/dms-shell-git)
|
||||
[](https://ko-fi.com/danklinux)
|
||||
|
||||
</div>
|
||||
|
||||
DankMaterialShell is a complete desktop shell for [niri](https://github.com/YaLTeR/niri), [Hyprland](https://hyprland.org/), [MangoWC](https://github.com/DreamMaoMao/mangowc), [Sway](https://swaywm.org), [labwc](https://labwc.github.io/), [Scroll](https://github.com/dawsers/scroll), [Miracle WM](https://github.com/miracle-wm-org/miracle-wm), and other Wayland compositors. It replaces waybar, swaylock, swayidle, mako, fuzzel, polkit, and everything else you'd normally stitch together to make a desktop.
|
||||
Dux Shell is a complete desktop shell for [niri](https://github.com/YaLTeR/niri), [Hyprland](https://hyprland.org/), [MangoWC](https://github.com/DreamMaoMao/mangowc), [Sway](https://swaywm.org), [labwc](https://labwc.github.io/), [Scroll](https://github.com/dawsers/scroll), [Miracle WM](https://github.com/miracle-wm-org/miracle-wm), and other Wayland compositors. It replaces waybar, swaylock, swayidle, mako, fuzzel, polkit, and everything else you'd normally stitch together to make a desktop.
|
||||
|
||||
## Repository Structure
|
||||
|
||||
This is a monorepo containing both the shell interface and the core backend services:
|
||||
|
||||
```
|
||||
DankMaterialShell/
|
||||
dux-shell/
|
||||
├── quickshell/ # QML-based shell interface
|
||||
│ ├── Modules/ # UI components (panels, widgets, overlays)
|
||||
│ ├── Services/ # System integration (audio, network, bluetooth)
|
||||
@@ -70,14 +70,14 @@ https://github.com/user-attachments/assets/d310418b-cc44-4ace-ac0d-2fc0c851291d
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
curl -fsSL https://install.danklinux.com | sh
|
||||
curl -fsSL https://install.duxlabs.dev | sh
|
||||
```
|
||||
|
||||
One command installs DMS and all dependencies on Arch, Fedora, Debian, Ubuntu, openSUSE, or Gentoo.
|
||||
|
||||
**FreeBSD:** native support is included in-tree; see [distro/freebsd/README.md](distro/freebsd/README.md) for supported integrations and setup notes.
|
||||
|
||||
**[Manual installation guide](https://danklinux.com/docs/dankmaterialshell/installation)**
|
||||
**[Manual installation guide](https://duxlabs.dev/docs/dms/installation)**
|
||||
|
||||
## Features
|
||||
|
||||
@@ -85,10 +85,10 @@ One command installs DMS and all dependencies on Arch, Fedora, Debian, Ubuntu, o
|
||||
Wallpaper-based color schemes that automatically theme GTK, Qt, terminals, editors (vscode, vscodium), and more using [matugen](https://github.com/InioX/matugen) and dank16.
|
||||
|
||||
**System Monitoring**
|
||||
Real-time CPU, RAM, GPU metrics and temperatures built into the dms daemon (powered by [dgop](https://github.com/AvengeMedia/dgop)). Process list with search and management.
|
||||
Real-time CPU, RAM, GPU metrics and temperatures built into the dms daemon (powered by [dgop](https://github.com/duxlabs-dev/dux-gop)). Process list with search and management.
|
||||
|
||||
**Powerful Launcher**
|
||||
Spotlight-style search for applications, files ([dsearch](https://github.com/AvengeMedia/danksearch)), emojis, running windows, calculator, and commands. Extensible with plugins.
|
||||
Spotlight-style search for applications, files ([dsearch](https://github.com/duxlabs-dev/dux-search)), emojis, running windows, calculator, and commands. Extensible with plugins.
|
||||
|
||||
**Control Center**
|
||||
Unified interface for network, Bluetooth, audio devices, display settings, and night mode.
|
||||
@@ -100,18 +100,18 @@ Notification center with grouping, rich text support, and keyboard navigation.
|
||||
MPRIS player controls, calendar sync, weather widgets, and clipboard history with image previews.
|
||||
|
||||
**Session Management**
|
||||
Lock screen, idle detection, auto-lock/suspend with separate AC/battery settings, and a settings front-end for [dank-greeter](https://github.com/AvengeMedia/dank-greeter).
|
||||
Lock screen, idle detection, auto-lock/suspend with separate AC/battery settings, and a settings front-end for [dank-greeter](https://github.com/duxlabs-dev/dux-greeter).
|
||||
|
||||
**Plugin System**
|
||||
Extend functionality with the [plugin registry](https://plugins.danklinux.com). DMS keeps
|
||||
`~/.config/DankMaterialShell/plugins.lock.json` synchronized with managed plugin installs and
|
||||
Extend functionality with the [plugin registry](https://plugins.duxlabs.dev). DMS keeps
|
||||
`~/.config/dms/plugins.lock.json` synchronized with managed plugin installs and
|
||||
their exact Git commits, so the same plugins can be reproduced on another machine.
|
||||
|
||||
## Supported Compositors
|
||||
|
||||
Works best with [niri](https://github.com/YaLTeR/niri), [Hyprland](https://hyprland.org/), [Sway](https://swaywm.org/), [MangoWC](https://github.com/DreamMaoMao/mangowc), [labwc](https://labwc.github.io/), [Scroll](https://github.com/dawsers/scroll), and [Miracle WM](https://github.com/miracle-wm-org/miracle-wm) with full workspace switching, overview integration, and monitor management. Other Wayland compositors work with reduced features.
|
||||
|
||||
[Compositor configuration guide](https://danklinux.com/docs/dankmaterialshell/compositors)
|
||||
[Compositor configuration guide](https://duxlabs.dev/docs/dms/compositors)
|
||||
|
||||
## Command Line Interface
|
||||
|
||||
@@ -128,26 +128,26 @@ dms plugins lock # Refresh the portable plugin lockfile
|
||||
dms plugins restore ~/plugins.lock.json
|
||||
```
|
||||
|
||||
[Full CLI and IPC documentation](https://danklinux.com/docs/dankmaterialshell/keybinds-ipc)
|
||||
[Full CLI and IPC documentation](https://duxlabs.dev/docs/dms/keybinds-ipc)
|
||||
|
||||
## Documentation
|
||||
|
||||
- **Website:** [danklinux.com](https://danklinux.com)
|
||||
- **Docs:** [danklinux.com/docs](https://danklinux.com/docs/)
|
||||
- **Theming:** [Application themes](https://danklinux.com/docs/dankmaterialshell/application-themes) | [Custom themes](https://danklinux.com/docs/dankmaterialshell/custom-themes)
|
||||
- **Plugins:** [Development guide](https://danklinux.com/docs/dankmaterialshell/plugins-overview)
|
||||
- **Website:** [duxlabs.dev](https://duxlabs.dev)
|
||||
- **Docs:** [duxlabs.dev/docs](https://duxlabs.dev/docs/)
|
||||
- **Theming:** [Application themes](https://duxlabs.dev/docs/dms/application-themes) | [Custom themes](https://duxlabs.dev/docs/dms/custom-themes)
|
||||
- **Plugins:** [Development guide](https://duxlabs.dev/docs/dms/plugins-overview)
|
||||
- **Support:** [Ko-fi](https://ko-fi.com/danklinux)
|
||||
|
||||
## Dank Projects
|
||||
|
||||
DMS is one piece of the suite. The rest lives in its own repos:
|
||||
|
||||
- [dank-greeter](https://github.com/AvengeMedia/dank-greeter) - greetd login screen with the Dank Material aesthetic. The Greeter tab in DMS settings is the front-end for it.
|
||||
- [dankcalendar](https://github.com/AvengeMedia/dankcalendar) - Local, Google, Microsoft, and CalDAV calendars for the dank desktop.
|
||||
- [dgop](https://github.com/AvengeMedia/dgop) - System monitoring TUI and Go library; its library powers the process list and dashboard widgets inside the dms daemon.
|
||||
- [dsearch](https://github.com/AvengeMedia/danksearch) - Fast file search that powers file results in the launcher.
|
||||
- [dank-qml-common](https://github.com/AvengeMedia/dank-qml-common) - Shared QML widgets and components used by DMS, dank-greeter, and dankcalendar.
|
||||
- [dankgo](https://github.com/AvengeMedia/dankgo) - Common Go modules behind the single binary apps.
|
||||
- [dank-greeter](https://github.com/duxlabs-dev/dux-greeter) - greetd login screen with the Dank Material aesthetic. The Greeter tab in DMS settings is the front-end for it.
|
||||
- [dankcalendar](https://github.com/duxlabs-dev/dux-calendar) - Local, Google, Microsoft, and CalDAV calendars for the dank desktop.
|
||||
- [dgop](https://github.com/duxlabs-dev/dux-gop) - System monitoring TUI and Go library; its library powers the process list and dashboard widgets inside the dms daemon.
|
||||
- [dsearch](https://github.com/duxlabs-dev/dux-search) - Fast file search that powers file results in the launcher.
|
||||
- [dank-qml-common](https://github.com/duxlabs-dev/dux-qml-common) - Shared QML widgets and components used by DMS, dank-greeter, and dankcalendar.
|
||||
- [dankgo](https://github.com/duxlabs-dev/dux-go) - Common Go modules behind the single binary apps.
|
||||
|
||||
## Development
|
||||
|
||||
@@ -177,7 +177,7 @@ quickshell -p quickshell/
|
||||
|
||||
```nix
|
||||
{
|
||||
inputs.dms.url = "github:AvengeMedia/DankMaterialShell";
|
||||
inputs.dms.url = "github:duxlabs-dev/dux-shell";
|
||||
|
||||
# Use in home-manager or NixOS configuration
|
||||
imports = [ inputs.dms.homeModules.dank-material-shell ];
|
||||
@@ -193,7 +193,7 @@ Contributions welcome. Bug fixes, widgets, features, documentation, and plugins
|
||||
3. Test thoroughly
|
||||
4. Open a pull request
|
||||
|
||||
For documentation contributions, see [DankLinux-Docs](https://github.com/AvengeMedia/DankLinux-Docs).
|
||||
For documentation contributions, see [DankLinux-Docs](https://github.com/duxlabs-dev/dux-docs).
|
||||
|
||||
## Credits
|
||||
|
||||
@@ -206,7 +206,7 @@ For documentation contributions, see [DankLinux-Docs](https://github.com/AvengeM
|
||||
|
||||
## Star History
|
||||
|
||||
[](https://star-history.dera.page/#AvengeMedia/DankMaterialShell&type=date&legend=top-left)
|
||||
[](https://star-history.dera.page/#duxlabs-dev/dux-shell&type=date&legend=top-left)
|
||||
|
||||
## License
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name=DankMaterialShell
|
||||
Name=Dux Shell
|
||||
GenericName=Desktop Shell
|
||||
Comment=Material 3 inspired shell for Wayland compositors
|
||||
Exec=dms run
|
||||
Icon=com.danklinux.dms
|
||||
Icon=dev.duxlabs.shell
|
||||
Terminal=false
|
||||
NoDisplay=true
|
||||
StartupNotify=false
|
||||
@@ -4,7 +4,7 @@ Name=DMS Notepad
|
||||
GenericName=Text Editor
|
||||
Comment=Quick notes and text files in the dank desktop shell
|
||||
Exec=dms ipc call notepad openFile %f
|
||||
Icon=com.danklinux.dms
|
||||
Icon=dev.duxlabs.shell
|
||||
Terminal=false
|
||||
NoDisplay=true
|
||||
Categories=Utility;TextEditor;
|
||||
File renamed without changes.
@@ -3,7 +3,7 @@ Type=Application
|
||||
Name=DMS
|
||||
Comment=Select an application to open links and files
|
||||
Exec=dms open %u
|
||||
Icon=com.danklinux.dms
|
||||
Icon=dev.duxlabs.shell
|
||||
Terminal=false
|
||||
NoDisplay=true
|
||||
MimeType=x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/dms;text/html;application/xhtml+xml;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
[Unit]
|
||||
Description=Dank Material Shell (DMS)
|
||||
Description=Dux Shell (DMS)
|
||||
PartOf=graphical-session.target
|
||||
After=graphical-session.target
|
||||
Requisite=graphical-session.target
|
||||
|
||||
+10
-10
@@ -6,13 +6,13 @@ template: testify
|
||||
template-data:
|
||||
unroll-variadic: true
|
||||
packages:
|
||||
github.com/AvengeMedia/DankMaterialShell/core/internal/geolocation:
|
||||
github.com/duxlabs-dev/dux-shell/core/internal/geolocation:
|
||||
config:
|
||||
dir: internal/mocks/geolocation
|
||||
pkgname: mocks_geolocation
|
||||
interfaces:
|
||||
Client: {}
|
||||
github.com/AvengeMedia/DankMaterialShell/core/internal/server/cups:
|
||||
github.com/duxlabs-dev/dux-shell/core/internal/server/cups:
|
||||
config:
|
||||
dir: internal/mocks/cups
|
||||
pkgname: mocks_cups
|
||||
@@ -22,46 +22,46 @@ packages:
|
||||
config:
|
||||
dir: internal/mocks/cups_pkhelper
|
||||
pkgname: mocks_cups_pkhelper
|
||||
github.com/AvengeMedia/DankMaterialShell/core/internal/server/evdev:
|
||||
github.com/duxlabs-dev/dux-shell/core/internal/server/evdev:
|
||||
config:
|
||||
dir: internal/mocks/evdev
|
||||
pkgname: mocks_evdev
|
||||
interfaces:
|
||||
EvdevDevice: {}
|
||||
github.com/AvengeMedia/DankMaterialShell/core/internal/server/network:
|
||||
github.com/duxlabs-dev/dux-shell/core/internal/server/network:
|
||||
config:
|
||||
dir: internal/mocks/network
|
||||
pkgname: mocks_network
|
||||
interfaces:
|
||||
Backend: {}
|
||||
github.com/AvengeMedia/DankMaterialShell/core/internal/server/wlcontext:
|
||||
github.com/duxlabs-dev/dux-shell/core/internal/server/wlcontext:
|
||||
config:
|
||||
dir: internal/mocks/wlcontext
|
||||
pkgname: mocks_wlcontext
|
||||
interfaces:
|
||||
WaylandContext: {}
|
||||
github.com/AvengeMedia/DankMaterialShell/core/internal/utils:
|
||||
github.com/duxlabs-dev/dux-shell/core/internal/utils:
|
||||
config:
|
||||
dir: internal/mocks/utils
|
||||
pkgname: mocks_utils
|
||||
interfaces:
|
||||
AppChecker: {}
|
||||
github.com/AvengeMedia/DankMaterialShell/core/internal/version:
|
||||
github.com/duxlabs-dev/dux-shell/core/internal/version:
|
||||
config:
|
||||
dir: internal/mocks/version
|
||||
pkgname: mocks_version
|
||||
interfaces:
|
||||
VersionFetcher: {}
|
||||
github.com/AvengeMedia/dankgo/wayland/client:
|
||||
github.com/duxlabs-dev/dux-go/wayland/client:
|
||||
config:
|
||||
dir: internal/mocks/wlclient
|
||||
pkgname: mocks_wlclient
|
||||
interfaces:
|
||||
WaylandDisplay: {}
|
||||
github.com/AvengeMedia/DankMaterialShell/core/internal/plugins:
|
||||
github.com/duxlabs-dev/dux-shell/core/internal/plugins:
|
||||
interfaces:
|
||||
GitClient: {}
|
||||
github.com/AvengeMedia/DankMaterialShell/core/internal/server/brightness:
|
||||
github.com/duxlabs-dev/dux-shell/core/internal/server/brightness:
|
||||
config:
|
||||
dir: internal/mocks/brightness
|
||||
pkgname: mocks_brightness
|
||||
|
||||
+9
-9
@@ -1,6 +1,6 @@
|
||||
# DMS Backend & CLI
|
||||
|
||||
Go-based backend for DankMaterialShell providing system integration, IPC, and installation tools.
|
||||
Go-based backend for Dux Shell providing system integration, IPC, and installation tools.
|
||||
|
||||
**See [root README](../README.md) for project overview and installation.**
|
||||
|
||||
@@ -78,7 +78,7 @@ Custom IPC via unix socket (JSON API) for shell communication.
|
||||
- `dms brightness [list|set]` - Control display/monitor brightness
|
||||
- `dms color pick` - Native color picker (see below)
|
||||
- `dms update` - Update DMS and dependencies (disabled in distro packages)
|
||||
- `dms greeter` - Deprecated; forwards to the standalone [dms-greeter](https://github.com/AvengeMedia/dank-greeter) binary
|
||||
- `dms greeter` - Deprecated; forwards to the standalone [dms-greeter](https://github.com/duxlabs-dev/dux-greeter) binary
|
||||
|
||||
### Color Picker
|
||||
|
||||
@@ -132,10 +132,10 @@ This runs gofmt, golangci-lint, tests, and builds before each commit when `core/
|
||||
|
||||
**Regenerating Wayland Protocol Bindings:**
|
||||
|
||||
Protocol XML files live in `internal/proto/xml/`. Bindings are generated with the [dankgo](https://github.com/AvengeMedia/dankgo) `go-wayland-scanner`:
|
||||
Protocol XML files live in `internal/proto/xml/`. Bindings are generated with the [dankgo](https://github.com/duxlabs-dev/dux-go) `go-wayland-scanner`:
|
||||
|
||||
```bash
|
||||
go run github.com/AvengeMedia/dankgo/cmd/go-wayland-scanner@latest \
|
||||
go run github.com/duxlabs-dev/dux-go/cmd/go-wayland-scanner@latest \
|
||||
-i internal/proto/xml/wlr-gamma-control-unstable-v1.xml \
|
||||
-pkg wlr_gamma_control -o internal/proto/wlr_gamma_control/gamma_control.go
|
||||
```
|
||||
@@ -152,7 +152,7 @@ go run github.com/AvengeMedia/dankgo/cmd/go-wayland-scanner@latest \
|
||||
**Interactive (TUI):**
|
||||
|
||||
```bash
|
||||
curl -fsSL https://install.danklinux.com | sh
|
||||
curl -fsSL https://install.duxlabs.dev | sh
|
||||
```
|
||||
|
||||
**Headless (unattended):**
|
||||
@@ -160,9 +160,9 @@ curl -fsSL https://install.danklinux.com | sh
|
||||
Headless mode requires cached credentials or a passwordless rule for your privilege escalation tool (sudo, doas, or run0). With sudo, run `sudo -v` first:
|
||||
|
||||
```bash
|
||||
sudo -v && curl -fsSL https://install.danklinux.com | sh -s -- -c niri -t ghostty -y
|
||||
sudo -v && curl -fsSL https://install.danklinux.com | sh -s -- -c hyprland -t kitty --dms-greeter -y
|
||||
sudo -v && curl -fsSL https://install.danklinux.com | sh -s -- -c niri -t ghostty --git-deps niri,quickshell --all-features -y
|
||||
sudo -v && curl -fsSL https://install.duxlabs.dev | sh -s -- -c niri -t ghostty -y
|
||||
sudo -v && curl -fsSL https://install.duxlabs.dev | sh -s -- -c hyprland -t kitty --dms-greeter -y
|
||||
sudo -v && curl -fsSL https://install.duxlabs.dev | sh -s -- -c niri -t ghostty --git-deps niri,quickshell --all-features -y
|
||||
```
|
||||
|
||||
| Flag | Short | Description |
|
||||
@@ -225,6 +225,6 @@ Most packages available in standard repos. Minimal building required.
|
||||
Uses Portage with GURU overlay. Automatically configures USE flags. Variable success depending on system configuration.
|
||||
|
||||
**Void Linux**
|
||||
Uses XBPS with the DMS and DankLinux self-hosted repositories.
|
||||
Uses XBPS with the DMS and Dux Linux self-hosted repositories.
|
||||
|
||||
See installer output for distribution-specific details during installation.
|
||||
@@ -5,10 +5,10 @@ import (
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/headless"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/tui"
|
||||
tea "github.com/charmbracelet/bubbletea"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/headless"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/tui"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
@@ -33,8 +33,8 @@ var (
|
||||
|
||||
var rootCmd = &cobra.Command{
|
||||
Use: "dankinstall",
|
||||
Short: "Install DankMaterialShell and its dependencies",
|
||||
Long: `dankinstall sets up DankMaterialShell with your chosen compositor and terminal.
|
||||
Short: "Install Dux Shell and its dependencies",
|
||||
Long: `dankinstall sets up Dux Shell with your chosen compositor and terminal.
|
||||
|
||||
Without flags, it launches an interactive TUI. Providing either --compositor
|
||||
or --term activates headless (unattended) mode, which requires both flags.
|
||||
|
||||
@@ -8,8 +8,8 @@ import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
sharedpam "github.com/AvengeMedia/DankMaterialShell/core/internal/pam"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
sharedpam "github.com/duxlabs-dev/dux-shell/core/internal/pam"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/backup"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/backup"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
@@ -17,7 +17,7 @@ var backupCmd = &cobra.Command{
|
||||
|
||||
var backupCreateCmd = &cobra.Command{
|
||||
Use: "create",
|
||||
Short: "Create a tar.gz backup of ~/.config/DankMaterialShell (settings, plugins, themes)",
|
||||
Short: "Create a tar.gz backup of ~/.config/dms (settings, plugins, themes)",
|
||||
Args: cobra.NoArgs,
|
||||
Run: runBackupCreate,
|
||||
}
|
||||
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/blur"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/blur"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/brightness"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/server/brightness"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
||||
@@ -8,11 +8,11 @@ import (
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/highlight"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/highlight/lexers"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/highlight/styles"
|
||||
"github.com/alecthomas/chroma/v2"
|
||||
"github.com/alecthomas/chroma/v2/formatters/html"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/highlight"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/highlight/lexers"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/highlight/styles"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/yuin/goldmark"
|
||||
"github.com/yuin/goldmark/extension"
|
||||
|
||||
@@ -28,10 +28,10 @@ import (
|
||||
_ "golang.org/x/image/tiff"
|
||||
_ "golang.org/x/image/webp"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/clipboard"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/dankgo/ipc"
|
||||
"github.com/AvengeMedia/dankgo/wlclipboard"
|
||||
"github.com/duxlabs-dev/dux-go/ipc"
|
||||
"github.com/duxlabs-dev/dux-go/wlclipboard"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/clipboard"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
||||
@@ -5,9 +5,9 @@ import (
|
||||
"os"
|
||||
"runtime/debug"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/clipboard"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/colorpicker"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/site"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/clipboard"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/colorpicker"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/site"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
@@ -27,7 +27,7 @@ var colorCmd = &cobra.Command{
|
||||
This is the screen eyedropper CLI. To open the in-shell color modal, use:
|
||||
dms ipc call color-picker toggle
|
||||
|
||||
See: ` + site.Docs + "/dankmaterialshell/keybinds-ipc",
|
||||
See: ` + site.Docs + "/dms/keybinds-ipc",
|
||||
}
|
||||
|
||||
var colorPickCmd = &cobra.Command{
|
||||
|
||||
@@ -6,12 +6,12 @@ import (
|
||||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/plugins"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/server"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/sysupdate"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/shellembed"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/site"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/plugins"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/server"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/server/sysupdate"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/shellembed"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/site"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
@@ -29,7 +29,7 @@ var ipcCmd = &cobra.Command{
|
||||
dms ipc call <target> <function> [args...] invoke a command
|
||||
dms ipc list list all targets and functions
|
||||
|
||||
Full reference: ` + site.Docs + "/dankmaterialshell/keybinds-ipc",
|
||||
Full reference: ` + site.Docs + "/dms/keybinds-ipc",
|
||||
ValidArgsFunction: func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
|
||||
return getShellIPCCompletions(args, toComplete), cobra.ShellCompDirectiveNoFileComp
|
||||
},
|
||||
|
||||
@@ -7,10 +7,10 @@ import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/luaconfig"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/mangoconf"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/utils"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/luaconfig"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/mangoconf"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/utils"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/dank16"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/dank16"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
||||
@@ -10,9 +10,9 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/dmenuipc"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/qsipc"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/dmenuipc"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/qsipc"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/pflag"
|
||||
)
|
||||
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"reflect"
|
||||
"testing"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/dmenuipc"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/dmenuipc"
|
||||
)
|
||||
|
||||
func TestParseIndexSpec(t *testing.T) {
|
||||
|
||||
@@ -14,19 +14,19 @@ import (
|
||||
"slices"
|
||||
"strings"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/blur"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/clipboard"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/config"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/distros"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/mangoconf"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/matugen"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/brightness"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/network"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/site"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/tui"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/utils"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/version"
|
||||
"github.com/charmbracelet/lipgloss"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/blur"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/clipboard"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/config"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/distros"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/mangoconf"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/matugen"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/server/brightness"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/server/network"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/site"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/tui"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/utils"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/version"
|
||||
"github.com/godbus/dbus/v5"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
@@ -166,7 +166,7 @@ func (c category) String() string {
|
||||
|
||||
const (
|
||||
checkNameMaxLength = 21
|
||||
doctorDocsURL = site.Docs + "/dankmaterialshell/cli-doctor"
|
||||
doctorDocsURL = site.Docs + "/dms/cli-doctor"
|
||||
)
|
||||
|
||||
type checkResult struct {
|
||||
@@ -1407,7 +1407,7 @@ func checkAdwGtk3() checkResult {
|
||||
func checkConfigurationFiles() []checkResult {
|
||||
configDir, _ := os.UserConfigDir()
|
||||
cacheDir, _ := os.UserCacheDir()
|
||||
dmsDir := "DankMaterialShell"
|
||||
dmsDir := "dms"
|
||||
|
||||
configFiles := []struct{ name, path string }{
|
||||
{"settings.json", filepath.Join(configDir, dmsDir, "settings.json")},
|
||||
@@ -1826,7 +1826,7 @@ func checkFonts() []checkResult {
|
||||
displayFontFamily := defaultDoctorDisplayFamily
|
||||
|
||||
if configDir, err := os.UserConfigDir(); err == nil {
|
||||
settingsPath := filepath.Join(configDir, "DankMaterialShell", "settings.json")
|
||||
settingsPath := filepath.Join(configDir, "dms", "settings.json")
|
||||
if data, err := os.ReadFile(settingsPath); err == nil {
|
||||
var settings struct {
|
||||
FontFamily string `json:"fontFamily"`
|
||||
|
||||
@@ -9,7 +9,7 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/mangoconf"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/mangoconf"
|
||||
)
|
||||
|
||||
func TestQuickshellVersionFailureDetails(t *testing.T) {
|
||||
|
||||
@@ -7,7 +7,7 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/netfetch"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/netfetch"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@ package main
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
||||
@@ -13,21 +13,21 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/distros"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/errdefs"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/netfetch"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/privesc"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/sysupdate"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/utils"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/version"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/distros"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/errdefs"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/netfetch"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/privesc"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/server/sysupdate"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/utils"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/version"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
var updateCmd = &cobra.Command{
|
||||
Use: "update",
|
||||
Short: "Update DankMaterialShell to the latest version",
|
||||
Long: "Update DankMaterialShell to the latest version using the appropriate package manager for your distribution",
|
||||
Short: "Update Dux Shell to the latest version",
|
||||
Long: "Update Dux Shell to the latest version using the appropriate package manager for your distribution",
|
||||
PreRunE: shellApp.ResolveConfig,
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
runUpdate()
|
||||
@@ -36,7 +36,7 @@ var updateCmd = &cobra.Command{
|
||||
|
||||
var updateCheckCmd = &cobra.Command{
|
||||
Use: "check",
|
||||
Short: "Check if updates are available for DankMaterialShell",
|
||||
Short: "Check if updates are available for Dux Shell",
|
||||
Long: "Check for available updates without performing the actual update",
|
||||
Run: func(cmd *cobra.Command, args []string) {
|
||||
runUpdateCheck()
|
||||
@@ -44,7 +44,7 @@ var updateCheckCmd = &cobra.Command{
|
||||
}
|
||||
|
||||
func runUpdateCheck() {
|
||||
fmt.Println("Checking for DankMaterialShell updates...")
|
||||
fmt.Println("Checking for Dux Shell updates...")
|
||||
fmt.Println()
|
||||
|
||||
shell := sysupdate.ProbeShell(context.Background(), Version)
|
||||
@@ -169,7 +169,7 @@ func updateArchLinux() error {
|
||||
return updateOtherDistros()
|
||||
}
|
||||
|
||||
fmt.Printf("This will update DankMaterialShell using %s.\n", helper)
|
||||
fmt.Printf("This will update Dux Shell using %s.\n", helper)
|
||||
if !confirmUpdate() {
|
||||
return errdefs.ErrUpdateCancelled
|
||||
}
|
||||
@@ -224,7 +224,7 @@ func updateOtherDistros() error {
|
||||
|
||||
fmt.Println("\nThis will update:")
|
||||
fmt.Println(" 1. The dms binary from GitHub releases")
|
||||
fmt.Println(" 2. DankMaterialShell configuration using git")
|
||||
fmt.Println(" 2. Dux Shell configuration using git")
|
||||
if !confirmUpdate() {
|
||||
return errdefs.ErrUpdateCancelled
|
||||
}
|
||||
@@ -385,7 +385,7 @@ func offerReclone(dmsPath string) bool {
|
||||
}
|
||||
|
||||
fmt.Println("Cloning fresh copy...")
|
||||
cloneCmd := exec.Command("git", "clone", "--recurse-submodules", "https://github.com/AvengeMedia/DankMaterialShell.git", dmsPath)
|
||||
cloneCmd := exec.Command("git", "clone", "--recurse-submodules", "https://github.com/duxlabs-dev/dux-shell.git", dmsPath)
|
||||
cloneCmd.Stdout = os.Stdout
|
||||
cloneCmd.Stderr = os.Stderr
|
||||
if err := cloneCmd.Run(); err != nil {
|
||||
@@ -449,8 +449,8 @@ func updateDMSBinary() error {
|
||||
}
|
||||
defer os.RemoveAll(tempDir)
|
||||
|
||||
binaryURL := fmt.Sprintf("https://github.com/AvengeMedia/DankMaterialShell/releases/download/%s/dms-cli-%s.gz", version, arch)
|
||||
checksumURL := fmt.Sprintf("https://github.com/AvengeMedia/DankMaterialShell/releases/download/%s/dms-cli-%s.gz.sha256", version, arch)
|
||||
binaryURL := fmt.Sprintf("https://github.com/duxlabs-dev/dux-shell/releases/download/%s/dms-cli-%s.gz", version, arch)
|
||||
checksumURL := fmt.Sprintf("https://github.com/duxlabs-dev/dux-shell/releases/download/%s/dms-cli-%s.gz.sha256", version, arch)
|
||||
|
||||
binaryPath := filepath.Join(tempDir, "dms.gz")
|
||||
checksumPath := filepath.Join(tempDir, "dms.gz.sha256")
|
||||
|
||||
@@ -6,8 +6,8 @@ import (
|
||||
"os/exec"
|
||||
"syscall"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/distros"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/site"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/distros"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/site"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
@@ -59,9 +59,9 @@ func greeterPackageInstallHint() string {
|
||||
|
||||
switch config.Family {
|
||||
case distros.FamilyDebian:
|
||||
return "Install with 'sudo apt install dms-greeter' (requires DankLinux OBS repo — see " + site.Docs + "/dankgreeter/installation#debian)"
|
||||
return "Install with 'sudo apt install dms-greeter' (requires Dux Linux OBS repo — see " + site.Docs + "/dms-greeter/installation#debian)"
|
||||
case distros.FamilySUSE:
|
||||
return "Install with 'sudo zypper install dms-greeter' (requires DankLinux OBS repo — see " + site.Docs + "/dankgreeter/installation#opensuse)"
|
||||
return "Install with 'sudo zypper install dms-greeter' (requires Dux Linux OBS repo — see " + site.Docs + "/dms-greeter/installation#opensuse)"
|
||||
case distros.FamilyUbuntu:
|
||||
return "Install with 'sudo apt install dms-greeter' (requires ppa:avengemedia/danklinux: sudo add-apt-repository ppa:avengemedia/danklinux)"
|
||||
case distros.FamilyFedora:
|
||||
|
||||
@@ -8,10 +8,10 @@ import (
|
||||
"strconv"
|
||||
"strings"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/icc"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/wayland"
|
||||
"github.com/AvengeMedia/dankgo/ipc"
|
||||
"github.com/duxlabs-dev/dux-go/ipc"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/icc"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/server/wayland"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
||||
@@ -10,10 +10,10 @@ import (
|
||||
"slices"
|
||||
"strconv"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/keybinds"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/keybinds/providers"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/wayland/keymap"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/keybinds"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/keybinds/providers"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/wayland/keymap"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/keybinds/providers"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/keybinds/providers"
|
||||
)
|
||||
|
||||
func TestKeybindEditFailure(t *testing.T) {
|
||||
|
||||
@@ -8,9 +8,9 @@ import (
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/matugen"
|
||||
"github.com/AvengeMedia/dankgo/ipc"
|
||||
"github.com/duxlabs-dev/dux-go/ipc"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/matugen"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
||||
@@ -7,8 +7,8 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/notify"
|
||||
"github.com/AvengeMedia/dankgo/ipc"
|
||||
"github.com/duxlabs-dev/dux-go/ipc"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/notify"
|
||||
"github.com/godbus/dbus/v5"
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/spf13/pflag"
|
||||
|
||||
@@ -8,8 +8,8 @@ import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/dankgo/ipc"
|
||||
"github.com/duxlabs-dev/dux-go/ipc"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
||||
@@ -6,9 +6,9 @@ import (
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/clipboard"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/qrcode"
|
||||
"github.com/AvengeMedia/dankgo/ipc"
|
||||
"github.com/duxlabs-dev/dux-go/ipc"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/clipboard"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/qrcode"
|
||||
"github.com/mattn/go-isatty"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ package main
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/registries"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/registries"
|
||||
"github.com/spf13/afero"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
@@ -7,7 +7,7 @@ import (
|
||||
var rootCmd = &cobra.Command{
|
||||
Use: "dms",
|
||||
Short: "dms CLI",
|
||||
Long: "dms is the DankMaterialShell management CLI and backend server.",
|
||||
Long: "dms is the Dux Shell management CLI and backend server.",
|
||||
}
|
||||
|
||||
func init() {
|
||||
|
||||
@@ -11,10 +11,10 @@ import (
|
||||
"runtime/debug"
|
||||
"strings"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/clipboard"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/notify"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/qsipc"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/screenshot"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/clipboard"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/notify"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/qsipc"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/screenshot"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/screenshot"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/screenshot"
|
||||
)
|
||||
|
||||
func thumbnailTestBuffer(t testing.TB, width, height int) *screenshot.ShmBuffer {
|
||||
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
||||
@@ -8,13 +8,13 @@ import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/config"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/deps"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/distros"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/mangoconf"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/privesc"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/utils"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/config"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/deps"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/distros"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/mangoconf"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/privesc"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/utils"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ package main
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/config"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/deps"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/config"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/deps"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
||||
@@ -11,14 +11,14 @@ import (
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/backup"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/deps"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/distros"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/privesc"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/backup"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/deps"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/distros"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/privesc"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
const switchDMSDep = "dms (DankMaterialShell)"
|
||||
const switchDMSDep = "dms (Dux Shell)"
|
||||
|
||||
// The greeter runs the shell's QML, so it moves with dms or the login screen can break.
|
||||
var switchFamily = []string{switchDMSDep, "quickshell", "dms-greeter"}
|
||||
|
||||
@@ -10,11 +10,11 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/lowprio"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/sysupdate"
|
||||
"github.com/AvengeMedia/dankgo/ipc"
|
||||
"github.com/charmbracelet/lipgloss"
|
||||
"github.com/duxlabs-dev/dux-go/ipc"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/lowprio"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/server/sysupdate"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/config"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/deps"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/config"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/deps"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/dankgo/trash"
|
||||
"github.com/duxlabs-dev/dux-go/trash"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
||||
@@ -8,11 +8,11 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/mangoconf"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/utils"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/windowrules"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/windowrules/providers"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/mangoconf"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/utils"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/windowrules"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/windowrules/providers"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
|
||||
@@ -5,8 +5,8 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/proto/wlr_output_power"
|
||||
wlclient "github.com/AvengeMedia/dankgo/wayland/client"
|
||||
wlclient "github.com/duxlabs-dev/dux-go/wayland/client"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/proto/wlr_output_power"
|
||||
)
|
||||
|
||||
type cmd struct {
|
||||
|
||||
@@ -9,8 +9,8 @@ import (
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/clipolicy"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/privesc"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/clipolicy"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/privesc"
|
||||
"github.com/spf13/afero"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"encoding/json"
|
||||
"testing"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/clipolicy"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/clipolicy"
|
||||
)
|
||||
|
||||
func TestDefaultImmutablePolicyAllowsSyncButBlocksEnable(t *testing.T) {
|
||||
|
||||
@@ -5,8 +5,9 @@ package main
|
||||
import (
|
||||
"os"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/clipboard"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/clipboard"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/utils"
|
||||
)
|
||||
|
||||
var Version = "dev"
|
||||
@@ -33,6 +34,12 @@ func main() {
|
||||
log.Fatal("This program should not be run as root. Exiting.")
|
||||
}
|
||||
|
||||
if os.Geteuid() != 0 {
|
||||
for _, err := range utils.MigrateLegacyDirs() {
|
||||
log.Warnf("dms dir migration: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
os.Args = normalizeDmenuArgv(os.Args)
|
||||
if err := rootCmd.Execute(); err != nil {
|
||||
log.Fatal(err)
|
||||
|
||||
@@ -5,8 +5,9 @@ package main
|
||||
import (
|
||||
"os"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/clipboard"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/clipboard"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/utils"
|
||||
)
|
||||
|
||||
var Version = "dev"
|
||||
@@ -29,6 +30,12 @@ func main() {
|
||||
log.Fatal("This program should not be run as root. Exiting.")
|
||||
}
|
||||
|
||||
if os.Geteuid() != 0 {
|
||||
for _, err := range utils.MigrateLegacyDirs() {
|
||||
log.Warnf("dms dir migration: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
os.Args = normalizeDmenuArgv(os.Args)
|
||||
if err := rootCmd.Execute(); err != nil {
|
||||
log.Fatal(err)
|
||||
|
||||
@@ -3,8 +3,8 @@ package main
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/proto/wlr_output_management"
|
||||
wlclient "github.com/AvengeMedia/dankgo/wayland/client"
|
||||
wlclient "github.com/duxlabs-dev/dux-go/wayland/client"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/proto/wlr_output_management"
|
||||
)
|
||||
|
||||
type randrOutput struct {
|
||||
|
||||
@@ -8,11 +8,12 @@ import (
|
||||
"net"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/server"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/utils"
|
||||
"github.com/AvengeMedia/dankgo/ipc"
|
||||
"github.com/duxlabs-dev/dux-go/ipc"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/server"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/utils"
|
||||
)
|
||||
|
||||
// maxIPCMessageSize allows room for a 50 MB clipboard entry plus JSON/base64
|
||||
@@ -121,16 +122,18 @@ func getServerSocketPath() string {
|
||||
|
||||
entries, err := os.ReadDir(runtimeDir)
|
||||
if err != nil {
|
||||
return filepath.Join(runtimeDir, "danklinux.sock")
|
||||
return server.GetSocketPath()
|
||||
}
|
||||
|
||||
for _, entry := range entries {
|
||||
name := entry.Name()
|
||||
if name == "danklinux.sock" {
|
||||
return filepath.Join(runtimeDir, name)
|
||||
}
|
||||
if len(name) > 10 && name[:10] == "danklinux-" && filepath.Ext(name) == ".sock" {
|
||||
return filepath.Join(runtimeDir, name)
|
||||
for _, id := range []string{"dms", "danklinux"} {
|
||||
for _, entry := range entries {
|
||||
name := entry.Name()
|
||||
if filepath.Ext(name) != ".sock" {
|
||||
continue
|
||||
}
|
||||
if name == id+".sock" || strings.HasPrefix(name, id+"-") {
|
||||
return filepath.Join(runtimeDir, name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/AvengeMedia/dankgo/ipc"
|
||||
"github.com/duxlabs-dev/dux-go/ipc"
|
||||
)
|
||||
|
||||
func fakeServer(t *testing.T, handle func(net.Conn)) {
|
||||
|
||||
@@ -13,9 +13,9 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/qsipc"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/site"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/qsipc"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/site"
|
||||
)
|
||||
|
||||
type ipcTargets map[string]map[string][]string
|
||||
@@ -228,7 +228,7 @@ func printIPCHelpFailure(err error) {
|
||||
fmt.Printf(" %v\n", err)
|
||||
}
|
||||
fmt.Println()
|
||||
fmt.Println(" Full docs: " + site.Docs + "/dankmaterialshell/keybinds-ipc")
|
||||
fmt.Println(" Full docs: " + site.Docs + "/dms/keybinds-ipc")
|
||||
fmt.Println(" Try: dms ipc call <target> <function>")
|
||||
}
|
||||
|
||||
@@ -243,7 +243,7 @@ func ensureFontCache() {
|
||||
var fontsToCheck []string
|
||||
|
||||
if configDir, err := os.UserConfigDir(); err == nil {
|
||||
settingsPath := filepath.Join(configDir, "DankMaterialShell", "settings.json")
|
||||
settingsPath := filepath.Join(configDir, "dms", "settings.json")
|
||||
if data, err := os.ReadFile(settingsPath); err == nil {
|
||||
var settings struct {
|
||||
FontFamily string `json:"fontFamily"`
|
||||
|
||||
@@ -6,19 +6,20 @@ import (
|
||||
"os"
|
||||
"strings"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/config"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/gpu"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/server"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/shellembed"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/utils"
|
||||
"github.com/AvengeMedia/dankgo/shellapp"
|
||||
"github.com/duxlabs-dev/dux-go/shellapp"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/config"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/gpu"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/server"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/shellembed"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/utils"
|
||||
)
|
||||
|
||||
var shellApp = shellapp.New(shellapp.Config{
|
||||
ID: "danklinux",
|
||||
ID: "dms",
|
||||
LegacyIDs: []string{"danklinux"},
|
||||
EnvPrefix: "DMS",
|
||||
QSAppID: "com.danklinux.dms",
|
||||
QSAppID: "dev.duxlabs.shell",
|
||||
Version: Version,
|
||||
Embedded: embeddedShell{},
|
||||
Boot: bootBackend,
|
||||
|
||||
+1
-1
@@ -3,8 +3,8 @@ package main
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/tui"
|
||||
"github.com/charmbracelet/lipgloss"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/tui"
|
||||
)
|
||||
|
||||
func printASCII() {
|
||||
|
||||
+3
-3
@@ -1,10 +1,10 @@
|
||||
module github.com/AvengeMedia/DankMaterialShell/core
|
||||
module github.com/duxlabs-dev/dux-shell/core
|
||||
|
||||
go 1.27.1
|
||||
|
||||
require (
|
||||
github.com/AvengeMedia/dankgo v1.6.3-0.20261019192939-46e7a10c933f
|
||||
github.com/AvengeMedia/dgop v1.6.3-0.20261015133851-bf93d6b75cf2
|
||||
github.com/duxlabs-dev/dux-go v0.0.0-00010101000000-000000000000
|
||||
github.com/duxlabs-dev/dux-gop v0.0.0-00010101000000-000000000000
|
||||
github.com/Wifx/gonetworkmanager/v2 v2.2.0
|
||||
github.com/alecthomas/chroma/v2 v2.27.0
|
||||
github.com/charmbracelet/bubbles v1.0.0
|
||||
|
||||
@@ -1,9 +1,5 @@
|
||||
filippo.io/edwards25519 v1.2.0 h1:crnVqOiS4jqYleHd9vaKZ+HKtHfllngJIiOpNpoJsjo=
|
||||
filippo.io/edwards25519 v1.2.0/go.mod h1:xzAOLCNug/yB62zG1bQ8uziwrIqIuxhctzJT18Q77mc=
|
||||
github.com/AvengeMedia/dankgo v1.6.3-0.20261019192939-46e7a10c933f h1:DpJ4MnFdtsa/FouZICTZeZlqXYTNQ342/7vImWXcSJM=
|
||||
github.com/AvengeMedia/dankgo v1.6.3-0.20261019192939-46e7a10c933f/go.mod h1:oNWfG/2In/Znsrq03ZhNP1dCwHmHHm3nOVu6oXgkYIc=
|
||||
github.com/AvengeMedia/dgop v1.6.3-0.20261015133851-bf93d6b75cf2 h1:oOkpidPu7DJENdRTseCMw6pqyo12KNoGEC+Uim9pFHo=
|
||||
github.com/AvengeMedia/dgop v1.6.3-0.20261015133851-bf93d6b75cf2/go.mod h1:8TFIP72NLxCbogF2hHU6sXj3RoTbHQW8beeCrisHs/Y=
|
||||
github.com/Microsoft/go-winio v0.6.4 h1:kJF2pamtYCWXf0xAT8sAkwKC0pMl2HYBrRPHAqyUc+g=
|
||||
github.com/Microsoft/go-winio v0.6.4/go.mod h1:1xl5JXG4ze/m74GH6Dc4Mwxfc3VL5siRVQjIAlHH07U=
|
||||
github.com/ProtonMail/go-crypto v1.5.2 h1:cucYnvqcY7UOXVD//mSyjeaPY0SSN3v5cDkYPxumINk=
|
||||
|
||||
+3
-3
@@ -36,7 +36,7 @@ aarch64)
|
||||
esac
|
||||
|
||||
# Get the latest release version
|
||||
LATEST_VERSION=$(curl -s https://api.github.com/repos/AvengeMedia/DankMaterialShell/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
|
||||
LATEST_VERSION=$(curl -sL https://api.github.com/repos/duxlabs-dev/dux-shell/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
|
||||
|
||||
if [ -z "$LATEST_VERSION" ]; then
|
||||
printf "%bError: Could not fetch latest version%b\n" "$RED" "$NC"
|
||||
@@ -52,8 +52,8 @@ cd "$TEMP_DIR" || exit 1
|
||||
|
||||
# Download the gzipped binary and its checksum
|
||||
printf "%bDownloading installer...%b\n" "$GREEN" "$NC"
|
||||
curl -L "https://github.com/AvengeMedia/DankMaterialShell/releases/download/$LATEST_VERSION/dankinstall-$ARCH.gz" -o "installer.gz"
|
||||
curl -L "https://github.com/AvengeMedia/DankMaterialShell/releases/download/$LATEST_VERSION/dankinstall-$ARCH.gz.sha256" -o "expected.sha256"
|
||||
curl -L "https://github.com/duxlabs-dev/dux-shell/releases/download/$LATEST_VERSION/dankinstall-$ARCH.gz" -o "installer.gz"
|
||||
curl -L "https://github.com/duxlabs-dev/dux-shell/releases/download/$LATEST_VERSION/dankinstall-$ARCH.gz.sha256" -o "expected.sha256"
|
||||
|
||||
# Get the expected checksum
|
||||
EXPECTED_CHECKSUM=$(awk '{print $1}' expected.sha256)
|
||||
|
||||
@@ -11,7 +11,7 @@ import (
|
||||
"time"
|
||||
)
|
||||
|
||||
const dirName = "DankMaterialShell"
|
||||
const dirName = "dms"
|
||||
|
||||
func ConfigDir() (string, error) {
|
||||
configDir, err := os.UserConfigDir()
|
||||
|
||||
@@ -39,11 +39,11 @@ func TestSnapshotRestoresThroughSymlinkedConfig(t *testing.T) {
|
||||
if err := os.MkdirAll(filepath.Join(home, ".config"), 0o755); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
configLink := filepath.Join(home, ".config", "DankMaterialShell")
|
||||
configLink := filepath.Join(home, ".config", "dms")
|
||||
if err := os.Symlink(dotfiles, configLink); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
session := filepath.Join(home, ".local", "state", "DankMaterialShell", "session.json")
|
||||
session := filepath.Join(home, ".local", "state", "dms", "session.json")
|
||||
writeFile(t, session, `{"wallpaper":"a"}`)
|
||||
|
||||
path, err := Snapshot("stable")
|
||||
@@ -73,7 +73,7 @@ func TestSnapshotKeepsNewestPerLabel(t *testing.T) {
|
||||
t.Setenv("XDG_CONFIG_HOME", filepath.Join(home, ".config"))
|
||||
t.Setenv("XDG_STATE_HOME", filepath.Join(home, ".local", "state"))
|
||||
t.Setenv("XDG_CACHE_HOME", filepath.Join(home, ".cache"))
|
||||
writeFile(t, filepath.Join(home, ".config", "DankMaterialShell", "settings.json"), "{}")
|
||||
writeFile(t, filepath.Join(home, ".config", "dms", "settings.json"), "{}")
|
||||
|
||||
dir, _ := SnapshotDir()
|
||||
for _, stamp := range []string{"20260101-000000", "20260102-000000", "20260103-000000"} {
|
||||
@@ -98,7 +98,7 @@ func TestRestoreSnapshotRejectsForeignEntries(t *testing.T) {
|
||||
t.Setenv("XDG_CONFIG_HOME", filepath.Join(home, ".config"))
|
||||
t.Setenv("XDG_STATE_HOME", filepath.Join(home, ".local", "state"))
|
||||
t.Setenv("XDG_CACHE_HOME", filepath.Join(home, ".cache"))
|
||||
writeFile(t, filepath.Join(home, ".config", "DankMaterialShell", "settings.json"), "{}")
|
||||
writeFile(t, filepath.Join(home, ".config", "dms", "settings.json"), "{}")
|
||||
|
||||
archive := filepath.Join(home, "backup.tar.gz")
|
||||
if err := Create(archive); err != nil {
|
||||
@@ -123,7 +123,7 @@ func TestRestoreSnapshotRejectsEscapingSymlink(t *testing.T) {
|
||||
}
|
||||
gz := gzip.NewWriter(f)
|
||||
tw := tar.NewWriter(gz)
|
||||
if err := tw.WriteHeader(&tar.Header{Name: "config/DankMaterialShell/plugins", Typeflag: tar.TypeSymlink, Linkname: "../../../.ssh", Mode: 0o777}); err != nil {
|
||||
if err := tw.WriteHeader(&tar.Header{Name: "config/dms/plugins", Typeflag: tar.TypeSymlink, Linkname: "../../../.ssh", Mode: 0o777}); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
for _, c := range []interface{ Close() error }{tw, gz, f} {
|
||||
@@ -135,7 +135,7 @@ func TestRestoreSnapshotRejectsEscapingSymlink(t *testing.T) {
|
||||
if err := RestoreSnapshot(archive); err == nil {
|
||||
t.Fatal("RestoreSnapshot followed a symlink that points outside the config dir")
|
||||
}
|
||||
if _, err := os.Lstat(filepath.Join(home, ".config", "DankMaterialShell", "plugins")); err == nil {
|
||||
if _, err := os.Lstat(filepath.Join(home, ".config", "dms", "plugins")); err == nil {
|
||||
t.Fatal("the escaping symlink was created")
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,8 @@
|
||||
package blur
|
||||
|
||||
import (
|
||||
wlhelpers "github.com/AvengeMedia/DankMaterialShell/core/internal/wayland/client"
|
||||
client "github.com/AvengeMedia/dankgo/wayland/client"
|
||||
client "github.com/duxlabs-dev/dux-go/wayland/client"
|
||||
wlhelpers "github.com/duxlabs-dev/dux-shell/core/internal/wayland/client"
|
||||
)
|
||||
|
||||
const extBackgroundEffectInterface = "ext_background_effect_manager_v1"
|
||||
|
||||
@@ -11,8 +11,8 @@ import (
|
||||
"path/filepath"
|
||||
"syscall"
|
||||
|
||||
"github.com/AvengeMedia/dankgo/wayland/ext_data_control"
|
||||
"github.com/AvengeMedia/dankgo/wlclipboard"
|
||||
"github.com/duxlabs-dev/dux-go/wayland/ext_data_control"
|
||||
"github.com/duxlabs-dev/dux-go/wlclipboard"
|
||||
)
|
||||
|
||||
const envServe = "_DMS_CLIPBOARD_SERVE"
|
||||
|
||||
@@ -6,7 +6,7 @@ import (
|
||||
"image/png"
|
||||
"testing"
|
||||
|
||||
"github.com/AvengeMedia/dankgo/wlclipboard"
|
||||
"github.com/duxlabs-dev/dux-go/wlclipboard"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
|
||||
@@ -3,8 +3,8 @@ package clipboard
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/wayland/keymap"
|
||||
wlclient "github.com/AvengeMedia/dankgo/wayland/client"
|
||||
wlclient "github.com/duxlabs-dev/dux-go/wayland/client"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/wayland/keymap"
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ func GetDBPath() (string, error) {
|
||||
cacheDir = filepath.Join(homeDir, ".cache")
|
||||
}
|
||||
|
||||
newDir := filepath.Join(cacheDir, "DankMaterialShell", "clipboard")
|
||||
newDir := filepath.Join(cacheDir, "dms", "clipboard")
|
||||
newPath := filepath.Join(newDir, "db")
|
||||
|
||||
if _, err := os.Stat(newPath); err == nil {
|
||||
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/AvengeMedia/dankgo/wayland/ext_data_control"
|
||||
"github.com/duxlabs-dev/dux-go/wayland/ext_data_control"
|
||||
)
|
||||
|
||||
// WatchAll subscribes to clipboard selection changes like wlclipboard.Watch,
|
||||
|
||||
@@ -3,9 +3,9 @@ package clipboard
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/proto/virtual_keyboard"
|
||||
wlclient "github.com/AvengeMedia/dankgo/wayland/client"
|
||||
"github.com/AvengeMedia/dankgo/wayland/ext_data_control"
|
||||
wlclient "github.com/duxlabs-dev/dux-go/wayland/client"
|
||||
"github.com/duxlabs-dev/dux-go/wayland/ext_data_control"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/proto/virtual_keyboard"
|
||||
)
|
||||
|
||||
type session struct {
|
||||
|
||||
@@ -4,16 +4,16 @@ import (
|
||||
"fmt"
|
||||
"sync"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/proto/keyboard_shortcuts_inhibit"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/proto/wlr_layer_shell"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/proto/wlr_screencopy"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/proto/wp_color_management"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/proto/wp_viewporter"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/utils"
|
||||
wlhelpers "github.com/AvengeMedia/DankMaterialShell/core/internal/wayland/client"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/wayland/keymap"
|
||||
"github.com/AvengeMedia/dankgo/wayland/client"
|
||||
"github.com/duxlabs-dev/dux-go/wayland/client"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/log"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/proto/keyboard_shortcuts_inhibit"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/proto/wlr_layer_shell"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/proto/wlr_screencopy"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/proto/wp_color_management"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/proto/wp_viewporter"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/utils"
|
||||
wlhelpers "github.com/duxlabs-dev/dux-shell/core/internal/wayland/client"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/wayland/keymap"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package colorpicker
|
||||
|
||||
import "github.com/AvengeMedia/DankMaterialShell/core/internal/wayland/shm"
|
||||
import "github.com/duxlabs-dev/dux-shell/core/internal/wayland/shm"
|
||||
|
||||
type ShmBuffer = shm.Buffer
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ import (
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/wayland/shm"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/wayland/shm"
|
||||
)
|
||||
|
||||
type PixelFormat = shm.PixelFormat
|
||||
|
||||
@@ -9,8 +9,8 @@ import (
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/deps"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/version"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/deps"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/version"
|
||||
)
|
||||
|
||||
const hyprlandBackupDirName = ".dms-backups"
|
||||
|
||||
@@ -8,7 +8,7 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/deps"
|
||||
"github.com/duxlabs-dev/dux-shell/core/internal/deps"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# DankMaterialShell — MangoWM configuration (managed by `dms setup`)
|
||||
# Dux Shell — MangoWM configuration (managed by `dms setup`)
|
||||
# Keybinds, colors, layout, outputs, cursor and window rules are pulled from the
|
||||
# ./dms fragments below. Add your own binds/rules here; they sit alongside DMS's.
|
||||
|
||||
|
||||
Loaded 100 of 537 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user