mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-01-24 21:42:51 -05:00
core: use stdlib for xdg dirs
This commit is contained in:
@@ -109,8 +109,8 @@ func StoreWithConfig(data []byte, mimeType string, cfg StoreConfig) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func getDBPath() (string, error) {
|
func getDBPath() (string, error) {
|
||||||
cacheDir := os.Getenv("XDG_CACHE_HOME")
|
cacheDir, err := os.UserCacheDir()
|
||||||
if cacheDir == "" {
|
if err != nil {
|
||||||
homeDir, err := os.UserHomeDir()
|
homeDir, err := os.UserHomeDir()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", err
|
||||||
|
|||||||
@@ -5,15 +5,13 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/utils"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func LocateDMSConfig() (string, error) {
|
func LocateDMSConfig() (string, error) {
|
||||||
var primaryPaths []string
|
var primaryPaths []string
|
||||||
|
|
||||||
configHome := utils.XDGConfigHome()
|
configHome, err := os.UserConfigDir()
|
||||||
if configHome != "" {
|
if err == nil && configHome != "" {
|
||||||
primaryPaths = append(primaryPaths, filepath.Join(configHome, "quickshell", "dms"))
|
primaryPaths = append(primaryPaths, filepath.Join(configHome, "quickshell", "dms"))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ type DiscoveryConfig struct {
|
|||||||
func DefaultDiscoveryConfig() *DiscoveryConfig {
|
func DefaultDiscoveryConfig() *DiscoveryConfig {
|
||||||
var searchPaths []string
|
var searchPaths []string
|
||||||
|
|
||||||
configHome := utils.XDGConfigHome()
|
configDir, err := os.UserConfigDir()
|
||||||
if configHome != "" {
|
if err == nil && configDir != "" {
|
||||||
searchPaths = append(searchPaths, filepath.Join(configHome, "DankMaterialShell", "cheatsheets"))
|
searchPaths = append(searchPaths, filepath.Join(configDir, "DankMaterialShell", "cheatsheets"))
|
||||||
}
|
}
|
||||||
|
|
||||||
configDirs := os.Getenv("XDG_CONFIG_DIRS")
|
configDirs := os.Getenv("XDG_CONFIG_DIRS")
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/keybinds"
|
"github.com/AvengeMedia/DankMaterialShell/core/internal/keybinds"
|
||||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/utils"
|
|
||||||
"github.com/sblinch/kdl-go"
|
"github.com/sblinch/kdl-go"
|
||||||
"github.com/sblinch/kdl-go/document"
|
"github.com/sblinch/kdl-go/document"
|
||||||
)
|
)
|
||||||
@@ -30,7 +29,11 @@ func NewNiriProvider(configDir string) *NiriProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func defaultNiriConfigDir() string {
|
func defaultNiriConfigDir() string {
|
||||||
return filepath.Join(utils.XDGConfigHome(), "niri")
|
configDir, err := os.UserConfigDir()
|
||||||
|
if err != nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return filepath.Join(configDir, "niri")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (n *NiriProvider) Name() string {
|
func (n *NiriProvider) Name() string {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/utils"
|
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||||
"github.com/spf13/afero"
|
"github.com/spf13/afero"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -33,7 +33,12 @@ func NewManagerWithFs(fs afero.Fs) (*Manager, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func getPluginsDir() string {
|
func getPluginsDir() string {
|
||||||
return filepath.Join(utils.XDGConfigHome(), "DankMaterialShell", "plugins")
|
configDir, err := os.UserConfigDir()
|
||||||
|
if err != nil {
|
||||||
|
log.Error("failed to get user config dir", "err", err)
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return filepath.Join(configDir, "DankMaterialShell", "plugins")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *Manager) IsInstalled(plugin Plugin) (bool, error) {
|
func (m *Manager) IsInstalled(plugin Plugin) (bool, error) {
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/utils"
|
"github.com/AvengeMedia/DankMaterialShell/core/internal/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -119,7 +120,12 @@ func GetOutputDir() string {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func getXDGPicturesDir() string {
|
func getXDGPicturesDir() string {
|
||||||
userDirsFile := filepath.Join(utils.XDGConfigHome(), "user-dirs.dirs")
|
userConfigDir, err := os.UserConfigDir()
|
||||||
|
if err != nil {
|
||||||
|
log.Error("failed to get user config dir", "err", err)
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
userDirsFile := filepath.Join(userConfigDir, "user-dirs.dirs")
|
||||||
data, err := os.ReadFile(userDirsFile)
|
data, err := os.ReadFile(userDirsFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return ""
|
return ""
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import (
|
|||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/utils"
|
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
type ThemeColors struct {
|
type ThemeColors struct {
|
||||||
@@ -74,7 +74,12 @@ func loadColorsFile() *ColorScheme {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func getColorsFilePath() string {
|
func getColorsFilePath() string {
|
||||||
return filepath.Join(utils.XDGCacheHome(), "DankMaterialShell", "dms-colors.json")
|
cacheDir, err := os.UserCacheDir()
|
||||||
|
if err != nil {
|
||||||
|
log.Error("Failed to get user cache dir", "err", err)
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return filepath.Join(cacheDir, "DankMaterialShell", "dms-colors.json")
|
||||||
}
|
}
|
||||||
|
|
||||||
func isLightMode() bool {
|
func isLightMode() bool {
|
||||||
|
|||||||
@@ -20,33 +20,3 @@ func ExpandPath(path string) (string, error) {
|
|||||||
|
|
||||||
return expanded, nil
|
return expanded, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func XDGConfigHome() string {
|
|
||||||
if configHome := os.Getenv("XDG_CONFIG_HOME"); configHome != "" {
|
|
||||||
return configHome
|
|
||||||
}
|
|
||||||
if home, err := os.UserHomeDir(); err == nil {
|
|
||||||
return filepath.Join(home, ".config")
|
|
||||||
}
|
|
||||||
return filepath.Join(os.TempDir(), ".config")
|
|
||||||
}
|
|
||||||
|
|
||||||
func XDGCacheHome() string {
|
|
||||||
if cacheHome := os.Getenv("XDG_CACHE_HOME"); cacheHome != "" {
|
|
||||||
return cacheHome
|
|
||||||
}
|
|
||||||
if home, err := os.UserHomeDir(); err == nil {
|
|
||||||
return filepath.Join(home, ".cache")
|
|
||||||
}
|
|
||||||
return filepath.Join(os.TempDir(), ".cache")
|
|
||||||
}
|
|
||||||
|
|
||||||
func XDGDataHome() string {
|
|
||||||
if dataHome := os.Getenv("XDG_DATA_HOME"); dataHome != "" {
|
|
||||||
return dataHome
|
|
||||||
}
|
|
||||||
if home, err := os.UserHomeDir(); err == nil {
|
|
||||||
return filepath.Join(home, ".local", "share")
|
|
||||||
}
|
|
||||||
return filepath.Join(os.TempDir(), ".local", "share")
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -41,66 +41,3 @@ func TestExpandPathAbsolute(t *testing.T) {
|
|||||||
t.Errorf("expected /absolute/path, got %s", result)
|
t.Errorf("expected /absolute/path, got %s", result)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestXDGConfigHomeDefault(t *testing.T) {
|
|
||||||
t.Setenv("XDG_CONFIG_HOME", "")
|
|
||||||
home, err := os.UserHomeDir()
|
|
||||||
if err != nil {
|
|
||||||
t.Skip("no home directory")
|
|
||||||
}
|
|
||||||
result := XDGConfigHome()
|
|
||||||
expected := filepath.Join(home, ".config")
|
|
||||||
if result != expected {
|
|
||||||
t.Errorf("expected %s, got %s", expected, result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestXDGConfigHomeCustom(t *testing.T) {
|
|
||||||
t.Setenv("XDG_CONFIG_HOME", "/custom/config")
|
|
||||||
result := XDGConfigHome()
|
|
||||||
if result != "/custom/config" {
|
|
||||||
t.Errorf("expected /custom/config, got %s", result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestXDGCacheHomeDefault(t *testing.T) {
|
|
||||||
t.Setenv("XDG_CACHE_HOME", "")
|
|
||||||
home, err := os.UserHomeDir()
|
|
||||||
if err != nil {
|
|
||||||
t.Skip("no home directory")
|
|
||||||
}
|
|
||||||
result := XDGCacheHome()
|
|
||||||
expected := filepath.Join(home, ".cache")
|
|
||||||
if result != expected {
|
|
||||||
t.Errorf("expected %s, got %s", expected, result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestXDGCacheHomeCustom(t *testing.T) {
|
|
||||||
t.Setenv("XDG_CACHE_HOME", "/custom/cache")
|
|
||||||
result := XDGCacheHome()
|
|
||||||
if result != "/custom/cache" {
|
|
||||||
t.Errorf("expected /custom/cache, got %s", result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestXDGDataHomeDefault(t *testing.T) {
|
|
||||||
t.Setenv("XDG_DATA_HOME", "")
|
|
||||||
home, err := os.UserHomeDir()
|
|
||||||
if err != nil {
|
|
||||||
t.Skip("no home directory")
|
|
||||||
}
|
|
||||||
result := XDGDataHome()
|
|
||||||
expected := filepath.Join(home, ".local", "share")
|
|
||||||
if result != expected {
|
|
||||||
t.Errorf("expected %s, got %s", expected, result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func TestXDGDataHomeCustom(t *testing.T) {
|
|
||||||
t.Setenv("XDG_DATA_HOME", "/custom/data")
|
|
||||||
result := XDGDataHome()
|
|
||||||
if result != "/custom/data" {
|
|
||||||
t.Errorf("expected /custom/data, got %s", result)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user