summaryrefslogtreecommitdiff
path: root/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/keybinds/registry.go
diff options
context:
space:
mode:
authorAlexanderCurl <alexc@alexc.hu>2026-04-18 17:46:06 +0100
committerAlexanderCurl <alexc@alexc.hu>2026-04-18 17:46:06 +0100
commit70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69 (patch)
treeab1123d4067c1b086dd6faa7ee4ea643236b565a /raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/keybinds/registry.go
parent5d94c0a7d44a2255b81815a52a7056a94a39842d (diff)
downloadRaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.tar.gz
RaveOS-PKGBUILD-70ca3fef77ee8bdc6e3ac28589a6fa08c024cc69.zip
Replaced file structures for themes in the correct format
Diffstat (limited to 'raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/keybinds/registry.go')
-rw-r--r--raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/keybinds/registry.go79
1 files changed, 79 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/keybinds/registry.go b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/keybinds/registry.go
new file mode 100644
index 0000000..d726838
--- /dev/null
+++ b/raveos-hyprland-theme/theme-data/DankMaterialShell/core/internal/keybinds/registry.go
@@ -0,0 +1,79 @@
+package keybinds
+
+import (
+ "fmt"
+ "sync"
+)
+
+type Registry struct {
+ mu sync.RWMutex
+ providers map[string]Provider
+}
+
+func NewRegistry() *Registry {
+ return &Registry{
+ providers: make(map[string]Provider),
+ }
+}
+
+func (r *Registry) Register(provider Provider) error {
+ if provider == nil {
+ return fmt.Errorf("cannot register nil provider")
+ }
+
+ name := provider.Name()
+ if name == "" {
+ return fmt.Errorf("provider name cannot be empty")
+ }
+
+ r.mu.Lock()
+ defer r.mu.Unlock()
+
+ if _, exists := r.providers[name]; exists {
+ return fmt.Errorf("provider %q already registered", name)
+ }
+
+ r.providers[name] = provider
+ return nil
+}
+
+func (r *Registry) Get(name string) (Provider, error) {
+ r.mu.RLock()
+ defer r.mu.RUnlock()
+
+ provider, exists := r.providers[name]
+ if !exists {
+ return nil, fmt.Errorf("provider %q not found", name)
+ }
+
+ return provider, nil
+}
+
+func (r *Registry) List() []string {
+ r.mu.RLock()
+ defer r.mu.RUnlock()
+
+ names := make([]string, 0, len(r.providers))
+ for name := range r.providers {
+ names = append(names, name)
+ }
+ return names
+}
+
+var defaultRegistry = NewRegistry()
+
+func GetDefaultRegistry() *Registry {
+ return defaultRegistry
+}
+
+func Register(provider Provider) error {
+ return defaultRegistry.Register(provider)
+}
+
+func Get(name string) (Provider, error) {
+ return defaultRegistry.Get(name)
+}
+
+func List() []string {
+ return defaultRegistry.List()
+}