1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-08-06 13:38:28 -04:00

core: migrate to dankgo shared go modules, embed quickshell in DMS

binary to mount at runtime, -c or DMS_SHELL_DIR overrides required to
explicitly override embedded configuration
This commit is contained in:
bbedward
2026-07-18 14:51:09 -04:00
parent 2114ece0df
commit 0cdb065739
114 changed files with 1009 additions and 3024 deletions
+11 -12
View File
@@ -2,13 +2,12 @@ package freedesktop
import (
"fmt"
"net"
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/models"
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/params"
"github.com/AvengeMedia/dankgo/ipc/params"
)
func HandleRequest(conn net.Conn, req models.Request, manager *Manager) {
func HandleRequest(conn *models.Conn, req models.Request, manager *Manager) {
switch req.Method {
case "freedesktop.getState":
handleGetState(conn, req, manager)
@@ -33,11 +32,11 @@ func HandleRequest(conn net.Conn, req models.Request, manager *Manager) {
}
}
func handleGetState(conn net.Conn, req models.Request, manager *Manager) {
func handleGetState(conn *models.Conn, req models.Request, manager *Manager) {
models.Respond(conn, req.ID, manager.GetState())
}
func handleSetIconFile(conn net.Conn, req models.Request, manager *Manager) {
func handleSetIconFile(conn *models.Conn, req models.Request, manager *Manager) {
iconPath, err := params.String(req.Params, "path")
if err != nil {
models.RespondError(conn, req.ID, err.Error())
@@ -52,7 +51,7 @@ func handleSetIconFile(conn net.Conn, req models.Request, manager *Manager) {
models.Respond(conn, req.ID, models.SuccessResult{Success: true, Message: "icon file set"})
}
func handleSetRealName(conn net.Conn, req models.Request, manager *Manager) {
func handleSetRealName(conn *models.Conn, req models.Request, manager *Manager) {
name, err := params.String(req.Params, "name")
if err != nil {
models.RespondError(conn, req.ID, err.Error())
@@ -67,7 +66,7 @@ func handleSetRealName(conn net.Conn, req models.Request, manager *Manager) {
models.Respond(conn, req.ID, models.SuccessResult{Success: true, Message: "real name set"})
}
func handleSetEmail(conn net.Conn, req models.Request, manager *Manager) {
func handleSetEmail(conn *models.Conn, req models.Request, manager *Manager) {
email, err := params.String(req.Params, "email")
if err != nil {
models.RespondError(conn, req.ID, err.Error())
@@ -82,7 +81,7 @@ func handleSetEmail(conn net.Conn, req models.Request, manager *Manager) {
models.Respond(conn, req.ID, models.SuccessResult{Success: true, Message: "email set"})
}
func handleSetLanguage(conn net.Conn, req models.Request, manager *Manager) {
func handleSetLanguage(conn *models.Conn, req models.Request, manager *Manager) {
language, err := params.String(req.Params, "language")
if err != nil {
models.RespondError(conn, req.ID, err.Error())
@@ -97,7 +96,7 @@ func handleSetLanguage(conn net.Conn, req models.Request, manager *Manager) {
models.Respond(conn, req.ID, models.SuccessResult{Success: true, Message: "language set"})
}
func handleSetLocation(conn net.Conn, req models.Request, manager *Manager) {
func handleSetLocation(conn *models.Conn, req models.Request, manager *Manager) {
location, err := params.String(req.Params, "location")
if err != nil {
models.RespondError(conn, req.ID, err.Error())
@@ -112,7 +111,7 @@ func handleSetLocation(conn net.Conn, req models.Request, manager *Manager) {
models.Respond(conn, req.ID, models.SuccessResult{Success: true, Message: "location set"})
}
func handleGetUserIconFile(conn net.Conn, req models.Request, manager *Manager) {
func handleGetUserIconFile(conn *models.Conn, req models.Request, manager *Manager) {
username, err := params.String(req.Params, "username")
if err != nil {
models.RespondError(conn, req.ID, err.Error())
@@ -128,7 +127,7 @@ func handleGetUserIconFile(conn net.Conn, req models.Request, manager *Manager)
models.Respond(conn, req.ID, models.SuccessResult{Success: true, Value: iconFile})
}
func handleGetColorScheme(conn net.Conn, req models.Request, manager *Manager) {
func handleGetColorScheme(conn *models.Conn, req models.Request, manager *Manager) {
if err := manager.updateSettingsState(); err != nil {
models.RespondError(conn, req.ID, err.Error())
return
@@ -138,7 +137,7 @@ func handleGetColorScheme(conn net.Conn, req models.Request, manager *Manager) {
models.Respond(conn, req.ID, map[string]uint32{"colorScheme": state.Settings.ColorScheme})
}
func handleSetIconTheme(conn net.Conn, req models.Request, manager *Manager) {
func handleSetIconTheme(conn *models.Conn, req models.Request, manager *Manager) {
iconTheme, err := params.String(req.Params, "iconTheme")
if err != nil {
models.RespondError(conn, req.ID, err.Error())
@@ -60,11 +60,12 @@ func mockGetAllAccountsProperties() *dbus.Call {
}
func TestRespondError_Freedesktop(t *testing.T) {
conn := newMockNetConn()
mc := newMockNetConn()
conn := models.NewConn(mc)
models.RespondError(conn, 123, "test error")
var resp models.Response[any]
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
require.NoError(t, err)
assert.Equal(t, 123, resp.ID)
@@ -73,12 +74,13 @@ func TestRespondError_Freedesktop(t *testing.T) {
}
func TestRespond_Freedesktop(t *testing.T) {
conn := newMockNetConn()
mc := newMockNetConn()
conn := models.NewConn(mc)
result := models.SuccessResult{Success: true, Message: "test"}
models.Respond(conn, 123, result)
var resp models.Response[models.SuccessResult]
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
require.NoError(t, err)
assert.Equal(t, 123, resp.ID)
@@ -105,13 +107,14 @@ func TestHandleGetState(t *testing.T) {
stateMutex: sync.RWMutex{},
}
conn := newMockNetConn()
mc := newMockNetConn()
conn := models.NewConn(mc)
req := models.Request{ID: 123, Method: "freedesktop.getState"}
handleGetState(conn, req, manager)
var resp models.Response[FreedeskState]
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
require.NoError(t, err)
assert.Equal(t, 123, resp.ID)
@@ -130,7 +133,8 @@ func TestHandleSetIconFile(t *testing.T) {
stateMutex: sync.RWMutex{},
}
conn := newMockNetConn()
mc := newMockNetConn()
conn := models.NewConn(mc)
req := models.Request{
ID: 123,
Method: "freedesktop.accounts.setIconFile",
@@ -140,7 +144,7 @@ func TestHandleSetIconFile(t *testing.T) {
handleSetIconFile(conn, req, manager)
var resp models.Response[any]
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
require.NoError(t, err)
assert.Equal(t, 123, resp.ID)
@@ -163,7 +167,8 @@ func TestHandleSetIconFile(t *testing.T) {
accountsObj: mockAccountsObj,
}
conn := newMockNetConn()
mc := newMockNetConn()
conn := models.NewConn(mc)
req := models.Request{
ID: 123,
Method: "freedesktop.accounts.setIconFile",
@@ -175,7 +180,7 @@ func TestHandleSetIconFile(t *testing.T) {
handleSetIconFile(conn, req, manager)
var resp models.Response[models.SuccessResult]
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
require.NoError(t, err)
assert.Equal(t, 123, resp.ID)
@@ -195,7 +200,8 @@ func TestHandleSetIconFile(t *testing.T) {
stateMutex: sync.RWMutex{},
}
conn := newMockNetConn()
mc := newMockNetConn()
conn := models.NewConn(mc)
req := models.Request{
ID: 123,
Method: "freedesktop.accounts.setIconFile",
@@ -207,7 +213,7 @@ func TestHandleSetIconFile(t *testing.T) {
handleSetIconFile(conn, req, manager)
var resp models.Response[models.SuccessResult]
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
require.NoError(t, err)
assert.Equal(t, 123, resp.ID)
@@ -222,7 +228,8 @@ func TestHandleSetRealName(t *testing.T) {
stateMutex: sync.RWMutex{},
}
conn := newMockNetConn()
mc := newMockNetConn()
conn := models.NewConn(mc)
req := models.Request{
ID: 123,
Method: "freedesktop.accounts.setRealName",
@@ -232,7 +239,7 @@ func TestHandleSetRealName(t *testing.T) {
handleSetRealName(conn, req, manager)
var resp models.Response[any]
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
require.NoError(t, err)
assert.Equal(t, 123, resp.ID)
@@ -255,7 +262,8 @@ func TestHandleSetRealName(t *testing.T) {
accountsObj: mockAccountsObj,
}
conn := newMockNetConn()
mc := newMockNetConn()
conn := models.NewConn(mc)
req := models.Request{
ID: 123,
Method: "freedesktop.accounts.setRealName",
@@ -267,7 +275,7 @@ func TestHandleSetRealName(t *testing.T) {
handleSetRealName(conn, req, manager)
var resp models.Response[models.SuccessResult]
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
require.NoError(t, err)
assert.Equal(t, 123, resp.ID)
@@ -285,7 +293,8 @@ func TestHandleSetEmail(t *testing.T) {
stateMutex: sync.RWMutex{},
}
conn := newMockNetConn()
mc := newMockNetConn()
conn := models.NewConn(mc)
req := models.Request{
ID: 123,
Method: "freedesktop.accounts.setEmail",
@@ -295,7 +304,7 @@ func TestHandleSetEmail(t *testing.T) {
handleSetEmail(conn, req, manager)
var resp models.Response[any]
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
require.NoError(t, err)
assert.Equal(t, 123, resp.ID)
@@ -318,7 +327,8 @@ func TestHandleSetEmail(t *testing.T) {
accountsObj: mockAccountsObj,
}
conn := newMockNetConn()
mc := newMockNetConn()
conn := models.NewConn(mc)
req := models.Request{
ID: 123,
Method: "freedesktop.accounts.setEmail",
@@ -330,7 +340,7 @@ func TestHandleSetEmail(t *testing.T) {
handleSetEmail(conn, req, manager)
var resp models.Response[models.SuccessResult]
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
require.NoError(t, err)
assert.Equal(t, 123, resp.ID)
@@ -348,7 +358,8 @@ func TestHandleSetLanguage(t *testing.T) {
stateMutex: sync.RWMutex{},
}
conn := newMockNetConn()
mc := newMockNetConn()
conn := models.NewConn(mc)
req := models.Request{
ID: 123,
Method: "freedesktop.accounts.setLanguage",
@@ -358,7 +369,7 @@ func TestHandleSetLanguage(t *testing.T) {
handleSetLanguage(conn, req, manager)
var resp models.Response[any]
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
require.NoError(t, err)
assert.Equal(t, 123, resp.ID)
@@ -373,7 +384,8 @@ func TestHandleSetLocation(t *testing.T) {
stateMutex: sync.RWMutex{},
}
conn := newMockNetConn()
mc := newMockNetConn()
conn := models.NewConn(mc)
req := models.Request{
ID: 123,
Method: "freedesktop.accounts.setLocation",
@@ -383,7 +395,7 @@ func TestHandleSetLocation(t *testing.T) {
handleSetLocation(conn, req, manager)
var resp models.Response[any]
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
require.NoError(t, err)
assert.Equal(t, 123, resp.ID)
@@ -398,7 +410,8 @@ func TestHandleGetUserIconFile(t *testing.T) {
stateMutex: sync.RWMutex{},
}
conn := newMockNetConn()
mc := newMockNetConn()
conn := models.NewConn(mc)
req := models.Request{
ID: 123,
Method: "freedesktop.accounts.getUserIconFile",
@@ -408,7 +421,7 @@ func TestHandleGetUserIconFile(t *testing.T) {
handleGetUserIconFile(conn, req, manager)
var resp models.Response[any]
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
require.NoError(t, err)
assert.Equal(t, 123, resp.ID)
@@ -425,7 +438,8 @@ func TestHandleGetUserIconFile(t *testing.T) {
stateMutex: sync.RWMutex{},
}
conn := newMockNetConn()
mc := newMockNetConn()
conn := models.NewConn(mc)
req := models.Request{
ID: 123,
Method: "freedesktop.accounts.getUserIconFile",
@@ -437,7 +451,7 @@ func TestHandleGetUserIconFile(t *testing.T) {
handleGetUserIconFile(conn, req, manager)
var resp models.Response[models.SuccessResult]
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
require.NoError(t, err)
assert.Equal(t, 123, resp.ID)
@@ -456,13 +470,14 @@ func TestHandleGetColorScheme(t *testing.T) {
stateMutex: sync.RWMutex{},
}
conn := newMockNetConn()
mc := newMockNetConn()
conn := models.NewConn(mc)
req := models.Request{ID: 123, Method: "freedesktop.settings.getColorScheme"}
handleGetColorScheme(conn, req, manager)
var resp models.Response[map[string]uint32]
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
require.NoError(t, err)
assert.Equal(t, 123, resp.ID)
@@ -487,13 +502,14 @@ func TestHandleGetColorScheme(t *testing.T) {
settingsObj: mockSettingsObj,
}
conn := newMockNetConn()
mc := newMockNetConn()
conn := models.NewConn(mc)
req := models.Request{ID: 123, Method: "freedesktop.settings.getColorScheme"}
handleGetColorScheme(conn, req, manager)
var resp models.Response[map[string]uint32]
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
require.NoError(t, err)
assert.Equal(t, 123, resp.ID)
@@ -515,7 +531,8 @@ func TestHandleRequest(t *testing.T) {
}
t.Run("unknown method", func(t *testing.T) {
conn := newMockNetConn()
mc := newMockNetConn()
conn := models.NewConn(mc)
req := models.Request{
ID: 123,
Method: "freedesktop.unknown",
@@ -524,7 +541,7 @@ func TestHandleRequest(t *testing.T) {
HandleRequest(conn, req, manager)
var resp models.Response[any]
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
require.NoError(t, err)
assert.Equal(t, 123, resp.ID)
@@ -532,7 +549,8 @@ func TestHandleRequest(t *testing.T) {
})
t.Run("valid method - getState", func(t *testing.T) {
conn := newMockNetConn()
mc := newMockNetConn()
conn := models.NewConn(mc)
req := models.Request{
ID: 123,
Method: "freedesktop.getState",
@@ -541,7 +559,7 @@ func TestHandleRequest(t *testing.T) {
HandleRequest(conn, req, manager)
var resp models.Response[FreedeskState]
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
require.NoError(t, err)
assert.Equal(t, 123, resp.ID)
@@ -560,7 +578,8 @@ func TestHandleRequest(t *testing.T) {
}
for _, method := range tests {
conn := newMockNetConn()
mc := newMockNetConn()
conn := models.NewConn(mc)
req := models.Request{
ID: 123,
Method: method,
@@ -570,7 +589,7 @@ func TestHandleRequest(t *testing.T) {
HandleRequest(conn, req, manager)
var resp models.Response[any]
err := json.NewDecoder(conn.writeBuf).Decode(&resp)
err := json.NewDecoder(mc.writeBuf).Decode(&resp)
require.NoError(t, err)
assert.Equal(t, 123, resp.ID)
+1 -1
View File
@@ -8,7 +8,7 @@ import (
"time"
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
"github.com/AvengeMedia/DankMaterialShell/core/pkg/dbusutil"
"github.com/AvengeMedia/dankgo/dbusutil"
"github.com/godbus/dbus/v5"
)
+1 -1
View File
@@ -4,7 +4,7 @@ import (
"sync"
"time"
"github.com/AvengeMedia/DankMaterialShell/core/pkg/syncmap"
"github.com/AvengeMedia/dankgo/syncmap"
"github.com/godbus/dbus/v5"
)