AvengeMedia / AvengeMedia/DankMaterialShell

Proposal: break out machine specific state from `settings.json` into their own files

Open
#2,619 1 comment 2 reactions 0 assignees View on GitHub
feature request
Dominant language
QML
Stars
8.1k
Forks
515
Avg merge
1d 8h
Merged PRs (30d)
102

Description

### Feature Description

Break out machine specific state from `settings.json` into their own files

### Use Case

Hi! I use the same dotfiles on two different machines, and I've noticed that `~/.config/DankMaterialShell/settings.json` contains a lot of machine-specific settings. This gets kind of awkward to deal with when having `settings.json` checked in to a Git repo and tracked from both machines, because for some entries in `settings.json` each machine needs to have a unique setting, like its monitor names for example.

Here's a non-complete list of some of the entries that I'm talking about (for some I'm guessing what the actual use case is based on the name, but hopefully you get the idea).

- `bluetoothDevicePins.preferredDevice`
- `wifiNetworkPins.preferredWifi`
- `brightnessDevicePins`
- `audioInputDevicePins` / `audioOutputDevicePins`
- `niriOutputSettings`
- `activeDisplayProfile`
- `displayProfiles`
- `enabledGpuPciIds` / `selectedGpuIndex`
- `systemMonitorGpuPciId`
- `lockScreenActiveMonitor`
- `matugenTargetMonitor`
- `frameScreenPreferences`
- `systemMonitorDisplayPreferences`
- `systemMonitorVariants`
- `connectedFrameBarStyleBackups`
- `browserUsageHistory` / `filePickerUsageHistory`

### Compositor(s)

All compositors

### If Other, please specify

_No response_

### Proposed Solution

My proposed solution is to move machine-specific settings like the ones above to some other file, for example `~/.local/share/DankMaterialShell/settings/.json`.

### Alternatives/Existing Solutions

🤷🏻‍♂

Contributor guide

Open the contributing guide

Research direction

Start by locating where ~/.config/DankMaterialShell/settings.json is loaded and where the listed machine-specific entries are read or written. Define how a per-host file under ~/.local/share/DankMaterialShell/settings/.json would coexist with shared settings, then confirm that machine-specific values no longer need to be tracked in settings.json.

Written by the indexing model from the issue text.

Assessment

Tech stack
json
Domain
desktop
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.