mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2026-01-24 13:32:50 -05:00
Compare commits
6 Commits
1b5abca83a
...
ad43053b94
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ad43053b94 | ||
|
|
721700190b | ||
|
|
8c9c936d0e | ||
|
|
842bf6e3ff | ||
|
|
c1fbeb3f5e | ||
|
|
c45eb2cccf |
@@ -1,17 +1,29 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"context"
|
||||
"encoding/base64"
|
||||
"encoding/binary"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"image"
|
||||
_ "image/gif"
|
||||
_ "image/jpeg"
|
||||
_ "image/png"
|
||||
"io"
|
||||
"os"
|
||||
"os/exec"
|
||||
"os/signal"
|
||||
"path/filepath"
|
||||
"strconv"
|
||||
"syscall"
|
||||
"time"
|
||||
|
||||
bolt "go.etcd.io/bbolt"
|
||||
_ "golang.org/x/image/bmp"
|
||||
_ "golang.org/x/image/tiff"
|
||||
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/clipboard"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/models"
|
||||
@@ -144,6 +156,30 @@ var (
|
||||
clipConfigEnabled bool
|
||||
)
|
||||
|
||||
var clipExportCmd = &cobra.Command{
|
||||
Use: "export [file]",
|
||||
Short: "Export clipboard history to JSON",
|
||||
Long: "Export clipboard history to JSON file. If no file specified, writes to stdout.",
|
||||
Run: runClipExport,
|
||||
}
|
||||
|
||||
var clipImportCmd = &cobra.Command{
|
||||
Use: "import <file>",
|
||||
Short: "Import clipboard history from JSON",
|
||||
Long: "Import clipboard history from JSON file exported by 'dms cl export'.",
|
||||
Args: cobra.ExactArgs(1),
|
||||
Run: runClipImport,
|
||||
}
|
||||
|
||||
var clipMigrateCmd = &cobra.Command{
|
||||
Use: "cliphist-migrate [db-path]",
|
||||
Short: "Migrate from cliphist",
|
||||
Long: "Migrate clipboard history from cliphist. Uses default cliphist path if not specified.",
|
||||
Run: runClipMigrate,
|
||||
}
|
||||
|
||||
var clipMigrateDelete bool
|
||||
|
||||
func init() {
|
||||
clipCopyCmd.Flags().BoolVarP(&clipCopyForeground, "foreground", "f", false, "Stay in foreground instead of forking")
|
||||
clipCopyCmd.Flags().BoolVarP(&clipCopyPasteOnce, "paste-once", "o", false, "Exit after first paste")
|
||||
@@ -170,8 +206,10 @@ func init() {
|
||||
|
||||
clipWatchCmd.Flags().BoolVarP(&clipWatchStore, "store", "s", false, "Store clipboard changes to history (no server required)")
|
||||
|
||||
clipMigrateCmd.Flags().BoolVar(&clipMigrateDelete, "delete", false, "Delete cliphist db after successful migration")
|
||||
|
||||
clipConfigCmd.AddCommand(clipConfigGetCmd, clipConfigSetCmd)
|
||||
clipboardCmd.AddCommand(clipCopyCmd, clipPasteCmd, clipWatchCmd, clipHistoryCmd, clipGetCmd, clipDeleteCmd, clipClearCmd, clipSearchCmd, clipConfigCmd)
|
||||
clipboardCmd.AddCommand(clipCopyCmd, clipPasteCmd, clipWatchCmd, clipHistoryCmd, clipGetCmd, clipDeleteCmd, clipClearCmd, clipSearchCmd, clipConfigCmd, clipExportCmd, clipImportCmd, clipMigrateCmd)
|
||||
}
|
||||
|
||||
func runClipCopy(cmd *cobra.Command, args []string) {
|
||||
@@ -606,3 +644,154 @@ func runClipConfigSet(cmd *cobra.Command, args []string) {
|
||||
|
||||
fmt.Println("Config updated")
|
||||
}
|
||||
|
||||
func runClipExport(cmd *cobra.Command, args []string) {
|
||||
req := models.Request{
|
||||
ID: 1,
|
||||
Method: "clipboard.getHistory",
|
||||
}
|
||||
|
||||
resp, err := sendServerRequest(req)
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to get clipboard history: %v", err)
|
||||
}
|
||||
if resp.Error != "" {
|
||||
log.Fatalf("Error: %s", resp.Error)
|
||||
}
|
||||
if resp.Result == nil {
|
||||
log.Fatal("No clipboard history")
|
||||
}
|
||||
|
||||
out, err := json.MarshalIndent(resp.Result, "", " ")
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to marshal: %v", err)
|
||||
}
|
||||
|
||||
if len(args) == 0 {
|
||||
fmt.Println(string(out))
|
||||
return
|
||||
}
|
||||
|
||||
if err := os.WriteFile(args[0], out, 0644); err != nil {
|
||||
log.Fatalf("Failed to write file: %v", err)
|
||||
}
|
||||
fmt.Printf("Exported to %s\n", args[0])
|
||||
}
|
||||
|
||||
func runClipImport(cmd *cobra.Command, args []string) {
|
||||
data, err := os.ReadFile(args[0])
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to read file: %v", err)
|
||||
}
|
||||
|
||||
var entries []map[string]any
|
||||
if err := json.Unmarshal(data, &entries); err != nil {
|
||||
log.Fatalf("Failed to parse JSON: %v", err)
|
||||
}
|
||||
|
||||
var imported int
|
||||
for _, entry := range entries {
|
||||
dataStr, ok := entry["data"].(string)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
mimeType, _ := entry["mimeType"].(string)
|
||||
if mimeType == "" {
|
||||
mimeType = "text/plain"
|
||||
}
|
||||
|
||||
var entryData []byte
|
||||
if decoded, err := base64.StdEncoding.DecodeString(dataStr); err == nil {
|
||||
entryData = decoded
|
||||
} else {
|
||||
entryData = []byte(dataStr)
|
||||
}
|
||||
|
||||
if err := clipboard.Store(entryData, mimeType); err != nil {
|
||||
log.Errorf("Failed to store entry: %v", err)
|
||||
continue
|
||||
}
|
||||
imported++
|
||||
}
|
||||
|
||||
fmt.Printf("Imported %d entries\n", imported)
|
||||
}
|
||||
|
||||
func runClipMigrate(cmd *cobra.Command, args []string) {
|
||||
dbPath := getCliphistPath()
|
||||
if len(args) > 0 {
|
||||
dbPath = args[0]
|
||||
}
|
||||
|
||||
if _, err := os.Stat(dbPath); err != nil {
|
||||
log.Fatalf("Cliphist db not found: %s", dbPath)
|
||||
}
|
||||
|
||||
db, err := bolt.Open(dbPath, 0644, &bolt.Options{
|
||||
ReadOnly: true,
|
||||
Timeout: 1 * time.Second,
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatalf("Failed to open cliphist db: %v", err)
|
||||
}
|
||||
defer db.Close()
|
||||
|
||||
var migrated int
|
||||
err = db.View(func(tx *bolt.Tx) error {
|
||||
b := tx.Bucket([]byte("b"))
|
||||
if b == nil {
|
||||
return fmt.Errorf("cliphist bucket not found")
|
||||
}
|
||||
|
||||
c := b.Cursor()
|
||||
for k, v := c.First(); k != nil; k, v = c.Next() {
|
||||
if len(v) == 0 {
|
||||
continue
|
||||
}
|
||||
|
||||
mimeType := detectMimeType(v)
|
||||
if err := clipboard.Store(v, mimeType); err != nil {
|
||||
log.Errorf("Failed to store entry %d: %v", btoi(k), err)
|
||||
continue
|
||||
}
|
||||
migrated++
|
||||
}
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatalf("Migration failed: %v", err)
|
||||
}
|
||||
|
||||
fmt.Printf("Migrated %d entries from cliphist\n", migrated)
|
||||
|
||||
if !clipMigrateDelete {
|
||||
return
|
||||
}
|
||||
|
||||
db.Close()
|
||||
if err := os.Remove(dbPath); err != nil {
|
||||
log.Errorf("Failed to delete cliphist db: %v", err)
|
||||
return
|
||||
}
|
||||
os.Remove(filepath.Dir(dbPath))
|
||||
fmt.Println("Deleted cliphist db")
|
||||
}
|
||||
|
||||
func getCliphistPath() string {
|
||||
cacheDir, err := os.UserCacheDir()
|
||||
if err != nil {
|
||||
return filepath.Join(os.Getenv("HOME"), ".cache", "cliphist", "db")
|
||||
}
|
||||
return filepath.Join(cacheDir, "cliphist", "db")
|
||||
}
|
||||
|
||||
func detectMimeType(data []byte) string {
|
||||
if _, _, err := image.DecodeConfig(bytes.NewReader(data)); err == nil {
|
||||
return "image/png"
|
||||
}
|
||||
return "text/plain"
|
||||
}
|
||||
|
||||
func btoi(v []byte) uint64 {
|
||||
return binary.BigEndian.Uint64(v)
|
||||
}
|
||||
|
||||
26
core/go.mod
26
core/go.mod
@@ -9,28 +9,28 @@ require (
|
||||
github.com/charmbracelet/lipgloss v1.1.0
|
||||
github.com/charmbracelet/log v0.4.2
|
||||
github.com/fsnotify/fsnotify v1.9.0
|
||||
github.com/godbus/dbus/v5 v5.2.0
|
||||
github.com/godbus/dbus/v5 v5.2.2
|
||||
github.com/holoplot/go-evdev v0.0.0-20250804134636-ab1d56a1fe83
|
||||
github.com/pilebones/go-udev v0.9.1
|
||||
github.com/sblinch/kdl-go v0.0.0-20250930225324-bf4099d4614a
|
||||
github.com/spf13/cobra v1.10.1
|
||||
github.com/sblinch/kdl-go v0.0.0-20251203232544-981d4ecc17c3
|
||||
github.com/spf13/cobra v1.10.2
|
||||
github.com/stretchr/testify v1.11.1
|
||||
go.etcd.io/bbolt v1.4.3
|
||||
golang.org/x/exp v0.0.0-20251125195548-87e1e737ad39
|
||||
golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93
|
||||
golang.org/x/image v0.34.0
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/Microsoft/go-winio v0.6.2 // indirect
|
||||
github.com/ProtonMail/go-crypto v1.3.0 // indirect
|
||||
github.com/clipperhouse/displaywidth v0.6.0 // indirect
|
||||
github.com/clipperhouse/displaywidth v0.6.2 // indirect
|
||||
github.com/clipperhouse/stringish v0.1.1 // indirect
|
||||
github.com/clipperhouse/uax29/v2 v2.3.0 // indirect
|
||||
github.com/cloudflare/circl v1.6.1 // indirect
|
||||
github.com/cloudflare/circl v1.6.2 // indirect
|
||||
github.com/cyphar/filepath-securejoin v0.6.1 // indirect
|
||||
github.com/emirpasic/gods v1.18.1 // indirect
|
||||
github.com/go-git/gcfg/v2 v2.0.2 // indirect
|
||||
github.com/go-git/go-billy/v6 v6.0.0-20251126203821-7f9c95185ee0 // indirect
|
||||
github.com/go-git/go-billy/v6 v6.0.0-20251217170237-e9738f50a3cd // indirect
|
||||
github.com/go-logfmt/logfmt v0.6.1 // indirect
|
||||
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 // indirect
|
||||
github.com/kevinburke/ssh_config v1.4.0 // indirect
|
||||
@@ -38,21 +38,21 @@ require (
|
||||
github.com/pjbgf/sha1cd v0.5.0 // indirect
|
||||
github.com/sergi/go-diff v1.4.0 // indirect
|
||||
github.com/stretchr/objx v0.5.3 // indirect
|
||||
golang.org/x/crypto v0.45.0 // indirect
|
||||
golang.org/x/net v0.47.0 // indirect
|
||||
golang.org/x/crypto v0.46.0 // indirect
|
||||
golang.org/x/net v0.48.0 // indirect
|
||||
)
|
||||
|
||||
require (
|
||||
github.com/atotto/clipboard v0.1.4 // indirect
|
||||
github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect
|
||||
github.com/charmbracelet/colorprofile v0.3.3 // indirect
|
||||
github.com/charmbracelet/colorprofile v0.4.1 // indirect
|
||||
github.com/charmbracelet/harmonica v0.2.0 // indirect
|
||||
github.com/charmbracelet/x/ansi v0.11.2 // indirect
|
||||
github.com/charmbracelet/x/ansi v0.11.3 // indirect
|
||||
github.com/charmbracelet/x/cellbuf v0.0.14 // indirect
|
||||
github.com/charmbracelet/x/term v0.2.2 // indirect
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
github.com/erikgeiser/coninput v0.0.0-20211004153227-1c3628e74d0f // indirect
|
||||
github.com/go-git/go-git/v6 v6.0.0-20251128074608-48f817f57805
|
||||
github.com/go-git/go-git/v6 v6.0.0-20251231065035-29ae690a9f19
|
||||
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
||||
github.com/lucasb-eyer/go-colorful v1.3.0
|
||||
github.com/mattn/go-isatty v0.0.20 // indirect
|
||||
@@ -66,7 +66,7 @@ require (
|
||||
github.com/spf13/afero v1.15.0
|
||||
github.com/spf13/pflag v1.0.10 // indirect
|
||||
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
|
||||
golang.org/x/sys v0.38.0
|
||||
golang.org/x/sys v0.39.0
|
||||
golang.org/x/text v0.32.0
|
||||
gopkg.in/yaml.v3 v3.0.1 // indirect
|
||||
)
|
||||
|
||||
29
core/go.sum
29
core/go.sum
@@ -18,6 +18,8 @@ github.com/charmbracelet/bubbletea v1.3.10 h1:otUDHWMMzQSB0Pkc87rm691KZ3SWa4KUlv
|
||||
github.com/charmbracelet/bubbletea v1.3.10/go.mod h1:ORQfo0fk8U+po9VaNvnV95UPWA1BitP1E0N6xJPlHr4=
|
||||
github.com/charmbracelet/colorprofile v0.3.3 h1:DjJzJtLP6/NZ8p7Cgjno0CKGr7wwRJGxWUwh2IyhfAI=
|
||||
github.com/charmbracelet/colorprofile v0.3.3/go.mod h1:nB1FugsAbzq284eJcjfah2nhdSLppN2NqvfotkfRYP4=
|
||||
github.com/charmbracelet/colorprofile v0.4.1 h1:a1lO03qTrSIRaK8c3JRxJDZOvhvIeSco3ej+ngLk1kk=
|
||||
github.com/charmbracelet/colorprofile v0.4.1/go.mod h1:U1d9Dljmdf9DLegaJ0nGZNJvoXAhayhmidOdcBwAvKk=
|
||||
github.com/charmbracelet/harmonica v0.2.0 h1:8NxJWRWg/bzKqqEaaeFNipOu77YR5t8aSwG4pgaUBiQ=
|
||||
github.com/charmbracelet/harmonica v0.2.0/go.mod h1:KSri/1RMQOZLbw7AHqgcBycp8pgJnQMYYT8QZRqZ1Ao=
|
||||
github.com/charmbracelet/lipgloss v1.1.0 h1:vYXsiLHVkK7fp74RkV7b2kq9+zDLoEU4MZoFqR/noCY=
|
||||
@@ -26,18 +28,24 @@ github.com/charmbracelet/log v0.4.2 h1:hYt8Qj6a8yLnvR+h7MwsJv/XvmBJXiueUcI3cIxsy
|
||||
github.com/charmbracelet/log v0.4.2/go.mod h1:qifHGX/tc7eluv2R6pWIpyHDDrrb/AG71Pf2ysQu5nw=
|
||||
github.com/charmbracelet/x/ansi v0.11.2 h1:XAG3FSjiVtFvgEgGrNBkCNNYrsucAt8c6bfxHyROLLs=
|
||||
github.com/charmbracelet/x/ansi v0.11.2/go.mod h1:9tY2bzX5SiJCU0iWyskjBeI2BRQfvPqI+J760Mjf+Rg=
|
||||
github.com/charmbracelet/x/ansi v0.11.3 h1:6DcVaqWI82BBVM/atTyq6yBoRLZFBsnoDoX9GCu2YOI=
|
||||
github.com/charmbracelet/x/ansi v0.11.3/go.mod h1:yI7Zslym9tCJcedxz5+WBq+eUGMJT0bM06Fqy1/Y4dI=
|
||||
github.com/charmbracelet/x/cellbuf v0.0.14 h1:iUEMryGyFTelKW3THW4+FfPgi4fkmKnnaLOXuc+/Kj4=
|
||||
github.com/charmbracelet/x/cellbuf v0.0.14/go.mod h1:P447lJl49ywBbil/KjCk2HexGh4tEY9LH0/1QrZZ9rA=
|
||||
github.com/charmbracelet/x/term v0.2.2 h1:xVRT/S2ZcKdhhOuSP4t5cLi5o+JxklsoEObBSgfgZRk=
|
||||
github.com/charmbracelet/x/term v0.2.2/go.mod h1:kF8CY5RddLWrsgVwpw4kAa6TESp6EB5y3uxGLeCqzAI=
|
||||
github.com/clipperhouse/displaywidth v0.6.0 h1:k32vueaksef9WIKCNcoqRNyKbyvkvkysNYnAWz2fN4s=
|
||||
github.com/clipperhouse/displaywidth v0.6.0/go.mod h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o=
|
||||
github.com/clipperhouse/displaywidth v0.6.2 h1:ZDpTkFfpHOKte4RG5O/BOyf3ysnvFswpyYrV7z2uAKo=
|
||||
github.com/clipperhouse/displaywidth v0.6.2/go.mod h1:R+kHuzaYWFkTm7xoMmK1lFydbci4X2CicfbGstSGg0o=
|
||||
github.com/clipperhouse/stringish v0.1.1 h1:+NSqMOr3GR6k1FdRhhnXrLfztGzuG+VuFDfatpWHKCs=
|
||||
github.com/clipperhouse/stringish v0.1.1/go.mod h1:v/WhFtE1q0ovMta2+m+UbpZ+2/HEXNWYXQgCt4hdOzA=
|
||||
github.com/clipperhouse/uax29/v2 v2.3.0 h1:SNdx9DVUqMoBuBoW3iLOj4FQv3dN5mDtuqwuhIGpJy4=
|
||||
github.com/clipperhouse/uax29/v2 v2.3.0/go.mod h1:Wn1g7MK6OoeDT0vL+Q0SQLDz/KpfsVRgg6W7ihQeh4g=
|
||||
github.com/cloudflare/circl v1.6.1 h1:zqIqSPIndyBh1bjLVVDHMPpVKqp8Su/V+6MeDzzQBQ0=
|
||||
github.com/cloudflare/circl v1.6.1/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs=
|
||||
github.com/cloudflare/circl v1.6.2 h1:hL7VBpHHKzrV5WTfHCaBsgx/HGbBYlgrwvNXEVDYYsQ=
|
||||
github.com/cloudflare/circl v1.6.2/go.mod h1:2eXP6Qfat4O/Yhh8BznvKnJ+uzEoTQ6jVKJRn81BiS4=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
|
||||
github.com/cyphar/filepath-securejoin v0.6.1 h1:5CeZ1jPXEiYt3+Z6zqprSAgSWiggmpVyciv8syjIpVE=
|
||||
github.com/cyphar/filepath-securejoin v0.6.1/go.mod h1:A8hd4EnAeyujCJRrICiOWqjS1AX0a9kM5XL+NwKoYSc=
|
||||
@@ -58,15 +66,22 @@ github.com/go-git/gcfg/v2 v2.0.2 h1:MY5SIIfTGGEMhdA7d7JePuVVxtKL7Hp+ApGDJAJ7dpo=
|
||||
github.com/go-git/gcfg/v2 v2.0.2/go.mod h1:/lv2NsxvhepuMrldsFilrgct6pxzpGdSRC13ydTLSLs=
|
||||
github.com/go-git/go-billy/v6 v6.0.0-20251126203821-7f9c95185ee0 h1:eY5aB2GXiVdgTueBcqsBt53WuJTRZAuCdIS/86Pcq5c=
|
||||
github.com/go-git/go-billy/v6 v6.0.0-20251126203821-7f9c95185ee0/go.mod h1:0NjwVNrwtVFZBReAp5OoGklGJIgJFEbVyHneAr4lc8k=
|
||||
github.com/go-git/go-billy/v6 v6.0.0-20251217170237-e9738f50a3cd h1:Gd/f9cGi/3h1JOPaa6er+CkKUGyGX2DBJdFbDKVO+R0=
|
||||
github.com/go-git/go-billy/v6 v6.0.0-20251217170237-e9738f50a3cd/go.mod h1:d3XQcsHu1idnquxt48kAv+h+1MUiYKLH/e7LAzjP+pI=
|
||||
github.com/go-git/go-git-fixtures/v5 v5.1.1 h1:OH8i1ojV9bWfr0ZfasfpgtUXQHQyVS8HXik/V1C099w=
|
||||
github.com/go-git/go-git-fixtures/v5 v5.1.1/go.mod h1:Altk43lx3b1ks+dVoAG2300o5WWUnktvfY3VI6bcaXU=
|
||||
github.com/go-git/go-git-fixtures/v5 v5.1.2-0.20251229094738-4b14af179146 h1:xYfxAopYyL44ot6dMBIb1Z1njFM0ZBQ99HdIB99KxLs=
|
||||
github.com/go-git/go-git/v6 v6.0.0-20251128074608-48f817f57805 h1:jxQ3BzYeErNRvlI/4+0mpwqMzvB4g97U+ksfgvrUEbY=
|
||||
github.com/go-git/go-git/v6 v6.0.0-20251128074608-48f817f57805/go.mod h1:dIwT3uWK1ooHInyVnK2JS5VfQ3peVGYaw2QPqX7uFvs=
|
||||
github.com/go-git/go-git/v6 v6.0.0-20251231065035-29ae690a9f19 h1:0lz2eJScP8v5YZQsrEw+ggWC5jNySjg4bIZo5BIh6iI=
|
||||
github.com/go-git/go-git/v6 v6.0.0-20251231065035-29ae690a9f19/go.mod h1:L+Evfcs7EdTqxwv854354cb6+++7TFL3hJn3Wy4g+3w=
|
||||
github.com/go-logfmt/logfmt v0.6.1 h1:4hvbpePJKnIzH1B+8OR/JPbTx37NktoI9LE2QZBBkvE=
|
||||
github.com/go-logfmt/logfmt v0.6.1/go.mod h1:EV2pOAQoZaT1ZXZbqDl5hrymndi4SY9ED9/z6CO0XAk=
|
||||
github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
|
||||
github.com/godbus/dbus/v5 v5.2.0 h1:3WexO+U+yg9T70v9FdHr9kCxYlazaAXUhx2VMkbfax8=
|
||||
github.com/godbus/dbus/v5 v5.2.0/go.mod h1:3AAv2+hPq5rdnr5txxxRwiGjPXamgoIHgz9FPBfOp3c=
|
||||
github.com/godbus/dbus/v5 v5.2.2 h1:TUR3TgtSVDmjiXOgAAyaZbYmIeP3DPkld3jgKGV8mXQ=
|
||||
github.com/godbus/dbus/v5 v5.2.2/go.mod h1:3AAv2+hPq5rdnr5txxxRwiGjPXamgoIHgz9FPBfOp3c=
|
||||
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8 h1:f+oWsMOmNPc8JmEHVZIycC7hBoQxHH9pNKQORJNozsQ=
|
||||
github.com/golang/groupcache v0.0.0-20241129210726-2c02b8208cf8/go.mod h1:wcDNUvekVysuuOpQKo3191zZyTpiI6se1N1ULghS0sw=
|
||||
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
||||
@@ -114,12 +129,16 @@ github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7
|
||||
github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||
github.com/sblinch/kdl-go v0.0.0-20250930225324-bf4099d4614a h1:8ZZwZWIQKC0YVMyaCkbrdeI8faTjD1QBrRAAWc1TjMI=
|
||||
github.com/sblinch/kdl-go v0.0.0-20250930225324-bf4099d4614a/go.mod h1:b3oNGuAKOQzhsCKmuLc/urEOPzgHj6fB8vl8bwTBh28=
|
||||
github.com/sblinch/kdl-go v0.0.0-20251203232544-981d4ecc17c3 h1:msKaIZrrNpvofLPDzNBW3152PJBsnPZsoNNosOCS+C0=
|
||||
github.com/sblinch/kdl-go v0.0.0-20251203232544-981d4ecc17c3/go.mod h1:b3oNGuAKOQzhsCKmuLc/urEOPzgHj6fB8vl8bwTBh28=
|
||||
github.com/sergi/go-diff v1.4.0 h1:n/SP9D5ad1fORl+llWyN+D6qoUETXNZARKjyY2/KVCw=
|
||||
github.com/sergi/go-diff v1.4.0/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4=
|
||||
github.com/spf13/afero v1.15.0 h1:b/YBCLWAJdFWJTN9cLhiXXcD7mzKn9Dm86dNnfyQw1I=
|
||||
github.com/spf13/afero v1.15.0/go.mod h1:NC2ByUVxtQs4b3sIUphxK0NioZnmxgyCrfzeuq8lxMg=
|
||||
github.com/spf13/cobra v1.10.1 h1:lJeBwCfmrnXthfAupyUTzJ/J4Nc1RsHC/mSRU2dll/s=
|
||||
github.com/spf13/cobra v1.10.1/go.mod h1:7SmJGaTHFVBY0jW4NXGluQoLvhqFQM+6XSKD+P4XaB0=
|
||||
github.com/spf13/cobra v1.10.2 h1:DMTTonx5m65Ic0GOoRY2c16WCbHxOOw6xxezuLaBpcU=
|
||||
github.com/spf13/cobra v1.10.2/go.mod h1:7C1pvHqHw5A4vrJfjNwvOdzYu0Gml16OCs2GRiTUUS4=
|
||||
github.com/spf13/pflag v1.0.9/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||
github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
|
||||
github.com/spf13/pflag v1.0.10/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||
@@ -133,22 +152,32 @@ github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e h1:JVG44RsyaB9T2KIHavM
|
||||
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e/go.mod h1:RbqR21r5mrJuqunuUZ/Dhy/avygyECGrLceyNeo4LiM=
|
||||
go.etcd.io/bbolt v1.4.3 h1:dEadXpI6G79deX5prL3QRNP6JB8UxVkqo4UPnHaNXJo=
|
||||
go.etcd.io/bbolt v1.4.3/go.mod h1:tKQlpPaYCVFctUIgFKFnAlvbmB3tpy1vkTnDWohtc0E=
|
||||
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
|
||||
golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q=
|
||||
golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4=
|
||||
golang.org/x/crypto v0.46.0 h1:cKRW/pmt1pKAfetfu+RCEvjvZkA9RimPbh7bhFjGVBU=
|
||||
golang.org/x/crypto v0.46.0/go.mod h1:Evb/oLKmMraqjZ2iQTwDwvCtJkczlDuTmdJXoZVzqU0=
|
||||
golang.org/x/exp v0.0.0-20251125195548-87e1e737ad39 h1:DHNhtq3sNNzrvduZZIiFyXWOL9IWaDPHqTnLJp+rCBY=
|
||||
golang.org/x/exp v0.0.0-20251125195548-87e1e737ad39/go.mod h1:46edojNIoXTNOhySWIWdix628clX9ODXwPsQuG6hsK0=
|
||||
golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93 h1:fQsdNF2N+/YewlRZiricy4P1iimyPKZ/xwniHj8Q2a0=
|
||||
golang.org/x/exp v0.0.0-20251219203646-944ab1f22d93/go.mod h1:EPRbTFwzwjXj9NpYyyrvenVh9Y+GFeEvMNh7Xuz7xgU=
|
||||
golang.org/x/image v0.34.0 h1:33gCkyw9hmwbZJeZkct8XyR11yH889EQt/QH4VmXMn8=
|
||||
golang.org/x/image v0.34.0/go.mod h1:2RNFBZRB+vnwwFil8GkMdRvrJOFd1AzdZI6vOY+eJVU=
|
||||
golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
|
||||
golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
|
||||
golang.org/x/net v0.48.0 h1:zyQRTTrjc33Lhh0fBgT/H3oZq9WuvRR5gPC70xpDiQU=
|
||||
golang.org/x/net v0.48.0/go.mod h1:+ndRgGjkh8FGtu1w1FGbEC31if4VrNVMuKTgcAAnQRY=
|
||||
golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
|
||||
golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
|
||||
golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
|
||||
golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
|
||||
golang.org/x/sys v0.39.0 h1:CvCKL8MeisomCi6qNZ+wbb0DN9E5AATixKsvNtMoMFk=
|
||||
golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
|
||||
golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU=
|
||||
golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254=
|
||||
golang.org/x/term v0.38.0 h1:PQ5pkm/rLO6HnxFR7N2lJHOZX6Kez5Y1gDSJla6jo7Q=
|
||||
golang.org/x/text v0.32.0 h1:ZD01bjUt1FQ9WJ0ClOL5vxgxOI/sVCNgX1YtKwcY0mU=
|
||||
golang.org/x/text v0.32.0/go.mod h1:o/rUWzghvpD5TXrTIBuJU77MTaN0ljMWE47kxGJQ7jY=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
|
||||
@@ -55,7 +55,7 @@ func StoreWithConfig(data []byte, mimeType string, cfg StoreConfig) error {
|
||||
return fmt.Errorf("data too large: %d > %d", len(data), cfg.MaxEntrySize)
|
||||
}
|
||||
|
||||
dbPath, err := getDBPath()
|
||||
dbPath, err := GetDBPath()
|
||||
if err != nil {
|
||||
return fmt.Errorf("get db path: %w", err)
|
||||
}
|
||||
@@ -111,7 +111,7 @@ func StoreWithConfig(data []byte, mimeType string, cfg StoreConfig) error {
|
||||
})
|
||||
}
|
||||
|
||||
func getDBPath() (string, error) {
|
||||
func GetDBPath() (string, error) {
|
||||
cacheDir, err := os.UserCacheDir()
|
||||
if err != nil {
|
||||
homeDir, err := os.UserHomeDir()
|
||||
@@ -121,12 +121,31 @@ func getDBPath() (string, error) {
|
||||
cacheDir = filepath.Join(homeDir, ".cache")
|
||||
}
|
||||
|
||||
dbDir := filepath.Join(cacheDir, "dms-clipboard")
|
||||
if err := os.MkdirAll(dbDir, 0700); err != nil {
|
||||
return "", err
|
||||
newDir := filepath.Join(cacheDir, "DankMaterialShell", "clipboard")
|
||||
newPath := filepath.Join(newDir, "db")
|
||||
|
||||
if _, err := os.Stat(newPath); err == nil {
|
||||
return newPath, nil
|
||||
}
|
||||
|
||||
return filepath.Join(dbDir, "db"), nil
|
||||
oldDir := filepath.Join(cacheDir, "dms-clipboard")
|
||||
oldPath := filepath.Join(oldDir, "db")
|
||||
|
||||
if _, err := os.Stat(oldPath); err == nil {
|
||||
if err := os.MkdirAll(newDir, 0700); err != nil {
|
||||
return "", err
|
||||
}
|
||||
if err := os.Rename(oldPath, newPath); err != nil {
|
||||
return "", err
|
||||
}
|
||||
os.Remove(oldDir)
|
||||
return newPath, nil
|
||||
}
|
||||
|
||||
if err := os.MkdirAll(newDir, 0700); err != nil {
|
||||
return "", err
|
||||
}
|
||||
return newPath, nil
|
||||
}
|
||||
|
||||
func deduplicateInTx(b *bolt.Bucket, hash uint64) error {
|
||||
|
||||
@@ -210,6 +210,7 @@ func (cd *ConfigDeployer) deployNiriDmsConfigs(dmsDir, terminalCommand string) e
|
||||
{"alttab.kdl", NiriAlttabConfig},
|
||||
{"binds.kdl", strings.ReplaceAll(NiriBindsConfig, "{{TERMINAL_COMMAND}}", terminalCommand)},
|
||||
{"outputs.kdl", ""},
|
||||
{"cursor.kdl", ""},
|
||||
}
|
||||
|
||||
for _, cfg := range configs {
|
||||
@@ -560,6 +561,7 @@ func (cd *ConfigDeployer) deployHyprlandDmsConfigs(dmsDir string) error {
|
||||
{"colors.conf", HyprColorsConfig},
|
||||
{"layout.conf", HyprLayoutConfig},
|
||||
{"outputs.conf", ""},
|
||||
{"cursor.conf", ""},
|
||||
}
|
||||
|
||||
for _, cfg := range configs {
|
||||
|
||||
@@ -275,3 +275,4 @@ bind = $mod SHIFT, P, dpms, toggle
|
||||
source = ./dms/colors.conf
|
||||
source = ./dms/outputs.conf
|
||||
source = ./dms/layout.conf
|
||||
source = ./dms/cursor.conf
|
||||
|
||||
@@ -1,8 +1,3 @@
|
||||
// ! DO NOT EDIT !
|
||||
// ! AUTO-GENERATED BY DMS !
|
||||
// ! CHANGES WILL BE OVERWRITTEN !
|
||||
// ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE !
|
||||
|
||||
binds {
|
||||
// === System & Overview ===
|
||||
Mod+D repeat=false { toggle-overview; }
|
||||
|
||||
@@ -270,3 +270,4 @@ include "dms/layout.kdl"
|
||||
include "dms/alttab.kdl"
|
||||
include "dms/binds.kdl"
|
||||
include "dms/outputs.kdl"
|
||||
include "dms/cursor.kdl"
|
||||
|
||||
@@ -461,16 +461,9 @@ func (n *NiriProvider) getBindSortPriority(action string) int {
|
||||
}
|
||||
}
|
||||
|
||||
const dmsWarningHeader = `// ! DO NOT EDIT !
|
||||
// ! AUTO-GENERATED BY DMS !
|
||||
// ! CHANGES WILL BE OVERWRITTEN !
|
||||
// ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE !
|
||||
|
||||
`
|
||||
|
||||
func (n *NiriProvider) generateBindsContent(binds map[string]*overrideBind) string {
|
||||
if len(binds) == 0 {
|
||||
return dmsWarningHeader + "binds {}\n"
|
||||
return "binds {}\n"
|
||||
}
|
||||
|
||||
var regularBinds, recentWindowsBinds []*overrideBind
|
||||
@@ -497,7 +490,6 @@ func (n *NiriProvider) generateBindsContent(binds map[string]*overrideBind) stri
|
||||
|
||||
var sb strings.Builder
|
||||
|
||||
sb.WriteString(dmsWarningHeader)
|
||||
sb.WriteString("binds {\n")
|
||||
for _, bind := range regularBinds {
|
||||
n.writeBindNode(&sb, bind, " ")
|
||||
|
||||
@@ -6,13 +6,6 @@ import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
const testHeader = `// ! DO NOT EDIT !
|
||||
// ! AUTO-GENERATED BY DMS !
|
||||
// ! CHANGES WILL BE OVERWRITTEN !
|
||||
// ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE !
|
||||
|
||||
`
|
||||
|
||||
func TestNiriProviderName(t *testing.T) {
|
||||
provider := NewNiriProvider("")
|
||||
if provider.Name() != "niri" {
|
||||
@@ -204,7 +197,7 @@ func TestNiriGenerateBindsContent(t *testing.T) {
|
||||
{
|
||||
name: "empty binds",
|
||||
binds: map[string]*overrideBind{},
|
||||
expected: testHeader + "binds {}\n",
|
||||
expected: "binds {}\n",
|
||||
},
|
||||
{
|
||||
name: "simple spawn bind",
|
||||
@@ -215,7 +208,7 @@ func TestNiriGenerateBindsContent(t *testing.T) {
|
||||
Description: "Open Terminal",
|
||||
},
|
||||
},
|
||||
expected: testHeader + `binds {
|
||||
expected: `binds {
|
||||
Mod+T hotkey-overlay-title="Open Terminal" { spawn "kitty"; }
|
||||
}
|
||||
`,
|
||||
@@ -229,7 +222,7 @@ func TestNiriGenerateBindsContent(t *testing.T) {
|
||||
Description: "Application Launcher",
|
||||
},
|
||||
},
|
||||
expected: testHeader + `binds {
|
||||
expected: `binds {
|
||||
Mod+Space hotkey-overlay-title="Application Launcher" { spawn "dms" "ipc" "call" "spotlight" "toggle"; }
|
||||
}
|
||||
`,
|
||||
@@ -243,7 +236,7 @@ func TestNiriGenerateBindsContent(t *testing.T) {
|
||||
Options: map[string]any{"allow-when-locked": true},
|
||||
},
|
||||
},
|
||||
expected: testHeader + `binds {
|
||||
expected: `binds {
|
||||
XF86AudioMute allow-when-locked=true { spawn "dms" "ipc" "call" "audio" "mute"; }
|
||||
}
|
||||
`,
|
||||
@@ -257,7 +250,7 @@ func TestNiriGenerateBindsContent(t *testing.T) {
|
||||
Description: "Close Window",
|
||||
},
|
||||
},
|
||||
expected: testHeader + `binds {
|
||||
expected: `binds {
|
||||
Mod+Q hotkey-overlay-title="Close Window" { close-window; }
|
||||
}
|
||||
`,
|
||||
@@ -270,7 +263,7 @@ func TestNiriGenerateBindsContent(t *testing.T) {
|
||||
Action: "next-window",
|
||||
},
|
||||
},
|
||||
expected: testHeader + `binds {
|
||||
expected: `binds {
|
||||
}
|
||||
|
||||
recent-windows {
|
||||
@@ -422,7 +415,7 @@ func TestNiriGenerateBindsContentNumericArgs(t *testing.T) {
|
||||
Description: "Focus Workspace 1",
|
||||
},
|
||||
},
|
||||
expected: testHeader + `binds {
|
||||
expected: `binds {
|
||||
Mod+1 hotkey-overlay-title="Focus Workspace 1" { focus-workspace 1; }
|
||||
}
|
||||
`,
|
||||
@@ -436,7 +429,7 @@ func TestNiriGenerateBindsContentNumericArgs(t *testing.T) {
|
||||
Description: "Focus Workspace 10",
|
||||
},
|
||||
},
|
||||
expected: testHeader + `binds {
|
||||
expected: `binds {
|
||||
Mod+0 hotkey-overlay-title="Focus Workspace 10" { focus-workspace 10; }
|
||||
}
|
||||
`,
|
||||
@@ -450,7 +443,7 @@ func TestNiriGenerateBindsContentNumericArgs(t *testing.T) {
|
||||
Description: "Adjust Column Width -10%",
|
||||
},
|
||||
},
|
||||
expected: testHeader + `binds {
|
||||
expected: `binds {
|
||||
Super+Minus hotkey-overlay-title="Adjust Column Width -10%" { set-column-width "-10%"; }
|
||||
}
|
||||
`,
|
||||
@@ -464,7 +457,7 @@ func TestNiriGenerateBindsContentNumericArgs(t *testing.T) {
|
||||
Description: "Adjust Column Width +10%",
|
||||
},
|
||||
},
|
||||
expected: testHeader + `binds {
|
||||
expected: `binds {
|
||||
Super+Equal hotkey-overlay-title="Adjust Column Width +10%" { set-column-width "+10%"; }
|
||||
}
|
||||
`,
|
||||
@@ -493,7 +486,7 @@ func TestNiriGenerateActionWithUnquotedPercentArg(t *testing.T) {
|
||||
}
|
||||
|
||||
content := provider.generateBindsContent(binds)
|
||||
expected := testHeader + `binds {
|
||||
expected := `binds {
|
||||
Super+Equal hotkey-overlay-title="Adjust Window Height +10%" { set-window-height "+10%"; }
|
||||
}
|
||||
`
|
||||
@@ -514,7 +507,7 @@ func TestNiriGenerateSpawnWithNumericArgs(t *testing.T) {
|
||||
}
|
||||
|
||||
content := provider.generateBindsContent(binds)
|
||||
expected := testHeader + `binds {
|
||||
expected := `binds {
|
||||
XF86AudioLowerVolume allow-when-locked=true { spawn "dms" "ipc" "call" "audio" "decrement" "3"; }
|
||||
}
|
||||
`
|
||||
@@ -535,7 +528,7 @@ func TestNiriGenerateSpawnNumericArgFromCLI(t *testing.T) {
|
||||
}
|
||||
|
||||
content := provider.generateBindsContent(binds)
|
||||
expected := testHeader + `binds {
|
||||
expected := `binds {
|
||||
XF86AudioLowerVolume allow-when-locked=true { spawn "dms" "ipc" "call" "audio" "decrement" "3"; }
|
||||
}
|
||||
`
|
||||
|
||||
@@ -24,6 +24,7 @@ import (
|
||||
|
||||
bolt "go.etcd.io/bbolt"
|
||||
|
||||
clipboardstore "github.com/AvengeMedia/DankMaterialShell/core/internal/clipboard"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/proto/ext_data_control"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/server/wlcontext"
|
||||
@@ -37,7 +38,7 @@ var sensitiveMimeTypes = []string{
|
||||
|
||||
func NewManager(wlCtx wlcontext.WaylandContext, config Config) (*Manager, error) {
|
||||
display := wlCtx.Display()
|
||||
dbPath, err := getDBPath()
|
||||
dbPath, err := clipboardstore.GetDBPath()
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to get db path: %w", err)
|
||||
}
|
||||
@@ -102,24 +103,6 @@ func NewManager(wlCtx wlcontext.WaylandContext, config Config) (*Manager, error)
|
||||
return m, nil
|
||||
}
|
||||
|
||||
func getDBPath() (string, error) {
|
||||
cacheDir := os.Getenv("XDG_CACHE_HOME")
|
||||
if cacheDir == "" {
|
||||
homeDir, err := os.UserHomeDir()
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
cacheDir = filepath.Join(homeDir, ".cache")
|
||||
}
|
||||
|
||||
dbDir := filepath.Join(cacheDir, "dms-clipboard")
|
||||
if err := os.MkdirAll(dbDir, 0700); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return filepath.Join(dbDir, "db"), nil
|
||||
}
|
||||
|
||||
func openDB(path string) (*bolt.DB, error) {
|
||||
db, err := bolt.Open(path, 0644, &bolt.Options{
|
||||
Timeout: 1 * time.Second,
|
||||
|
||||
@@ -13,6 +13,7 @@ const (
|
||||
dbusNMPath = "/org/freedesktop/NetworkManager"
|
||||
dbusNMInterface = "org.freedesktop.NetworkManager"
|
||||
dbusNMDeviceInterface = "org.freedesktop.NetworkManager.Device"
|
||||
dbusNMWiredInterface = "org.freedesktop.NetworkManager.Device.Wired"
|
||||
dbusNMWirelessInterface = "org.freedesktop.NetworkManager.Device.Wireless"
|
||||
dbusNMAccessPointInterface = "org.freedesktop.NetworkManager.AccessPoint"
|
||||
dbusPropsInterface = "org.freedesktop.DBus.Properties"
|
||||
|
||||
@@ -81,44 +81,24 @@ func (b *NetworkManagerBackend) startSignalPump() error {
|
||||
return err
|
||||
}
|
||||
|
||||
if b.wifiDevice != nil {
|
||||
dev := b.wifiDevice.(gonetworkmanager.Device)
|
||||
for _, info := range b.wifiDevices {
|
||||
if err := conn.AddMatchSignal(
|
||||
dbus.WithMatchObjectPath(dbus.ObjectPath(dev.GetPath())),
|
||||
dbus.WithMatchObjectPath(dbus.ObjectPath(info.device.GetPath())),
|
||||
dbus.WithMatchInterface(dbusPropsInterface),
|
||||
dbus.WithMatchMember("PropertiesChanged"),
|
||||
); err != nil {
|
||||
conn.RemoveMatchSignal(
|
||||
dbus.WithMatchObjectPath(dbus.ObjectPath(dbusNMPath)),
|
||||
dbus.WithMatchInterface(dbusPropsInterface),
|
||||
dbus.WithMatchMember("PropertiesChanged"),
|
||||
)
|
||||
conn.RemoveSignal(signals)
|
||||
conn.Close()
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
if b.ethernetDevice != nil {
|
||||
dev := b.ethernetDevice.(gonetworkmanager.Device)
|
||||
for _, info := range b.ethernetDevices {
|
||||
if err := conn.AddMatchSignal(
|
||||
dbus.WithMatchObjectPath(dbus.ObjectPath(dev.GetPath())),
|
||||
dbus.WithMatchObjectPath(dbus.ObjectPath(info.device.GetPath())),
|
||||
dbus.WithMatchInterface(dbusPropsInterface),
|
||||
dbus.WithMatchMember("PropertiesChanged"),
|
||||
); err != nil {
|
||||
conn.RemoveMatchSignal(
|
||||
dbus.WithMatchObjectPath(dbus.ObjectPath(dbusNMPath)),
|
||||
dbus.WithMatchInterface(dbusPropsInterface),
|
||||
dbus.WithMatchMember("PropertiesChanged"),
|
||||
)
|
||||
if b.wifiDevice != nil {
|
||||
dev := b.wifiDevice.(gonetworkmanager.Device)
|
||||
conn.RemoveMatchSignal(
|
||||
dbus.WithMatchObjectPath(dbus.ObjectPath(dev.GetPath())),
|
||||
dbus.WithMatchInterface(dbusPropsInterface),
|
||||
dbus.WithMatchMember("PropertiesChanged"),
|
||||
)
|
||||
}
|
||||
conn.RemoveSignal(signals)
|
||||
conn.Close()
|
||||
return err
|
||||
@@ -157,19 +137,17 @@ func (b *NetworkManagerBackend) stopSignalPump() {
|
||||
dbus.WithMatchMember("PropertiesChanged"),
|
||||
)
|
||||
|
||||
if b.wifiDevice != nil {
|
||||
dev := b.wifiDevice.(gonetworkmanager.Device)
|
||||
for _, info := range b.wifiDevices {
|
||||
b.dbusConn.RemoveMatchSignal(
|
||||
dbus.WithMatchObjectPath(dbus.ObjectPath(dev.GetPath())),
|
||||
dbus.WithMatchObjectPath(dbus.ObjectPath(info.device.GetPath())),
|
||||
dbus.WithMatchInterface(dbusPropsInterface),
|
||||
dbus.WithMatchMember("PropertiesChanged"),
|
||||
)
|
||||
}
|
||||
|
||||
if b.ethernetDevice != nil {
|
||||
dev := b.ethernetDevice.(gonetworkmanager.Device)
|
||||
for _, info := range b.ethernetDevices {
|
||||
b.dbusConn.RemoveMatchSignal(
|
||||
dbus.WithMatchObjectPath(dbus.ObjectPath(dev.GetPath())),
|
||||
dbus.WithMatchObjectPath(dbus.ObjectPath(info.device.GetPath())),
|
||||
dbus.WithMatchInterface(dbusPropsInterface),
|
||||
dbus.WithMatchMember("PropertiesChanged"),
|
||||
)
|
||||
@@ -232,7 +210,10 @@ func (b *NetworkManagerBackend) handleDBusSignal(sig *dbus.Signal) {
|
||||
b.handleNetworkManagerChange(changes)
|
||||
|
||||
case dbusNMDeviceInterface:
|
||||
b.handleDeviceChange(changes)
|
||||
b.handleDeviceChange(sig.Path, changes)
|
||||
|
||||
case dbusNMWiredInterface:
|
||||
b.handleWiredChange(changes)
|
||||
|
||||
case dbusNMWirelessInterface:
|
||||
b.handleWiFiChange(changes)
|
||||
@@ -278,9 +259,10 @@ func (b *NetworkManagerBackend) handleNetworkManagerChange(changes map[string]db
|
||||
}
|
||||
}
|
||||
|
||||
func (b *NetworkManagerBackend) handleDeviceChange(changes map[string]dbus.Variant) {
|
||||
func (b *NetworkManagerBackend) handleDeviceChange(devicePath dbus.ObjectPath, changes map[string]dbus.Variant) {
|
||||
var needsUpdate bool
|
||||
var stateChanged bool
|
||||
var managedChanged bool
|
||||
|
||||
for key := range changes {
|
||||
switch key {
|
||||
@@ -289,21 +271,61 @@ func (b *NetworkManagerBackend) handleDeviceChange(changes map[string]dbus.Varia
|
||||
needsUpdate = true
|
||||
case "Ip4Config":
|
||||
needsUpdate = true
|
||||
case "Managed":
|
||||
managedChanged = true
|
||||
default:
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
if needsUpdate {
|
||||
b.updateEthernetState()
|
||||
b.updateWiFiState()
|
||||
if stateChanged {
|
||||
b.updatePrimaryConnection()
|
||||
if managedChanged {
|
||||
if managedVariant, ok := changes["Managed"]; ok {
|
||||
if managed, ok := managedVariant.Value().(bool); ok && managed {
|
||||
b.handleDeviceAdded(devicePath)
|
||||
return
|
||||
}
|
||||
}
|
||||
if b.onStateChange != nil {
|
||||
b.onStateChange()
|
||||
}
|
||||
|
||||
if !needsUpdate {
|
||||
return
|
||||
}
|
||||
|
||||
b.updateAllEthernetDevices()
|
||||
b.updateEthernetState()
|
||||
b.updateAllWiFiDevices()
|
||||
b.updateWiFiState()
|
||||
if stateChanged {
|
||||
b.listEthernetConnections()
|
||||
b.updatePrimaryConnection()
|
||||
}
|
||||
if b.onStateChange != nil {
|
||||
b.onStateChange()
|
||||
}
|
||||
}
|
||||
|
||||
func (b *NetworkManagerBackend) handleWiredChange(changes map[string]dbus.Variant) {
|
||||
var needsUpdate bool
|
||||
|
||||
for key := range changes {
|
||||
switch key {
|
||||
case "Carrier", "Speed", "HwAddress":
|
||||
needsUpdate = true
|
||||
default:
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
if !needsUpdate {
|
||||
return
|
||||
}
|
||||
|
||||
b.updateAllEthernetDevices()
|
||||
b.updateEthernetState()
|
||||
b.updatePrimaryConnection()
|
||||
if b.onStateChange != nil {
|
||||
b.onStateChange()
|
||||
}
|
||||
}
|
||||
|
||||
func (b *NetworkManagerBackend) handleWiFiChange(changes map[string]dbus.Variant) {
|
||||
@@ -369,6 +391,18 @@ func (b *NetworkManagerBackend) handleDeviceAdded(devicePath dbus.ObjectPath) {
|
||||
return
|
||||
}
|
||||
|
||||
if devType != gonetworkmanager.NmDeviceTypeEthernet && devType != gonetworkmanager.NmDeviceTypeWifi {
|
||||
return
|
||||
}
|
||||
|
||||
if b.dbusConn != nil {
|
||||
b.dbusConn.AddMatchSignal(
|
||||
dbus.WithMatchObjectPath(devicePath),
|
||||
dbus.WithMatchInterface(dbusPropsInterface),
|
||||
dbus.WithMatchMember("PropertiesChanged"),
|
||||
)
|
||||
}
|
||||
|
||||
managed, _ := dev.GetPropertyManaged()
|
||||
if !managed {
|
||||
return
|
||||
@@ -398,14 +432,6 @@ func (b *NetworkManagerBackend) handleDeviceAdded(devicePath dbus.ObjectPath) {
|
||||
b.ethernetDevice = dev
|
||||
}
|
||||
|
||||
if b.dbusConn != nil {
|
||||
b.dbusConn.AddMatchSignal(
|
||||
dbus.WithMatchObjectPath(devicePath),
|
||||
dbus.WithMatchInterface(dbusPropsInterface),
|
||||
dbus.WithMatchMember("PropertiesChanged"),
|
||||
)
|
||||
}
|
||||
|
||||
b.updateAllEthernetDevices()
|
||||
b.updateEthernetState()
|
||||
b.listEthernetConnections()
|
||||
@@ -430,14 +456,6 @@ func (b *NetworkManagerBackend) handleDeviceAdded(devicePath dbus.ObjectPath) {
|
||||
b.wifiDev = w
|
||||
}
|
||||
|
||||
if b.dbusConn != nil {
|
||||
b.dbusConn.AddMatchSignal(
|
||||
dbus.WithMatchObjectPath(devicePath),
|
||||
dbus.WithMatchInterface(dbusPropsInterface),
|
||||
dbus.WithMatchMember("PropertiesChanged"),
|
||||
)
|
||||
}
|
||||
|
||||
b.updateAllWiFiDevices()
|
||||
b.updateWiFiState()
|
||||
}
|
||||
|
||||
@@ -159,7 +159,7 @@ func TestNetworkManagerBackend_HandleDeviceChange(t *testing.T) {
|
||||
}
|
||||
|
||||
assert.NotPanics(t, func() {
|
||||
backend.handleDeviceChange(changes)
|
||||
backend.handleDeviceChange("/org/freedesktop/NetworkManager/Devices/1", changes)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -174,7 +174,7 @@ func TestNetworkManagerBackend_HandleDeviceChange_Ip4Config(t *testing.T) {
|
||||
}
|
||||
|
||||
assert.NotPanics(t, func() {
|
||||
backend.handleDeviceChange(changes)
|
||||
backend.handleDeviceChange("/org/freedesktop/NetworkManager/Devices/1", changes)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -2,9 +2,21 @@ package network
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os/exec"
|
||||
"time"
|
||||
|
||||
"github.com/Wifx/gonetworkmanager/v2"
|
||||
"github.com/AvengeMedia/DankMaterialShell/core/internal/log"
|
||||
"github.com/godbus/dbus/v5"
|
||||
)
|
||||
|
||||
const (
|
||||
priorityHigh = int32(100)
|
||||
priorityLow = int32(10)
|
||||
priorityDefault = int32(0)
|
||||
|
||||
metricPreferred = int64(100)
|
||||
metricNonPreferred = int64(300)
|
||||
metricDefault = int64(100)
|
||||
)
|
||||
|
||||
func (m *Manager) SetConnectionPreference(pref ConnectionPreference) error {
|
||||
@@ -36,83 +48,124 @@ func (m *Manager) SetConnectionPreference(pref ConnectionPreference) error {
|
||||
}
|
||||
|
||||
func (m *Manager) prioritizeWiFi() error {
|
||||
if err := m.setConnectionMetrics("802-11-wireless", 50); err != nil {
|
||||
return err
|
||||
if err := m.setConnectionPriority("802-11-wireless", priorityHigh, metricPreferred); err != nil {
|
||||
log.Warnf("Failed to set WiFi priority: %v", err)
|
||||
}
|
||||
|
||||
if err := m.setConnectionMetrics("802-3-ethernet", 100); err != nil {
|
||||
return err
|
||||
if err := m.setConnectionPriority("802-3-ethernet", priorityLow, metricNonPreferred); err != nil {
|
||||
log.Warnf("Failed to set Ethernet priority: %v", err)
|
||||
}
|
||||
|
||||
m.reapplyActiveConnections()
|
||||
m.notifySubscribers()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *Manager) prioritizeEthernet() error {
|
||||
if err := m.setConnectionMetrics("802-3-ethernet", 50); err != nil {
|
||||
return err
|
||||
if err := m.setConnectionPriority("802-3-ethernet", priorityHigh, metricPreferred); err != nil {
|
||||
log.Warnf("Failed to set Ethernet priority: %v", err)
|
||||
}
|
||||
|
||||
if err := m.setConnectionMetrics("802-11-wireless", 100); err != nil {
|
||||
return err
|
||||
if err := m.setConnectionPriority("802-11-wireless", priorityLow, metricNonPreferred); err != nil {
|
||||
log.Warnf("Failed to set WiFi priority: %v", err)
|
||||
}
|
||||
|
||||
m.reapplyActiveConnections()
|
||||
m.notifySubscribers()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *Manager) balancePriorities() error {
|
||||
if err := m.setConnectionMetrics("802-3-ethernet", 50); err != nil {
|
||||
return err
|
||||
if err := m.setConnectionPriority("802-3-ethernet", priorityDefault, metricDefault); err != nil {
|
||||
log.Warnf("Failed to reset Ethernet priority: %v", err)
|
||||
}
|
||||
|
||||
if err := m.setConnectionMetrics("802-11-wireless", 50); err != nil {
|
||||
return err
|
||||
if err := m.setConnectionPriority("802-11-wireless", priorityDefault, metricDefault); err != nil {
|
||||
log.Warnf("Failed to reset WiFi priority: %v", err)
|
||||
}
|
||||
|
||||
m.reapplyActiveConnections()
|
||||
m.notifySubscribers()
|
||||
return nil
|
||||
}
|
||||
|
||||
func (m *Manager) setConnectionMetrics(connType string, metric uint32) error {
|
||||
settingsMgr, err := gonetworkmanager.NewSettings()
|
||||
func (m *Manager) reapplyActiveConnections() {
|
||||
m.stateMutex.RLock()
|
||||
ethDev := m.state.EthernetDevice
|
||||
wifiDev := m.state.WiFiDevice
|
||||
m.stateMutex.RUnlock()
|
||||
|
||||
if ethDev != "" {
|
||||
exec.Command("nmcli", "dev", "reapply", ethDev).Run()
|
||||
}
|
||||
if wifiDev != "" {
|
||||
exec.Command("nmcli", "dev", "reapply", wifiDev).Run()
|
||||
}
|
||||
}
|
||||
|
||||
func (m *Manager) setConnectionPriority(connType string, autoconnectPriority int32, routeMetric int64) error {
|
||||
conn, err := dbus.ConnectSystemBus()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get settings: %w", err)
|
||||
return fmt.Errorf("failed to connect to system bus: %w", err)
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
settingsObj := conn.Object("org.freedesktop.NetworkManager", "/org/freedesktop/NetworkManager/Settings")
|
||||
|
||||
var connPaths []dbus.ObjectPath
|
||||
if err := settingsObj.Call("org.freedesktop.NetworkManager.Settings.ListConnections", 0).Store(&connPaths); err != nil {
|
||||
return fmt.Errorf("failed to list connections: %w", err)
|
||||
}
|
||||
|
||||
connections, err := settingsMgr.ListConnections()
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to get connections: %w", err)
|
||||
}
|
||||
for _, connPath := range connPaths {
|
||||
connObj := conn.Object("org.freedesktop.NetworkManager", connPath)
|
||||
|
||||
for _, conn := range connections {
|
||||
connSettings, err := conn.GetSettings()
|
||||
if err != nil {
|
||||
var settings map[string]map[string]dbus.Variant
|
||||
if err := connObj.Call("org.freedesktop.NetworkManager.Settings.Connection.GetSettings", 0).Store(&settings); err != nil {
|
||||
continue
|
||||
}
|
||||
|
||||
if connMeta, ok := connSettings["connection"]; ok {
|
||||
if cType, ok := connMeta["type"].(string); ok && cType == connType {
|
||||
if connSettings["ipv4"] == nil {
|
||||
connSettings["ipv4"] = make(map[string]any)
|
||||
}
|
||||
if ipv4Map := connSettings["ipv4"]; ipv4Map != nil {
|
||||
ipv4Map["route-metric"] = int64(metric)
|
||||
}
|
||||
|
||||
if connSettings["ipv6"] == nil {
|
||||
connSettings["ipv6"] = make(map[string]any)
|
||||
}
|
||||
if ipv6Map := connSettings["ipv6"]; ipv6Map != nil {
|
||||
ipv6Map["route-metric"] = int64(metric)
|
||||
}
|
||||
|
||||
err = conn.Update(connSettings)
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
}
|
||||
connSection, ok := settings["connection"]
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
|
||||
typeVariant, ok := connSection["type"]
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
|
||||
cType, ok := typeVariant.Value().(string)
|
||||
if !ok || cType != connType {
|
||||
continue
|
||||
}
|
||||
|
||||
connName := ""
|
||||
if idVariant, ok := connSection["id"]; ok {
|
||||
connName, _ = idVariant.Value().(string)
|
||||
}
|
||||
|
||||
if connName == "" {
|
||||
continue
|
||||
}
|
||||
|
||||
if err := exec.Command("nmcli", "con", "mod", connName,
|
||||
"connection.autoconnect-priority", fmt.Sprintf("%d", autoconnectPriority)).Run(); err != nil {
|
||||
log.Warnf("Failed to set autoconnect-priority for %v: %v", connName, err)
|
||||
continue
|
||||
}
|
||||
|
||||
if err := exec.Command("nmcli", "con", "mod", connName,
|
||||
"ipv4.route-metric", fmt.Sprintf("%d", routeMetric)).Run(); err != nil {
|
||||
log.Warnf("Failed to set ipv4.route-metric for %v: %v", connName, err)
|
||||
}
|
||||
|
||||
if err := exec.Command("nmcli", "con", "mod", connName,
|
||||
"ipv6.route-metric", fmt.Sprintf("%d", routeMetric)).Run(); err != nil {
|
||||
log.Warnf("Failed to set ipv6.route-metric for %v: %v", connName, err)
|
||||
}
|
||||
|
||||
log.Infof("Updated %v: autoconnect-priority=%d, route-metric=%d", connName, autoconnectPriority, routeMetric)
|
||||
}
|
||||
|
||||
return nil
|
||||
@@ -125,14 +178,18 @@ func (m *Manager) GetConnectionPreference() ConnectionPreference {
|
||||
}
|
||||
|
||||
func (m *Manager) WasRecentlyFailed(ssid string) bool {
|
||||
if nm, ok := m.backend.(*NetworkManagerBackend); ok {
|
||||
nm.failedMutex.RLock()
|
||||
defer nm.failedMutex.RUnlock()
|
||||
|
||||
if nm.lastFailedSSID == ssid {
|
||||
elapsed := time.Now().Unix() - nm.lastFailedTime
|
||||
return elapsed < 10
|
||||
}
|
||||
nm, ok := m.backend.(*NetworkManagerBackend)
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
return false
|
||||
|
||||
nm.failedMutex.RLock()
|
||||
defer nm.failedMutex.RUnlock()
|
||||
|
||||
if nm.lastFailedSSID != ssid {
|
||||
return false
|
||||
}
|
||||
|
||||
elapsed := time.Now().Unix() - nm.lastFailedTime
|
||||
return elapsed < 10
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
inherit version;
|
||||
pname = "dms-shell";
|
||||
src = ./core;
|
||||
vendorHash = "sha256-DINaA5LCOWoxBIewuc39Rnwj6NdZoET7Q++B11Qg5rI=";
|
||||
vendorHash = "sha256-9CnZFtjXXWYELRiBX2UbZvWopnl9Y1ILuK+xP6YQZ9U=";
|
||||
|
||||
subPackages = [ "cmd/dms" ];
|
||||
|
||||
|
||||
@@ -246,6 +246,25 @@ Singleton {
|
||||
property bool qt6ctAvailable: false
|
||||
property bool gtkAvailable: false
|
||||
|
||||
property var cursorSettings: ({
|
||||
"theme": "System Default",
|
||||
"size": 24,
|
||||
"niri": {
|
||||
"hideWhenTyping": false,
|
||||
"hideAfterInactiveMs": 0
|
||||
},
|
||||
"hyprland": {
|
||||
"hideOnKeyPress": false,
|
||||
"hideOnTouch": false,
|
||||
"inactiveTimeout": 0
|
||||
},
|
||||
"dwl": {
|
||||
"cursorHideTimeout": 0
|
||||
}
|
||||
})
|
||||
property var availableCursorThemes: ["System Default"]
|
||||
property string systemDefaultCursorTheme: ""
|
||||
|
||||
property string launcherLogoMode: "apps"
|
||||
property string launcherLogoCustomPath: ""
|
||||
property string launcherLogoColorOverride: ""
|
||||
@@ -815,7 +834,8 @@ Singleton {
|
||||
"regenSystemThemes": regenSystemThemes,
|
||||
"updateCompositorLayout": updateCompositorLayout,
|
||||
"applyStoredIconTheme": applyStoredIconTheme,
|
||||
"updateBarConfigs": updateBarConfigs
|
||||
"updateBarConfigs": updateBarConfigs,
|
||||
"updateCompositorCursor": updateCompositorCursor
|
||||
})
|
||||
|
||||
function set(key, value) {
|
||||
@@ -852,6 +872,7 @@ Singleton {
|
||||
_hasLoaded = true;
|
||||
applyStoredTheme();
|
||||
applyStoredIconTheme();
|
||||
updateCompositorCursor();
|
||||
Processes.detectQtTools();
|
||||
|
||||
_checkSettingsWritable();
|
||||
@@ -982,6 +1003,46 @@ Singleton {
|
||||
});
|
||||
}
|
||||
|
||||
function detectAvailableCursorThemes() {
|
||||
const xdgDataDirs = Quickshell.env("XDG_DATA_DIRS") || "";
|
||||
const localData = Paths.strip(StandardPaths.writableLocation(StandardPaths.GenericDataLocation));
|
||||
const homeDir = Paths.strip(StandardPaths.writableLocation(StandardPaths.HomeLocation));
|
||||
|
||||
const dataDirs = xdgDataDirs.trim() !== "" ? xdgDataDirs.split(":").concat([localData]) : ["/usr/share", "/usr/local/share", localData];
|
||||
|
||||
const cursorPaths = dataDirs.map(d => d + "/icons").concat([homeDir + "/.icons", homeDir + "/.local/share/icons"]);
|
||||
const pathsArg = cursorPaths.join(" ");
|
||||
|
||||
const script = `
|
||||
echo "SYSDEFAULT:$(gsettings get org.gnome.desktop.interface cursor-theme 2>/dev/null | sed "s/'//g" || echo '')"
|
||||
for dir in ${pathsArg}; do
|
||||
[ -d "$dir" ] || continue
|
||||
for theme in "$dir"/*/; do
|
||||
[ -d "$theme" ] || continue
|
||||
[ -d "$theme/cursors" ] || continue
|
||||
basename "$theme"
|
||||
done
|
||||
done | grep -v '^icons$' | grep -v '^default$' | sort -u
|
||||
`;
|
||||
|
||||
Proc.runCommand("detectCursorThemes", ["sh", "-c", script], (output, exitCode) => {
|
||||
const themes = ["System Default"];
|
||||
if (output && output.trim()) {
|
||||
const lines = output.trim().split('\n');
|
||||
for (let i = 0; i < lines.length; i++) {
|
||||
const line = lines[i].trim();
|
||||
if (line.startsWith("SYSDEFAULT:")) {
|
||||
systemDefaultCursorTheme = line.substring(11).trim();
|
||||
continue;
|
||||
}
|
||||
if (line)
|
||||
themes.push(line);
|
||||
}
|
||||
}
|
||||
availableCursorThemes = themes;
|
||||
});
|
||||
}
|
||||
|
||||
function getEffectiveTimeFormat() {
|
||||
if (use24HourClock) {
|
||||
return showSeconds ? "hh:mm:ss" : "hh:mm";
|
||||
@@ -1510,6 +1571,60 @@ Singleton {
|
||||
Theme.generateSystemThemesFromCurrentTheme();
|
||||
}
|
||||
|
||||
function setCursorTheme(themeName) {
|
||||
const updated = JSON.parse(JSON.stringify(cursorSettings));
|
||||
updated.theme = themeName;
|
||||
cursorSettings = updated;
|
||||
saveSettings();
|
||||
updateCompositorCursor();
|
||||
}
|
||||
|
||||
function setCursorSize(size) {
|
||||
const updated = JSON.parse(JSON.stringify(cursorSettings));
|
||||
updated.size = size;
|
||||
cursorSettings = updated;
|
||||
saveSettings();
|
||||
updateCompositorCursor();
|
||||
}
|
||||
|
||||
function updateCompositorCursor() {
|
||||
if (typeof CompositorService === "undefined")
|
||||
return;
|
||||
if (CompositorService.isNiri && typeof NiriService !== "undefined") {
|
||||
NiriService.generateNiriCursorConfig();
|
||||
return;
|
||||
}
|
||||
if (CompositorService.isHyprland && typeof HyprlandService !== "undefined") {
|
||||
HyprlandService.generateCursorConfig();
|
||||
return;
|
||||
}
|
||||
if (CompositorService.isDwl && typeof DwlService !== "undefined") {
|
||||
DwlService.generateCursorConfig();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
function getCursorEnvironment() {
|
||||
const isSystemDefault = cursorSettings.theme === "System Default";
|
||||
const isDefaultSize = !cursorSettings.size || cursorSettings.size === 24;
|
||||
if (isSystemDefault && isDefaultSize)
|
||||
return {};
|
||||
|
||||
const themeName = isSystemDefault ? "" : cursorSettings.theme;
|
||||
const size = String(cursorSettings.size || 24);
|
||||
const env = {};
|
||||
|
||||
if (!isDefaultSize) {
|
||||
env["XCURSOR_SIZE"] = size;
|
||||
env["HYPRCURSOR_SIZE"] = size;
|
||||
}
|
||||
if (themeName) {
|
||||
env["XCURSOR_THEME"] = themeName;
|
||||
env["HYPRCURSOR_THEME"] = themeName;
|
||||
}
|
||||
return env;
|
||||
}
|
||||
|
||||
function setGtkThemingEnabled(enabled) {
|
||||
set("gtkThemingEnabled", enabled);
|
||||
if (enabled && typeof Theme !== "undefined") {
|
||||
@@ -1914,6 +2029,7 @@ Singleton {
|
||||
_hasLoaded = true;
|
||||
applyStoredTheme();
|
||||
applyStoredIconTheme();
|
||||
updateCompositorCursor();
|
||||
} catch (e) {
|
||||
_parseError = true;
|
||||
const msg = e.message;
|
||||
|
||||
@@ -134,6 +134,10 @@ var SPEC = {
|
||||
qt6ctAvailable: { def: false, persist: false },
|
||||
gtkAvailable: { def: false, persist: false },
|
||||
|
||||
cursorSettings: { def: { theme: "System Default", size: 24, niri: { hideWhenTyping: false, hideAfterInactiveMs: 0 }, hyprland: { hideOnKeyPress: false, hideOnTouch: false, inactiveTimeout: 0 }, dwl: { cursorHideTimeout: 0 } }, onChange: "updateCompositorCursor" },
|
||||
availableCursorThemes: { def: ["System Default"], persist: false },
|
||||
systemDefaultCursorTheme: { def: "", persist: false },
|
||||
|
||||
launcherLogoMode: { def: "apps" },
|
||||
launcherLogoCustomPath: { def: "" },
|
||||
launcherLogoColorOverride: { def: "" },
|
||||
|
||||
@@ -787,7 +787,16 @@ Item {
|
||||
const widgets = BarWidgetService.getRegisteredWidgetIds();
|
||||
if (widgets.length === 0)
|
||||
return "No widgets registered";
|
||||
return widgets.join("\n");
|
||||
|
||||
const lines = [];
|
||||
for (const widgetId of widgets) {
|
||||
const widget = BarWidgetService.getWidgetOnFocusedScreen(widgetId);
|
||||
let state = "";
|
||||
if (widget?.effectiveVisible !== undefined)
|
||||
state = widget.effectiveVisible ? " [visible]" : " [hidden]";
|
||||
lines.push(widgetId + state);
|
||||
}
|
||||
return lines.join("\n");
|
||||
}
|
||||
|
||||
function status(widgetId: string): string {
|
||||
@@ -806,6 +815,76 @@ Item {
|
||||
return "hidden";
|
||||
}
|
||||
|
||||
function reveal(widgetId: string): string {
|
||||
if (!widgetId)
|
||||
return "ERROR: No widget ID specified";
|
||||
|
||||
if (!BarWidgetService.hasWidget(widgetId))
|
||||
return `WIDGET_NOT_FOUND: ${widgetId}`;
|
||||
|
||||
const widget = BarWidgetService.getWidgetOnFocusedScreen(widgetId);
|
||||
if (!widget)
|
||||
return `WIDGET_NOT_AVAILABLE: ${widgetId}`;
|
||||
|
||||
if (typeof widget.setVisibilityOverride === "function") {
|
||||
widget.setVisibilityOverride(true);
|
||||
return `WIDGET_REVEAL_SUCCESS: ${widgetId}`;
|
||||
}
|
||||
return `WIDGET_REVEAL_NOT_SUPPORTED: ${widgetId}`;
|
||||
}
|
||||
|
||||
function hide(widgetId: string): string {
|
||||
if (!widgetId)
|
||||
return "ERROR: No widget ID specified";
|
||||
|
||||
if (!BarWidgetService.hasWidget(widgetId))
|
||||
return `WIDGET_NOT_FOUND: ${widgetId}`;
|
||||
|
||||
const widget = BarWidgetService.getWidgetOnFocusedScreen(widgetId);
|
||||
if (!widget)
|
||||
return `WIDGET_NOT_AVAILABLE: ${widgetId}`;
|
||||
|
||||
if (typeof widget.setVisibilityOverride === "function") {
|
||||
widget.setVisibilityOverride(false);
|
||||
return `WIDGET_HIDE_SUCCESS: ${widgetId}`;
|
||||
}
|
||||
return `WIDGET_HIDE_NOT_SUPPORTED: ${widgetId}`;
|
||||
}
|
||||
|
||||
function reset(widgetId: string): string {
|
||||
if (!widgetId)
|
||||
return "ERROR: No widget ID specified";
|
||||
|
||||
if (!BarWidgetService.hasWidget(widgetId))
|
||||
return `WIDGET_NOT_FOUND: ${widgetId}`;
|
||||
|
||||
const widget = BarWidgetService.getWidgetOnFocusedScreen(widgetId);
|
||||
if (!widget)
|
||||
return `WIDGET_NOT_AVAILABLE: ${widgetId}`;
|
||||
|
||||
if (typeof widget.clearVisibilityOverride === "function") {
|
||||
widget.clearVisibilityOverride();
|
||||
return `WIDGET_RESET_SUCCESS: ${widgetId}`;
|
||||
}
|
||||
return `WIDGET_RESET_NOT_SUPPORTED: ${widgetId}`;
|
||||
}
|
||||
|
||||
function visibility(widgetId: string): string {
|
||||
if (!widgetId)
|
||||
return "ERROR: No widget ID specified";
|
||||
|
||||
if (!BarWidgetService.hasWidget(widgetId))
|
||||
return `WIDGET_NOT_FOUND: ${widgetId}`;
|
||||
|
||||
const widget = BarWidgetService.getWidgetOnFocusedScreen(widgetId);
|
||||
if (!widget)
|
||||
return `WIDGET_NOT_AVAILABLE: ${widgetId}`;
|
||||
|
||||
if (widget.effectiveVisible !== undefined)
|
||||
return widget.effectiveVisible ? "visible" : "hidden";
|
||||
return "unknown";
|
||||
}
|
||||
|
||||
target: "widget"
|
||||
}
|
||||
|
||||
|
||||
@@ -213,7 +213,7 @@ FloatingWindow {
|
||||
spacing: Theme.spacingXS
|
||||
|
||||
DankActionButton {
|
||||
visible: windowControls.supported
|
||||
visible: windowControls.supported && windowControls.canMaximize
|
||||
iconName: root.maximized ? "fullscreen_exit" : "fullscreen"
|
||||
iconSize: Theme.iconSize - 4
|
||||
iconColor: Theme.surfaceText
|
||||
|
||||
@@ -117,7 +117,7 @@ FloatingWindow {
|
||||
onDoubleClicked: windowControls.tryToggleMaximize()
|
||||
}
|
||||
|
||||
Row {
|
||||
Item {
|
||||
id: headerRow
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
@@ -125,9 +125,13 @@ FloatingWindow {
|
||||
anchors.leftMargin: Theme.spacingM
|
||||
anchors.rightMargin: Theme.spacingM
|
||||
anchors.topMargin: Theme.spacingM
|
||||
height: Math.max(titleColumn.height, buttonRow.height)
|
||||
|
||||
Column {
|
||||
width: parent.width - 60
|
||||
id: titleColumn
|
||||
anchors.left: parent.left
|
||||
anchors.right: buttonRow.left
|
||||
anchors.rightMargin: Theme.spacingM
|
||||
spacing: Theme.spacingXS
|
||||
|
||||
StyledText {
|
||||
@@ -162,10 +166,12 @@ FloatingWindow {
|
||||
}
|
||||
|
||||
Row {
|
||||
id: buttonRow
|
||||
anchors.right: parent.right
|
||||
spacing: Theme.spacingXS
|
||||
|
||||
DankActionButton {
|
||||
visible: windowControls.supported
|
||||
visible: windowControls.supported && windowControls.canMaximize
|
||||
iconName: root.maximized ? "fullscreen_exit" : "fullscreen"
|
||||
iconSize: Theme.iconSize - 4
|
||||
iconColor: Theme.surfaceText
|
||||
|
||||
@@ -44,12 +44,18 @@ FloatingWindow {
|
||||
property int calculatedHeight: {
|
||||
let h = headerHeight + buttonRowHeight + Theme.spacingL * 2;
|
||||
h += fieldsInfo.length * inputFieldWithSpacing;
|
||||
if (showUsernameField) h += inputFieldWithSpacing;
|
||||
if (showPasswordField) h += inputFieldWithSpacing;
|
||||
if (showAnonField) h += inputFieldWithSpacing;
|
||||
if (showDomainField) h += inputFieldWithSpacing;
|
||||
if (showShowPasswordCheckbox) h += checkboxRowHeight;
|
||||
if (showSavePasswordCheckbox) h += checkboxRowHeight;
|
||||
if (showUsernameField)
|
||||
h += inputFieldWithSpacing;
|
||||
if (showPasswordField)
|
||||
h += inputFieldWithSpacing;
|
||||
if (showAnonField)
|
||||
h += inputFieldWithSpacing;
|
||||
if (showDomainField)
|
||||
h += inputFieldWithSpacing;
|
||||
if (showShowPasswordCheckbox)
|
||||
h += checkboxRowHeight;
|
||||
if (showSavePasswordCheckbox)
|
||||
h += checkboxRowHeight;
|
||||
return h;
|
||||
}
|
||||
|
||||
@@ -267,11 +273,14 @@ FloatingWindow {
|
||||
width: parent.width - Theme.spacingL * 2
|
||||
spacing: Theme.spacingM
|
||||
|
||||
Row {
|
||||
Item {
|
||||
width: contentCol.width
|
||||
height: Math.max(headerCol.height, buttonRow.height)
|
||||
|
||||
MouseArea {
|
||||
width: parent.width - 60
|
||||
anchors.left: parent.left
|
||||
anchors.right: buttonRow.left
|
||||
anchors.rightMargin: Theme.spacingM
|
||||
height: headerCol.height
|
||||
onPressed: windowControls.tryStartMove()
|
||||
onDoubleClicked: windowControls.tryToggleMaximize()
|
||||
@@ -327,10 +336,12 @@ FloatingWindow {
|
||||
}
|
||||
|
||||
Row {
|
||||
id: buttonRow
|
||||
anchors.right: parent.right
|
||||
spacing: Theme.spacingXS
|
||||
|
||||
DankActionButton {
|
||||
visible: windowControls.supported
|
||||
visible: windowControls.supported && windowControls.canMaximize
|
||||
iconName: root.maximized ? "fullscreen_exit" : "fullscreen"
|
||||
iconSize: Theme.iconSize - 4
|
||||
iconColor: Theme.surfaceText
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import QtQuick
|
||||
import Quickshell.Io
|
||||
import qs.Common
|
||||
|
||||
Item {
|
||||
@@ -16,6 +17,20 @@ Item {
|
||||
property string pluginId: ""
|
||||
property var pluginService: null
|
||||
|
||||
property string visibilityCommand: ""
|
||||
property int visibilityInterval: 0
|
||||
property bool conditionVisible: true
|
||||
property bool _visibilityOverride: false
|
||||
property bool _visibilityOverrideValue: true
|
||||
|
||||
readonly property bool effectiveVisible: {
|
||||
if (_visibilityOverride)
|
||||
return _visibilityOverrideValue;
|
||||
if (!visibilityCommand)
|
||||
return true;
|
||||
return conditionVisible;
|
||||
}
|
||||
|
||||
property Component horizontalBarPill: null
|
||||
property Component verticalBarPill: null
|
||||
property Component popoutContent: null
|
||||
@@ -49,6 +64,8 @@ Item {
|
||||
|
||||
Component.onCompleted: {
|
||||
loadPluginData();
|
||||
if (visibilityCommand)
|
||||
Qt.callLater(checkVisibility);
|
||||
}
|
||||
|
||||
onPluginServiceChanged: {
|
||||
@@ -78,6 +95,57 @@ Item {
|
||||
variants = pluginService.getPluginVariants(pluginId);
|
||||
}
|
||||
|
||||
function checkVisibility() {
|
||||
if (!visibilityCommand) {
|
||||
conditionVisible = true;
|
||||
return;
|
||||
}
|
||||
visibilityProcess.running = true;
|
||||
}
|
||||
|
||||
function setVisibilityOverride(visible) {
|
||||
_visibilityOverride = true;
|
||||
_visibilityOverrideValue = visible;
|
||||
}
|
||||
|
||||
function clearVisibilityOverride() {
|
||||
_visibilityOverride = false;
|
||||
if (visibilityCommand)
|
||||
checkVisibility();
|
||||
}
|
||||
|
||||
onVisibilityCommandChanged: {
|
||||
if (visibilityCommand)
|
||||
Qt.callLater(checkVisibility);
|
||||
else
|
||||
conditionVisible = true;
|
||||
}
|
||||
|
||||
onVisibilityIntervalChanged: {
|
||||
if (visibilityInterval > 0 && visibilityCommand) {
|
||||
visibilityTimer.restart();
|
||||
} else {
|
||||
visibilityTimer.stop();
|
||||
}
|
||||
}
|
||||
|
||||
Timer {
|
||||
id: visibilityTimer
|
||||
interval: root.visibilityInterval * 1000
|
||||
repeat: true
|
||||
running: root.visibilityInterval > 0 && root.visibilityCommand !== ""
|
||||
onTriggered: root.checkVisibility()
|
||||
}
|
||||
|
||||
Process {
|
||||
id: visibilityProcess
|
||||
command: ["sh", "-c", root.visibilityCommand]
|
||||
running: false
|
||||
onExited: (exitCode, exitStatus) => {
|
||||
root.conditionVisible = (exitCode === 0);
|
||||
}
|
||||
}
|
||||
|
||||
function createVariant(variantName, variantConfig) {
|
||||
if (!pluginService || !pluginId) {
|
||||
return null;
|
||||
@@ -105,6 +173,7 @@ Item {
|
||||
BasePill {
|
||||
id: horizontalPill
|
||||
visible: !isVertical && hasHorizontalPill
|
||||
opacity: root.effectiveVisible ? 1 : 0
|
||||
axis: root.axis
|
||||
section: root.section
|
||||
popoutTarget: hasPopout ? pluginPopout : null
|
||||
@@ -114,6 +183,24 @@ Item {
|
||||
barSpacing: root.barSpacing
|
||||
barConfig: root.barConfig
|
||||
content: root.horizontalBarPill
|
||||
|
||||
states: State {
|
||||
name: "hidden"
|
||||
when: !root.effectiveVisible
|
||||
PropertyChanges {
|
||||
target: horizontalPill
|
||||
width: 0
|
||||
}
|
||||
}
|
||||
|
||||
transitions: Transition {
|
||||
NumberAnimation {
|
||||
properties: "width,opacity"
|
||||
duration: Theme.shortDuration
|
||||
easing.type: Theme.standardEasing
|
||||
}
|
||||
}
|
||||
|
||||
onClicked: {
|
||||
if (pillClickAction) {
|
||||
if (pillClickAction.length === 0) {
|
||||
@@ -145,6 +232,7 @@ Item {
|
||||
BasePill {
|
||||
id: verticalPill
|
||||
visible: isVertical && hasVerticalPill
|
||||
opacity: root.effectiveVisible ? 1 : 0
|
||||
axis: root.axis
|
||||
section: root.section
|
||||
popoutTarget: hasPopout ? pluginPopout : null
|
||||
@@ -155,6 +243,24 @@ Item {
|
||||
barConfig: root.barConfig
|
||||
content: root.verticalBarPill
|
||||
isVerticalOrientation: true
|
||||
|
||||
states: State {
|
||||
name: "hidden"
|
||||
when: !root.effectiveVisible
|
||||
PropertyChanges {
|
||||
target: verticalPill
|
||||
height: 0
|
||||
}
|
||||
}
|
||||
|
||||
transitions: Transition {
|
||||
NumberAnimation {
|
||||
properties: "height,opacity"
|
||||
duration: Theme.shortDuration
|
||||
easing.type: Theme.standardEasing
|
||||
}
|
||||
}
|
||||
|
||||
onClicked: {
|
||||
if (pillClickAction) {
|
||||
if (pillClickAction.length === 0) {
|
||||
|
||||
@@ -399,14 +399,14 @@ Item {
|
||||
text: "•"
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
visible: modelData.ip && modelData.ip.length > 0
|
||||
visible: (modelData.ip || "").length > 0
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: modelData.ip || ""
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
visible: modelData.ip && modelData.ip.length > 0
|
||||
visible: (modelData.ip || "").length > 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -328,7 +328,6 @@ FloatingWindow {
|
||||
anchors.top: browserSearchField.bottom
|
||||
anchors.topMargin: Theme.spacingM
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.bottomMargin: Theme.spacingM
|
||||
|
||||
Item {
|
||||
anchors.fill: parent
|
||||
@@ -366,10 +365,6 @@ FloatingWindow {
|
||||
id: themeBrowserList
|
||||
|
||||
anchors.fill: parent
|
||||
anchors.leftMargin: Theme.spacingM
|
||||
anchors.rightMargin: Theme.spacingM
|
||||
anchors.topMargin: Theme.spacingS
|
||||
anchors.bottomMargin: Theme.spacingS
|
||||
spacing: Theme.spacingS
|
||||
model: ScriptModel {
|
||||
values: root.filteredThemes
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import QtCore
|
||||
import QtQuick
|
||||
import QtQuick.Effects
|
||||
import Quickshell
|
||||
@@ -12,10 +13,84 @@ Item {
|
||||
id: themeColorsTab
|
||||
|
||||
property var cachedIconThemes: SettingsData.availableIconThemes
|
||||
property var cachedCursorThemes: SettingsData.availableCursorThemes
|
||||
property var cachedMatugenSchemes: Theme.availableMatugenSchemes.map(option => option.label)
|
||||
property var installedRegistryThemes: []
|
||||
property var templateDetection: ({})
|
||||
|
||||
property var cursorIncludeStatus: ({
|
||||
"exists": false,
|
||||
"included": false
|
||||
})
|
||||
property bool checkingCursorInclude: false
|
||||
property bool fixingCursorInclude: false
|
||||
|
||||
function getCursorConfigPaths() {
|
||||
const configDir = Paths.strip(StandardPaths.writableLocation(StandardPaths.ConfigLocation));
|
||||
switch (CompositorService.compositor) {
|
||||
case "niri":
|
||||
return {
|
||||
"configFile": configDir + "/niri/config.kdl",
|
||||
"cursorFile": configDir + "/niri/dms/cursor.kdl",
|
||||
"grepPattern": 'include.*"dms/cursor.kdl"',
|
||||
"includeLine": 'include "dms/cursor.kdl"'
|
||||
};
|
||||
case "hyprland":
|
||||
return {
|
||||
"configFile": configDir + "/hypr/hyprland.conf",
|
||||
"cursorFile": configDir + "/hypr/dms/cursor.conf",
|
||||
"grepPattern": 'source.*dms/cursor.conf',
|
||||
"includeLine": "source = ./dms/cursor.conf"
|
||||
};
|
||||
case "dwl":
|
||||
return {
|
||||
"configFile": configDir + "/mango/config.conf",
|
||||
"cursorFile": configDir + "/mango/dms/cursor.conf",
|
||||
"grepPattern": 'source.*dms/cursor.conf',
|
||||
"includeLine": "source=./dms/cursor.conf"
|
||||
};
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function checkCursorIncludeStatus() {
|
||||
const paths = getCursorConfigPaths();
|
||||
if (!paths) {
|
||||
cursorIncludeStatus = {
|
||||
"exists": false,
|
||||
"included": false
|
||||
};
|
||||
return;
|
||||
}
|
||||
checkingCursorInclude = true;
|
||||
Proc.runCommand("check-cursor-include", ["sh", "-c", `exists=false; included=false; ` + `[ -f "${paths.cursorFile}" ] && exists=true; ` + `[ -f "${paths.configFile}" ] && grep -v '^[[:space:]]*\\(//\\|#\\)' "${paths.configFile}" | grep -q '${paths.grepPattern}' && included=true; ` + `echo "$exists $included"`], (output, exitCode) => {
|
||||
checkingCursorInclude = false;
|
||||
const parts = output.trim().split(" ");
|
||||
cursorIncludeStatus = {
|
||||
"exists": parts[0] === "true",
|
||||
"included": parts[1] === "true"
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
function fixCursorInclude() {
|
||||
const paths = getCursorConfigPaths();
|
||||
if (!paths)
|
||||
return;
|
||||
fixingCursorInclude = true;
|
||||
const cursorDir = paths.cursorFile.substring(0, paths.cursorFile.lastIndexOf("/"));
|
||||
const unixTime = Math.floor(Date.now() / 1000);
|
||||
const backupFile = paths.configFile + ".backup" + unixTime;
|
||||
Proc.runCommand("fix-cursor-include", ["sh", "-c", `cp "${paths.configFile}" "${backupFile}" 2>/dev/null; ` + `mkdir -p "${cursorDir}" && ` + `touch "${paths.cursorFile}" && ` + `if ! grep -v '^[[:space:]]*\\(//\\|#\\)' "${paths.configFile}" 2>/dev/null | grep -q '${paths.grepPattern}'; then ` + `echo '' >> "${paths.configFile}" && ` + `echo '${paths.includeLine}' >> "${paths.configFile}"; fi`], (output, exitCode) => {
|
||||
fixingCursorInclude = false;
|
||||
if (exitCode !== 0)
|
||||
return;
|
||||
checkCursorIncludeStatus();
|
||||
SettingsData.updateCompositorCursor();
|
||||
});
|
||||
}
|
||||
|
||||
function isTemplateDetected(templateId) {
|
||||
if (!templateDetection || Object.keys(templateDetection).length === 0)
|
||||
return true;
|
||||
@@ -38,11 +113,14 @@ Item {
|
||||
|
||||
Component.onCompleted: {
|
||||
SettingsData.detectAvailableIconThemes();
|
||||
SettingsData.detectAvailableCursorThemes();
|
||||
if (DMSService.dmsAvailable)
|
||||
DMSService.listInstalledThemes();
|
||||
if (PopoutService.pendingThemeInstall)
|
||||
Qt.callLater(() => themeBrowser.show());
|
||||
templateCheckProcess.running = true;
|
||||
if (CompositorService.isNiri || CompositorService.isHyprland || CompositorService.isDwl)
|
||||
checkCursorIncludeStatus();
|
||||
}
|
||||
|
||||
Process {
|
||||
@@ -1314,6 +1392,195 @@ Item {
|
||||
}
|
||||
}
|
||||
|
||||
SettingsCard {
|
||||
tab: "theme"
|
||||
tags: ["cursor", "mouse", "pointer", "theme", "size"]
|
||||
title: I18n.tr("Cursor Theme")
|
||||
settingKey: "cursorTheme"
|
||||
iconName: "mouse"
|
||||
visible: CompositorService.isNiri || CompositorService.isHyprland || CompositorService.isDwl
|
||||
|
||||
Column {
|
||||
width: parent.width
|
||||
spacing: Theme.spacingM
|
||||
|
||||
StyledRect {
|
||||
id: cursorWarningBox
|
||||
width: parent.width
|
||||
height: cursorWarningContent.implicitHeight + Theme.spacingM * 2
|
||||
radius: Theme.cornerRadius
|
||||
|
||||
readonly property bool showError: themeColorsTab.cursorIncludeStatus.exists && !themeColorsTab.cursorIncludeStatus.included
|
||||
readonly property bool showSetup: !themeColorsTab.cursorIncludeStatus.exists && !themeColorsTab.cursorIncludeStatus.included
|
||||
|
||||
color: (showError || showSetup) ? Theme.withAlpha(Theme.warning, 0.15) : "transparent"
|
||||
border.color: (showError || showSetup) ? Theme.withAlpha(Theme.warning, 0.3) : "transparent"
|
||||
border.width: 1
|
||||
visible: (showError || showSetup) && !themeColorsTab.checkingCursorInclude
|
||||
|
||||
Row {
|
||||
id: cursorWarningContent
|
||||
anchors.fill: parent
|
||||
anchors.margins: Theme.spacingM
|
||||
spacing: Theme.spacingM
|
||||
|
||||
DankIcon {
|
||||
name: "warning"
|
||||
size: Theme.iconSize
|
||||
color: Theme.warning
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
}
|
||||
|
||||
Column {
|
||||
width: parent.width - Theme.iconSize - (cursorFixButton.visible ? cursorFixButton.width + Theme.spacingM : 0) - Theme.spacingM
|
||||
spacing: Theme.spacingXS
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
|
||||
StyledText {
|
||||
text: cursorWarningBox.showSetup ? I18n.tr("Cursor Config Not Configured") : I18n.tr("Cursor Include Missing")
|
||||
font.pixelSize: Theme.fontSizeMedium
|
||||
font.weight: Font.Medium
|
||||
color: Theme.warning
|
||||
}
|
||||
|
||||
StyledText {
|
||||
text: cursorWarningBox.showSetup ? I18n.tr("Click 'Setup' to create cursor config and add include to your compositor config.") : I18n.tr("dms/cursor config exists but is not included. Cursor settings won't apply.")
|
||||
font.pixelSize: Theme.fontSizeSmall
|
||||
color: Theme.surfaceVariantText
|
||||
wrapMode: Text.WordWrap
|
||||
width: parent.width
|
||||
}
|
||||
}
|
||||
|
||||
DankButton {
|
||||
id: cursorFixButton
|
||||
visible: cursorWarningBox.showError || cursorWarningBox.showSetup
|
||||
text: themeColorsTab.fixingCursorInclude ? I18n.tr("Fixing...") : (cursorWarningBox.showSetup ? I18n.tr("Setup") : I18n.tr("Fix Now"))
|
||||
backgroundColor: Theme.warning
|
||||
textColor: Theme.background
|
||||
enabled: !themeColorsTab.fixingCursorInclude
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
onClicked: themeColorsTab.fixCursorInclude()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SettingsDropdownRow {
|
||||
tab: "theme"
|
||||
tags: ["cursor", "mouse", "pointer", "theme"]
|
||||
settingKey: "cursorTheme"
|
||||
text: I18n.tr("Cursor Theme")
|
||||
description: I18n.tr("Mouse pointer appearance")
|
||||
currentValue: SettingsData.cursorSettings.theme
|
||||
enableFuzzySearch: true
|
||||
popupWidthOffset: 100
|
||||
maxPopupHeight: 236
|
||||
options: cachedCursorThemes
|
||||
onValueChanged: value => {
|
||||
SettingsData.setCursorTheme(value);
|
||||
}
|
||||
}
|
||||
|
||||
SettingsSliderRow {
|
||||
tab: "theme"
|
||||
tags: ["cursor", "mouse", "pointer", "size"]
|
||||
settingKey: "cursorSize"
|
||||
text: I18n.tr("Cursor Size")
|
||||
description: I18n.tr("Mouse pointer size in pixels")
|
||||
value: SettingsData.cursorSettings.size
|
||||
minimum: 16
|
||||
maximum: 48
|
||||
unit: "px"
|
||||
defaultValue: 24
|
||||
onSliderValueChanged: newValue => SettingsData.setCursorSize(newValue)
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
tab: "theme"
|
||||
tags: ["cursor", "hide", "typing"]
|
||||
settingKey: "cursorHideWhenTyping"
|
||||
text: I18n.tr("Hide When Typing")
|
||||
description: I18n.tr("Hide cursor when pressing keyboard keys")
|
||||
visible: CompositorService.isNiri || CompositorService.isHyprland
|
||||
checked: {
|
||||
if (CompositorService.isNiri)
|
||||
return SettingsData.cursorSettings.niri?.hideWhenTyping || false;
|
||||
if (CompositorService.isHyprland)
|
||||
return SettingsData.cursorSettings.hyprland?.hideOnKeyPress || false;
|
||||
return false;
|
||||
}
|
||||
onToggled: checked => {
|
||||
const updated = JSON.parse(JSON.stringify(SettingsData.cursorSettings));
|
||||
if (CompositorService.isNiri) {
|
||||
if (!updated.niri)
|
||||
updated.niri = {};
|
||||
updated.niri.hideWhenTyping = checked;
|
||||
} else if (CompositorService.isHyprland) {
|
||||
if (!updated.hyprland)
|
||||
updated.hyprland = {};
|
||||
updated.hyprland.hideOnKeyPress = checked;
|
||||
}
|
||||
SettingsData.set("cursorSettings", updated);
|
||||
}
|
||||
}
|
||||
|
||||
SettingsToggleRow {
|
||||
tab: "theme"
|
||||
tags: ["cursor", "hide", "touch"]
|
||||
settingKey: "cursorHideOnTouch"
|
||||
text: I18n.tr("Hide on Touch")
|
||||
description: I18n.tr("Hide cursor when using touch input")
|
||||
visible: CompositorService.isHyprland
|
||||
checked: SettingsData.cursorSettings.hyprland?.hideOnTouch || false
|
||||
onToggled: checked => {
|
||||
const updated = JSON.parse(JSON.stringify(SettingsData.cursorSettings));
|
||||
if (!updated.hyprland)
|
||||
updated.hyprland = {};
|
||||
updated.hyprland.hideOnTouch = checked;
|
||||
SettingsData.set("cursorSettings", updated);
|
||||
}
|
||||
}
|
||||
|
||||
SettingsSliderRow {
|
||||
tab: "theme"
|
||||
tags: ["cursor", "hide", "timeout", "inactive"]
|
||||
settingKey: "cursorHideAfterInactive"
|
||||
text: I18n.tr("Auto-Hide Timeout")
|
||||
description: I18n.tr("Hide cursor after inactivity (0 = disabled)")
|
||||
value: {
|
||||
if (CompositorService.isNiri)
|
||||
return SettingsData.cursorSettings.niri?.hideAfterInactiveMs || 0;
|
||||
if (CompositorService.isHyprland)
|
||||
return SettingsData.cursorSettings.hyprland?.inactiveTimeout || 0;
|
||||
if (CompositorService.isDwl)
|
||||
return SettingsData.cursorSettings.dwl?.cursorHideTimeout || 0;
|
||||
return 0;
|
||||
}
|
||||
minimum: 0
|
||||
maximum: CompositorService.isNiri ? 5000 : 10
|
||||
unit: CompositorService.isNiri ? "ms" : "s"
|
||||
defaultValue: 0
|
||||
onSliderValueChanged: newValue => {
|
||||
const updated = JSON.parse(JSON.stringify(SettingsData.cursorSettings));
|
||||
if (CompositorService.isNiri) {
|
||||
if (!updated.niri)
|
||||
updated.niri = {};
|
||||
updated.niri.hideAfterInactiveMs = newValue;
|
||||
} else if (CompositorService.isHyprland) {
|
||||
if (!updated.hyprland)
|
||||
updated.hyprland = {};
|
||||
updated.hyprland.inactiveTimeout = newValue;
|
||||
} else if (CompositorService.isDwl) {
|
||||
if (!updated.dwl)
|
||||
updated.dwl = {};
|
||||
updated.dwl.cursorHideTimeout = newValue;
|
||||
}
|
||||
SettingsData.set("cursorSettings", updated);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SettingsCard {
|
||||
tab: "theme"
|
||||
tags: ["matugen", "templates", "theming"]
|
||||
|
||||
@@ -323,7 +323,6 @@ Singleton {
|
||||
}
|
||||
}
|
||||
|
||||
userPreference = state.preference || "auto";
|
||||
isConnecting = state.isConnecting || false;
|
||||
connectingSSID = state.connectingSSID || "";
|
||||
connectionError = state.lastError || "";
|
||||
|
||||
@@ -14,6 +14,7 @@ Singleton {
|
||||
readonly property string mangoDmsDir: configDir + "/mango/dms"
|
||||
readonly property string outputsPath: mangoDmsDir + "/outputs.conf"
|
||||
readonly property string layoutPath: mangoDmsDir + "/layout.conf"
|
||||
readonly property string cursorPath: mangoDmsDir + "/cursor.conf"
|
||||
|
||||
property int _lastGapValue: -1
|
||||
|
||||
@@ -400,4 +401,53 @@ borderpx=${borderSize}
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
function generateCursorConfig() {
|
||||
if (!CompositorService.isDwl)
|
||||
return;
|
||||
|
||||
console.log("DwlService: Generating cursor config...");
|
||||
|
||||
const settings = typeof SettingsData !== "undefined" ? SettingsData.cursorSettings : null;
|
||||
if (!settings) {
|
||||
Proc.runCommand("mango-write-cursor", ["sh", "-c", `mkdir -p "${mangoDmsDir}" && : > "${cursorPath}"`], (output, exitCode) => {
|
||||
if (exitCode !== 0)
|
||||
console.warn("DwlService: Failed to write cursor config:", output);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const themeName = settings.theme === "System Default" ? (SettingsData.systemDefaultCursorTheme || "") : settings.theme;
|
||||
const size = settings.size || 24;
|
||||
const hideTimeout = settings.dwl?.cursorHideTimeout || 0;
|
||||
|
||||
const isDefaultConfig = !themeName && size === 24 && hideTimeout === 0;
|
||||
if (isDefaultConfig) {
|
||||
Proc.runCommand("mango-write-cursor", ["sh", "-c", `mkdir -p "${mangoDmsDir}" && : > "${cursorPath}"`], (output, exitCode) => {
|
||||
if (exitCode !== 0)
|
||||
console.warn("DwlService: Failed to write cursor config:", output);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
let content = `# Auto-generated by DMS - do not edit manually
|
||||
cursor_size=${size}`;
|
||||
|
||||
if (themeName)
|
||||
content += `\ncursor_theme=${themeName}`;
|
||||
|
||||
if (hideTimeout > 0)
|
||||
content += `\ncursor_hide_timeout=${hideTimeout}`;
|
||||
|
||||
content += `\n`;
|
||||
|
||||
Proc.runCommand("mango-write-cursor", ["sh", "-c", `mkdir -p "${mangoDmsDir}" && cat > "${cursorPath}" << 'EOF'\n${content}EOF`], (output, exitCode) => {
|
||||
if (exitCode !== 0) {
|
||||
console.warn("DwlService: Failed to write cursor config:", output);
|
||||
return;
|
||||
}
|
||||
console.info("DwlService: Generated cursor config at", cursorPath);
|
||||
reloadConfig();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,6 +13,7 @@ Singleton {
|
||||
readonly property string hyprDmsDir: configDir + "/hypr/dms"
|
||||
readonly property string outputsPath: hyprDmsDir + "/outputs.conf"
|
||||
readonly property string layoutPath: hyprDmsDir + "/layout.conf"
|
||||
readonly property string cursorPath: hyprDmsDir + "/cursor.conf"
|
||||
|
||||
property int _lastGapValue: -1
|
||||
|
||||
@@ -241,4 +242,65 @@ decoration {
|
||||
return "Normal";
|
||||
}
|
||||
}
|
||||
|
||||
function generateCursorConfig() {
|
||||
if (!CompositorService.isHyprland)
|
||||
return;
|
||||
|
||||
console.log("HyprlandService: Generating cursor config...");
|
||||
|
||||
const settings = typeof SettingsData !== "undefined" ? SettingsData.cursorSettings : null;
|
||||
if (!settings) {
|
||||
Proc.runCommand("hypr-write-cursor", ["sh", "-c", `mkdir -p "${hyprDmsDir}" && : > "${cursorPath}"`], (output, exitCode) => {
|
||||
if (exitCode !== 0)
|
||||
console.warn("HyprlandService: Failed to write cursor config:", output);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
const themeName = settings.theme === "System Default" ? (SettingsData.systemDefaultCursorTheme || "") : settings.theme;
|
||||
const size = settings.size || 24;
|
||||
const hideWhenTyping = settings.hyprland?.hideWhenTyping || false;
|
||||
const hideOnTouch = settings.hyprland?.hideOnTouch || false;
|
||||
const hideOnKeyPress = settings.hyprland?.hideOnKeyPress || false;
|
||||
const inactiveTimeout = settings.hyprland?.inactiveTimeout || 0;
|
||||
|
||||
const isDefaultConfig = !themeName && size === 24 && !hideWhenTyping && !hideOnTouch && !hideOnKeyPress && inactiveTimeout === 0;
|
||||
if (isDefaultConfig) {
|
||||
Proc.runCommand("hypr-write-cursor", ["sh", "-c", `mkdir -p "${hyprDmsDir}" && : > "${cursorPath}"`], (output, exitCode) => {
|
||||
if (exitCode !== 0)
|
||||
console.warn("HyprlandService: Failed to write cursor config:", output);
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
let content = `# Auto-generated by DMS - do not edit manually
|
||||
|
||||
cursor {
|
||||
size = ${size}`;
|
||||
|
||||
if (themeName)
|
||||
content += `\n theme = ${themeName}`;
|
||||
|
||||
if (hideWhenTyping)
|
||||
content += `\n hide_on_key_press = true`;
|
||||
|
||||
if (hideOnTouch)
|
||||
content += `\n hide_on_touch = true`;
|
||||
|
||||
if (inactiveTimeout > 0)
|
||||
content += `\n inactive_timeout = ${inactiveTimeout}`;
|
||||
|
||||
content += `\n}
|
||||
`;
|
||||
|
||||
Proc.runCommand("hypr-write-cursor", ["sh", "-c", `mkdir -p "${hyprDmsDir}" && cat > "${cursorPath}" << 'EOF'\n${content}EOF`], (output, exitCode) => {
|
||||
if (exitCode !== 0) {
|
||||
console.warn("HyprlandService: Failed to write cursor config:", output);
|
||||
return;
|
||||
}
|
||||
console.info("HyprlandService: Generated cursor config at", cursorPath);
|
||||
reloadConfig();
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -145,6 +145,20 @@ Singleton {
|
||||
}
|
||||
}
|
||||
|
||||
Process {
|
||||
id: writeCursorProcess
|
||||
property string cursorContent: ""
|
||||
property string cursorPath: ""
|
||||
|
||||
onExited: exitCode => {
|
||||
if (exitCode === 0) {
|
||||
console.info("NiriService: Generated cursor config at", cursorPath);
|
||||
return;
|
||||
}
|
||||
console.warn("NiriService: Failed to write cursor config, exit code:", exitCode);
|
||||
}
|
||||
}
|
||||
|
||||
Process {
|
||||
id: ensureOutputsProcess
|
||||
property string outputsPath: ""
|
||||
@@ -165,6 +179,16 @@ Singleton {
|
||||
}
|
||||
}
|
||||
|
||||
Process {
|
||||
id: ensureCursorProcess
|
||||
property string cursorPath: ""
|
||||
|
||||
onExited: exitCode => {
|
||||
if (exitCode !== 0)
|
||||
console.warn("NiriService: Failed to ensure cursor.kdl, exit code:", exitCode);
|
||||
}
|
||||
}
|
||||
|
||||
DankSocket {
|
||||
id: eventStreamSocket
|
||||
path: root.socketPath
|
||||
@@ -1074,6 +1098,11 @@ Singleton {
|
||||
ensureBindsProcess.command = ["sh", "-c", `mkdir -p "${niriDmsDir}" && [ ! -f "${bindsPath}" ] && touch "${bindsPath}" || true`];
|
||||
ensureBindsProcess.running = true;
|
||||
|
||||
const cursorPath = niriDmsDir + "/cursor.kdl";
|
||||
ensureCursorProcess.cursorPath = cursorPath;
|
||||
ensureCursorProcess.command = ["sh", "-c", `mkdir -p "${niriDmsDir}" && [ ! -f "${cursorPath}" ] && touch "${cursorPath}" || true`];
|
||||
ensureCursorProcess.running = true;
|
||||
|
||||
configGenerationPending = false;
|
||||
}
|
||||
|
||||
@@ -1090,6 +1119,70 @@ Singleton {
|
||||
writeBlurruleProcess.running = true;
|
||||
}
|
||||
|
||||
function generateNiriCursorConfig() {
|
||||
if (!CompositorService.isNiri)
|
||||
return;
|
||||
|
||||
console.log("NiriService: Generating cursor config...");
|
||||
|
||||
const configDir = Paths.strip(StandardPaths.writableLocation(StandardPaths.ConfigLocation));
|
||||
const niriDmsDir = configDir + "/niri/dms";
|
||||
const cursorPath = niriDmsDir + "/cursor.kdl";
|
||||
|
||||
const settings = typeof SettingsData !== "undefined" ? SettingsData.cursorSettings : null;
|
||||
if (!settings) {
|
||||
writeCursorProcess.cursorContent = "";
|
||||
writeCursorProcess.cursorPath = cursorPath;
|
||||
writeCursorProcess.command = ["sh", "-c", `mkdir -p "${niriDmsDir}" && : > "${cursorPath}"`];
|
||||
writeCursorProcess.running = true;
|
||||
return;
|
||||
}
|
||||
|
||||
const themeName = settings.theme === "System Default" ? (SettingsData.systemDefaultCursorTheme || "") : settings.theme;
|
||||
const size = settings.size || 24;
|
||||
const hideWhenTyping = settings.niri?.hideWhenTyping || false;
|
||||
const hideAfterMs = settings.niri?.hideAfterInactiveMs || 0;
|
||||
|
||||
const isDefaultConfig = !themeName && size === 24 && !hideWhenTyping && hideAfterMs === 0;
|
||||
if (isDefaultConfig) {
|
||||
writeCursorProcess.cursorContent = "";
|
||||
writeCursorProcess.cursorPath = cursorPath;
|
||||
writeCursorProcess.command = ["sh", "-c", `mkdir -p "${niriDmsDir}" && : > "${cursorPath}"`];
|
||||
writeCursorProcess.running = true;
|
||||
return;
|
||||
}
|
||||
|
||||
const dmsWarning = `// ! DO NOT EDIT !
|
||||
// ! AUTO-GENERATED BY DMS !
|
||||
// ! CHANGES WILL BE OVERWRITTEN !
|
||||
// ! PLACE YOUR CUSTOM CONFIGURATION ELSEWHERE !
|
||||
|
||||
`;
|
||||
|
||||
let cursorContent = dmsWarning + `cursor {\n`;
|
||||
|
||||
if (themeName)
|
||||
cursorContent += ` xcursor-theme "${themeName}"\n`;
|
||||
|
||||
cursorContent += ` xcursor-size ${size}\n`;
|
||||
|
||||
if (hideWhenTyping)
|
||||
cursorContent += ` hide-when-typing\n`;
|
||||
|
||||
if (hideAfterMs > 0)
|
||||
cursorContent += ` hide-after-inactive-ms ${hideAfterMs}\n`;
|
||||
|
||||
cursorContent += `}`;
|
||||
|
||||
writeCursorProcess.cursorContent = cursorContent;
|
||||
writeCursorProcess.cursorPath = cursorPath;
|
||||
|
||||
const escapedCursorContent = cursorContent.replace(/'/g, "'\\''");
|
||||
|
||||
writeCursorProcess.command = ["sh", "-c", `mkdir -p "${niriDmsDir}" && printf '%s' '${escapedCursorContent}' > "${cursorPath}"`];
|
||||
writeCursorProcess.running = true;
|
||||
}
|
||||
|
||||
function updateOutputPosition(outputName, x, y) {
|
||||
if (!outputs || !outputs[outputName])
|
||||
return;
|
||||
|
||||
@@ -184,73 +184,76 @@ Singleton {
|
||||
|
||||
function launchDesktopEntry(desktopEntry, useNvidia) {
|
||||
let cmd = desktopEntry.command;
|
||||
if (useNvidia && nvidiaCommand) {
|
||||
if (useNvidia && nvidiaCommand)
|
||||
cmd = [nvidiaCommand].concat(cmd);
|
||||
}
|
||||
|
||||
const userPrefix = SettingsData.launchPrefix?.trim() || "";
|
||||
const defaultPrefix = Quickshell.env("DMS_DEFAULT_LAUNCH_PREFIX") || "";
|
||||
const prefix = userPrefix.length > 0 ? userPrefix : defaultPrefix;
|
||||
const workDir = desktopEntry.workingDirectory || Quickshell.env("HOME");
|
||||
const escapedCmd = cmd.map(arg => escapeShellArg(arg)).join(" ");
|
||||
const shellCmd = prefix.length > 0 ? `${prefix} ${escapedCmd}` : escapedCmd;
|
||||
const cursorEnv = typeof SettingsData.getCursorEnvironment === "function" ? SettingsData.getCursorEnvironment() : {};
|
||||
|
||||
if (desktopEntry.runInTerminal) {
|
||||
const terminal = Quickshell.env("TERMINAL") || "xterm";
|
||||
const escapedCmd = cmd.map(arg => escapeShellArg(arg)).join(" ");
|
||||
const shellCmd = prefix.length > 0 ? `${prefix} ${escapedCmd}` : escapedCmd;
|
||||
Quickshell.execDetached({
|
||||
command: [terminal, "-e", "sh", "-c", shellCmd],
|
||||
workingDirectory: workDir
|
||||
workingDirectory: workDir,
|
||||
environment: cursorEnv
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (prefix.length > 0 && needsShellExecution(prefix)) {
|
||||
const escapedCmd = cmd.map(arg => escapeShellArg(arg)).join(" ");
|
||||
Quickshell.execDetached({
|
||||
command: ["sh", "-c", shellCmd],
|
||||
workingDirectory: workDir
|
||||
command: ["sh", "-c", `${prefix} ${escapedCmd}`],
|
||||
workingDirectory: workDir,
|
||||
environment: cursorEnv
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (prefix.length > 0) {
|
||||
if (prefix.length > 0)
|
||||
cmd = prefix.split(" ").concat(cmd);
|
||||
}
|
||||
|
||||
Quickshell.execDetached({
|
||||
command: cmd,
|
||||
workingDirectory: workDir
|
||||
workingDirectory: workDir,
|
||||
environment: cursorEnv
|
||||
});
|
||||
}
|
||||
|
||||
function launchDesktopAction(desktopEntry, action, useNvidia) {
|
||||
let cmd = action.command;
|
||||
if (useNvidia && nvidiaCommand) {
|
||||
if (useNvidia && nvidiaCommand)
|
||||
cmd = [nvidiaCommand].concat(cmd);
|
||||
}
|
||||
|
||||
const userPrefix = SettingsData.launchPrefix?.trim() || "";
|
||||
const defaultPrefix = Quickshell.env("DMS_DEFAULT_LAUNCH_PREFIX") || "";
|
||||
const prefix = userPrefix.length > 0 ? userPrefix : defaultPrefix;
|
||||
const workDir = desktopEntry.workingDirectory || Quickshell.env("HOME");
|
||||
const cursorEnv = typeof SettingsData.getCursorEnvironment === "function" ? SettingsData.getCursorEnvironment() : {};
|
||||
|
||||
if (prefix.length > 0 && needsShellExecution(prefix)) {
|
||||
const escapedCmd = cmd.map(arg => escapeShellArg(arg)).join(" ");
|
||||
const shellCmd = `${prefix} ${escapedCmd}`;
|
||||
|
||||
Quickshell.execDetached({
|
||||
command: ["sh", "-c", shellCmd],
|
||||
workingDirectory: desktopEntry.workingDirectory || Quickshell.env("HOME")
|
||||
});
|
||||
} else {
|
||||
if (prefix.length > 0) {
|
||||
const launchPrefix = prefix.split(" ");
|
||||
cmd = launchPrefix.concat(cmd);
|
||||
}
|
||||
|
||||
Quickshell.execDetached({
|
||||
command: cmd,
|
||||
workingDirectory: desktopEntry.workingDirectory || Quickshell.env("HOME")
|
||||
command: ["sh", "-c", `${prefix} ${escapedCmd}`],
|
||||
workingDirectory: workDir,
|
||||
environment: cursorEnv
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (prefix.length > 0)
|
||||
cmd = prefix.split(" ").concat(cmd);
|
||||
|
||||
Quickshell.execDetached({
|
||||
command: cmd,
|
||||
workingDirectory: workDir,
|
||||
environment: cursorEnv
|
||||
});
|
||||
}
|
||||
|
||||
// * Session management
|
||||
|
||||
@@ -6,6 +6,7 @@ Item {
|
||||
readonly property real edgeSize: 8
|
||||
required property var targetWindow
|
||||
property bool supported: typeof targetWindow.startSystemMove === "function"
|
||||
readonly property bool canMaximize: targetWindow.minimumSize.width !== targetWindow.maximumSize.width || targetWindow.minimumSize.height !== targetWindow.maximumSize.height
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
@@ -16,19 +17,19 @@ Item {
|
||||
}
|
||||
|
||||
function tryStartResize(edges) {
|
||||
if (!supported)
|
||||
if (!supported || !canMaximize)
|
||||
return;
|
||||
targetWindow.startSystemResize(edges);
|
||||
}
|
||||
|
||||
function tryToggleMaximize() {
|
||||
if (!supported)
|
||||
if (!supported || !canMaximize)
|
||||
return;
|
||||
targetWindow.maximized = !targetWindow.maximized;
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
visible: root.supported
|
||||
visible: root.supported && root.canMaximize
|
||||
height: root.edgeSize
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
@@ -40,7 +41,7 @@ Item {
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
visible: root.supported
|
||||
visible: root.supported && root.canMaximize
|
||||
width: root.edgeSize
|
||||
anchors.left: parent.left
|
||||
anchors.top: parent.top
|
||||
@@ -52,7 +53,7 @@ Item {
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
visible: root.supported
|
||||
visible: root.supported && root.canMaximize
|
||||
width: root.edgeSize
|
||||
anchors.right: parent.right
|
||||
anchors.top: parent.top
|
||||
@@ -64,7 +65,7 @@ Item {
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
visible: root.supported
|
||||
visible: root.supported && root.canMaximize
|
||||
width: root.edgeSize
|
||||
height: root.edgeSize
|
||||
anchors.left: parent.left
|
||||
@@ -74,7 +75,7 @@ Item {
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
visible: root.supported
|
||||
visible: root.supported && root.canMaximize
|
||||
width: root.edgeSize
|
||||
height: root.edgeSize
|
||||
anchors.right: parent.right
|
||||
@@ -84,7 +85,7 @@ Item {
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
visible: root.supported
|
||||
visible: root.supported && root.canMaximize
|
||||
height: root.edgeSize
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
@@ -96,7 +97,7 @@ Item {
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
visible: root.supported
|
||||
visible: root.supported && root.canMaximize
|
||||
width: root.edgeSize
|
||||
height: root.edgeSize
|
||||
anchors.left: parent.left
|
||||
@@ -106,7 +107,7 @@ Item {
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
visible: root.supported
|
||||
visible: root.supported && root.canMaximize
|
||||
width: root.edgeSize
|
||||
height: root.edgeSize
|
||||
anchors.right: parent.right
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -164,6 +164,9 @@
|
||||
"Activate": {
|
||||
"Activate": "Activar"
|
||||
},
|
||||
"Activation": {
|
||||
"Activation": ""
|
||||
},
|
||||
"Active": {
|
||||
"Active": "Activo"
|
||||
},
|
||||
@@ -233,6 +236,9 @@
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": {
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": "Alt+←/Backspace: Atrás • F1/I: Información del archivo • F10: Ayuda • Esc: Cerrar+"
|
||||
},
|
||||
"Always Active": {
|
||||
"Always Active": ""
|
||||
},
|
||||
"Always Show Percentage": {
|
||||
"Always Show Percentage": "Mostrar siempre el porcentaje"
|
||||
},
|
||||
@@ -365,6 +371,9 @@
|
||||
"Auto-Clear After": {
|
||||
"Auto-Clear After": "Limpiar automáticamente despues"
|
||||
},
|
||||
"Auto-Hide Timeout": {
|
||||
"Auto-Hide Timeout": ""
|
||||
},
|
||||
"Auto-close Niri overview when launching apps.": {
|
||||
"Auto-close Niri overview when launching apps.": "Cierre automático de la vista general de Niri al iniciar aplicaciones."
|
||||
},
|
||||
@@ -692,6 +701,9 @@
|
||||
"Clear at Startup": {
|
||||
"Clear at Startup": "Limpiar al inicio"
|
||||
},
|
||||
"Click 'Setup' to create cursor config and add include to your compositor config.": {
|
||||
"Click 'Setup' to create cursor config and add include to your compositor config.": ""
|
||||
},
|
||||
"Click 'Setup' to create dms/binds.kdl and add include to config.kdl.": {
|
||||
"Click 'Setup' to create dms/binds.kdl and add include to config.kdl.": "Haz clic en \"Configurar\" para crear dms/binds.kdl y añadir include a config.kdl."
|
||||
},
|
||||
@@ -878,6 +890,9 @@
|
||||
"Copied!": {
|
||||
"Copied!": "¡Copiado!"
|
||||
},
|
||||
"Copy": {
|
||||
"Copy": ""
|
||||
},
|
||||
"Copy PID": {
|
||||
"Copy PID": "Copiar ID del Proceso"
|
||||
},
|
||||
@@ -932,6 +947,18 @@
|
||||
"Current: %1": {
|
||||
"Current: %1": "Actual: %1"
|
||||
},
|
||||
"Cursor Config Not Configured": {
|
||||
"Cursor Config Not Configured": ""
|
||||
},
|
||||
"Cursor Include Missing": {
|
||||
"Cursor Include Missing": ""
|
||||
},
|
||||
"Cursor Size": {
|
||||
"Cursor Size": ""
|
||||
},
|
||||
"Cursor Theme": {
|
||||
"Cursor Theme": ""
|
||||
},
|
||||
"Custom": {
|
||||
"Custom": "Personal"
|
||||
},
|
||||
@@ -1772,9 +1799,24 @@
|
||||
"Hide Delay": {
|
||||
"Hide Delay": "Ocultar Retardo"
|
||||
},
|
||||
"Hide When Typing": {
|
||||
"Hide When Typing": ""
|
||||
},
|
||||
"Hide When Windows Open": {
|
||||
"Hide When Windows Open": "Ocultar opciones cuando hay ventanas abiertas"
|
||||
},
|
||||
"Hide cursor after inactivity (0 = disabled)": {
|
||||
"Hide cursor after inactivity (0 = disabled)": ""
|
||||
},
|
||||
"Hide cursor when pressing keyboard keys": {
|
||||
"Hide cursor when pressing keyboard keys": ""
|
||||
},
|
||||
"Hide cursor when using touch input": {
|
||||
"Hide cursor when using touch input": ""
|
||||
},
|
||||
"Hide on Touch": {
|
||||
"Hide on Touch": ""
|
||||
},
|
||||
"Hide the dock when not in use and reveal it when hovering near the dock area": {
|
||||
"Hide the dock when not in use and reveal it when hovering near the dock area": "Ocultar el dock cuando no esté en uso y mostrarlo cuando se pasé el ratón cerca del área de este"
|
||||
},
|
||||
@@ -1937,6 +1979,15 @@
|
||||
"Key": {
|
||||
"Key": "Tecla"
|
||||
},
|
||||
"Keybind Sources": {
|
||||
"Keybind Sources": ""
|
||||
},
|
||||
"Keybinds Search Settings": {
|
||||
"Keybinds Search Settings": ""
|
||||
},
|
||||
"Keybinds shown alongside regular search results": {
|
||||
"Keybinds shown alongside regular search results": ""
|
||||
},
|
||||
"Keyboard Layout Name": {
|
||||
"Keyboard Layout Name": "Distribución de teclado"
|
||||
},
|
||||
@@ -2255,6 +2306,12 @@
|
||||
"Mount": {
|
||||
"Mount": "Montar"
|
||||
},
|
||||
"Mouse pointer appearance": {
|
||||
"Mouse pointer appearance": ""
|
||||
},
|
||||
"Mouse pointer size in pixels": {
|
||||
"Mouse pointer size in pixels": ""
|
||||
},
|
||||
"Move Widget": {
|
||||
"Move Widget": "Mover widget"
|
||||
},
|
||||
@@ -3038,6 +3095,9 @@
|
||||
"Scrolling": {
|
||||
"Scrolling": "Desplazamiento"
|
||||
},
|
||||
"Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.": {
|
||||
"Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.": ""
|
||||
},
|
||||
"Search file contents": {
|
||||
"Search file contents": "Buscar dentro de los archivos"
|
||||
},
|
||||
@@ -3050,6 +3110,9 @@
|
||||
"Search keybinds...": {
|
||||
"Search keybinds...": "Buscar combinaciones de tecla"
|
||||
},
|
||||
"Search keyboard shortcuts from your compositor and applications": {
|
||||
"Search keyboard shortcuts from your compositor and applications": ""
|
||||
},
|
||||
"Search plugins...": {
|
||||
"Search plugins...": "Buscar complementos..."
|
||||
},
|
||||
@@ -3092,6 +3155,9 @@
|
||||
"Select an image file...": {
|
||||
"Select an image file...": "Selecciona un archivo de imagen..."
|
||||
},
|
||||
"Select at least one provider": {
|
||||
"Select at least one provider": ""
|
||||
},
|
||||
"Select device...": {
|
||||
"Select device...": "Elegir dispositivo..."
|
||||
},
|
||||
@@ -3116,6 +3182,9 @@
|
||||
"Select the palette algorithm used for wallpaper-based colors": {
|
||||
"Select the palette algorithm used for wallpaper-based colors": "Selecciona el algoritmo de colores del fondo de pantalla"
|
||||
},
|
||||
"Select which keybind providers to include": {
|
||||
"Select which keybind providers to include": ""
|
||||
},
|
||||
"Select which transitions to include in randomization": {
|
||||
"Select which transitions to include in randomization": "Seleccionar transiciones para aplicar de forma aleatoria"
|
||||
},
|
||||
@@ -3293,6 +3362,9 @@
|
||||
"Show on Overview": {
|
||||
"Show on Overview": "Mostrar en vista general"
|
||||
},
|
||||
"Show on Overview Only": {
|
||||
"Show on Overview Only": ""
|
||||
},
|
||||
"Show on all connected displays": {
|
||||
"Show on all connected displays": "Mostrar en todas las pantallas conectadas"
|
||||
},
|
||||
@@ -3683,12 +3755,21 @@
|
||||
"Transparency": {
|
||||
"Transparency": "Transparencia"
|
||||
},
|
||||
"Trigger": {
|
||||
"Trigger": ""
|
||||
},
|
||||
"Trigger Prefix": {
|
||||
"Trigger Prefix": ""
|
||||
},
|
||||
"Turn off monitors after": {
|
||||
"Turn off monitors after": "Apagar monitores después de"
|
||||
},
|
||||
"Type": {
|
||||
"Type": "Tipo"
|
||||
},
|
||||
"Type this prefix to search keybinds": {
|
||||
"Type this prefix to search keybinds": ""
|
||||
},
|
||||
"Typography": {
|
||||
"Typography": "Tipografía"
|
||||
},
|
||||
@@ -3716,6 +3797,9 @@
|
||||
"Unknown Network": {
|
||||
"Unknown Network": "Red desconocida"
|
||||
},
|
||||
"Unpin": {
|
||||
"Unpin": ""
|
||||
},
|
||||
"Unpin from Dock": {
|
||||
"Unpin from Dock": "Desfijar del dock"
|
||||
},
|
||||
@@ -3737,6 +3821,9 @@
|
||||
"Update Plugin": {
|
||||
"Update Plugin": "Actualizar complemento"
|
||||
},
|
||||
"Usage Tips": {
|
||||
"Usage Tips": ""
|
||||
},
|
||||
"Use 24-hour time format instead of 12-hour AM/PM": {
|
||||
"Use 24-hour time format instead of 12-hour AM/PM": "Usar formato de 24 horas en lugar de 12 horas AM/PM"
|
||||
},
|
||||
@@ -3791,6 +3878,9 @@
|
||||
"Use sound theme from system settings": {
|
||||
"Use sound theme from system settings": "Usar tema de sonidos del sistema"
|
||||
},
|
||||
"Use trigger prefix to activate": {
|
||||
"Use trigger prefix to activate": ""
|
||||
},
|
||||
"Use%": {
|
||||
"Use%": "Usar%"
|
||||
},
|
||||
@@ -4072,6 +4162,9 @@
|
||||
"author attribution": {
|
||||
"by %1": "por %1"
|
||||
},
|
||||
"bar shadow settings card": {
|
||||
"Shadow": ""
|
||||
},
|
||||
"browse themes button | theme browser header | theme browser window title": {
|
||||
"Browse Themes": "Busqueda de temas"
|
||||
},
|
||||
@@ -4105,6 +4198,9 @@
|
||||
"dms/binds.kdl is now included in config.kdl": {
|
||||
"dms/binds.kdl is now included in config.kdl": "dms/binds.kdl esta ahora incluido en config.kdl"
|
||||
},
|
||||
"dms/cursor config exists but is not included. Cursor settings won't apply.": {
|
||||
"dms/cursor config exists but is not included. Cursor settings won't apply.": ""
|
||||
},
|
||||
"dms/outputs config exists but is not included in your compositor config. Display changes won't persist.": {
|
||||
"dms/outputs config exists but is not included in your compositor config. Display changes won't persist.": "La configuración dms/outputs existe pero no está incluida en la configuración del compositor. Los cambios de visualización no persistirán."
|
||||
},
|
||||
@@ -4421,6 +4517,13 @@
|
||||
"settings_displays": {
|
||||
"Widgets": "Widgets"
|
||||
},
|
||||
"shadow color option": {
|
||||
"Surface": "",
|
||||
"Text": ""
|
||||
},
|
||||
"shadow intensity slider": {
|
||||
"Intensity": ""
|
||||
},
|
||||
"source code link": {
|
||||
"source": "fuente"
|
||||
},
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
"%1 connected": "%1 متصل"
|
||||
},
|
||||
"%1 days ago": {
|
||||
"%1 days ago": ""
|
||||
"%1 days ago": "%1 روز پیش"
|
||||
},
|
||||
"%1 display(s)": {
|
||||
"%1 display(s)": "%1 نمایشگر"
|
||||
@@ -24,7 +24,7 @@
|
||||
"%1 job(s)": "%1 کار چاپ"
|
||||
},
|
||||
"%1 notifications": {
|
||||
"%1 notifications": ""
|
||||
"%1 notifications": "%1 اعلان"
|
||||
},
|
||||
"%1 printer(s)": {
|
||||
"%1 printer(s)": "%1 چاپگر"
|
||||
@@ -36,13 +36,13 @@
|
||||
"%1 widgets": "%1 ابزارک"
|
||||
},
|
||||
"%1m ago": {
|
||||
"%1m ago": ""
|
||||
"%1m ago": "%1 دقیقه پیش"
|
||||
},
|
||||
"(Unnamed)": {
|
||||
"(Unnamed)": "(بدون نام)"
|
||||
},
|
||||
"+ %1 more": {
|
||||
"+ %1 more": ""
|
||||
"+ %1 more": "+ %1 بیشتر"
|
||||
},
|
||||
"0 = square corners": {
|
||||
"0 = square corners": "۰ = گوشههای مربعی"
|
||||
@@ -57,7 +57,7 @@
|
||||
"1 minute": "۱ دقیقه"
|
||||
},
|
||||
"1 notification": {
|
||||
"1 notification": ""
|
||||
"1 notification": "1 اعلان"
|
||||
},
|
||||
"1 second": {
|
||||
"1 second": "۱ ثانیه"
|
||||
@@ -138,7 +138,7 @@
|
||||
"About": "درباره"
|
||||
},
|
||||
"Accent Color": {
|
||||
"Accent Color": ""
|
||||
"Accent Color": "رنگ تأکیدی"
|
||||
},
|
||||
"Accept Jobs": {
|
||||
"Accept Jobs": "پذیرش کارهای چاپ"
|
||||
@@ -164,6 +164,9 @@
|
||||
"Activate": {
|
||||
"Activate": "فعالسازی"
|
||||
},
|
||||
"Activation": {
|
||||
"Activation": ""
|
||||
},
|
||||
"Active": {
|
||||
"Active": "فعال"
|
||||
},
|
||||
@@ -233,6 +236,9 @@
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": {
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": "Alt+←/Backspace: بازگشت • F1/I: اطلاعات فایل • F10: راهنما • Esc: بستن"
|
||||
},
|
||||
"Always Active": {
|
||||
"Always Active": ""
|
||||
},
|
||||
"Always Show Percentage": {
|
||||
"Always Show Percentage": "همیشه درصد را نشان بده"
|
||||
},
|
||||
@@ -365,6 +371,9 @@
|
||||
"Auto-Clear After": {
|
||||
"Auto-Clear After": "پاککردن خودکار پس از"
|
||||
},
|
||||
"Auto-Hide Timeout": {
|
||||
"Auto-Hide Timeout": ""
|
||||
},
|
||||
"Auto-close Niri overview when launching apps.": {
|
||||
"Auto-close Niri overview when launching apps.": "هنگام اجرای برنامهها نمای کلی نیری را خودکار ببند."
|
||||
},
|
||||
@@ -516,7 +525,7 @@
|
||||
"Border Opacity": "شفافیت حاشیه"
|
||||
},
|
||||
"Border Size": {
|
||||
"Border Size": ""
|
||||
"Border Size": "اندازه حاشیه"
|
||||
},
|
||||
"Border Thickness": {
|
||||
"Border Thickness": "ضخامت حاشیه"
|
||||
@@ -692,6 +701,9 @@
|
||||
"Clear at Startup": {
|
||||
"Clear at Startup": "پاککردن در هنگام راهاندازی"
|
||||
},
|
||||
"Click 'Setup' to create cursor config and add include to your compositor config.": {
|
||||
"Click 'Setup' to create cursor config and add include to your compositor config.": ""
|
||||
},
|
||||
"Click 'Setup' to create dms/binds.kdl and add include to config.kdl.": {
|
||||
"Click 'Setup' to create dms/binds.kdl and add include to config.kdl.": "برای ایجاد dms/binds.kdl و افزودن include به config.kdl، روی «راهاندازی» کلیک کنید."
|
||||
},
|
||||
@@ -878,6 +890,9 @@
|
||||
"Copied!": {
|
||||
"Copied!": "کپی شد!"
|
||||
},
|
||||
"Copy": {
|
||||
"Copy": ""
|
||||
},
|
||||
"Copy PID": {
|
||||
"Copy PID": "کپی PID"
|
||||
},
|
||||
@@ -932,11 +947,23 @@
|
||||
"Current: %1": {
|
||||
"Current: %1": "کنونی: %1"
|
||||
},
|
||||
"Cursor Config Not Configured": {
|
||||
"Cursor Config Not Configured": ""
|
||||
},
|
||||
"Cursor Include Missing": {
|
||||
"Cursor Include Missing": ""
|
||||
},
|
||||
"Cursor Size": {
|
||||
"Cursor Size": ""
|
||||
},
|
||||
"Cursor Theme": {
|
||||
"Cursor Theme": ""
|
||||
},
|
||||
"Custom": {
|
||||
"Custom": "سفارشی"
|
||||
},
|
||||
"Custom Color": {
|
||||
"Custom Color": ""
|
||||
"Custom Color": "رنگ سفارشی"
|
||||
},
|
||||
"Custom Duration": {
|
||||
"Custom Duration": "مدت زمان سفارشی"
|
||||
@@ -1101,7 +1128,7 @@
|
||||
"Desktop Clock": "ساعت دسکتاپ"
|
||||
},
|
||||
"Detailed": {
|
||||
"Detailed": ""
|
||||
"Detailed": "با جزئیات"
|
||||
},
|
||||
"Development": {
|
||||
"Development": "توسعه"
|
||||
@@ -1653,10 +1680,10 @@
|
||||
"Force terminal applications to always use dark color schemes": "اجبار برنامههای ترمینال به استفاده از رنگهای تاریک"
|
||||
},
|
||||
"Forecast": {
|
||||
"Forecast": ""
|
||||
"Forecast": "پیشبینی"
|
||||
},
|
||||
"Forecast Days": {
|
||||
"Forecast Days": ""
|
||||
"Forecast Days": "پیشبینی روزها"
|
||||
},
|
||||
"Forecast Not Available": {
|
||||
"Forecast Not Available": "پیشبینی موجود نیست"
|
||||
@@ -1772,9 +1799,24 @@
|
||||
"Hide Delay": {
|
||||
"Hide Delay": "تأخیر پنهانشدن"
|
||||
},
|
||||
"Hide When Typing": {
|
||||
"Hide When Typing": ""
|
||||
},
|
||||
"Hide When Windows Open": {
|
||||
"Hide When Windows Open": "وقتی پنجرهها باز هستند پنهان کن"
|
||||
},
|
||||
"Hide cursor after inactivity (0 = disabled)": {
|
||||
"Hide cursor after inactivity (0 = disabled)": ""
|
||||
},
|
||||
"Hide cursor when pressing keyboard keys": {
|
||||
"Hide cursor when pressing keyboard keys": ""
|
||||
},
|
||||
"Hide cursor when using touch input": {
|
||||
"Hide cursor when using touch input": ""
|
||||
},
|
||||
"Hide on Touch": {
|
||||
"Hide on Touch": ""
|
||||
},
|
||||
"Hide the dock when not in use and reveal it when hovering near the dock area": {
|
||||
"Hide the dock when not in use and reveal it when hovering near the dock area": "داک را هنگامی که استفاده نمیشود پنهان کن و هنگامی که موشواره نزدیک آن است نشان بده"
|
||||
},
|
||||
@@ -1937,6 +1979,15 @@
|
||||
"Key": {
|
||||
"Key": "کلید"
|
||||
},
|
||||
"Keybind Sources": {
|
||||
"Keybind Sources": ""
|
||||
},
|
||||
"Keybinds Search Settings": {
|
||||
"Keybinds Search Settings": ""
|
||||
},
|
||||
"Keybinds shown alongside regular search results": {
|
||||
"Keybinds shown alongside regular search results": ""
|
||||
},
|
||||
"Keyboard Layout Name": {
|
||||
"Keyboard Layout Name": "نام جانمایی صفحهکلید"
|
||||
},
|
||||
@@ -2255,6 +2306,12 @@
|
||||
"Mount": {
|
||||
"Mount": "نصبکردن"
|
||||
},
|
||||
"Mouse pointer appearance": {
|
||||
"Mouse pointer appearance": ""
|
||||
},
|
||||
"Mouse pointer size in pixels": {
|
||||
"Mouse pointer size in pixels": ""
|
||||
},
|
||||
"Move Widget": {
|
||||
"Move Widget": "انتقال ابزارک"
|
||||
},
|
||||
@@ -2358,7 +2415,7 @@
|
||||
"No VPN profiles": "پروفایل VPN یافت نشد"
|
||||
},
|
||||
"No Weather Data": {
|
||||
"No Weather Data": ""
|
||||
"No Weather Data": "بدون داده آب و هوا"
|
||||
},
|
||||
"No Weather Data Available": {
|
||||
"No Weather Data Available": "داده آب و هوا در دسترس نیست"
|
||||
@@ -2451,7 +2508,7 @@
|
||||
"Not connected": "متصل نیست"
|
||||
},
|
||||
"Not detected": {
|
||||
"Not detected": ""
|
||||
"Not detected": "تشخیص داده نشد"
|
||||
},
|
||||
"Note: this only changes the percentage, it does not actually limit charging.": {
|
||||
"Note: this only changes the percentage, it does not actually limit charging.": "نکته: این تنها درصد را تغییر میدهد، به طور واقعی محدودیت روی شارژ کردن اعمال نمیکند."
|
||||
@@ -2487,7 +2544,7 @@
|
||||
"Notification toast popups": "پاپآپهای اعلان به صورت تُست"
|
||||
},
|
||||
"Notifications": {
|
||||
"Notifications": "اعلانات"
|
||||
"Notifications": "اعلانها"
|
||||
},
|
||||
"Numbers": {
|
||||
"Numbers": "شمارهها"
|
||||
@@ -2568,7 +2625,7 @@
|
||||
"Override": "جایگزین"
|
||||
},
|
||||
"Override Border Size": {
|
||||
"Override Border Size": ""
|
||||
"Override Border Size": "بازنویسی اندازه حاشیه"
|
||||
},
|
||||
"Override Corner Radius": {
|
||||
"Override Corner Radius": "جایگزینی شعاع گوشهها"
|
||||
@@ -3038,6 +3095,9 @@
|
||||
"Scrolling": {
|
||||
"Scrolling": "اسکرولینگ"
|
||||
},
|
||||
"Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.": {
|
||||
"Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.": ""
|
||||
},
|
||||
"Search file contents": {
|
||||
"Search file contents": "جستجو در محتوای فایل"
|
||||
},
|
||||
@@ -3050,6 +3110,9 @@
|
||||
"Search keybinds...": {
|
||||
"Search keybinds...": "جستجو در کلیدهای میانبر..."
|
||||
},
|
||||
"Search keyboard shortcuts from your compositor and applications": {
|
||||
"Search keyboard shortcuts from your compositor and applications": ""
|
||||
},
|
||||
"Search plugins...": {
|
||||
"Search plugins...": "جستجوی افزونهها..."
|
||||
},
|
||||
@@ -3092,6 +3155,9 @@
|
||||
"Select an image file...": {
|
||||
"Select an image file...": "انتخاب فایل تصویر..."
|
||||
},
|
||||
"Select at least one provider": {
|
||||
"Select at least one provider": ""
|
||||
},
|
||||
"Select device...": {
|
||||
"Select device...": "انتخاب دستگاه..."
|
||||
},
|
||||
@@ -3116,6 +3182,9 @@
|
||||
"Select the palette algorithm used for wallpaper-based colors": {
|
||||
"Select the palette algorithm used for wallpaper-based colors": "انتخاب الگوریتم پالت رنگی استفاده شده برای رنگهای بر اساس تصویر پسزمینه"
|
||||
},
|
||||
"Select which keybind providers to include": {
|
||||
"Select which keybind providers to include": ""
|
||||
},
|
||||
"Select which transitions to include in randomization": {
|
||||
"Select which transitions to include in randomization": "انتخاب کنید کدام گذارها در تصادفیسازی باشند"
|
||||
},
|
||||
@@ -3186,7 +3255,7 @@
|
||||
"Show Feels Like Temperature": ""
|
||||
},
|
||||
"Show Forecast": {
|
||||
"Show Forecast": ""
|
||||
"Show Forecast": "نمایش پیشبینی"
|
||||
},
|
||||
"Show GPU Temperature": {
|
||||
"Show GPU Temperature": "نمایش دمای GPU"
|
||||
@@ -3201,16 +3270,16 @@
|
||||
"Show Hour Numbers": "نمایش شمارههای ساعت"
|
||||
},
|
||||
"Show Hourly Forecast": {
|
||||
"Show Hourly Forecast": ""
|
||||
"Show Hourly Forecast": "نمایش پیشبینی ساعتی"
|
||||
},
|
||||
"Show Humidity": {
|
||||
"Show Humidity": ""
|
||||
"Show Humidity": "نمایش رطوبت"
|
||||
},
|
||||
"Show Line Numbers": {
|
||||
"Show Line Numbers": "نمایش شماره خطوط"
|
||||
},
|
||||
"Show Location": {
|
||||
"Show Location": ""
|
||||
"Show Location": "نمایش موقعیت مکانی"
|
||||
},
|
||||
"Show Lock": {
|
||||
"Show Lock": "نمایش قفل"
|
||||
@@ -3240,7 +3309,7 @@
|
||||
"Show Precipitation Probability": ""
|
||||
},
|
||||
"Show Pressure": {
|
||||
"Show Pressure": ""
|
||||
"Show Pressure": "نمایش فشار"
|
||||
},
|
||||
"Show Reboot": {
|
||||
"Show Reboot": "نمایش راهاندازی مجدد"
|
||||
@@ -3252,7 +3321,7 @@
|
||||
"Show Seconds": "نمایش ثانیهها"
|
||||
},
|
||||
"Show Sunrise/Sunset": {
|
||||
"Show Sunrise/Sunset": ""
|
||||
"Show Sunrise/Sunset": "نمایش طلوع/غروب"
|
||||
},
|
||||
"Show Suspend": {
|
||||
"Show Suspend": "نمایش تعلیق"
|
||||
@@ -3261,13 +3330,13 @@
|
||||
"Show Top Processes": "نمایش فرایندهای مهم"
|
||||
},
|
||||
"Show Weather Condition": {
|
||||
"Show Weather Condition": ""
|
||||
"Show Weather Condition": "نمایش شرایط آب و هوا"
|
||||
},
|
||||
"Show Welcome": {
|
||||
"Show Welcome": ""
|
||||
"Show Welcome": "نمایش خوش آمدید"
|
||||
},
|
||||
"Show Wind Speed": {
|
||||
"Show Wind Speed": ""
|
||||
"Show Wind Speed": "نمایش سرعت باد"
|
||||
},
|
||||
"Show Workspace Apps": {
|
||||
"Show Workspace Apps": "نمایش برنامههای workspace"
|
||||
@@ -3293,6 +3362,9 @@
|
||||
"Show on Overview": {
|
||||
"Show on Overview": "نمایش روی نمای کلی"
|
||||
},
|
||||
"Show on Overview Only": {
|
||||
"Show on Overview Only": ""
|
||||
},
|
||||
"Show on all connected displays": {
|
||||
"Show on all connected displays": "نمایش همه نمایشگرهای متصل"
|
||||
},
|
||||
@@ -3426,7 +3498,7 @@
|
||||
"Stacked": "انباشته"
|
||||
},
|
||||
"Standard": {
|
||||
"Standard": ""
|
||||
"Standard": "استاندارد"
|
||||
},
|
||||
"Start": {
|
||||
"Start": "شروع"
|
||||
@@ -3528,7 +3600,7 @@
|
||||
"System theme toggle": "تغییر تم سیستم"
|
||||
},
|
||||
"System toast notifications": {
|
||||
"System toast notifications": "اعلانات سیستم به صورت تُست"
|
||||
"System toast notifications": "اعلانهای سیستم به صورت تُست"
|
||||
},
|
||||
"System update custom command": {
|
||||
"System update custom command": "دستور سفارشی بروزرسانی سیستم"
|
||||
@@ -3651,7 +3723,7 @@
|
||||
"Toner Low": "تونر کم است"
|
||||
},
|
||||
"Tools": {
|
||||
"Tools": ""
|
||||
"Tools": "ابزارها"
|
||||
},
|
||||
"Top": {
|
||||
"Top": "بالا"
|
||||
@@ -3683,12 +3755,21 @@
|
||||
"Transparency": {
|
||||
"Transparency": "شفافیت"
|
||||
},
|
||||
"Trigger": {
|
||||
"Trigger": ""
|
||||
},
|
||||
"Trigger Prefix": {
|
||||
"Trigger Prefix": ""
|
||||
},
|
||||
"Turn off monitors after": {
|
||||
"Turn off monitors after": "خاموشکردن مانیتور پس از"
|
||||
},
|
||||
"Type": {
|
||||
"Type": "نوع"
|
||||
},
|
||||
"Type this prefix to search keybinds": {
|
||||
"Type this prefix to search keybinds": ""
|
||||
},
|
||||
"Typography": {
|
||||
"Typography": "تایپوگرافی"
|
||||
},
|
||||
@@ -3716,6 +3797,9 @@
|
||||
"Unknown Network": {
|
||||
"Unknown Network": "شبکه ناشناخته"
|
||||
},
|
||||
"Unpin": {
|
||||
"Unpin": ""
|
||||
},
|
||||
"Unpin from Dock": {
|
||||
"Unpin from Dock": "جداکردن از داک"
|
||||
},
|
||||
@@ -3737,6 +3821,9 @@
|
||||
"Update Plugin": {
|
||||
"Update Plugin": "بروزرسانی افزونه"
|
||||
},
|
||||
"Usage Tips": {
|
||||
"Usage Tips": ""
|
||||
},
|
||||
"Use 24-hour time format instead of 12-hour AM/PM": {
|
||||
"Use 24-hour time format instead of 12-hour AM/PM": "استفاده از قالب 24 ساعته به جای 12 ساعته ق.ظ/ب.ظ"
|
||||
},
|
||||
@@ -3765,10 +3852,10 @@
|
||||
"Use animated wave progress bars for media playback": "استفاده از نوارهای پیشرفت موجی متحرک برای پخش رسانه"
|
||||
},
|
||||
"Use custom border size": {
|
||||
"Use custom border size": ""
|
||||
"Use custom border size": "از اندازه حاشیه سفارشی استفاده کن"
|
||||
},
|
||||
"Use custom border/focus-ring width": {
|
||||
"Use custom border/focus-ring width": ""
|
||||
"Use custom border/focus-ring width": "از طول حاشیه/focus-ring سفارشی استفاده کن"
|
||||
},
|
||||
"Use custom command for update your system": {
|
||||
"Use custom command for update your system": "استفاده از دستور سفارشی برای بروزرسانی سیستم شما"
|
||||
@@ -3791,6 +3878,9 @@
|
||||
"Use sound theme from system settings": {
|
||||
"Use sound theme from system settings": "استفاده از تم صدا در تنظیمات سیستم"
|
||||
},
|
||||
"Use trigger prefix to activate": {
|
||||
"Use trigger prefix to activate": ""
|
||||
},
|
||||
"Use%": {
|
||||
"Use%": "استفاده%"
|
||||
},
|
||||
@@ -3876,7 +3966,7 @@
|
||||
"Vibrant palette with playful saturation.": "پالتر رنگی پر جنب و جوش با اشباع رنگی سرزنده."
|
||||
},
|
||||
"View Mode": {
|
||||
"View Mode": ""
|
||||
"View Mode": "حالت نمایش"
|
||||
},
|
||||
"Visibility": {
|
||||
"Visibility": "دید"
|
||||
@@ -4019,7 +4109,7 @@
|
||||
"Window Gaps (px)": "فاصله پنجرهها (px)"
|
||||
},
|
||||
"Window Rounding": {
|
||||
"Window Rounding": ""
|
||||
"Window Rounding": "گردی پنجره"
|
||||
},
|
||||
"Workspace": {
|
||||
"Workspace": "Workspace"
|
||||
@@ -4072,6 +4162,9 @@
|
||||
"author attribution": {
|
||||
"by %1": "توسط %1"
|
||||
},
|
||||
"bar shadow settings card": {
|
||||
"Shadow": ""
|
||||
},
|
||||
"browse themes button | theme browser header | theme browser window title": {
|
||||
"Browse Themes": "مرور تمها"
|
||||
},
|
||||
@@ -4105,6 +4198,9 @@
|
||||
"dms/binds.kdl is now included in config.kdl": {
|
||||
"dms/binds.kdl is now included in config.kdl": "dms/binds.kdl اکنون در config.kdl گنجانده شده است"
|
||||
},
|
||||
"dms/cursor config exists but is not included. Cursor settings won't apply.": {
|
||||
"dms/cursor config exists but is not included. Cursor settings won't apply.": ""
|
||||
},
|
||||
"dms/outputs config exists but is not included in your compositor config. Display changes won't persist.": {
|
||||
"dms/outputs config exists but is not included in your compositor config. Display changes won't persist.": "پیکربندی dms/outputs وجود دارد اما در پیکربندی کامپوزیتور شما گنجانده نشده است. تغییرات نمایشگر پایدار نخواهند بود."
|
||||
},
|
||||
@@ -4142,102 +4238,102 @@
|
||||
"Material Design inspired color themes": "رنگهای تم الهام گرفته شده از متریال دیزاین"
|
||||
},
|
||||
"greeter back button": {
|
||||
"Back": ""
|
||||
"Back": "بازگشت"
|
||||
},
|
||||
"greeter completion page subtitle": {
|
||||
"DankMaterialShell is ready to use": ""
|
||||
},
|
||||
"greeter completion page title": {
|
||||
"You're All Set!": ""
|
||||
"You're All Set!": "همه چیز آماده است!"
|
||||
},
|
||||
"greeter configure keybinds link": {
|
||||
"Configure Keybinds": ""
|
||||
},
|
||||
"greeter dankbar description": {
|
||||
"Widgets, layout, style": ""
|
||||
"Widgets, layout, style": "ابزارکها، layout، استایل"
|
||||
},
|
||||
"greeter displays description": {
|
||||
"Resolution, position, scale": ""
|
||||
"Resolution, position, scale": "وضوح، موقعیت، مقیاس"
|
||||
},
|
||||
"greeter dock description": {
|
||||
"Position, pinned apps": ""
|
||||
},
|
||||
"greeter doctor page button": {
|
||||
"Run Again": ""
|
||||
"Run Again": "اجرای دوباره"
|
||||
},
|
||||
"greeter doctor page empty state": {
|
||||
"No checks passed": "",
|
||||
"No errors": "",
|
||||
"No errors": "بدون خطا",
|
||||
"No info items": "",
|
||||
"No warnings": ""
|
||||
"No warnings": "بدون اخطار"
|
||||
},
|
||||
"greeter doctor page error count": {
|
||||
"%1 issue(s) found": ""
|
||||
"%1 issue(s) found": "%1 مشکل پیدا شد"
|
||||
},
|
||||
"greeter doctor page loading text": {
|
||||
"Analyzing configuration...": ""
|
||||
},
|
||||
"greeter doctor page status card": {
|
||||
"Errors": "",
|
||||
"Info": "",
|
||||
"OK": "",
|
||||
"Warnings": ""
|
||||
"Errors": "خطاها",
|
||||
"Info": "اطلاعات",
|
||||
"OK": "باشه",
|
||||
"Warnings": "اخطارها"
|
||||
},
|
||||
"greeter doctor page success": {
|
||||
"All checks passed": ""
|
||||
},
|
||||
"greeter doctor page title": {
|
||||
"System Check": ""
|
||||
"System Check": "بررسی سیستم"
|
||||
},
|
||||
"greeter documentation link": {
|
||||
"Docs": ""
|
||||
"Docs": "مستندات"
|
||||
},
|
||||
"greeter explore section header": {
|
||||
"Explore": ""
|
||||
},
|
||||
"greeter feature card description": {
|
||||
"Background app icons": "",
|
||||
"Colors from wallpaper": "",
|
||||
"Community themes": "",
|
||||
"Colors from wallpaper": "رنگها از تصویر پسزمینه",
|
||||
"Community themes": "تمهای کامیونیتی",
|
||||
"Extensible architecture": "",
|
||||
"GTK, Qt, IDEs, more": "",
|
||||
"Modular widget bar": "",
|
||||
"GTK, Qt, IDEs, more": "GTK، Qt، IDEها و بیشتر",
|
||||
"Modular widget bar": "نوار ابزارک ماژولار",
|
||||
"Night mode & gamma": "",
|
||||
"Per-screen config": "",
|
||||
"Per-screen config": "پیکربندی به ازای هر صفحه",
|
||||
"Quick system toggles": ""
|
||||
},
|
||||
"greeter feature card title": {
|
||||
"App Theming": "",
|
||||
"App Theming": "تم برنامه",
|
||||
"Control Center": "",
|
||||
"Display Control": "",
|
||||
"Display Control": "کنترل نمایشگر",
|
||||
"Dynamic Theming": "",
|
||||
"Multi-Monitor": "",
|
||||
"Multi-Monitor": "چند مانیتوره",
|
||||
"System Tray": "",
|
||||
"Theme Registry": ""
|
||||
"Theme Registry": "مخزن تمها"
|
||||
},
|
||||
"greeter feature card title | greeter plugins link": {
|
||||
"Plugins": ""
|
||||
"Plugins": "افزونهها"
|
||||
},
|
||||
"greeter feature card title | greeter settings link": {
|
||||
"DankBar": ""
|
||||
"DankBar": "DankBar"
|
||||
},
|
||||
"greeter finish button": {
|
||||
"Finish": ""
|
||||
"Finish": "پایان"
|
||||
},
|
||||
"greeter first page button": {
|
||||
"Get Started": ""
|
||||
"Get Started": "شروع کنید"
|
||||
},
|
||||
"greeter keybinds niri description": {
|
||||
"niri shortcuts config": ""
|
||||
"niri shortcuts config": "پیکربندی میانبرهای نیری"
|
||||
},
|
||||
"greeter keybinds section header": {
|
||||
"DMS Shortcuts": ""
|
||||
},
|
||||
"greeter modal window title": {
|
||||
"Welcome": ""
|
||||
"Welcome": "خوش آمدید"
|
||||
},
|
||||
"greeter next button": {
|
||||
"Next": ""
|
||||
"Next": "بعدی"
|
||||
},
|
||||
"greeter no keybinds message": {
|
||||
"No DMS shortcuts configured": ""
|
||||
@@ -4246,15 +4342,15 @@
|
||||
"Popup behavior, position": ""
|
||||
},
|
||||
"greeter settings link": {
|
||||
"Displays": "",
|
||||
"Dock": "",
|
||||
"Displays": "نمایشگرها",
|
||||
"Dock": "داک",
|
||||
"Keybinds": "",
|
||||
"Notifications": "",
|
||||
"Theme & Colors": "",
|
||||
"Wallpaper": ""
|
||||
"Notifications": "اعلانها",
|
||||
"Theme & Colors": "تم و رنگها",
|
||||
"Wallpaper": "تصویر پسزمینه"
|
||||
},
|
||||
"greeter settings section header": {
|
||||
"Configure": ""
|
||||
"Configure": "پیکربندی"
|
||||
},
|
||||
"greeter skip button": {
|
||||
"Skip": ""
|
||||
@@ -4266,19 +4362,19 @@
|
||||
"Dynamic colors, presets": ""
|
||||
},
|
||||
"greeter themes link": {
|
||||
"Themes": ""
|
||||
"Themes": "تمها"
|
||||
},
|
||||
"greeter wallpaper description": {
|
||||
"Background image": ""
|
||||
"Background image": "تصویر پسزمینه"
|
||||
},
|
||||
"greeter welcome page section header": {
|
||||
"Features": ""
|
||||
"Features": "ویژگیها"
|
||||
},
|
||||
"greeter welcome page tagline": {
|
||||
"A modern desktop shell for Wayland compositors": ""
|
||||
},
|
||||
"greeter welcome page title": {
|
||||
"Welcome to DankMaterialShell": ""
|
||||
"Welcome to DankMaterialShell": "به DankMaterialShell خوش آمدید"
|
||||
},
|
||||
"install action button": {
|
||||
"Install": "نصب"
|
||||
@@ -4302,17 +4398,17 @@
|
||||
"Loading...": "درحال بارگذاری..."
|
||||
},
|
||||
"lock screen notification mode option": {
|
||||
"App Names": "",
|
||||
"App Names": "نام برنامهها",
|
||||
"Count Only": "",
|
||||
"Disabled": "",
|
||||
"Full Content": ""
|
||||
"Disabled": "غیرفعال",
|
||||
"Full Content": "محتوای کامل"
|
||||
},
|
||||
"lock screen notification privacy setting": {
|
||||
"Control what notification information is shown on the lock screen": "",
|
||||
"Notification Display": ""
|
||||
},
|
||||
"lock screen notifications settings card": {
|
||||
"Lock Screen": ""
|
||||
"Lock Screen": "صفحه قفل"
|
||||
},
|
||||
"loginctl not available - lock integration requires DMS socket connection": {
|
||||
"loginctl not available - lock integration requires DMS socket connection": "loginctl در دسترس نیست - یکپارچهسازی قفل به اتصال سوکت DMS نیاز دارد"
|
||||
@@ -4342,36 +4438,36 @@
|
||||
"No wallpaper selected": "هیچ تصویر پسزمینهای انتخاب نشده"
|
||||
},
|
||||
"notification center tab": {
|
||||
"Current": "",
|
||||
"History": ""
|
||||
"Current": "کنونی",
|
||||
"History": "تاریخچه"
|
||||
},
|
||||
"notification history filter": {
|
||||
"All": "",
|
||||
"Last hour": "",
|
||||
"Today": "",
|
||||
"Yesterday": ""
|
||||
"All": "همه",
|
||||
"Last hour": "ساعت گذشته",
|
||||
"Today": "امروز",
|
||||
"Yesterday": "دیروز"
|
||||
},
|
||||
"notification history filter for content older than other filters": {
|
||||
"Older": ""
|
||||
"Older": "قدیمیتر"
|
||||
},
|
||||
"notification history filter | notification history retention option": {
|
||||
"30 days": "",
|
||||
"7 days": ""
|
||||
"30 days": "30 روز",
|
||||
"7 days": "7 روز"
|
||||
},
|
||||
"notification history limit": {
|
||||
"Maximum number of notifications to keep": ""
|
||||
"Maximum number of notifications to keep": "بیشینه تعداد اعلانهایی که باید نگه داشته شوند"
|
||||
},
|
||||
"notification history retention option": {
|
||||
"1 day": "",
|
||||
"14 days": "",
|
||||
"3 days": "",
|
||||
"Forever": ""
|
||||
"1 day": "1 روز",
|
||||
"14 days": "14 روز",
|
||||
"3 days": "3 روز",
|
||||
"Forever": "برای همیشه"
|
||||
},
|
||||
"notification history retention settings label": {
|
||||
"History Retention": ""
|
||||
"History Retention": "نگهداری تاریخچه"
|
||||
},
|
||||
"notification history setting": {
|
||||
"Auto-delete notifications older than this": "",
|
||||
"Auto-delete notifications older than this": "اعلانهای قدیمی تر از این را خودکار حذف کن",
|
||||
"Save critical priority notifications to history": "",
|
||||
"Save low priority notifications to history": "",
|
||||
"Save normal priority notifications to history": ""
|
||||
@@ -4380,10 +4476,10 @@
|
||||
"Save dismissed notifications to history": ""
|
||||
},
|
||||
"notification history toggle label": {
|
||||
"Enable History": ""
|
||||
"Enable History": "فعالکردن تاریخچه"
|
||||
},
|
||||
"now": {
|
||||
"now": ""
|
||||
"now": "اکنون"
|
||||
},
|
||||
"official": {
|
||||
"official": "رسمی"
|
||||
@@ -4421,6 +4517,13 @@
|
||||
"settings_displays": {
|
||||
"Widgets": "ابزارکها"
|
||||
},
|
||||
"shadow color option": {
|
||||
"Surface": "",
|
||||
"Text": ""
|
||||
},
|
||||
"shadow intensity slider": {
|
||||
"Intensity": ""
|
||||
},
|
||||
"source code link": {
|
||||
"source": "منبع"
|
||||
},
|
||||
@@ -4482,7 +4585,7 @@
|
||||
"wtype not available - install wtype for paste support": "wtype در دسترس نیست - wtype را برای پشتیبانی از الصاق نصب کنید"
|
||||
},
|
||||
"yesterday": {
|
||||
"yesterday": ""
|
||||
"yesterday": "دیروز"
|
||||
},
|
||||
"• Install only from trusted sources": {
|
||||
"• Install only from trusted sources": "نصب تنها از منابع معتبر"
|
||||
|
||||
@@ -164,6 +164,9 @@
|
||||
"Activate": {
|
||||
"Activate": "הפעל/י"
|
||||
},
|
||||
"Activation": {
|
||||
"Activation": ""
|
||||
},
|
||||
"Active": {
|
||||
"Active": "פעיל"
|
||||
},
|
||||
@@ -233,6 +236,9 @@
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": {
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": "Alt+←/Backspace: חזרה • F1/I: מידע על הקובץ • F10: עזרה • Esc: סגירה"
|
||||
},
|
||||
"Always Active": {
|
||||
"Always Active": ""
|
||||
},
|
||||
"Always Show Percentage": {
|
||||
"Always Show Percentage": "הצג/י תמיד אחוזים"
|
||||
},
|
||||
@@ -365,6 +371,9 @@
|
||||
"Auto-Clear After": {
|
||||
"Auto-Clear After": ""
|
||||
},
|
||||
"Auto-Hide Timeout": {
|
||||
"Auto-Hide Timeout": ""
|
||||
},
|
||||
"Auto-close Niri overview when launching apps.": {
|
||||
"Auto-close Niri overview when launching apps.": ""
|
||||
},
|
||||
@@ -692,6 +701,9 @@
|
||||
"Clear at Startup": {
|
||||
"Clear at Startup": ""
|
||||
},
|
||||
"Click 'Setup' to create cursor config and add include to your compositor config.": {
|
||||
"Click 'Setup' to create cursor config and add include to your compositor config.": ""
|
||||
},
|
||||
"Click 'Setup' to create dms/binds.kdl and add include to config.kdl.": {
|
||||
"Click 'Setup' to create dms/binds.kdl and add include to config.kdl.": ""
|
||||
},
|
||||
@@ -878,6 +890,9 @@
|
||||
"Copied!": {
|
||||
"Copied!": "הועתק!"
|
||||
},
|
||||
"Copy": {
|
||||
"Copy": ""
|
||||
},
|
||||
"Copy PID": {
|
||||
"Copy PID": "העתק/י PID"
|
||||
},
|
||||
@@ -932,6 +947,18 @@
|
||||
"Current: %1": {
|
||||
"Current: %1": ""
|
||||
},
|
||||
"Cursor Config Not Configured": {
|
||||
"Cursor Config Not Configured": ""
|
||||
},
|
||||
"Cursor Include Missing": {
|
||||
"Cursor Include Missing": ""
|
||||
},
|
||||
"Cursor Size": {
|
||||
"Cursor Size": ""
|
||||
},
|
||||
"Cursor Theme": {
|
||||
"Cursor Theme": ""
|
||||
},
|
||||
"Custom": {
|
||||
"Custom": "מותאם אישית"
|
||||
},
|
||||
@@ -1772,9 +1799,24 @@
|
||||
"Hide Delay": {
|
||||
"Hide Delay": "עיכוב הסתרה"
|
||||
},
|
||||
"Hide When Typing": {
|
||||
"Hide When Typing": ""
|
||||
},
|
||||
"Hide When Windows Open": {
|
||||
"Hide When Windows Open": ""
|
||||
},
|
||||
"Hide cursor after inactivity (0 = disabled)": {
|
||||
"Hide cursor after inactivity (0 = disabled)": ""
|
||||
},
|
||||
"Hide cursor when pressing keyboard keys": {
|
||||
"Hide cursor when pressing keyboard keys": ""
|
||||
},
|
||||
"Hide cursor when using touch input": {
|
||||
"Hide cursor when using touch input": ""
|
||||
},
|
||||
"Hide on Touch": {
|
||||
"Hide on Touch": ""
|
||||
},
|
||||
"Hide the dock when not in use and reveal it when hovering near the dock area": {
|
||||
"Hide the dock when not in use and reveal it when hovering near the dock area": "הסתר/י את הDock כשאינו בשימוש והצג/י אותו מחדש בעת ריחוף ליד אזור העגינה"
|
||||
},
|
||||
@@ -1937,6 +1979,15 @@
|
||||
"Key": {
|
||||
"Key": "מקש"
|
||||
},
|
||||
"Keybind Sources": {
|
||||
"Keybind Sources": ""
|
||||
},
|
||||
"Keybinds Search Settings": {
|
||||
"Keybinds Search Settings": ""
|
||||
},
|
||||
"Keybinds shown alongside regular search results": {
|
||||
"Keybinds shown alongside regular search results": ""
|
||||
},
|
||||
"Keyboard Layout Name": {
|
||||
"Keyboard Layout Name": "שם פריסת המקלדת"
|
||||
},
|
||||
@@ -2255,6 +2306,12 @@
|
||||
"Mount": {
|
||||
"Mount": "טעינה"
|
||||
},
|
||||
"Mouse pointer appearance": {
|
||||
"Mouse pointer appearance": ""
|
||||
},
|
||||
"Mouse pointer size in pixels": {
|
||||
"Mouse pointer size in pixels": ""
|
||||
},
|
||||
"Move Widget": {
|
||||
"Move Widget": ""
|
||||
},
|
||||
@@ -3038,6 +3095,9 @@
|
||||
"Scrolling": {
|
||||
"Scrolling": "גלילה"
|
||||
},
|
||||
"Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.": {
|
||||
"Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.": ""
|
||||
},
|
||||
"Search file contents": {
|
||||
"Search file contents": "חפש/י בתוכן הקבצים"
|
||||
},
|
||||
@@ -3050,6 +3110,9 @@
|
||||
"Search keybinds...": {
|
||||
"Search keybinds...": "חפש/י קיצורי מקלדת..."
|
||||
},
|
||||
"Search keyboard shortcuts from your compositor and applications": {
|
||||
"Search keyboard shortcuts from your compositor and applications": ""
|
||||
},
|
||||
"Search plugins...": {
|
||||
"Search plugins...": "חפש/י תוספים..."
|
||||
},
|
||||
@@ -3092,6 +3155,9 @@
|
||||
"Select an image file...": {
|
||||
"Select an image file...": "בחר/י קובץ תמונה..."
|
||||
},
|
||||
"Select at least one provider": {
|
||||
"Select at least one provider": ""
|
||||
},
|
||||
"Select device...": {
|
||||
"Select device...": "בחר/י התקן..."
|
||||
},
|
||||
@@ -3116,6 +3182,9 @@
|
||||
"Select the palette algorithm used for wallpaper-based colors": {
|
||||
"Select the palette algorithm used for wallpaper-based colors": "בחר/י את האלגוריתם שייקבע את פלטת הצבעים עבור צבעים מבוססי תמונת רקע"
|
||||
},
|
||||
"Select which keybind providers to include": {
|
||||
"Select which keybind providers to include": ""
|
||||
},
|
||||
"Select which transitions to include in randomization": {
|
||||
"Select which transitions to include in randomization": "בחר/י אילו מעברים לכלול באקראיות"
|
||||
},
|
||||
@@ -3293,6 +3362,9 @@
|
||||
"Show on Overview": {
|
||||
"Show on Overview": "הצג/י בתצוגת סקירה"
|
||||
},
|
||||
"Show on Overview Only": {
|
||||
"Show on Overview Only": ""
|
||||
},
|
||||
"Show on all connected displays": {
|
||||
"Show on all connected displays": "הצג/י בכל המסכים המחוברים"
|
||||
},
|
||||
@@ -3683,12 +3755,21 @@
|
||||
"Transparency": {
|
||||
"Transparency": "שקיפות"
|
||||
},
|
||||
"Trigger": {
|
||||
"Trigger": ""
|
||||
},
|
||||
"Trigger Prefix": {
|
||||
"Trigger Prefix": ""
|
||||
},
|
||||
"Turn off monitors after": {
|
||||
"Turn off monitors after": "כבה/י את כל המסכים לאחר"
|
||||
},
|
||||
"Type": {
|
||||
"Type": "סוג"
|
||||
},
|
||||
"Type this prefix to search keybinds": {
|
||||
"Type this prefix to search keybinds": ""
|
||||
},
|
||||
"Typography": {
|
||||
"Typography": "טיפוגרפיה"
|
||||
},
|
||||
@@ -3716,6 +3797,9 @@
|
||||
"Unknown Network": {
|
||||
"Unknown Network": ""
|
||||
},
|
||||
"Unpin": {
|
||||
"Unpin": ""
|
||||
},
|
||||
"Unpin from Dock": {
|
||||
"Unpin from Dock": "בטל/י נעיצה על הDock"
|
||||
},
|
||||
@@ -3737,6 +3821,9 @@
|
||||
"Update Plugin": {
|
||||
"Update Plugin": "עדכן/י תוסף"
|
||||
},
|
||||
"Usage Tips": {
|
||||
"Usage Tips": ""
|
||||
},
|
||||
"Use 24-hour time format instead of 12-hour AM/PM": {
|
||||
"Use 24-hour time format instead of 12-hour AM/PM": "השתמש/י בתבנית 24 שעות במקום 12 שעות (AM/PM)"
|
||||
},
|
||||
@@ -3791,6 +3878,9 @@
|
||||
"Use sound theme from system settings": {
|
||||
"Use sound theme from system settings": "השתמש/י בערכת הצלילים מהגדרות המערכת"
|
||||
},
|
||||
"Use trigger prefix to activate": {
|
||||
"Use trigger prefix to activate": ""
|
||||
},
|
||||
"Use%": {
|
||||
"Use%": "השתמש/י ב%"
|
||||
},
|
||||
@@ -4072,6 +4162,9 @@
|
||||
"author attribution": {
|
||||
"by %1": ""
|
||||
},
|
||||
"bar shadow settings card": {
|
||||
"Shadow": ""
|
||||
},
|
||||
"browse themes button | theme browser header | theme browser window title": {
|
||||
"Browse Themes": ""
|
||||
},
|
||||
@@ -4105,6 +4198,9 @@
|
||||
"dms/binds.kdl is now included in config.kdl": {
|
||||
"dms/binds.kdl is now included in config.kdl": "dms/binds.kdl כעת כלול בconfig.kdl"
|
||||
},
|
||||
"dms/cursor config exists but is not included. Cursor settings won't apply.": {
|
||||
"dms/cursor config exists but is not included. Cursor settings won't apply.": ""
|
||||
},
|
||||
"dms/outputs config exists but is not included in your compositor config. Display changes won't persist.": {
|
||||
"dms/outputs config exists but is not included in your compositor config. Display changes won't persist.": ""
|
||||
},
|
||||
@@ -4421,6 +4517,13 @@
|
||||
"settings_displays": {
|
||||
"Widgets": ""
|
||||
},
|
||||
"shadow color option": {
|
||||
"Surface": "",
|
||||
"Text": ""
|
||||
},
|
||||
"shadow intensity slider": {
|
||||
"Intensity": ""
|
||||
},
|
||||
"source code link": {
|
||||
"source": ""
|
||||
},
|
||||
|
||||
@@ -164,6 +164,9 @@
|
||||
"Activate": {
|
||||
"Activate": "Aktiválás"
|
||||
},
|
||||
"Activation": {
|
||||
"Activation": ""
|
||||
},
|
||||
"Active": {
|
||||
"Active": "Aktív"
|
||||
},
|
||||
@@ -233,6 +236,9 @@
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": {
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": "Alt+←/Backspace: Vissza • F1/I: Fájlinfó • F10: Súgó • Esc: Bezárás"
|
||||
},
|
||||
"Always Active": {
|
||||
"Always Active": ""
|
||||
},
|
||||
"Always Show Percentage": {
|
||||
"Always Show Percentage": "Mindig mutassa a százalékot"
|
||||
},
|
||||
@@ -365,6 +371,9 @@
|
||||
"Auto-Clear After": {
|
||||
"Auto-Clear After": "Automatikus törlés"
|
||||
},
|
||||
"Auto-Hide Timeout": {
|
||||
"Auto-Hide Timeout": ""
|
||||
},
|
||||
"Auto-close Niri overview when launching apps.": {
|
||||
"Auto-close Niri overview when launching apps.": "A Niri-áttekintés automatikus bezárása alkalmazások indításakor."
|
||||
},
|
||||
@@ -692,6 +701,9 @@
|
||||
"Clear at Startup": {
|
||||
"Clear at Startup": "Törlés indításkor"
|
||||
},
|
||||
"Click 'Setup' to create cursor config and add include to your compositor config.": {
|
||||
"Click 'Setup' to create cursor config and add include to your compositor config.": ""
|
||||
},
|
||||
"Click 'Setup' to create dms/binds.kdl and add include to config.kdl.": {
|
||||
"Click 'Setup' to create dms/binds.kdl and add include to config.kdl.": "Kattints a „Beállítás” gombra a dms/binds.kdl létrehozásához és az include bejegyzés hozzádásához a config.kdl fájlhoz."
|
||||
},
|
||||
@@ -878,6 +890,9 @@
|
||||
"Copied!": {
|
||||
"Copied!": "Másolva!"
|
||||
},
|
||||
"Copy": {
|
||||
"Copy": ""
|
||||
},
|
||||
"Copy PID": {
|
||||
"Copy PID": "PID másolása"
|
||||
},
|
||||
@@ -932,6 +947,18 @@
|
||||
"Current: %1": {
|
||||
"Current: %1": "Jelenleg: %1"
|
||||
},
|
||||
"Cursor Config Not Configured": {
|
||||
"Cursor Config Not Configured": ""
|
||||
},
|
||||
"Cursor Include Missing": {
|
||||
"Cursor Include Missing": ""
|
||||
},
|
||||
"Cursor Size": {
|
||||
"Cursor Size": ""
|
||||
},
|
||||
"Cursor Theme": {
|
||||
"Cursor Theme": ""
|
||||
},
|
||||
"Custom": {
|
||||
"Custom": "Egyéni"
|
||||
},
|
||||
@@ -1772,9 +1799,24 @@
|
||||
"Hide Delay": {
|
||||
"Hide Delay": "Elrejtési késleltetés"
|
||||
},
|
||||
"Hide When Typing": {
|
||||
"Hide When Typing": ""
|
||||
},
|
||||
"Hide When Windows Open": {
|
||||
"Hide When Windows Open": "Elrejtés, amikor ablakok vannak megnyitva"
|
||||
},
|
||||
"Hide cursor after inactivity (0 = disabled)": {
|
||||
"Hide cursor after inactivity (0 = disabled)": ""
|
||||
},
|
||||
"Hide cursor when pressing keyboard keys": {
|
||||
"Hide cursor when pressing keyboard keys": ""
|
||||
},
|
||||
"Hide cursor when using touch input": {
|
||||
"Hide cursor when using touch input": ""
|
||||
},
|
||||
"Hide on Touch": {
|
||||
"Hide on Touch": ""
|
||||
},
|
||||
"Hide the dock when not in use and reveal it when hovering near the dock area": {
|
||||
"Hide the dock when not in use and reveal it when hovering near the dock area": "Dokk elrejtése, amikor az nincs használatban és megjelenítés, amikor az egér a dokkterület közelében van"
|
||||
},
|
||||
@@ -1937,6 +1979,15 @@
|
||||
"Key": {
|
||||
"Key": "Billentyű"
|
||||
},
|
||||
"Keybind Sources": {
|
||||
"Keybind Sources": ""
|
||||
},
|
||||
"Keybinds Search Settings": {
|
||||
"Keybinds Search Settings": ""
|
||||
},
|
||||
"Keybinds shown alongside regular search results": {
|
||||
"Keybinds shown alongside regular search results": ""
|
||||
},
|
||||
"Keyboard Layout Name": {
|
||||
"Keyboard Layout Name": "Billentyűzetkiosztás neve"
|
||||
},
|
||||
@@ -2255,6 +2306,12 @@
|
||||
"Mount": {
|
||||
"Mount": "Csatlakoztatás"
|
||||
},
|
||||
"Mouse pointer appearance": {
|
||||
"Mouse pointer appearance": ""
|
||||
},
|
||||
"Mouse pointer size in pixels": {
|
||||
"Mouse pointer size in pixels": ""
|
||||
},
|
||||
"Move Widget": {
|
||||
"Move Widget": "Widget mozgatása"
|
||||
},
|
||||
@@ -3038,6 +3095,9 @@
|
||||
"Scrolling": {
|
||||
"Scrolling": "Görgetés"
|
||||
},
|
||||
"Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.": {
|
||||
"Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.": ""
|
||||
},
|
||||
"Search file contents": {
|
||||
"Search file contents": "Fájltartalom keresése"
|
||||
},
|
||||
@@ -3050,6 +3110,9 @@
|
||||
"Search keybinds...": {
|
||||
"Search keybinds...": "Billentyűk keresése…"
|
||||
},
|
||||
"Search keyboard shortcuts from your compositor and applications": {
|
||||
"Search keyboard shortcuts from your compositor and applications": ""
|
||||
},
|
||||
"Search plugins...": {
|
||||
"Search plugins...": "Bővítmények keresése…"
|
||||
},
|
||||
@@ -3092,6 +3155,9 @@
|
||||
"Select an image file...": {
|
||||
"Select an image file...": "Képfájl kiválasztása…"
|
||||
},
|
||||
"Select at least one provider": {
|
||||
"Select at least one provider": ""
|
||||
},
|
||||
"Select device...": {
|
||||
"Select device...": "Eszköz kiválasztása…"
|
||||
},
|
||||
@@ -3116,6 +3182,9 @@
|
||||
"Select the palette algorithm used for wallpaper-based colors": {
|
||||
"Select the palette algorithm used for wallpaper-based colors": "Válaszd ki a háttérkép alapú színekhez használt paletta algoritmust"
|
||||
},
|
||||
"Select which keybind providers to include": {
|
||||
"Select which keybind providers to include": ""
|
||||
},
|
||||
"Select which transitions to include in randomization": {
|
||||
"Select which transitions to include in randomization": "Válaszd ki, mely átmenetek legyenek a véletlenszerűsítésben"
|
||||
},
|
||||
@@ -3293,6 +3362,9 @@
|
||||
"Show on Overview": {
|
||||
"Show on Overview": "Megjelenítés az áttekintésben"
|
||||
},
|
||||
"Show on Overview Only": {
|
||||
"Show on Overview Only": ""
|
||||
},
|
||||
"Show on all connected displays": {
|
||||
"Show on all connected displays": "Megjelenítés minden csatlakoztatott kijelzőn"
|
||||
},
|
||||
@@ -3683,12 +3755,21 @@
|
||||
"Transparency": {
|
||||
"Transparency": "Átlátszóság"
|
||||
},
|
||||
"Trigger": {
|
||||
"Trigger": ""
|
||||
},
|
||||
"Trigger Prefix": {
|
||||
"Trigger Prefix": ""
|
||||
},
|
||||
"Turn off monitors after": {
|
||||
"Turn off monitors after": "Monitorok kikapcsolása ennyi idő után:"
|
||||
},
|
||||
"Type": {
|
||||
"Type": "Típus"
|
||||
},
|
||||
"Type this prefix to search keybinds": {
|
||||
"Type this prefix to search keybinds": ""
|
||||
},
|
||||
"Typography": {
|
||||
"Typography": "Tipográfia"
|
||||
},
|
||||
@@ -3716,6 +3797,9 @@
|
||||
"Unknown Network": {
|
||||
"Unknown Network": "Ismeretlen hálózat"
|
||||
},
|
||||
"Unpin": {
|
||||
"Unpin": ""
|
||||
},
|
||||
"Unpin from Dock": {
|
||||
"Unpin from Dock": "Rögzítés feloldása a Dokkról"
|
||||
},
|
||||
@@ -3737,6 +3821,9 @@
|
||||
"Update Plugin": {
|
||||
"Update Plugin": "Bővítmény frissítése"
|
||||
},
|
||||
"Usage Tips": {
|
||||
"Usage Tips": ""
|
||||
},
|
||||
"Use 24-hour time format instead of 12-hour AM/PM": {
|
||||
"Use 24-hour time format instead of 12-hour AM/PM": "24 órás időformátum használata a 12 órás AM/PM formátum helyett"
|
||||
},
|
||||
@@ -3791,6 +3878,9 @@
|
||||
"Use sound theme from system settings": {
|
||||
"Use sound theme from system settings": "Hangtéma használata a rendszerbeállításokból"
|
||||
},
|
||||
"Use trigger prefix to activate": {
|
||||
"Use trigger prefix to activate": ""
|
||||
},
|
||||
"Use%": {
|
||||
"Use%": "Használat%"
|
||||
},
|
||||
@@ -4072,6 +4162,9 @@
|
||||
"author attribution": {
|
||||
"by %1": "ettől: %1"
|
||||
},
|
||||
"bar shadow settings card": {
|
||||
"Shadow": ""
|
||||
},
|
||||
"browse themes button | theme browser header | theme browser window title": {
|
||||
"Browse Themes": "Témák böngészése"
|
||||
},
|
||||
@@ -4105,6 +4198,9 @@
|
||||
"dms/binds.kdl is now included in config.kdl": {
|
||||
"dms/binds.kdl is now included in config.kdl": "A dms/binds.kdl most már szerepel a config.kdl fájlban"
|
||||
},
|
||||
"dms/cursor config exists but is not included. Cursor settings won't apply.": {
|
||||
"dms/cursor config exists but is not included. Cursor settings won't apply.": ""
|
||||
},
|
||||
"dms/outputs config exists but is not included in your compositor config. Display changes won't persist.": {
|
||||
"dms/outputs config exists but is not included in your compositor config. Display changes won't persist.": "A dms/outputs konfiguráció létezik, de nincs benne a kompozitorod konfigurációjában. A kijelző változások nem maradnak meg."
|
||||
},
|
||||
@@ -4421,6 +4517,13 @@
|
||||
"settings_displays": {
|
||||
"Widgets": "Widgetek"
|
||||
},
|
||||
"shadow color option": {
|
||||
"Surface": "",
|
||||
"Text": ""
|
||||
},
|
||||
"shadow intensity slider": {
|
||||
"Intensity": ""
|
||||
},
|
||||
"source code link": {
|
||||
"source": "forrás"
|
||||
},
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
"%1 job(s)": "%1 stampa/e"
|
||||
},
|
||||
"%1 notifications": {
|
||||
"%1 notifications": ""
|
||||
"%1 notifications": "%1 notifiche"
|
||||
},
|
||||
"%1 printer(s)": {
|
||||
"%1 printer(s)": "%1 stampante/i"
|
||||
@@ -42,7 +42,7 @@
|
||||
"(Unnamed)": "(Senza Nome)"
|
||||
},
|
||||
"+ %1 more": {
|
||||
"+ %1 more": ""
|
||||
"+ %1 more": "+ altre %1"
|
||||
},
|
||||
"0 = square corners": {
|
||||
"0 = square corners": "0 = angoli squadrati"
|
||||
@@ -57,7 +57,7 @@
|
||||
"1 minute": "1 minuto"
|
||||
},
|
||||
"1 notification": {
|
||||
"1 notification": ""
|
||||
"1 notification": "1 notifica"
|
||||
},
|
||||
"1 second": {
|
||||
"1 second": "1 secondo"
|
||||
@@ -138,7 +138,7 @@
|
||||
"About": "Info"
|
||||
},
|
||||
"Accent Color": {
|
||||
"Accent Color": ""
|
||||
"Accent Color": "Colore di Accento"
|
||||
},
|
||||
"Accept Jobs": {
|
||||
"Accept Jobs": "Accetta Stampe"
|
||||
@@ -164,6 +164,9 @@
|
||||
"Activate": {
|
||||
"Activate": "Attiva"
|
||||
},
|
||||
"Activation": {
|
||||
"Activation": ""
|
||||
},
|
||||
"Active": {
|
||||
"Active": "Attivo"
|
||||
},
|
||||
@@ -233,6 +236,9 @@
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": {
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": "Alt+←/Backspace: Indietro • F1/I: File Info • F10: Aiuto • Esc: Chiudi"
|
||||
},
|
||||
"Always Active": {
|
||||
"Always Active": ""
|
||||
},
|
||||
"Always Show Percentage": {
|
||||
"Always Show Percentage": "Mostra sempre percentuale"
|
||||
},
|
||||
@@ -291,7 +297,7 @@
|
||||
"Apps are ordered by usage frequency, then last used, then alphabetically.": "Le applicazioni sono ordinate per frequenza d'uso, poi per ultimo utilizzo, e infine in ordine alfabetico."
|
||||
},
|
||||
"Arrange displays and configure resolution, refresh rate, and VRR": {
|
||||
"Arrange displays and configure resolution, refresh rate, and VRR": "Disporre gli schermi e configurare risoluzione, frequenza di aggiornamento e VRR"
|
||||
"Arrange displays and configure resolution, refresh rate, and VRR": "Disponi gli schermi e configurare risoluzione, frequenza di aggiornamento e VRR"
|
||||
},
|
||||
"Audio": {
|
||||
"Audio": "Audio"
|
||||
@@ -365,6 +371,9 @@
|
||||
"Auto-Clear After": {
|
||||
"Auto-Clear After": "Cancellazione Automatica Dopo"
|
||||
},
|
||||
"Auto-Hide Timeout": {
|
||||
"Auto-Hide Timeout": ""
|
||||
},
|
||||
"Auto-close Niri overview when launching apps.": {
|
||||
"Auto-close Niri overview when launching apps.": "Chiudi automaticamente la panoramica di Niri all'avvio delle app."
|
||||
},
|
||||
@@ -426,7 +435,7 @@
|
||||
"Available Screens (%1)": "Schermi disponibili (%1)"
|
||||
},
|
||||
"Available in Detailed and Forecast view modes": {
|
||||
"Available in Detailed and Forecast view modes": ""
|
||||
"Available in Detailed and Forecast view modes": "Disponibile nelle modalità Dettagliata e Previsioni"
|
||||
},
|
||||
"BSSID": {
|
||||
"BSSID": "BSSID"
|
||||
@@ -516,7 +525,7 @@
|
||||
"Border Opacity": "Opacità Bordi"
|
||||
},
|
||||
"Border Size": {
|
||||
"Border Size": ""
|
||||
"Border Size": "Spessore bordo"
|
||||
},
|
||||
"Border Thickness": {
|
||||
"Border Thickness": "Spessore Bordi"
|
||||
@@ -612,7 +621,7 @@
|
||||
"Center Section": "Sezione Centrale"
|
||||
},
|
||||
"Center Single Column": {
|
||||
"Center Single Column": "Al Centro Colonna Singola"
|
||||
"Center Single Column": "Colonna Singola Centrale"
|
||||
},
|
||||
"Center Tiling": {
|
||||
"Center Tiling": "Tiling Centrale"
|
||||
@@ -645,7 +654,7 @@
|
||||
"Choose colors from palette": "Scegli i colori dalla tavolozza"
|
||||
},
|
||||
"Choose how the weather widget is displayed": {
|
||||
"Choose how the weather widget is displayed": ""
|
||||
"Choose how the weather widget is displayed": "Scegli come visualizzare il widget meteo"
|
||||
},
|
||||
"Choose icon": {
|
||||
"Choose icon": "Scegli icona"
|
||||
@@ -692,6 +701,9 @@
|
||||
"Clear at Startup": {
|
||||
"Clear at Startup": "Cancella all'Avvio"
|
||||
},
|
||||
"Click 'Setup' to create cursor config and add include to your compositor config.": {
|
||||
"Click 'Setup' to create cursor config and add include to your compositor config.": ""
|
||||
},
|
||||
"Click 'Setup' to create dms/binds.kdl and add include to config.kdl.": {
|
||||
"Click 'Setup' to create dms/binds.kdl and add include to config.kdl.": "Clicca su 'Configura' per creare dms/binds.kdl e aggiungere l'istruzione include a config.kdl."
|
||||
},
|
||||
@@ -777,7 +789,7 @@
|
||||
"Communication": "Comunicazione"
|
||||
},
|
||||
"Compact": {
|
||||
"Compact": ""
|
||||
"Compact": "Compatto"
|
||||
},
|
||||
"Compact Mode": {
|
||||
"Compact Mode": "Modalità Compatta"
|
||||
@@ -878,6 +890,9 @@
|
||||
"Copied!": {
|
||||
"Copied!": "Copiato!"
|
||||
},
|
||||
"Copy": {
|
||||
"Copy": ""
|
||||
},
|
||||
"Copy PID": {
|
||||
"Copy PID": "Copia PID"
|
||||
},
|
||||
@@ -932,11 +947,23 @@
|
||||
"Current: %1": {
|
||||
"Current: %1": "Attuale: %1"
|
||||
},
|
||||
"Cursor Config Not Configured": {
|
||||
"Cursor Config Not Configured": ""
|
||||
},
|
||||
"Cursor Include Missing": {
|
||||
"Cursor Include Missing": ""
|
||||
},
|
||||
"Cursor Size": {
|
||||
"Cursor Size": ""
|
||||
},
|
||||
"Cursor Theme": {
|
||||
"Cursor Theme": ""
|
||||
},
|
||||
"Custom": {
|
||||
"Custom": "Personalizzato"
|
||||
},
|
||||
"Custom Color": {
|
||||
"Custom Color": ""
|
||||
"Custom Color": "Colore Personalizzato"
|
||||
},
|
||||
"Custom Duration": {
|
||||
"Custom Duration": "Durata Personalizzata"
|
||||
@@ -1101,7 +1128,7 @@
|
||||
"Desktop Clock": "Orologio Desktop"
|
||||
},
|
||||
"Detailed": {
|
||||
"Detailed": ""
|
||||
"Detailed": "Dettagliata"
|
||||
},
|
||||
"Development": {
|
||||
"Development": "Sviluppo"
|
||||
@@ -1191,7 +1218,7 @@
|
||||
"Display currently focused application title": "Mostra il titolo dell'applicazione attualmente attiva"
|
||||
},
|
||||
"Display hourly weather predictions": {
|
||||
"Display hourly weather predictions": ""
|
||||
"Display hourly weather predictions": "Mostra previsioni meteo orarie"
|
||||
},
|
||||
"Display only workspaces that contain windows": {
|
||||
"Display only workspaces that contain windows": "Mostra solo gli spazi di lavoro che contengono finestre"
|
||||
@@ -1314,7 +1341,7 @@
|
||||
"Enable WiFi": "Abilita WiFi"
|
||||
},
|
||||
"Enable compositor-targetable blur layer (namespace: dms:blurwallpaper). Requires manual niri configuration.": {
|
||||
"Enable compositor-targetable blur layer (namespace: dms:blurwallpaper). Requires manual niri configuration.": "Abilitare il livello di sfocatura compositore-targetable (namespace: dms:blurwallpaper). Richiede la configurazione manuale di niri."
|
||||
"Enable compositor-targetable blur layer (namespace: dms:blurwallpaper). Requires manual niri configuration.": "Abilita il livello di sfocatura compositore-targetable (namespace: dms:blurwallpaper). Richiede la configurazione manuale di niri."
|
||||
},
|
||||
"Enable fingerprint authentication": {
|
||||
"Enable fingerprint authentication": "Abilita autenticazione biometrica"
|
||||
@@ -1569,7 +1596,7 @@
|
||||
"Failed to write temp file for validation": "Impossibile scrivere il file temporaneo per la validazione"
|
||||
},
|
||||
"Feels": {
|
||||
"Feels": ""
|
||||
"Feels": "Percepita"
|
||||
},
|
||||
"Feels Like": {
|
||||
"Feels Like": "Temp. percepita"
|
||||
@@ -1653,10 +1680,10 @@
|
||||
"Force terminal applications to always use dark color schemes": "Forza applicazioni da terminale ad usare schemi di colori scuri"
|
||||
},
|
||||
"Forecast": {
|
||||
"Forecast": ""
|
||||
"Forecast": "Previsioni"
|
||||
},
|
||||
"Forecast Days": {
|
||||
"Forecast Days": ""
|
||||
"Forecast Days": "Giorni di Previsione"
|
||||
},
|
||||
"Forecast Not Available": {
|
||||
"Forecast Not Available": "Previsioni Non Disponibili"
|
||||
@@ -1772,9 +1799,24 @@
|
||||
"Hide Delay": {
|
||||
"Hide Delay": "Ritardo Nascondi"
|
||||
},
|
||||
"Hide When Typing": {
|
||||
"Hide When Typing": ""
|
||||
},
|
||||
"Hide When Windows Open": {
|
||||
"Hide When Windows Open": "Nascondi Quando le Finestre Sono Aperte"
|
||||
},
|
||||
"Hide cursor after inactivity (0 = disabled)": {
|
||||
"Hide cursor after inactivity (0 = disabled)": ""
|
||||
},
|
||||
"Hide cursor when pressing keyboard keys": {
|
||||
"Hide cursor when pressing keyboard keys": ""
|
||||
},
|
||||
"Hide cursor when using touch input": {
|
||||
"Hide cursor when using touch input": ""
|
||||
},
|
||||
"Hide on Touch": {
|
||||
"Hide on Touch": ""
|
||||
},
|
||||
"Hide the dock when not in use and reveal it when hovering near the dock area": {
|
||||
"Hide the dock when not in use and reveal it when hovering near the dock area": "Nascondi la dock quando non è in uso e mostrala quando il cursore passa vicino all’area della dock"
|
||||
},
|
||||
@@ -1812,7 +1854,7 @@
|
||||
"Hourly Forecast": "Previsioni Orarie"
|
||||
},
|
||||
"Hourly Forecast Count": {
|
||||
"Hourly Forecast Count": ""
|
||||
"Hourly Forecast Count": "Numero di Previsioni Orarie"
|
||||
},
|
||||
"How often to change wallpaper": {
|
||||
"How often to change wallpaper": "Quanto spesso cambiare lo sfondo"
|
||||
@@ -1821,7 +1863,7 @@
|
||||
"Humidity": "Umidità"
|
||||
},
|
||||
"Hyprland Layout Overrides": {
|
||||
"Hyprland Layout Overrides": ""
|
||||
"Hyprland Layout Overrides": "Sovrascritture Layout di Hyprland"
|
||||
},
|
||||
"I Understand": {
|
||||
"I Understand": "Ho capito"
|
||||
@@ -1937,6 +1979,15 @@
|
||||
"Key": {
|
||||
"Key": "Tasto"
|
||||
},
|
||||
"Keybind Sources": {
|
||||
"Keybind Sources": ""
|
||||
},
|
||||
"Keybinds Search Settings": {
|
||||
"Keybinds Search Settings": ""
|
||||
},
|
||||
"Keybinds shown alongside regular search results": {
|
||||
"Keybinds shown alongside regular search results": ""
|
||||
},
|
||||
"Keyboard Layout Name": {
|
||||
"Keyboard Layout Name": "Nome Layout Tastiera"
|
||||
},
|
||||
@@ -2091,7 +2142,7 @@
|
||||
"Management": "Gestione"
|
||||
},
|
||||
"MangoWC Layout Overrides": {
|
||||
"MangoWC Layout Overrides": ""
|
||||
"MangoWC Layout Overrides": "Sovrascritture Layout di MangoWC"
|
||||
},
|
||||
"Manual Coordinates": {
|
||||
"Manual Coordinates": "Coordinate Manuali"
|
||||
@@ -2255,6 +2306,12 @@
|
||||
"Mount": {
|
||||
"Mount": "Monta"
|
||||
},
|
||||
"Mouse pointer appearance": {
|
||||
"Mouse pointer appearance": ""
|
||||
},
|
||||
"Mouse pointer size in pixels": {
|
||||
"Mouse pointer size in pixels": ""
|
||||
},
|
||||
"Move Widget": {
|
||||
"Move Widget": "Sposta Widget"
|
||||
},
|
||||
@@ -2358,7 +2415,7 @@
|
||||
"No VPN profiles": "Nessun profilo VPN"
|
||||
},
|
||||
"No Weather Data": {
|
||||
"No Weather Data": ""
|
||||
"No Weather Data": "Nessun Dato Meteo"
|
||||
},
|
||||
"No Weather Data Available": {
|
||||
"No Weather Data Available": "Nessun Dato Meteo Disponibile"
|
||||
@@ -2451,7 +2508,7 @@
|
||||
"Not connected": "Non connesso"
|
||||
},
|
||||
"Not detected": {
|
||||
"Not detected": ""
|
||||
"Not detected": "Non rilevato"
|
||||
},
|
||||
"Note: this only changes the percentage, it does not actually limit charging.": {
|
||||
"Note: this only changes the percentage, it does not actually limit charging.": "Nota: questa opzione modifica solo la percentuale visualizzata, non limita fisicamente la carica."
|
||||
@@ -2568,7 +2625,7 @@
|
||||
"Override": "Sovrascrivi"
|
||||
},
|
||||
"Override Border Size": {
|
||||
"Override Border Size": ""
|
||||
"Override Border Size": "Sovrascrivi Spessore Bordi"
|
||||
},
|
||||
"Override Corner Radius": {
|
||||
"Override Corner Radius": "Sovrascrivi Raggio Angoli"
|
||||
@@ -2745,7 +2802,7 @@
|
||||
"Power source": "Sorgente di alimentazione"
|
||||
},
|
||||
"Precip": {
|
||||
"Precip": ""
|
||||
"Precip": "Precipitazioni"
|
||||
},
|
||||
"Precipitation Chance": {
|
||||
"Precipitation Chance": "Probabilità di Precipitazioni"
|
||||
@@ -2949,10 +3006,10 @@
|
||||
"Rounded corners for windows": "Angoli arrotondati per le finestre"
|
||||
},
|
||||
"Rounded corners for windows (border_radius)": {
|
||||
"Rounded corners for windows (border_radius)": ""
|
||||
"Rounded corners for windows (border_radius)": "Angoli arrotondati per le finestre (border_radius)"
|
||||
},
|
||||
"Rounded corners for windows (decoration.rounding)": {
|
||||
"Rounded corners for windows (decoration.rounding)": ""
|
||||
"Rounded corners for windows (decoration.rounding)": "Angoli arrotondati per le finestre (decoration.rounding)"
|
||||
},
|
||||
"Run DMS Templates": {
|
||||
"Run DMS Templates": "Esegui Template DMS"
|
||||
@@ -3038,6 +3095,9 @@
|
||||
"Scrolling": {
|
||||
"Scrolling": "Scorrimento"
|
||||
},
|
||||
"Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.": {
|
||||
"Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.": ""
|
||||
},
|
||||
"Search file contents": {
|
||||
"Search file contents": "Cerca il contenuto dei file"
|
||||
},
|
||||
@@ -3050,6 +3110,9 @@
|
||||
"Search keybinds...": {
|
||||
"Search keybinds...": "Cerca scorciatoie..."
|
||||
},
|
||||
"Search keyboard shortcuts from your compositor and applications": {
|
||||
"Search keyboard shortcuts from your compositor and applications": ""
|
||||
},
|
||||
"Search plugins...": {
|
||||
"Search plugins...": "Cerca plugin..."
|
||||
},
|
||||
@@ -3092,6 +3155,9 @@
|
||||
"Select an image file...": {
|
||||
"Select an image file...": "Seleziona un'immagine"
|
||||
},
|
||||
"Select at least one provider": {
|
||||
"Select at least one provider": ""
|
||||
},
|
||||
"Select device...": {
|
||||
"Select device...": "Seleziona un dispositivo..."
|
||||
},
|
||||
@@ -3116,6 +3182,9 @@
|
||||
"Select the palette algorithm used for wallpaper-based colors": {
|
||||
"Select the palette algorithm used for wallpaper-based colors": "Seleziona l'algoritmo tavolozza usato per i colori basati sullo sfondo"
|
||||
},
|
||||
"Select which keybind providers to include": {
|
||||
"Select which keybind providers to include": ""
|
||||
},
|
||||
"Select which transitions to include in randomization": {
|
||||
"Select which transitions to include in randomization": "Seleziona quali transizioni includere nella randomizzazione"
|
||||
},
|
||||
@@ -3153,7 +3222,7 @@
|
||||
"Shift+Enter: Paste • Shift+Del: Clear All • Esc: Close": "Shift+Invio: Incolla • Shift+Canc: Cancella Tutto • Esc: Chiudi"
|
||||
},
|
||||
"Short": {
|
||||
"Short": "Corto"
|
||||
"Short": "Breve"
|
||||
},
|
||||
"Shortcuts": {
|
||||
"Shortcuts": "Scorciatoie"
|
||||
@@ -3183,10 +3252,10 @@
|
||||
"Show Dock": "Mostra Dock"
|
||||
},
|
||||
"Show Feels Like Temperature": {
|
||||
"Show Feels Like Temperature": ""
|
||||
"Show Feels Like Temperature": "Mostra Temperatura Percepita"
|
||||
},
|
||||
"Show Forecast": {
|
||||
"Show Forecast": ""
|
||||
"Show Forecast": "Mostra Previsioni"
|
||||
},
|
||||
"Show GPU Temperature": {
|
||||
"Show GPU Temperature": "Mostra Temperatura GPU"
|
||||
@@ -3201,16 +3270,16 @@
|
||||
"Show Hour Numbers": "Mostra Numeri delle Ore"
|
||||
},
|
||||
"Show Hourly Forecast": {
|
||||
"Show Hourly Forecast": ""
|
||||
"Show Hourly Forecast": "Mostra Previsioni Orarie"
|
||||
},
|
||||
"Show Humidity": {
|
||||
"Show Humidity": ""
|
||||
"Show Humidity": "Mostra Umidità"
|
||||
},
|
||||
"Show Line Numbers": {
|
||||
"Show Line Numbers": "Mostra Numero Righe"
|
||||
},
|
||||
"Show Location": {
|
||||
"Show Location": ""
|
||||
"Show Location": "Mostra Posizione"
|
||||
},
|
||||
"Show Lock": {
|
||||
"Show Lock": "Mostra Blocco"
|
||||
@@ -3237,10 +3306,10 @@
|
||||
"Show Power Off": "Mostra Spegni"
|
||||
},
|
||||
"Show Precipitation Probability": {
|
||||
"Show Precipitation Probability": ""
|
||||
"Show Precipitation Probability": "Mostra Probabilità di Precipitazioni"
|
||||
},
|
||||
"Show Pressure": {
|
||||
"Show Pressure": ""
|
||||
"Show Pressure": "Mostra Pressione"
|
||||
},
|
||||
"Show Reboot": {
|
||||
"Show Reboot": "Mostra Riavvia"
|
||||
@@ -3252,7 +3321,7 @@
|
||||
"Show Seconds": "Mostra Secondi"
|
||||
},
|
||||
"Show Sunrise/Sunset": {
|
||||
"Show Sunrise/Sunset": ""
|
||||
"Show Sunrise/Sunset": "Mostra Alba/Tramonto"
|
||||
},
|
||||
"Show Suspend": {
|
||||
"Show Suspend": "Mostra Sospendi"
|
||||
@@ -3261,13 +3330,13 @@
|
||||
"Show Top Processes": "Mostra Processi Principali"
|
||||
},
|
||||
"Show Weather Condition": {
|
||||
"Show Weather Condition": ""
|
||||
"Show Weather Condition": "Mostra Condizioni Meteo"
|
||||
},
|
||||
"Show Welcome": {
|
||||
"Show Welcome": ""
|
||||
"Show Welcome": "Mostra Benvenuto"
|
||||
},
|
||||
"Show Wind Speed": {
|
||||
"Show Wind Speed": ""
|
||||
"Show Wind Speed": "Mostra Velocità del Vento"
|
||||
},
|
||||
"Show Workspace Apps": {
|
||||
"Show Workspace Apps": "Mostra Icone negli Spazi di Lavoro"
|
||||
@@ -3293,6 +3362,9 @@
|
||||
"Show on Overview": {
|
||||
"Show on Overview": "Mostra in Panoramica"
|
||||
},
|
||||
"Show on Overview Only": {
|
||||
"Show on Overview Only": ""
|
||||
},
|
||||
"Show on all connected displays": {
|
||||
"Show on all connected displays": "Mostra su tutti gli schermi connessi"
|
||||
},
|
||||
@@ -3399,10 +3471,10 @@
|
||||
"Space between windows": "Spazio tra le finestre"
|
||||
},
|
||||
"Space between windows (gappih/gappiv/gappoh/gappov)": {
|
||||
"Space between windows (gappih/gappiv/gappoh/gappov)": ""
|
||||
"Space between windows (gappih/gappiv/gappoh/gappov)": "Spazio tra le finestre (gappih/gappiv/gappoh/gappov)"
|
||||
},
|
||||
"Space between windows (gaps_in and gaps_out)": {
|
||||
"Space between windows (gaps_in and gaps_out)": ""
|
||||
"Space between windows (gaps_in and gaps_out)": "Spazio tra le finestre (gaps_in e gaps_out)"
|
||||
},
|
||||
"Spacer": {
|
||||
"Spacer": "Spaziatore"
|
||||
@@ -3426,7 +3498,7 @@
|
||||
"Stacked": "Impilato"
|
||||
},
|
||||
"Standard": {
|
||||
"Standard": ""
|
||||
"Standard": "Standard"
|
||||
},
|
||||
"Start": {
|
||||
"Start": "Avvio"
|
||||
@@ -3651,7 +3723,7 @@
|
||||
"Toner Low": "Toner Basso"
|
||||
},
|
||||
"Tools": {
|
||||
"Tools": ""
|
||||
"Tools": "Strumenti"
|
||||
},
|
||||
"Top": {
|
||||
"Top": "In Alto"
|
||||
@@ -3683,12 +3755,21 @@
|
||||
"Transparency": {
|
||||
"Transparency": "Trasparenza"
|
||||
},
|
||||
"Trigger": {
|
||||
"Trigger": ""
|
||||
},
|
||||
"Trigger Prefix": {
|
||||
"Trigger Prefix": ""
|
||||
},
|
||||
"Turn off monitors after": {
|
||||
"Turn off monitors after": "Spegni monitor dopo"
|
||||
},
|
||||
"Type": {
|
||||
"Type": "Tipo"
|
||||
},
|
||||
"Type this prefix to search keybinds": {
|
||||
"Type this prefix to search keybinds": ""
|
||||
},
|
||||
"Typography": {
|
||||
"Typography": "Tipografia"
|
||||
},
|
||||
@@ -3716,6 +3797,9 @@
|
||||
"Unknown Network": {
|
||||
"Unknown Network": "Rete sconosciuta"
|
||||
},
|
||||
"Unpin": {
|
||||
"Unpin": ""
|
||||
},
|
||||
"Unpin from Dock": {
|
||||
"Unpin from Dock": "Rimuovi dalla Dock"
|
||||
},
|
||||
@@ -3737,6 +3821,9 @@
|
||||
"Update Plugin": {
|
||||
"Update Plugin": "Aggiorna Plugin"
|
||||
},
|
||||
"Usage Tips": {
|
||||
"Usage Tips": ""
|
||||
},
|
||||
"Use 24-hour time format instead of 12-hour AM/PM": {
|
||||
"Use 24-hour time format instead of 12-hour AM/PM": "Usa formato 24-ore invece del 12-ore AM/PM"
|
||||
},
|
||||
@@ -3765,10 +3852,10 @@
|
||||
"Use animated wave progress bars for media playback": "Usa barre ad onde animate per la riproduzione media"
|
||||
},
|
||||
"Use custom border size": {
|
||||
"Use custom border size": ""
|
||||
"Use custom border size": "Usa uno spessore bordo personalizzato"
|
||||
},
|
||||
"Use custom border/focus-ring width": {
|
||||
"Use custom border/focus-ring width": ""
|
||||
"Use custom border/focus-ring width": "Usa larghezza bordo/anello di focus personalizzata"
|
||||
},
|
||||
"Use custom command for update your system": {
|
||||
"Use custom command for update your system": "Usa comando personalizzato per aggiornare il sistema"
|
||||
@@ -3780,7 +3867,7 @@
|
||||
"Use custom window radius instead of theme radius": "Usa un raggio finestra personalizzato invece di quello del tema"
|
||||
},
|
||||
"Use custom window rounding instead of theme radius": {
|
||||
"Use custom window rounding instead of theme radius": ""
|
||||
"Use custom window rounding instead of theme radius": "Usa un arrotondamento finestre personalizzato invece del raggio del tema"
|
||||
},
|
||||
"Use fingerprint reader for lock screen authentication (requires enrolled fingerprints)": {
|
||||
"Use fingerprint reader for lock screen authentication (requires enrolled fingerprints)": "Usa impronte digitali per autenticazione blocco schermo\n(richiede impronte digitali registrate)"
|
||||
@@ -3791,6 +3878,9 @@
|
||||
"Use sound theme from system settings": {
|
||||
"Use sound theme from system settings": "Usa tema di suoni dalle impostazioni di sistema"
|
||||
},
|
||||
"Use trigger prefix to activate": {
|
||||
"Use trigger prefix to activate": ""
|
||||
},
|
||||
"Use%": {
|
||||
"Use%": "Utilizzo%"
|
||||
},
|
||||
@@ -3798,7 +3888,7 @@
|
||||
"Used": "Usato"
|
||||
},
|
||||
"Used when accent color is set to Custom": {
|
||||
"Used when accent color is set to Custom": ""
|
||||
"Used when accent color is set to Custom": "Utilizzato quando il colore di accento è impostato su Personalizzato"
|
||||
},
|
||||
"User": {
|
||||
"User": "Utente"
|
||||
@@ -3876,7 +3966,7 @@
|
||||
"Vibrant palette with playful saturation.": "Tavolozza vibrante con saturazione giocosa."
|
||||
},
|
||||
"View Mode": {
|
||||
"View Mode": ""
|
||||
"View Mode": "Modalità Visualizzazione"
|
||||
},
|
||||
"Visibility": {
|
||||
"Visibility": "Visibilità"
|
||||
@@ -3995,13 +4085,13 @@
|
||||
"Widget removed": "Widget rimosso"
|
||||
},
|
||||
"Width of window border (borderpx)": {
|
||||
"Width of window border (borderpx)": ""
|
||||
"Width of window border (borderpx)": "Larghezza bordo finestra (borderpx)"
|
||||
},
|
||||
"Width of window border (general.border_size)": {
|
||||
"Width of window border (general.border_size)": ""
|
||||
"Width of window border (general.border_size)": "Larghezza bordo finestra (general.border_size)"
|
||||
},
|
||||
"Width of window border and focus ring": {
|
||||
"Width of window border and focus ring": ""
|
||||
"Width of window border and focus ring": "Larghezza del bordo e dell'anello di fuoco delle finestre"
|
||||
},
|
||||
"Wind": {
|
||||
"Wind": "Vento"
|
||||
@@ -4019,7 +4109,7 @@
|
||||
"Window Gaps (px)": "Spazi tra finestre (px)"
|
||||
},
|
||||
"Window Rounding": {
|
||||
"Window Rounding": ""
|
||||
"Window Rounding": "Arrotondamento Finestre"
|
||||
},
|
||||
"Workspace": {
|
||||
"Workspace": "Spazio di Lavoro"
|
||||
@@ -4072,6 +4162,9 @@
|
||||
"author attribution": {
|
||||
"by %1": "di %1"
|
||||
},
|
||||
"bar shadow settings card": {
|
||||
"Shadow": ""
|
||||
},
|
||||
"browse themes button | theme browser header | theme browser window title": {
|
||||
"Browse Themes": "Sfoglia Temi"
|
||||
},
|
||||
@@ -4105,6 +4198,9 @@
|
||||
"dms/binds.kdl is now included in config.kdl": {
|
||||
"dms/binds.kdl is now included in config.kdl": "dms/binds.kdl è ora incluso in config.kdl"
|
||||
},
|
||||
"dms/cursor config exists but is not included. Cursor settings won't apply.": {
|
||||
"dms/cursor config exists but is not included. Cursor settings won't apply.": ""
|
||||
},
|
||||
"dms/outputs config exists but is not included in your compositor config. Display changes won't persist.": {
|
||||
"dms/outputs config exists but is not included in your compositor config. Display changes won't persist.": "La configurazione dms/outputs esiste ma non è inclusa nella configurazione del compositor. Le modifiche allo schermo non saranno persistenti."
|
||||
},
|
||||
@@ -4142,143 +4238,143 @@
|
||||
"Material Design inspired color themes": "Temi colore ispirati al Material Design"
|
||||
},
|
||||
"greeter back button": {
|
||||
"Back": ""
|
||||
"Back": "Indietro"
|
||||
},
|
||||
"greeter completion page subtitle": {
|
||||
"DankMaterialShell is ready to use": ""
|
||||
"DankMaterialShell is ready to use": "DankMaterialShell è pronta per l'uso"
|
||||
},
|
||||
"greeter completion page title": {
|
||||
"You're All Set!": ""
|
||||
"You're All Set!": "Tutto Pronto!"
|
||||
},
|
||||
"greeter configure keybinds link": {
|
||||
"Configure Keybinds": ""
|
||||
"Configure Keybinds": "Configura Tasti di Scelta Rapida"
|
||||
},
|
||||
"greeter dankbar description": {
|
||||
"Widgets, layout, style": ""
|
||||
"Widgets, layout, style": "Widget, layout, stile"
|
||||
},
|
||||
"greeter displays description": {
|
||||
"Resolution, position, scale": ""
|
||||
"Resolution, position, scale": "Risoluzione, posizione, scala"
|
||||
},
|
||||
"greeter dock description": {
|
||||
"Position, pinned apps": ""
|
||||
"Position, pinned apps": "Posizione, app fissate"
|
||||
},
|
||||
"greeter doctor page button": {
|
||||
"Run Again": ""
|
||||
"Run Again": "Esegui di Nuovo"
|
||||
},
|
||||
"greeter doctor page empty state": {
|
||||
"No checks passed": "",
|
||||
"No errors": "",
|
||||
"No info items": "",
|
||||
"No warnings": ""
|
||||
"No checks passed": "Nessun controllo superato",
|
||||
"No errors": "Nessun errore",
|
||||
"No info items": "Nessun elemento informativo",
|
||||
"No warnings": "Nessun avviso"
|
||||
},
|
||||
"greeter doctor page error count": {
|
||||
"%1 issue(s) found": ""
|
||||
"%1 issue(s) found": "%1 problema(i) rilevato(i)"
|
||||
},
|
||||
"greeter doctor page loading text": {
|
||||
"Analyzing configuration...": ""
|
||||
"Analyzing configuration...": "Analisi configurazione in corso..."
|
||||
},
|
||||
"greeter doctor page status card": {
|
||||
"Errors": "",
|
||||
"Info": "",
|
||||
"OK": "",
|
||||
"Warnings": ""
|
||||
"Errors": "Errori",
|
||||
"Info": "Informazioni",
|
||||
"OK": "OK",
|
||||
"Warnings": "Avvisi"
|
||||
},
|
||||
"greeter doctor page success": {
|
||||
"All checks passed": ""
|
||||
"All checks passed": "Tutti i controlli superati"
|
||||
},
|
||||
"greeter doctor page title": {
|
||||
"System Check": ""
|
||||
"System Check": "Controllo di Sistema"
|
||||
},
|
||||
"greeter documentation link": {
|
||||
"Docs": ""
|
||||
"Docs": "Documentazione"
|
||||
},
|
||||
"greeter explore section header": {
|
||||
"Explore": ""
|
||||
"Explore": "Esplora"
|
||||
},
|
||||
"greeter feature card description": {
|
||||
"Background app icons": "",
|
||||
"Colors from wallpaper": "",
|
||||
"Community themes": "",
|
||||
"Extensible architecture": "",
|
||||
"GTK, Qt, IDEs, more": "",
|
||||
"Modular widget bar": "",
|
||||
"Night mode & gamma": "",
|
||||
"Per-screen config": "",
|
||||
"Quick system toggles": ""
|
||||
"Background app icons": "Icone app in background",
|
||||
"Colors from wallpaper": "Colori dallo sfondo",
|
||||
"Community themes": "Temi della community",
|
||||
"Extensible architecture": "Architettura estensibile",
|
||||
"GTK, Qt, IDEs, more": "GTK, Qt, IDE, altro",
|
||||
"Modular widget bar": "Barra widget modulare",
|
||||
"Night mode & gamma": "Modalità notte e gamma",
|
||||
"Per-screen config": "Configurazione per schermo",
|
||||
"Quick system toggles": "Comandi rapidi di sistema"
|
||||
},
|
||||
"greeter feature card title": {
|
||||
"App Theming": "",
|
||||
"Control Center": "",
|
||||
"Display Control": "",
|
||||
"Dynamic Theming": "",
|
||||
"Multi-Monitor": "",
|
||||
"System Tray": "",
|
||||
"Theme Registry": ""
|
||||
"App Theming": "Theming Applicazioni",
|
||||
"Control Center": "Centro di Controllo",
|
||||
"Display Control": "Controllo Schermo",
|
||||
"Dynamic Theming": "Theming Dinamico",
|
||||
"Multi-Monitor": "Multi-Monitor",
|
||||
"System Tray": "Area di Notifica",
|
||||
"Theme Registry": "Registro dei Temi"
|
||||
},
|
||||
"greeter feature card title | greeter plugins link": {
|
||||
"Plugins": ""
|
||||
"Plugins": "Plugin"
|
||||
},
|
||||
"greeter feature card title | greeter settings link": {
|
||||
"DankBar": ""
|
||||
"DankBar": "DankBar"
|
||||
},
|
||||
"greeter finish button": {
|
||||
"Finish": ""
|
||||
"Finish": "Fine"
|
||||
},
|
||||
"greeter first page button": {
|
||||
"Get Started": ""
|
||||
"Get Started": "Inizia"
|
||||
},
|
||||
"greeter keybinds niri description": {
|
||||
"niri shortcuts config": ""
|
||||
"niri shortcuts config": "configurazione scorciatoie niri"
|
||||
},
|
||||
"greeter keybinds section header": {
|
||||
"DMS Shortcuts": ""
|
||||
"DMS Shortcuts": "Scorciatoie DMS"
|
||||
},
|
||||
"greeter modal window title": {
|
||||
"Welcome": ""
|
||||
"Welcome": "Benvenuto"
|
||||
},
|
||||
"greeter next button": {
|
||||
"Next": ""
|
||||
"Next": "Avanti"
|
||||
},
|
||||
"greeter no keybinds message": {
|
||||
"No DMS shortcuts configured": ""
|
||||
"No DMS shortcuts configured": "Nessuna scorciatoia DMS configurata"
|
||||
},
|
||||
"greeter notifications description": {
|
||||
"Popup behavior, position": ""
|
||||
"Popup behavior, position": "Comportamento e posizione dei popup"
|
||||
},
|
||||
"greeter settings link": {
|
||||
"Displays": "",
|
||||
"Dock": "",
|
||||
"Keybinds": "",
|
||||
"Notifications": "",
|
||||
"Theme & Colors": "",
|
||||
"Wallpaper": ""
|
||||
"Displays": "Schermi",
|
||||
"Dock": "Dock",
|
||||
"Keybinds": "Tasti di Scelta Rapida",
|
||||
"Notifications": "Notifiche",
|
||||
"Theme & Colors": "Temi & Colori",
|
||||
"Wallpaper": "Sfondo"
|
||||
},
|
||||
"greeter settings section header": {
|
||||
"Configure": ""
|
||||
"Configure": "Configura"
|
||||
},
|
||||
"greeter skip button": {
|
||||
"Skip": ""
|
||||
"Skip": "Salta"
|
||||
},
|
||||
"greeter skip button tooltip": {
|
||||
"Skip setup": ""
|
||||
"Skip setup": "Salta configurazione"
|
||||
},
|
||||
"greeter theme description": {
|
||||
"Dynamic colors, presets": ""
|
||||
"Dynamic colors, presets": "Colori dinamici, preimpostazioni"
|
||||
},
|
||||
"greeter themes link": {
|
||||
"Themes": ""
|
||||
"Themes": "Temi"
|
||||
},
|
||||
"greeter wallpaper description": {
|
||||
"Background image": ""
|
||||
"Background image": "Immagine di sfondo"
|
||||
},
|
||||
"greeter welcome page section header": {
|
||||
"Features": ""
|
||||
"Features": "Funzionalità"
|
||||
},
|
||||
"greeter welcome page tagline": {
|
||||
"A modern desktop shell for Wayland compositors": ""
|
||||
"A modern desktop shell for Wayland compositors": "Una moderna shell desktop per compositor Wayland"
|
||||
},
|
||||
"greeter welcome page title": {
|
||||
"Welcome to DankMaterialShell": ""
|
||||
"Welcome to DankMaterialShell": "Benvenuto in DankMaterialShell"
|
||||
},
|
||||
"install action button": {
|
||||
"Install": "Installa"
|
||||
@@ -4302,17 +4398,17 @@
|
||||
"Loading...": "Caricamento..."
|
||||
},
|
||||
"lock screen notification mode option": {
|
||||
"App Names": "",
|
||||
"Count Only": "",
|
||||
"Disabled": "",
|
||||
"Full Content": ""
|
||||
"App Names": "Nomi App",
|
||||
"Count Only": "Solo Conteggio",
|
||||
"Disabled": "Disabilitato",
|
||||
"Full Content": "Contenuto Completo"
|
||||
},
|
||||
"lock screen notification privacy setting": {
|
||||
"Control what notification information is shown on the lock screen": "",
|
||||
"Notification Display": ""
|
||||
"Control what notification information is shown on the lock screen": "Controlla quali informazioni delle notifiche vengono mostrate sulla schermata di blocco",
|
||||
"Notification Display": "Visualizzazione Notifiche"
|
||||
},
|
||||
"lock screen notifications settings card": {
|
||||
"Lock Screen": ""
|
||||
"Lock Screen": "Schermata di Blocco"
|
||||
},
|
||||
"loginctl not available - lock integration requires DMS socket connection": {
|
||||
"loginctl not available - lock integration requires DMS socket connection": "loginctl non disponibile - integrazione blocco richiede connessione socket DMS"
|
||||
@@ -4421,6 +4517,13 @@
|
||||
"settings_displays": {
|
||||
"Widgets": "Widget"
|
||||
},
|
||||
"shadow color option": {
|
||||
"Surface": "",
|
||||
"Text": ""
|
||||
},
|
||||
"shadow intensity slider": {
|
||||
"Intensity": ""
|
||||
},
|
||||
"source code link": {
|
||||
"source": "sorgente"
|
||||
},
|
||||
|
||||
@@ -164,6 +164,9 @@
|
||||
"Activate": {
|
||||
"Activate": ""
|
||||
},
|
||||
"Activation": {
|
||||
"Activation": ""
|
||||
},
|
||||
"Active": {
|
||||
"Active": ""
|
||||
},
|
||||
@@ -233,6 +236,9 @@
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": {
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": "Alt+←/Backspace: 戻る • F1/I: ファイル情報 • F10: ヘルプ • Esc: 閉じる"
|
||||
},
|
||||
"Always Active": {
|
||||
"Always Active": ""
|
||||
},
|
||||
"Always Show Percentage": {
|
||||
"Always Show Percentage": ""
|
||||
},
|
||||
@@ -365,6 +371,9 @@
|
||||
"Auto-Clear After": {
|
||||
"Auto-Clear After": ""
|
||||
},
|
||||
"Auto-Hide Timeout": {
|
||||
"Auto-Hide Timeout": ""
|
||||
},
|
||||
"Auto-close Niri overview when launching apps.": {
|
||||
"Auto-close Niri overview when launching apps.": ""
|
||||
},
|
||||
@@ -692,6 +701,9 @@
|
||||
"Clear at Startup": {
|
||||
"Clear at Startup": ""
|
||||
},
|
||||
"Click 'Setup' to create cursor config and add include to your compositor config.": {
|
||||
"Click 'Setup' to create cursor config and add include to your compositor config.": ""
|
||||
},
|
||||
"Click 'Setup' to create dms/binds.kdl and add include to config.kdl.": {
|
||||
"Click 'Setup' to create dms/binds.kdl and add include to config.kdl.": ""
|
||||
},
|
||||
@@ -878,6 +890,9 @@
|
||||
"Copied!": {
|
||||
"Copied!": "コピーしました!"
|
||||
},
|
||||
"Copy": {
|
||||
"Copy": ""
|
||||
},
|
||||
"Copy PID": {
|
||||
"Copy PID": "PIDをコピー"
|
||||
},
|
||||
@@ -932,6 +947,18 @@
|
||||
"Current: %1": {
|
||||
"Current: %1": ""
|
||||
},
|
||||
"Cursor Config Not Configured": {
|
||||
"Cursor Config Not Configured": ""
|
||||
},
|
||||
"Cursor Include Missing": {
|
||||
"Cursor Include Missing": ""
|
||||
},
|
||||
"Cursor Size": {
|
||||
"Cursor Size": ""
|
||||
},
|
||||
"Cursor Theme": {
|
||||
"Cursor Theme": ""
|
||||
},
|
||||
"Custom": {
|
||||
"Custom": "カスタム"
|
||||
},
|
||||
@@ -1772,9 +1799,24 @@
|
||||
"Hide Delay": {
|
||||
"Hide Delay": ""
|
||||
},
|
||||
"Hide When Typing": {
|
||||
"Hide When Typing": ""
|
||||
},
|
||||
"Hide When Windows Open": {
|
||||
"Hide When Windows Open": ""
|
||||
},
|
||||
"Hide cursor after inactivity (0 = disabled)": {
|
||||
"Hide cursor after inactivity (0 = disabled)": ""
|
||||
},
|
||||
"Hide cursor when pressing keyboard keys": {
|
||||
"Hide cursor when pressing keyboard keys": ""
|
||||
},
|
||||
"Hide cursor when using touch input": {
|
||||
"Hide cursor when using touch input": ""
|
||||
},
|
||||
"Hide on Touch": {
|
||||
"Hide on Touch": ""
|
||||
},
|
||||
"Hide the dock when not in use and reveal it when hovering near the dock area": {
|
||||
"Hide the dock when not in use and reveal it when hovering near the dock area": "使用していないときはドックを非表示にし、ドックエリアの近くにホバーすると表示されます"
|
||||
},
|
||||
@@ -1937,6 +1979,15 @@
|
||||
"Key": {
|
||||
"Key": ""
|
||||
},
|
||||
"Keybind Sources": {
|
||||
"Keybind Sources": ""
|
||||
},
|
||||
"Keybinds Search Settings": {
|
||||
"Keybinds Search Settings": ""
|
||||
},
|
||||
"Keybinds shown alongside regular search results": {
|
||||
"Keybinds shown alongside regular search results": ""
|
||||
},
|
||||
"Keyboard Layout Name": {
|
||||
"Keyboard Layout Name": "キーボードレイアウト名"
|
||||
},
|
||||
@@ -2255,6 +2306,12 @@
|
||||
"Mount": {
|
||||
"Mount": "マウント"
|
||||
},
|
||||
"Mouse pointer appearance": {
|
||||
"Mouse pointer appearance": ""
|
||||
},
|
||||
"Mouse pointer size in pixels": {
|
||||
"Mouse pointer size in pixels": ""
|
||||
},
|
||||
"Move Widget": {
|
||||
"Move Widget": ""
|
||||
},
|
||||
@@ -3038,6 +3095,9 @@
|
||||
"Scrolling": {
|
||||
"Scrolling": "スクロール"
|
||||
},
|
||||
"Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.": {
|
||||
"Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.": ""
|
||||
},
|
||||
"Search file contents": {
|
||||
"Search file contents": "ファイルの内容を検索"
|
||||
},
|
||||
@@ -3050,6 +3110,9 @@
|
||||
"Search keybinds...": {
|
||||
"Search keybinds...": ""
|
||||
},
|
||||
"Search keyboard shortcuts from your compositor and applications": {
|
||||
"Search keyboard shortcuts from your compositor and applications": ""
|
||||
},
|
||||
"Search plugins...": {
|
||||
"Search plugins...": "プラグインを検索..."
|
||||
},
|
||||
@@ -3092,6 +3155,9 @@
|
||||
"Select an image file...": {
|
||||
"Select an image file...": "画像ファイルを選ぶ..."
|
||||
},
|
||||
"Select at least one provider": {
|
||||
"Select at least one provider": ""
|
||||
},
|
||||
"Select device...": {
|
||||
"Select device...": ""
|
||||
},
|
||||
@@ -3116,6 +3182,9 @@
|
||||
"Select the palette algorithm used for wallpaper-based colors": {
|
||||
"Select the palette algorithm used for wallpaper-based colors": "壁紙ベースの色で、使用するパレットアルゴリズムを選ぶ"
|
||||
},
|
||||
"Select which keybind providers to include": {
|
||||
"Select which keybind providers to include": ""
|
||||
},
|
||||
"Select which transitions to include in randomization": {
|
||||
"Select which transitions to include in randomization": "含めたいトランジションをランダム化に選択"
|
||||
},
|
||||
@@ -3293,6 +3362,9 @@
|
||||
"Show on Overview": {
|
||||
"Show on Overview": "概要に表示"
|
||||
},
|
||||
"Show on Overview Only": {
|
||||
"Show on Overview Only": ""
|
||||
},
|
||||
"Show on all connected displays": {
|
||||
"Show on all connected displays": "すべての接続されたディスプレイに表示"
|
||||
},
|
||||
@@ -3683,12 +3755,21 @@
|
||||
"Transparency": {
|
||||
"Transparency": ""
|
||||
},
|
||||
"Trigger": {
|
||||
"Trigger": ""
|
||||
},
|
||||
"Trigger Prefix": {
|
||||
"Trigger Prefix": ""
|
||||
},
|
||||
"Turn off monitors after": {
|
||||
"Turn off monitors after": "後にモニターの電源を切る"
|
||||
},
|
||||
"Type": {
|
||||
"Type": ""
|
||||
},
|
||||
"Type this prefix to search keybinds": {
|
||||
"Type this prefix to search keybinds": ""
|
||||
},
|
||||
"Typography": {
|
||||
"Typography": ""
|
||||
},
|
||||
@@ -3716,6 +3797,9 @@
|
||||
"Unknown Network": {
|
||||
"Unknown Network": ""
|
||||
},
|
||||
"Unpin": {
|
||||
"Unpin": ""
|
||||
},
|
||||
"Unpin from Dock": {
|
||||
"Unpin from Dock": "ドックから固定を解除"
|
||||
},
|
||||
@@ -3737,6 +3821,9 @@
|
||||
"Update Plugin": {
|
||||
"Update Plugin": "プラグインを更新"
|
||||
},
|
||||
"Usage Tips": {
|
||||
"Usage Tips": ""
|
||||
},
|
||||
"Use 24-hour time format instead of 12-hour AM/PM": {
|
||||
"Use 24-hour time format instead of 12-hour AM/PM": "12時間制のAM/PMではなく、24時間表記を使用"
|
||||
},
|
||||
@@ -3791,6 +3878,9 @@
|
||||
"Use sound theme from system settings": {
|
||||
"Use sound theme from system settings": "システム設定からサウンドテーマを使用"
|
||||
},
|
||||
"Use trigger prefix to activate": {
|
||||
"Use trigger prefix to activate": ""
|
||||
},
|
||||
"Use%": {
|
||||
"Use%": "使用%"
|
||||
},
|
||||
@@ -4072,6 +4162,9 @@
|
||||
"author attribution": {
|
||||
"by %1": ""
|
||||
},
|
||||
"bar shadow settings card": {
|
||||
"Shadow": ""
|
||||
},
|
||||
"browse themes button | theme browser header | theme browser window title": {
|
||||
"Browse Themes": ""
|
||||
},
|
||||
@@ -4105,6 +4198,9 @@
|
||||
"dms/binds.kdl is now included in config.kdl": {
|
||||
"dms/binds.kdl is now included in config.kdl": ""
|
||||
},
|
||||
"dms/cursor config exists but is not included. Cursor settings won't apply.": {
|
||||
"dms/cursor config exists but is not included. Cursor settings won't apply.": ""
|
||||
},
|
||||
"dms/outputs config exists but is not included in your compositor config. Display changes won't persist.": {
|
||||
"dms/outputs config exists but is not included in your compositor config. Display changes won't persist.": ""
|
||||
},
|
||||
@@ -4421,6 +4517,13 @@
|
||||
"settings_displays": {
|
||||
"Widgets": ""
|
||||
},
|
||||
"shadow color option": {
|
||||
"Surface": "",
|
||||
"Text": ""
|
||||
},
|
||||
"shadow intensity slider": {
|
||||
"Intensity": ""
|
||||
},
|
||||
"source code link": {
|
||||
"source": ""
|
||||
},
|
||||
|
||||
@@ -164,6 +164,9 @@
|
||||
"Activate": {
|
||||
"Activate": "Aktywuj"
|
||||
},
|
||||
"Activation": {
|
||||
"Activation": ""
|
||||
},
|
||||
"Active": {
|
||||
"Active": "Aktywny"
|
||||
},
|
||||
@@ -233,6 +236,9 @@
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": {
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": "Alt+←/Backspace: Wstecz • F1/I: Informacje o pliku • F10: Pomoc • Esc: Zamknij"
|
||||
},
|
||||
"Always Active": {
|
||||
"Always Active": ""
|
||||
},
|
||||
"Always Show Percentage": {
|
||||
"Always Show Percentage": "Zawsze pokazuj procenty"
|
||||
},
|
||||
@@ -365,6 +371,9 @@
|
||||
"Auto-Clear After": {
|
||||
"Auto-Clear After": "Automatycznie czyść po"
|
||||
},
|
||||
"Auto-Hide Timeout": {
|
||||
"Auto-Hide Timeout": ""
|
||||
},
|
||||
"Auto-close Niri overview when launching apps.": {
|
||||
"Auto-close Niri overview when launching apps.": "Automatycznie zamknij podgląd Niri otwierając aplikacje."
|
||||
},
|
||||
@@ -692,6 +701,9 @@
|
||||
"Clear at Startup": {
|
||||
"Clear at Startup": "Wyczyść przy starcie"
|
||||
},
|
||||
"Click 'Setup' to create cursor config and add include to your compositor config.": {
|
||||
"Click 'Setup' to create cursor config and add include to your compositor config.": ""
|
||||
},
|
||||
"Click 'Setup' to create dms/binds.kdl and add include to config.kdl.": {
|
||||
"Click 'Setup' to create dms/binds.kdl and add include to config.kdl.": "Kliknij 'Konfiguruj' by stworzyć dms/binds.kdl i dodać do config.kdl"
|
||||
},
|
||||
@@ -878,6 +890,9 @@
|
||||
"Copied!": {
|
||||
"Copied!": "Skopiowane!"
|
||||
},
|
||||
"Copy": {
|
||||
"Copy": ""
|
||||
},
|
||||
"Copy PID": {
|
||||
"Copy PID": "Kopiuj PID"
|
||||
},
|
||||
@@ -932,6 +947,18 @@
|
||||
"Current: %1": {
|
||||
"Current: %1": "Aktualnie: %1"
|
||||
},
|
||||
"Cursor Config Not Configured": {
|
||||
"Cursor Config Not Configured": ""
|
||||
},
|
||||
"Cursor Include Missing": {
|
||||
"Cursor Include Missing": ""
|
||||
},
|
||||
"Cursor Size": {
|
||||
"Cursor Size": ""
|
||||
},
|
||||
"Cursor Theme": {
|
||||
"Cursor Theme": ""
|
||||
},
|
||||
"Custom": {
|
||||
"Custom": "Niestandardowy"
|
||||
},
|
||||
@@ -1772,9 +1799,24 @@
|
||||
"Hide Delay": {
|
||||
"Hide Delay": "Ukryj opóźnienie"
|
||||
},
|
||||
"Hide When Typing": {
|
||||
"Hide When Typing": ""
|
||||
},
|
||||
"Hide When Windows Open": {
|
||||
"Hide When Windows Open": "Ukryj Gdy Otwarte Są Okna"
|
||||
},
|
||||
"Hide cursor after inactivity (0 = disabled)": {
|
||||
"Hide cursor after inactivity (0 = disabled)": ""
|
||||
},
|
||||
"Hide cursor when pressing keyboard keys": {
|
||||
"Hide cursor when pressing keyboard keys": ""
|
||||
},
|
||||
"Hide cursor when using touch input": {
|
||||
"Hide cursor when using touch input": ""
|
||||
},
|
||||
"Hide on Touch": {
|
||||
"Hide on Touch": ""
|
||||
},
|
||||
"Hide the dock when not in use and reveal it when hovering near the dock area": {
|
||||
"Hide the dock when not in use and reveal it when hovering near the dock area": "Ukryj dok, gdy nie jest używany, i odkryj go po najechaniu kursorem w jego pobliże"
|
||||
},
|
||||
@@ -1937,6 +1979,15 @@
|
||||
"Key": {
|
||||
"Key": "Klawisz"
|
||||
},
|
||||
"Keybind Sources": {
|
||||
"Keybind Sources": ""
|
||||
},
|
||||
"Keybinds Search Settings": {
|
||||
"Keybinds Search Settings": ""
|
||||
},
|
||||
"Keybinds shown alongside regular search results": {
|
||||
"Keybinds shown alongside regular search results": ""
|
||||
},
|
||||
"Keyboard Layout Name": {
|
||||
"Keyboard Layout Name": "Nazwa układu klawiatury"
|
||||
},
|
||||
@@ -2255,6 +2306,12 @@
|
||||
"Mount": {
|
||||
"Mount": "Zamontuj"
|
||||
},
|
||||
"Mouse pointer appearance": {
|
||||
"Mouse pointer appearance": ""
|
||||
},
|
||||
"Mouse pointer size in pixels": {
|
||||
"Mouse pointer size in pixels": ""
|
||||
},
|
||||
"Move Widget": {
|
||||
"Move Widget": "Przesuń Widżet"
|
||||
},
|
||||
@@ -3038,6 +3095,9 @@
|
||||
"Scrolling": {
|
||||
"Scrolling": "Przewijanie"
|
||||
},
|
||||
"Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.": {
|
||||
"Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.": ""
|
||||
},
|
||||
"Search file contents": {
|
||||
"Search file contents": "Przeszukaj zawartość plików"
|
||||
},
|
||||
@@ -3050,6 +3110,9 @@
|
||||
"Search keybinds...": {
|
||||
"Search keybinds...": "Wyszukaj skróty klawiszowe..."
|
||||
},
|
||||
"Search keyboard shortcuts from your compositor and applications": {
|
||||
"Search keyboard shortcuts from your compositor and applications": ""
|
||||
},
|
||||
"Search plugins...": {
|
||||
"Search plugins...": "Szukaj wtyczek..."
|
||||
},
|
||||
@@ -3092,6 +3155,9 @@
|
||||
"Select an image file...": {
|
||||
"Select an image file...": "Wybierz plik obrazu..."
|
||||
},
|
||||
"Select at least one provider": {
|
||||
"Select at least one provider": ""
|
||||
},
|
||||
"Select device...": {
|
||||
"Select device...": "Wybierz urządzenie..."
|
||||
},
|
||||
@@ -3116,6 +3182,9 @@
|
||||
"Select the palette algorithm used for wallpaper-based colors": {
|
||||
"Select the palette algorithm used for wallpaper-based colors": "Wybierz algorytm palety używany dla kolorów tapet."
|
||||
},
|
||||
"Select which keybind providers to include": {
|
||||
"Select which keybind providers to include": ""
|
||||
},
|
||||
"Select which transitions to include in randomization": {
|
||||
"Select which transitions to include in randomization": "Wybierz, które przejścia uwzględnić w losowaniu"
|
||||
},
|
||||
@@ -3293,6 +3362,9 @@
|
||||
"Show on Overview": {
|
||||
"Show on Overview": "Pokaż w podglądzie"
|
||||
},
|
||||
"Show on Overview Only": {
|
||||
"Show on Overview Only": ""
|
||||
},
|
||||
"Show on all connected displays": {
|
||||
"Show on all connected displays": "Pokaż na wszystkich podłączonych wyświetlaczach"
|
||||
},
|
||||
@@ -3683,12 +3755,21 @@
|
||||
"Transparency": {
|
||||
"Transparency": "Przezroczystość"
|
||||
},
|
||||
"Trigger": {
|
||||
"Trigger": ""
|
||||
},
|
||||
"Trigger Prefix": {
|
||||
"Trigger Prefix": ""
|
||||
},
|
||||
"Turn off monitors after": {
|
||||
"Turn off monitors after": "Wyłącz monitory po"
|
||||
},
|
||||
"Type": {
|
||||
"Type": "Typ"
|
||||
},
|
||||
"Type this prefix to search keybinds": {
|
||||
"Type this prefix to search keybinds": ""
|
||||
},
|
||||
"Typography": {
|
||||
"Typography": "Typografia"
|
||||
},
|
||||
@@ -3716,6 +3797,9 @@
|
||||
"Unknown Network": {
|
||||
"Unknown Network": "Nieznana Sieć"
|
||||
},
|
||||
"Unpin": {
|
||||
"Unpin": ""
|
||||
},
|
||||
"Unpin from Dock": {
|
||||
"Unpin from Dock": "Odepnij z doku"
|
||||
},
|
||||
@@ -3737,6 +3821,9 @@
|
||||
"Update Plugin": {
|
||||
"Update Plugin": "Zaktualizuj wtyczkę"
|
||||
},
|
||||
"Usage Tips": {
|
||||
"Usage Tips": ""
|
||||
},
|
||||
"Use 24-hour time format instead of 12-hour AM/PM": {
|
||||
"Use 24-hour time format instead of 12-hour AM/PM": "Użyj 24-godzinnego formatu czasu zamiast 12-godzinnego AM/PM"
|
||||
},
|
||||
@@ -3791,6 +3878,9 @@
|
||||
"Use sound theme from system settings": {
|
||||
"Use sound theme from system settings": "Użyj motywu dźwiękowego z ustawień systemowych"
|
||||
},
|
||||
"Use trigger prefix to activate": {
|
||||
"Use trigger prefix to activate": ""
|
||||
},
|
||||
"Use%": {
|
||||
"Use%": "Użycie %"
|
||||
},
|
||||
@@ -4072,6 +4162,9 @@
|
||||
"author attribution": {
|
||||
"by %1": "od %1"
|
||||
},
|
||||
"bar shadow settings card": {
|
||||
"Shadow": ""
|
||||
},
|
||||
"browse themes button | theme browser header | theme browser window title": {
|
||||
"Browse Themes": "Przeglądaj Motywy"
|
||||
},
|
||||
@@ -4105,6 +4198,9 @@
|
||||
"dms/binds.kdl is now included in config.kdl": {
|
||||
"dms/binds.kdl is now included in config.kdl": "Plik dms/binds.kdl jest teraz zawarty w pliku config.kdl"
|
||||
},
|
||||
"dms/cursor config exists but is not included. Cursor settings won't apply.": {
|
||||
"dms/cursor config exists but is not included. Cursor settings won't apply.": ""
|
||||
},
|
||||
"dms/outputs config exists but is not included in your compositor config. Display changes won't persist.": {
|
||||
"dms/outputs config exists but is not included in your compositor config. Display changes won't persist.": "Konfiguracja dms/outputs istnieje, ale nie jest dodana do konfiguracji twojego kompozytora. Zmiany nie będą miały efektu."
|
||||
},
|
||||
@@ -4421,6 +4517,13 @@
|
||||
"settings_displays": {
|
||||
"Widgets": "Widżety"
|
||||
},
|
||||
"shadow color option": {
|
||||
"Surface": "",
|
||||
"Text": ""
|
||||
},
|
||||
"shadow intensity slider": {
|
||||
"Intensity": ""
|
||||
},
|
||||
"source code link": {
|
||||
"source": "źródło"
|
||||
},
|
||||
|
||||
@@ -164,6 +164,9 @@
|
||||
"Activate": {
|
||||
"Activate": "Ativar"
|
||||
},
|
||||
"Activation": {
|
||||
"Activation": ""
|
||||
},
|
||||
"Active": {
|
||||
"Active": "Ativa"
|
||||
},
|
||||
@@ -233,6 +236,9 @@
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": {
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": "Alt+←/Backspace: Voltar • F1/I: Informações de Arquivo • F10: Ajuda • Esc: Fechar"
|
||||
},
|
||||
"Always Active": {
|
||||
"Always Active": ""
|
||||
},
|
||||
"Always Show Percentage": {
|
||||
"Always Show Percentage": "Sempre Mostrar Porcentagem"
|
||||
},
|
||||
@@ -365,6 +371,9 @@
|
||||
"Auto-Clear After": {
|
||||
"Auto-Clear After": ""
|
||||
},
|
||||
"Auto-Hide Timeout": {
|
||||
"Auto-Hide Timeout": ""
|
||||
},
|
||||
"Auto-close Niri overview when launching apps.": {
|
||||
"Auto-close Niri overview when launching apps.": "Fechar automaticamente overview do niri ao lançar aplicativos."
|
||||
},
|
||||
@@ -692,6 +701,9 @@
|
||||
"Clear at Startup": {
|
||||
"Clear at Startup": "Limpar ao Iniciar"
|
||||
},
|
||||
"Click 'Setup' to create cursor config and add include to your compositor config.": {
|
||||
"Click 'Setup' to create cursor config and add include to your compositor config.": ""
|
||||
},
|
||||
"Click 'Setup' to create dms/binds.kdl and add include to config.kdl.": {
|
||||
"Click 'Setup' to create dms/binds.kdl and add include to config.kdl.": ""
|
||||
},
|
||||
@@ -878,6 +890,9 @@
|
||||
"Copied!": {
|
||||
"Copied!": "Copiado!"
|
||||
},
|
||||
"Copy": {
|
||||
"Copy": ""
|
||||
},
|
||||
"Copy PID": {
|
||||
"Copy PID": "Copiar PID"
|
||||
},
|
||||
@@ -932,6 +947,18 @@
|
||||
"Current: %1": {
|
||||
"Current: %1": ""
|
||||
},
|
||||
"Cursor Config Not Configured": {
|
||||
"Cursor Config Not Configured": ""
|
||||
},
|
||||
"Cursor Include Missing": {
|
||||
"Cursor Include Missing": ""
|
||||
},
|
||||
"Cursor Size": {
|
||||
"Cursor Size": ""
|
||||
},
|
||||
"Cursor Theme": {
|
||||
"Cursor Theme": ""
|
||||
},
|
||||
"Custom": {
|
||||
"Custom": "Customizado"
|
||||
},
|
||||
@@ -1772,9 +1799,24 @@
|
||||
"Hide Delay": {
|
||||
"Hide Delay": ""
|
||||
},
|
||||
"Hide When Typing": {
|
||||
"Hide When Typing": ""
|
||||
},
|
||||
"Hide When Windows Open": {
|
||||
"Hide When Windows Open": ""
|
||||
},
|
||||
"Hide cursor after inactivity (0 = disabled)": {
|
||||
"Hide cursor after inactivity (0 = disabled)": ""
|
||||
},
|
||||
"Hide cursor when pressing keyboard keys": {
|
||||
"Hide cursor when pressing keyboard keys": ""
|
||||
},
|
||||
"Hide cursor when using touch input": {
|
||||
"Hide cursor when using touch input": ""
|
||||
},
|
||||
"Hide on Touch": {
|
||||
"Hide on Touch": ""
|
||||
},
|
||||
"Hide the dock when not in use and reveal it when hovering near the dock area": {
|
||||
"Hide the dock when not in use and reveal it when hovering near the dock area": "Esconder a dock quando não usada e mostrar ao passar o mouse próximo da área"
|
||||
},
|
||||
@@ -1937,6 +1979,15 @@
|
||||
"Key": {
|
||||
"Key": "Tecla"
|
||||
},
|
||||
"Keybind Sources": {
|
||||
"Keybind Sources": ""
|
||||
},
|
||||
"Keybinds Search Settings": {
|
||||
"Keybinds Search Settings": ""
|
||||
},
|
||||
"Keybinds shown alongside regular search results": {
|
||||
"Keybinds shown alongside regular search results": ""
|
||||
},
|
||||
"Keyboard Layout Name": {
|
||||
"Keyboard Layout Name": "Nome de Layout do Teclado"
|
||||
},
|
||||
@@ -2255,6 +2306,12 @@
|
||||
"Mount": {
|
||||
"Mount": "Ponto de montagem"
|
||||
},
|
||||
"Mouse pointer appearance": {
|
||||
"Mouse pointer appearance": ""
|
||||
},
|
||||
"Mouse pointer size in pixels": {
|
||||
"Mouse pointer size in pixels": ""
|
||||
},
|
||||
"Move Widget": {
|
||||
"Move Widget": ""
|
||||
},
|
||||
@@ -3038,6 +3095,9 @@
|
||||
"Scrolling": {
|
||||
"Scrolling": "Scrolling"
|
||||
},
|
||||
"Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.": {
|
||||
"Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.": ""
|
||||
},
|
||||
"Search file contents": {
|
||||
"Search file contents": "Pesquisar conteúdos de arquivos"
|
||||
},
|
||||
@@ -3050,6 +3110,9 @@
|
||||
"Search keybinds...": {
|
||||
"Search keybinds...": "Pesquisar atalhos..."
|
||||
},
|
||||
"Search keyboard shortcuts from your compositor and applications": {
|
||||
"Search keyboard shortcuts from your compositor and applications": ""
|
||||
},
|
||||
"Search plugins...": {
|
||||
"Search plugins...": "Buscar plugins..."
|
||||
},
|
||||
@@ -3092,6 +3155,9 @@
|
||||
"Select an image file...": {
|
||||
"Select an image file...": "Selecione um arquivo de imagem..."
|
||||
},
|
||||
"Select at least one provider": {
|
||||
"Select at least one provider": ""
|
||||
},
|
||||
"Select device...": {
|
||||
"Select device...": "Selecionar dispositivo..."
|
||||
},
|
||||
@@ -3116,6 +3182,9 @@
|
||||
"Select the palette algorithm used for wallpaper-based colors": {
|
||||
"Select the palette algorithm used for wallpaper-based colors": "Selecione o algoritmo usado para cores baseadas no papel de parede"
|
||||
},
|
||||
"Select which keybind providers to include": {
|
||||
"Select which keybind providers to include": ""
|
||||
},
|
||||
"Select which transitions to include in randomization": {
|
||||
"Select which transitions to include in randomization": "Selecionar quais transições incluir na randomização"
|
||||
},
|
||||
@@ -3293,6 +3362,9 @@
|
||||
"Show on Overview": {
|
||||
"Show on Overview": "Mostrar na Visão Geral"
|
||||
},
|
||||
"Show on Overview Only": {
|
||||
"Show on Overview Only": ""
|
||||
},
|
||||
"Show on all connected displays": {
|
||||
"Show on all connected displays": "Mostrar em todas as telas conectadas"
|
||||
},
|
||||
@@ -3683,12 +3755,21 @@
|
||||
"Transparency": {
|
||||
"Transparency": "Transparência"
|
||||
},
|
||||
"Trigger": {
|
||||
"Trigger": ""
|
||||
},
|
||||
"Trigger Prefix": {
|
||||
"Trigger Prefix": ""
|
||||
},
|
||||
"Turn off monitors after": {
|
||||
"Turn off monitors after": "Desligar monitores depois de"
|
||||
},
|
||||
"Type": {
|
||||
"Type": "Tipo"
|
||||
},
|
||||
"Type this prefix to search keybinds": {
|
||||
"Type this prefix to search keybinds": ""
|
||||
},
|
||||
"Typography": {
|
||||
"Typography": "Tipografia"
|
||||
},
|
||||
@@ -3716,6 +3797,9 @@
|
||||
"Unknown Network": {
|
||||
"Unknown Network": ""
|
||||
},
|
||||
"Unpin": {
|
||||
"Unpin": ""
|
||||
},
|
||||
"Unpin from Dock": {
|
||||
"Unpin from Dock": "Desafixar do Dock"
|
||||
},
|
||||
@@ -3737,6 +3821,9 @@
|
||||
"Update Plugin": {
|
||||
"Update Plugin": "Atualizar Plugin"
|
||||
},
|
||||
"Usage Tips": {
|
||||
"Usage Tips": ""
|
||||
},
|
||||
"Use 24-hour time format instead of 12-hour AM/PM": {
|
||||
"Use 24-hour time format instead of 12-hour AM/PM": "Usar relógio de 24 horas em vez de 12 horas com AM/PM"
|
||||
},
|
||||
@@ -3791,6 +3878,9 @@
|
||||
"Use sound theme from system settings": {
|
||||
"Use sound theme from system settings": "Usar tema de som das configurações do sistema"
|
||||
},
|
||||
"Use trigger prefix to activate": {
|
||||
"Use trigger prefix to activate": ""
|
||||
},
|
||||
"Use%": {
|
||||
"Use%": "Uso%"
|
||||
},
|
||||
@@ -4072,6 +4162,9 @@
|
||||
"author attribution": {
|
||||
"by %1": ""
|
||||
},
|
||||
"bar shadow settings card": {
|
||||
"Shadow": ""
|
||||
},
|
||||
"browse themes button | theme browser header | theme browser window title": {
|
||||
"Browse Themes": ""
|
||||
},
|
||||
@@ -4105,6 +4198,9 @@
|
||||
"dms/binds.kdl is now included in config.kdl": {
|
||||
"dms/binds.kdl is now included in config.kdl": "dms/binds.kdl está agora incluído em config.kdl"
|
||||
},
|
||||
"dms/cursor config exists but is not included. Cursor settings won't apply.": {
|
||||
"dms/cursor config exists but is not included. Cursor settings won't apply.": ""
|
||||
},
|
||||
"dms/outputs config exists but is not included in your compositor config. Display changes won't persist.": {
|
||||
"dms/outputs config exists but is not included in your compositor config. Display changes won't persist.": ""
|
||||
},
|
||||
@@ -4421,6 +4517,13 @@
|
||||
"settings_displays": {
|
||||
"Widgets": ""
|
||||
},
|
||||
"shadow color option": {
|
||||
"Surface": "",
|
||||
"Text": ""
|
||||
},
|
||||
"shadow intensity slider": {
|
||||
"Intensity": ""
|
||||
},
|
||||
"source code link": {
|
||||
"source": ""
|
||||
},
|
||||
|
||||
@@ -164,6 +164,9 @@
|
||||
"Activate": {
|
||||
"Activate": "Etkinleştir"
|
||||
},
|
||||
"Activation": {
|
||||
"Activation": ""
|
||||
},
|
||||
"Active": {
|
||||
"Active": "Etkin"
|
||||
},
|
||||
@@ -233,6 +236,9 @@
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": {
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": "Alt+←/Backspace: Geri • F1/I: Dosya bilgisi • F10: Yardım • Esc: Kapat"
|
||||
},
|
||||
"Always Active": {
|
||||
"Always Active": ""
|
||||
},
|
||||
"Always Show Percentage": {
|
||||
"Always Show Percentage": "Yüzdeyi Her Zaman Göster"
|
||||
},
|
||||
@@ -365,6 +371,9 @@
|
||||
"Auto-Clear After": {
|
||||
"Auto-Clear After": "Sonra Otomatik Sil"
|
||||
},
|
||||
"Auto-Hide Timeout": {
|
||||
"Auto-Hide Timeout": ""
|
||||
},
|
||||
"Auto-close Niri overview when launching apps.": {
|
||||
"Auto-close Niri overview when launching apps.": "Uygulamaları başlatınca Niri genel görünümünü otomatik kapat."
|
||||
},
|
||||
@@ -692,6 +701,9 @@
|
||||
"Clear at Startup": {
|
||||
"Clear at Startup": "Başlangıçta Temizle"
|
||||
},
|
||||
"Click 'Setup' to create cursor config and add include to your compositor config.": {
|
||||
"Click 'Setup' to create cursor config and add include to your compositor config.": ""
|
||||
},
|
||||
"Click 'Setup' to create dms/binds.kdl and add include to config.kdl.": {
|
||||
"Click 'Setup' to create dms/binds.kdl and add include to config.kdl.": "dms/binds.kdl dosyasını oluşturmak ve config.kdl dosyasına eklemek için 'Kur' düğmesine tıklayın."
|
||||
},
|
||||
@@ -878,6 +890,9 @@
|
||||
"Copied!": {
|
||||
"Copied!": "Kopyalandı!"
|
||||
},
|
||||
"Copy": {
|
||||
"Copy": ""
|
||||
},
|
||||
"Copy PID": {
|
||||
"Copy PID": "PID'i Kopyala"
|
||||
},
|
||||
@@ -932,6 +947,18 @@
|
||||
"Current: %1": {
|
||||
"Current: %1": "Mevcut: %1"
|
||||
},
|
||||
"Cursor Config Not Configured": {
|
||||
"Cursor Config Not Configured": ""
|
||||
},
|
||||
"Cursor Include Missing": {
|
||||
"Cursor Include Missing": ""
|
||||
},
|
||||
"Cursor Size": {
|
||||
"Cursor Size": ""
|
||||
},
|
||||
"Cursor Theme": {
|
||||
"Cursor Theme": ""
|
||||
},
|
||||
"Custom": {
|
||||
"Custom": "Özel"
|
||||
},
|
||||
@@ -1772,9 +1799,24 @@
|
||||
"Hide Delay": {
|
||||
"Hide Delay": "Gizleme Gecikmesi"
|
||||
},
|
||||
"Hide When Typing": {
|
||||
"Hide When Typing": ""
|
||||
},
|
||||
"Hide When Windows Open": {
|
||||
"Hide When Windows Open": "Pencere Açıkken Gizle"
|
||||
},
|
||||
"Hide cursor after inactivity (0 = disabled)": {
|
||||
"Hide cursor after inactivity (0 = disabled)": ""
|
||||
},
|
||||
"Hide cursor when pressing keyboard keys": {
|
||||
"Hide cursor when pressing keyboard keys": ""
|
||||
},
|
||||
"Hide cursor when using touch input": {
|
||||
"Hide cursor when using touch input": ""
|
||||
},
|
||||
"Hide on Touch": {
|
||||
"Hide on Touch": ""
|
||||
},
|
||||
"Hide the dock when not in use and reveal it when hovering near the dock area": {
|
||||
"Hide the dock when not in use and reveal it when hovering near the dock area": "Kullanılmadığında dock'u gizle ve dock alanının yakınına geldiğinizde göster"
|
||||
},
|
||||
@@ -1937,6 +1979,15 @@
|
||||
"Key": {
|
||||
"Key": "Tuş"
|
||||
},
|
||||
"Keybind Sources": {
|
||||
"Keybind Sources": ""
|
||||
},
|
||||
"Keybinds Search Settings": {
|
||||
"Keybinds Search Settings": ""
|
||||
},
|
||||
"Keybinds shown alongside regular search results": {
|
||||
"Keybinds shown alongside regular search results": ""
|
||||
},
|
||||
"Keyboard Layout Name": {
|
||||
"Keyboard Layout Name": "Klavye Düzeni Adı"
|
||||
},
|
||||
@@ -2255,6 +2306,12 @@
|
||||
"Mount": {
|
||||
"Mount": "Bağlı"
|
||||
},
|
||||
"Mouse pointer appearance": {
|
||||
"Mouse pointer appearance": ""
|
||||
},
|
||||
"Mouse pointer size in pixels": {
|
||||
"Mouse pointer size in pixels": ""
|
||||
},
|
||||
"Move Widget": {
|
||||
"Move Widget": "Widget Taşı"
|
||||
},
|
||||
@@ -3038,6 +3095,9 @@
|
||||
"Scrolling": {
|
||||
"Scrolling": "Kaydırma"
|
||||
},
|
||||
"Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.": {
|
||||
"Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.": ""
|
||||
},
|
||||
"Search file contents": {
|
||||
"Search file contents": "Dosya içeriklerini ara"
|
||||
},
|
||||
@@ -3050,6 +3110,9 @@
|
||||
"Search keybinds...": {
|
||||
"Search keybinds...": "Tuş kombinasyonları ara..."
|
||||
},
|
||||
"Search keyboard shortcuts from your compositor and applications": {
|
||||
"Search keyboard shortcuts from your compositor and applications": ""
|
||||
},
|
||||
"Search plugins...": {
|
||||
"Search plugins...": "Eklentileri ara..."
|
||||
},
|
||||
@@ -3092,6 +3155,9 @@
|
||||
"Select an image file...": {
|
||||
"Select an image file...": "Bir resim dosyası seçin..."
|
||||
},
|
||||
"Select at least one provider": {
|
||||
"Select at least one provider": ""
|
||||
},
|
||||
"Select device...": {
|
||||
"Select device...": "Aygıt seç..."
|
||||
},
|
||||
@@ -3116,6 +3182,9 @@
|
||||
"Select the palette algorithm used for wallpaper-based colors": {
|
||||
"Select the palette algorithm used for wallpaper-based colors": "Duvar kağıdı tabanlı renkler için kullanılan palet algoritmasını seçin"
|
||||
},
|
||||
"Select which keybind providers to include": {
|
||||
"Select which keybind providers to include": ""
|
||||
},
|
||||
"Select which transitions to include in randomization": {
|
||||
"Select which transitions to include in randomization": "Rastgele seçime dahil edilecek geçişleri seçin"
|
||||
},
|
||||
@@ -3293,6 +3362,9 @@
|
||||
"Show on Overview": {
|
||||
"Show on Overview": "Genel Görünümde Göster"
|
||||
},
|
||||
"Show on Overview Only": {
|
||||
"Show on Overview Only": ""
|
||||
},
|
||||
"Show on all connected displays": {
|
||||
"Show on all connected displays": "Tüm bağlı ekranlarda göster"
|
||||
},
|
||||
@@ -3683,12 +3755,21 @@
|
||||
"Transparency": {
|
||||
"Transparency": "Transparanlık"
|
||||
},
|
||||
"Trigger": {
|
||||
"Trigger": ""
|
||||
},
|
||||
"Trigger Prefix": {
|
||||
"Trigger Prefix": ""
|
||||
},
|
||||
"Turn off monitors after": {
|
||||
"Turn off monitors after": "Şu zaman sonra monitörleri kapat"
|
||||
},
|
||||
"Type": {
|
||||
"Type": "Tip"
|
||||
},
|
||||
"Type this prefix to search keybinds": {
|
||||
"Type this prefix to search keybinds": ""
|
||||
},
|
||||
"Typography": {
|
||||
"Typography": "Tipografi"
|
||||
},
|
||||
@@ -3716,6 +3797,9 @@
|
||||
"Unknown Network": {
|
||||
"Unknown Network": "Bilinmeyen Ağ"
|
||||
},
|
||||
"Unpin": {
|
||||
"Unpin": ""
|
||||
},
|
||||
"Unpin from Dock": {
|
||||
"Unpin from Dock": "Dock'tan Sabitlemeyi Kaldır"
|
||||
},
|
||||
@@ -3737,6 +3821,9 @@
|
||||
"Update Plugin": {
|
||||
"Update Plugin": "Eklentiyi Güncelle"
|
||||
},
|
||||
"Usage Tips": {
|
||||
"Usage Tips": ""
|
||||
},
|
||||
"Use 24-hour time format instead of 12-hour AM/PM": {
|
||||
"Use 24-hour time format instead of 12-hour AM/PM": "12 saatlik ÖÖ/ÖS yerine 24 saatlik zaman formatını kullanın."
|
||||
},
|
||||
@@ -3791,6 +3878,9 @@
|
||||
"Use sound theme from system settings": {
|
||||
"Use sound theme from system settings": "Sistem ayarlarındaki ses temasını kullan"
|
||||
},
|
||||
"Use trigger prefix to activate": {
|
||||
"Use trigger prefix to activate": ""
|
||||
},
|
||||
"Use%": {
|
||||
"Use%": "Kullan%"
|
||||
},
|
||||
@@ -4072,6 +4162,9 @@
|
||||
"author attribution": {
|
||||
"by %1": "%1 tarafından"
|
||||
},
|
||||
"bar shadow settings card": {
|
||||
"Shadow": ""
|
||||
},
|
||||
"browse themes button | theme browser header | theme browser window title": {
|
||||
"Browse Themes": "Temalara Göz At"
|
||||
},
|
||||
@@ -4105,6 +4198,9 @@
|
||||
"dms/binds.kdl is now included in config.kdl": {
|
||||
"dms/binds.kdl is now included in config.kdl": "dms/binds.kdl artık config.kdl dosyasına dahil edilmiştir."
|
||||
},
|
||||
"dms/cursor config exists but is not included. Cursor settings won't apply.": {
|
||||
"dms/cursor config exists but is not included. Cursor settings won't apply.": ""
|
||||
},
|
||||
"dms/outputs config exists but is not included in your compositor config. Display changes won't persist.": {
|
||||
"dms/outputs config exists but is not included in your compositor config. Display changes won't persist.": "dms/outputs yapılandırması mevcut ancak kompozitör yapılandırmanıza dahil edilmemiş. Ekran değişiklikleri kalıcı olmayacaktır."
|
||||
},
|
||||
@@ -4421,6 +4517,13 @@
|
||||
"settings_displays": {
|
||||
"Widgets": "Widgetlar"
|
||||
},
|
||||
"shadow color option": {
|
||||
"Surface": "",
|
||||
"Text": ""
|
||||
},
|
||||
"shadow intensity slider": {
|
||||
"Intensity": ""
|
||||
},
|
||||
"source code link": {
|
||||
"source": "kaynak"
|
||||
},
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
"%1 job(s)": "%1 个任务"
|
||||
},
|
||||
"%1 notifications": {
|
||||
"%1 notifications": ""
|
||||
"%1 notifications": "%1条通知"
|
||||
},
|
||||
"%1 printer(s)": {
|
||||
"%1 printer(s)": "%1 个打印机"
|
||||
@@ -42,7 +42,7 @@
|
||||
"(Unnamed)": "(未命名)"
|
||||
},
|
||||
"+ %1 more": {
|
||||
"+ %1 more": ""
|
||||
"+ %1 more": "+%1更多"
|
||||
},
|
||||
"0 = square corners": {
|
||||
"0 = square corners": "0 = 直角"
|
||||
@@ -57,7 +57,7 @@
|
||||
"1 minute": "1 分钟"
|
||||
},
|
||||
"1 notification": {
|
||||
"1 notification": ""
|
||||
"1 notification": "1条通知"
|
||||
},
|
||||
"1 second": {
|
||||
"1 second": "1 秒"
|
||||
@@ -138,7 +138,7 @@
|
||||
"About": "关于"
|
||||
},
|
||||
"Accent Color": {
|
||||
"Accent Color": ""
|
||||
"Accent Color": "重点色"
|
||||
},
|
||||
"Accept Jobs": {
|
||||
"Accept Jobs": "接受任务"
|
||||
@@ -164,6 +164,9 @@
|
||||
"Activate": {
|
||||
"Activate": "激活"
|
||||
},
|
||||
"Activation": {
|
||||
"Activation": ""
|
||||
},
|
||||
"Active": {
|
||||
"Active": "活动"
|
||||
},
|
||||
@@ -233,6 +236,9 @@
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": {
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": "Alt+←/退格: 返回 • F1/I: 文件信息 • F10: 帮助 • Esc: 关闭"
|
||||
},
|
||||
"Always Active": {
|
||||
"Always Active": ""
|
||||
},
|
||||
"Always Show Percentage": {
|
||||
"Always Show Percentage": "始终显示百分比"
|
||||
},
|
||||
@@ -365,6 +371,9 @@
|
||||
"Auto-Clear After": {
|
||||
"Auto-Clear After": "在此之后自动清除"
|
||||
},
|
||||
"Auto-Hide Timeout": {
|
||||
"Auto-Hide Timeout": ""
|
||||
},
|
||||
"Auto-close Niri overview when launching apps.": {
|
||||
"Auto-close Niri overview when launching apps.": "当启动程序时自动关闭Niri概览。"
|
||||
},
|
||||
@@ -426,7 +435,7 @@
|
||||
"Available Screens (%1)": "可用屏幕(%1)"
|
||||
},
|
||||
"Available in Detailed and Forecast view modes": {
|
||||
"Available in Detailed and Forecast view modes": ""
|
||||
"Available in Detailed and Forecast view modes": "提供详细视图和预测视图两种模式"
|
||||
},
|
||||
"BSSID": {
|
||||
"BSSID": "BSSID"
|
||||
@@ -516,7 +525,7 @@
|
||||
"Border Opacity": "边框透明度"
|
||||
},
|
||||
"Border Size": {
|
||||
"Border Size": ""
|
||||
"Border Size": "边框宽度"
|
||||
},
|
||||
"Border Thickness": {
|
||||
"Border Thickness": "边框厚度"
|
||||
@@ -645,7 +654,7 @@
|
||||
"Choose colors from palette": "从调色板中选择颜色"
|
||||
},
|
||||
"Choose how the weather widget is displayed": {
|
||||
"Choose how the weather widget is displayed": ""
|
||||
"Choose how the weather widget is displayed": "选择天气部件的显示方式"
|
||||
},
|
||||
"Choose icon": {
|
||||
"Choose icon": "选择图标"
|
||||
@@ -663,7 +672,7 @@
|
||||
"Choose where notification popups appear on screen": "设置通知弹窗的出现位置"
|
||||
},
|
||||
"Choose where on-screen displays appear on screen": {
|
||||
"Choose where on-screen displays appear on screen": "选择OSD在屏幕上出现的位置"
|
||||
"Choose where on-screen displays appear on screen": "选择 OSD 在屏幕上出现的位置"
|
||||
},
|
||||
"Choose which displays show this widget": {
|
||||
"Choose which displays show this widget": "选择要在哪个显示器显示该小部件"
|
||||
@@ -692,6 +701,9 @@
|
||||
"Clear at Startup": {
|
||||
"Clear at Startup": "启动时清除"
|
||||
},
|
||||
"Click 'Setup' to create cursor config and add include to your compositor config.": {
|
||||
"Click 'Setup' to create cursor config and add include to your compositor config.": ""
|
||||
},
|
||||
"Click 'Setup' to create dms/binds.kdl and add include to config.kdl.": {
|
||||
"Click 'Setup' to create dms/binds.kdl and add include to config.kdl.": "点击设置以创建 dms/binds.kdl,并添加至config.kdl。"
|
||||
},
|
||||
@@ -777,7 +789,7 @@
|
||||
"Communication": "通讯"
|
||||
},
|
||||
"Compact": {
|
||||
"Compact": ""
|
||||
"Compact": "紧凑"
|
||||
},
|
||||
"Compact Mode": {
|
||||
"Compact Mode": "紧凑模式"
|
||||
@@ -878,6 +890,9 @@
|
||||
"Copied!": {
|
||||
"Copied!": "复制成功!"
|
||||
},
|
||||
"Copy": {
|
||||
"Copy": ""
|
||||
},
|
||||
"Copy PID": {
|
||||
"Copy PID": "复制进程ID"
|
||||
},
|
||||
@@ -932,11 +947,23 @@
|
||||
"Current: %1": {
|
||||
"Current: %1": "当前:%1"
|
||||
},
|
||||
"Cursor Config Not Configured": {
|
||||
"Cursor Config Not Configured": ""
|
||||
},
|
||||
"Cursor Include Missing": {
|
||||
"Cursor Include Missing": ""
|
||||
},
|
||||
"Cursor Size": {
|
||||
"Cursor Size": ""
|
||||
},
|
||||
"Cursor Theme": {
|
||||
"Cursor Theme": ""
|
||||
},
|
||||
"Custom": {
|
||||
"Custom": "自定义"
|
||||
},
|
||||
"Custom Color": {
|
||||
"Custom Color": ""
|
||||
"Custom Color": "自定义颜色"
|
||||
},
|
||||
"Custom Duration": {
|
||||
"Custom Duration": "自定义持续时间"
|
||||
@@ -1101,7 +1128,7 @@
|
||||
"Desktop Clock": "桌面时钟"
|
||||
},
|
||||
"Detailed": {
|
||||
"Detailed": ""
|
||||
"Detailed": "详细"
|
||||
},
|
||||
"Development": {
|
||||
"Development": "开发"
|
||||
@@ -1191,7 +1218,7 @@
|
||||
"Display currently focused application title": "显示当前聚焦应用的标题"
|
||||
},
|
||||
"Display hourly weather predictions": {
|
||||
"Display hourly weather predictions": ""
|
||||
"Display hourly weather predictions": "显示每小时天气预报"
|
||||
},
|
||||
"Display only workspaces that contain windows": {
|
||||
"Display only workspaces that contain windows": "只显示包含窗口的工作区"
|
||||
@@ -1569,7 +1596,7 @@
|
||||
"Failed to write temp file for validation": "未能写入临时文件进行验证"
|
||||
},
|
||||
"Feels": {
|
||||
"Feels": ""
|
||||
"Feels": "观感"
|
||||
},
|
||||
"Feels Like": {
|
||||
"Feels Like": "体感温度"
|
||||
@@ -1653,10 +1680,10 @@
|
||||
"Force terminal applications to always use dark color schemes": "强制终端应用使用暗色"
|
||||
},
|
||||
"Forecast": {
|
||||
"Forecast": ""
|
||||
"Forecast": "预测"
|
||||
},
|
||||
"Forecast Days": {
|
||||
"Forecast Days": ""
|
||||
"Forecast Days": "天气预测"
|
||||
},
|
||||
"Forecast Not Available": {
|
||||
"Forecast Not Available": "暂无预报"
|
||||
@@ -1772,9 +1799,24 @@
|
||||
"Hide Delay": {
|
||||
"Hide Delay": "隐藏延迟"
|
||||
},
|
||||
"Hide When Typing": {
|
||||
"Hide When Typing": ""
|
||||
},
|
||||
"Hide When Windows Open": {
|
||||
"Hide When Windows Open": "当窗口打开时隐藏"
|
||||
},
|
||||
"Hide cursor after inactivity (0 = disabled)": {
|
||||
"Hide cursor after inactivity (0 = disabled)": ""
|
||||
},
|
||||
"Hide cursor when pressing keyboard keys": {
|
||||
"Hide cursor when pressing keyboard keys": ""
|
||||
},
|
||||
"Hide cursor when using touch input": {
|
||||
"Hide cursor when using touch input": ""
|
||||
},
|
||||
"Hide on Touch": {
|
||||
"Hide on Touch": ""
|
||||
},
|
||||
"Hide the dock when not in use and reveal it when hovering near the dock area": {
|
||||
"Hide the dock when not in use and reveal it when hovering near the dock area": "在未使用时隐藏程序坞,鼠标悬停到程序坞区域时显示"
|
||||
},
|
||||
@@ -1812,7 +1854,7 @@
|
||||
"Hourly Forecast": "每小时预报"
|
||||
},
|
||||
"Hourly Forecast Count": {
|
||||
"Hourly Forecast Count": ""
|
||||
"Hourly Forecast Count": "每小时预测计数"
|
||||
},
|
||||
"How often to change wallpaper": {
|
||||
"How often to change wallpaper": "壁纸轮换频率"
|
||||
@@ -1821,7 +1863,7 @@
|
||||
"Humidity": "湿度"
|
||||
},
|
||||
"Hyprland Layout Overrides": {
|
||||
"Hyprland Layout Overrides": ""
|
||||
"Hyprland Layout Overrides": "Hyprland布局覆盖"
|
||||
},
|
||||
"I Understand": {
|
||||
"I Understand": "我明白以上内容"
|
||||
@@ -1937,6 +1979,15 @@
|
||||
"Key": {
|
||||
"Key": "键"
|
||||
},
|
||||
"Keybind Sources": {
|
||||
"Keybind Sources": ""
|
||||
},
|
||||
"Keybinds Search Settings": {
|
||||
"Keybinds Search Settings": ""
|
||||
},
|
||||
"Keybinds shown alongside regular search results": {
|
||||
"Keybinds shown alongside regular search results": ""
|
||||
},
|
||||
"Keyboard Layout Name": {
|
||||
"Keyboard Layout Name": "键盘布局名称"
|
||||
},
|
||||
@@ -2091,7 +2142,7 @@
|
||||
"Management": "管理"
|
||||
},
|
||||
"MangoWC Layout Overrides": {
|
||||
"MangoWC Layout Overrides": ""
|
||||
"MangoWC Layout Overrides": "MangoWC布局覆盖"
|
||||
},
|
||||
"Manual Coordinates": {
|
||||
"Manual Coordinates": "手动设置坐标"
|
||||
@@ -2255,6 +2306,12 @@
|
||||
"Mount": {
|
||||
"Mount": "挂载"
|
||||
},
|
||||
"Mouse pointer appearance": {
|
||||
"Mouse pointer appearance": ""
|
||||
},
|
||||
"Mouse pointer size in pixels": {
|
||||
"Mouse pointer size in pixels": ""
|
||||
},
|
||||
"Move Widget": {
|
||||
"Move Widget": "移动部件"
|
||||
},
|
||||
@@ -2358,7 +2415,7 @@
|
||||
"No VPN profiles": "无 VPN 配置"
|
||||
},
|
||||
"No Weather Data": {
|
||||
"No Weather Data": ""
|
||||
"No Weather Data": "无天气数据"
|
||||
},
|
||||
"No Weather Data Available": {
|
||||
"No Weather Data Available": "暂无天气数据"
|
||||
@@ -2451,7 +2508,7 @@
|
||||
"Not connected": "未连接"
|
||||
},
|
||||
"Not detected": {
|
||||
"Not detected": ""
|
||||
"Not detected": "未检测到"
|
||||
},
|
||||
"Note: this only changes the percentage, it does not actually limit charging.": {
|
||||
"Note: this only changes the percentage, it does not actually limit charging.": "注意:这只会改变百分比,而不会实际限制充电。"
|
||||
@@ -2568,7 +2625,7 @@
|
||||
"Override": "覆盖"
|
||||
},
|
||||
"Override Border Size": {
|
||||
"Override Border Size": ""
|
||||
"Override Border Size": "覆盖边框尺寸"
|
||||
},
|
||||
"Override Corner Radius": {
|
||||
"Override Corner Radius": "覆盖角半径"
|
||||
@@ -2745,7 +2802,7 @@
|
||||
"Power source": "电源"
|
||||
},
|
||||
"Precip": {
|
||||
"Precip": ""
|
||||
"Precip": "降水"
|
||||
},
|
||||
"Precipitation Chance": {
|
||||
"Precipitation Chance": "降水概率"
|
||||
@@ -2949,10 +3006,10 @@
|
||||
"Rounded corners for windows": "窗口圆角"
|
||||
},
|
||||
"Rounded corners for windows (border_radius)": {
|
||||
"Rounded corners for windows (border_radius)": ""
|
||||
"Rounded corners for windows (border_radius)": "窗口圆角(border_radius)"
|
||||
},
|
||||
"Rounded corners for windows (decoration.rounding)": {
|
||||
"Rounded corners for windows (decoration.rounding)": ""
|
||||
"Rounded corners for windows (decoration.rounding)": "窗口圆角(decoration.rounding)"
|
||||
},
|
||||
"Run DMS Templates": {
|
||||
"Run DMS Templates": "运行DMS模板"
|
||||
@@ -3038,6 +3095,9 @@
|
||||
"Scrolling": {
|
||||
"Scrolling": "滚动"
|
||||
},
|
||||
"Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.": {
|
||||
"Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.": ""
|
||||
},
|
||||
"Search file contents": {
|
||||
"Search file contents": "检索文件内容"
|
||||
},
|
||||
@@ -3050,6 +3110,9 @@
|
||||
"Search keybinds...": {
|
||||
"Search keybinds...": "搜索按键绑定..."
|
||||
},
|
||||
"Search keyboard shortcuts from your compositor and applications": {
|
||||
"Search keyboard shortcuts from your compositor and applications": ""
|
||||
},
|
||||
"Search plugins...": {
|
||||
"Search plugins...": "搜索插件中..."
|
||||
},
|
||||
@@ -3092,6 +3155,9 @@
|
||||
"Select an image file...": {
|
||||
"Select an image file...": "选择一张图片..."
|
||||
},
|
||||
"Select at least one provider": {
|
||||
"Select at least one provider": ""
|
||||
},
|
||||
"Select device...": {
|
||||
"Select device...": "选择设备..."
|
||||
},
|
||||
@@ -3116,6 +3182,9 @@
|
||||
"Select the palette algorithm used for wallpaper-based colors": {
|
||||
"Select the palette algorithm used for wallpaper-based colors": "选择从壁纸取色的配色方案"
|
||||
},
|
||||
"Select which keybind providers to include": {
|
||||
"Select which keybind providers to include": ""
|
||||
},
|
||||
"Select which transitions to include in randomization": {
|
||||
"Select which transitions to include in randomization": "选择在随机轮换中使用的过渡效果"
|
||||
},
|
||||
@@ -3183,10 +3252,10 @@
|
||||
"Show Dock": "显示程序坞"
|
||||
},
|
||||
"Show Feels Like Temperature": {
|
||||
"Show Feels Like Temperature": ""
|
||||
"Show Feels Like Temperature": "显示感官温度"
|
||||
},
|
||||
"Show Forecast": {
|
||||
"Show Forecast": ""
|
||||
"Show Forecast": "显示天气预测"
|
||||
},
|
||||
"Show GPU Temperature": {
|
||||
"Show GPU Temperature": "显示GPU温度"
|
||||
@@ -3201,16 +3270,16 @@
|
||||
"Show Hour Numbers": "显示小时数"
|
||||
},
|
||||
"Show Hourly Forecast": {
|
||||
"Show Hourly Forecast": ""
|
||||
"Show Hourly Forecast": "显示每小时天气预测"
|
||||
},
|
||||
"Show Humidity": {
|
||||
"Show Humidity": ""
|
||||
"Show Humidity": "显示湿度"
|
||||
},
|
||||
"Show Line Numbers": {
|
||||
"Show Line Numbers": "显示行号"
|
||||
},
|
||||
"Show Location": {
|
||||
"Show Location": ""
|
||||
"Show Location": "显示位置"
|
||||
},
|
||||
"Show Lock": {
|
||||
"Show Lock": "显示锁定"
|
||||
@@ -3237,10 +3306,10 @@
|
||||
"Show Power Off": "显示关机"
|
||||
},
|
||||
"Show Precipitation Probability": {
|
||||
"Show Precipitation Probability": ""
|
||||
"Show Precipitation Probability": "显示降水概率"
|
||||
},
|
||||
"Show Pressure": {
|
||||
"Show Pressure": ""
|
||||
"Show Pressure": "显示气压"
|
||||
},
|
||||
"Show Reboot": {
|
||||
"Show Reboot": "显示重启"
|
||||
@@ -3252,7 +3321,7 @@
|
||||
"Show Seconds": "显示秒数"
|
||||
},
|
||||
"Show Sunrise/Sunset": {
|
||||
"Show Sunrise/Sunset": ""
|
||||
"Show Sunrise/Sunset": "显示日出/日落"
|
||||
},
|
||||
"Show Suspend": {
|
||||
"Show Suspend": "显示挂起"
|
||||
@@ -3261,13 +3330,13 @@
|
||||
"Show Top Processes": "显示占用多的进程"
|
||||
},
|
||||
"Show Weather Condition": {
|
||||
"Show Weather Condition": ""
|
||||
"Show Weather Condition": "显示天气状况"
|
||||
},
|
||||
"Show Welcome": {
|
||||
"Show Welcome": ""
|
||||
"Show Welcome": "显示欢迎信息"
|
||||
},
|
||||
"Show Wind Speed": {
|
||||
"Show Wind Speed": ""
|
||||
"Show Wind Speed": "显示风速"
|
||||
},
|
||||
"Show Workspace Apps": {
|
||||
"Show Workspace Apps": "显示工作区内应用"
|
||||
@@ -3293,6 +3362,9 @@
|
||||
"Show on Overview": {
|
||||
"Show on Overview": "概览中显示"
|
||||
},
|
||||
"Show on Overview Only": {
|
||||
"Show on Overview Only": ""
|
||||
},
|
||||
"Show on all connected displays": {
|
||||
"Show on all connected displays": "在所有已连接的显示器上显示"
|
||||
},
|
||||
@@ -3300,28 +3372,28 @@
|
||||
"Show on screens:": "选择显示的屏幕:"
|
||||
},
|
||||
"Show on-screen display when brightness changes": {
|
||||
"Show on-screen display when brightness changes": "当亮度改变时显示OSD"
|
||||
"Show on-screen display when brightness changes": "当亮度改变时显示 OSD"
|
||||
},
|
||||
"Show on-screen display when caps lock state changes": {
|
||||
"Show on-screen display when caps lock state changes": "当大小写状态变化时显示OSD"
|
||||
"Show on-screen display when caps lock state changes": "当大小写状态变化时显示 OSD"
|
||||
},
|
||||
"Show on-screen display when cycling audio output devices": {
|
||||
"Show on-screen display when cycling audio output devices": "当循环切换音频输出设备时显示OSD"
|
||||
"Show on-screen display when cycling audio output devices": "当循环切换音频输出设备时显示 OSD"
|
||||
},
|
||||
"Show on-screen display when idle inhibitor state changes": {
|
||||
"Show on-screen display when idle inhibitor state changes": "当空闲抑制状态改变时显示OSD"
|
||||
"Show on-screen display when idle inhibitor state changes": "当空闲抑制状态改变时显示 OSD"
|
||||
},
|
||||
"Show on-screen display when media player volume changes": {
|
||||
"Show on-screen display when media player volume changes": "当媒体音量改变时显示OSD"
|
||||
},
|
||||
"Show on-screen display when microphone is muted/unmuted": {
|
||||
"Show on-screen display when microphone is muted/unmuted": "当麦克风静音状态切换时显示OSD"
|
||||
"Show on-screen display when microphone is muted/unmuted": "当麦克风静音状态切换时显示 OSD"
|
||||
},
|
||||
"Show on-screen display when power profile changes": {
|
||||
"Show on-screen display when power profile changes": "当电源配置改变时显示OSD"
|
||||
"Show on-screen display when power profile changes": "当电源配置改变时显示 OSD"
|
||||
},
|
||||
"Show on-screen display when volume changes": {
|
||||
"Show on-screen display when volume changes": "当音量变化时显示OSD"
|
||||
"Show on-screen display when volume changes": "当音量变化时显示 OSD"
|
||||
},
|
||||
"Show only apps running in current workspace": {
|
||||
"Show only apps running in current workspace": "仅显示当前工作区中的活动应用"
|
||||
@@ -3399,10 +3471,10 @@
|
||||
"Space between windows": "窗口间空隙"
|
||||
},
|
||||
"Space between windows (gappih/gappiv/gappoh/gappov)": {
|
||||
"Space between windows (gappih/gappiv/gappoh/gappov)": ""
|
||||
"Space between windows (gappih/gappiv/gappoh/gappov)": "窗口间隙(gappih/gappiv/gappoh/gappov)"
|
||||
},
|
||||
"Space between windows (gaps_in and gaps_out)": {
|
||||
"Space between windows (gaps_in and gaps_out)": ""
|
||||
"Space between windows (gaps_in and gaps_out)": "窗口间隙(gaps_in与gaps_out)"
|
||||
},
|
||||
"Spacer": {
|
||||
"Spacer": "空白占位"
|
||||
@@ -3426,7 +3498,7 @@
|
||||
"Stacked": "堆叠"
|
||||
},
|
||||
"Standard": {
|
||||
"Standard": ""
|
||||
"Standard": "基础设置"
|
||||
},
|
||||
"Start": {
|
||||
"Start": "开始"
|
||||
@@ -3651,7 +3723,7 @@
|
||||
"Toner Low": "碳粉不足"
|
||||
},
|
||||
"Tools": {
|
||||
"Tools": ""
|
||||
"Tools": "工具"
|
||||
},
|
||||
"Top": {
|
||||
"Top": "顶部"
|
||||
@@ -3683,12 +3755,21 @@
|
||||
"Transparency": {
|
||||
"Transparency": "透明度"
|
||||
},
|
||||
"Trigger": {
|
||||
"Trigger": ""
|
||||
},
|
||||
"Trigger Prefix": {
|
||||
"Trigger Prefix": ""
|
||||
},
|
||||
"Turn off monitors after": {
|
||||
"Turn off monitors after": "在此时间后关闭显示器"
|
||||
},
|
||||
"Type": {
|
||||
"Type": "类型"
|
||||
},
|
||||
"Type this prefix to search keybinds": {
|
||||
"Type this prefix to search keybinds": ""
|
||||
},
|
||||
"Typography": {
|
||||
"Typography": "排版"
|
||||
},
|
||||
@@ -3716,6 +3797,9 @@
|
||||
"Unknown Network": {
|
||||
"Unknown Network": "未知网络"
|
||||
},
|
||||
"Unpin": {
|
||||
"Unpin": ""
|
||||
},
|
||||
"Unpin from Dock": {
|
||||
"Unpin from Dock": "从程序坞取消固定"
|
||||
},
|
||||
@@ -3737,6 +3821,9 @@
|
||||
"Update Plugin": {
|
||||
"Update Plugin": "更新插件"
|
||||
},
|
||||
"Usage Tips": {
|
||||
"Usage Tips": ""
|
||||
},
|
||||
"Use 24-hour time format instead of 12-hour AM/PM": {
|
||||
"Use 24-hour time format instead of 12-hour AM/PM": "改用24小时制显示时间"
|
||||
},
|
||||
@@ -3765,10 +3852,10 @@
|
||||
"Use animated wave progress bars for media playback": "进行媒体播放时显示动画波形进度条"
|
||||
},
|
||||
"Use custom border size": {
|
||||
"Use custom border size": ""
|
||||
"Use custom border size": "使用自定义边框尺寸"
|
||||
},
|
||||
"Use custom border/focus-ring width": {
|
||||
"Use custom border/focus-ring width": ""
|
||||
"Use custom border/focus-ring width": "使用自定义边框/焦点环宽度"
|
||||
},
|
||||
"Use custom command for update your system": {
|
||||
"Use custom command for update your system": "使用自定义命令来更新系统"
|
||||
@@ -3780,7 +3867,7 @@
|
||||
"Use custom window radius instead of theme radius": "使用自定义窗口半径替代主题半径"
|
||||
},
|
||||
"Use custom window rounding instead of theme radius": {
|
||||
"Use custom window rounding instead of theme radius": ""
|
||||
"Use custom window rounding instead of theme radius": "使用自定义窗口圆角代替主题半径"
|
||||
},
|
||||
"Use fingerprint reader for lock screen authentication (requires enrolled fingerprints)": {
|
||||
"Use fingerprint reader for lock screen authentication (requires enrolled fingerprints)": "使用指纹识别进行锁屏验证(需要录入指纹)"
|
||||
@@ -3791,6 +3878,9 @@
|
||||
"Use sound theme from system settings": {
|
||||
"Use sound theme from system settings": "使用系统设置中的声音主题"
|
||||
},
|
||||
"Use trigger prefix to activate": {
|
||||
"Use trigger prefix to activate": ""
|
||||
},
|
||||
"Use%": {
|
||||
"Use%": "使用%"
|
||||
},
|
||||
@@ -3798,7 +3888,7 @@
|
||||
"Used": "已使用"
|
||||
},
|
||||
"Used when accent color is set to Custom": {
|
||||
"Used when accent color is set to Custom": ""
|
||||
"Used when accent color is set to Custom": "当强调色为自定义时使用"
|
||||
},
|
||||
"User": {
|
||||
"User": "用户"
|
||||
@@ -3876,7 +3966,7 @@
|
||||
"Vibrant palette with playful saturation.": "充满活力的调色板,有着俏皮的饱和度。"
|
||||
},
|
||||
"View Mode": {
|
||||
"View Mode": ""
|
||||
"View Mode": "查看模式"
|
||||
},
|
||||
"Visibility": {
|
||||
"Visibility": "能见度"
|
||||
@@ -3995,13 +4085,13 @@
|
||||
"Widget removed": "部件已移除"
|
||||
},
|
||||
"Width of window border (borderpx)": {
|
||||
"Width of window border (borderpx)": ""
|
||||
"Width of window border (borderpx)": "窗口边框宽度(borderpx)"
|
||||
},
|
||||
"Width of window border (general.border_size)": {
|
||||
"Width of window border (general.border_size)": ""
|
||||
"Width of window border (general.border_size)": "窗口边框宽度(general.border_size)"
|
||||
},
|
||||
"Width of window border and focus ring": {
|
||||
"Width of window border and focus ring": ""
|
||||
"Width of window border and focus ring": "窗口边框宽度与聚焦环"
|
||||
},
|
||||
"Wind": {
|
||||
"Wind": "风速"
|
||||
@@ -4019,7 +4109,7 @@
|
||||
"Window Gaps (px)": "窗口间隙(像素)"
|
||||
},
|
||||
"Window Rounding": {
|
||||
"Window Rounding": ""
|
||||
"Window Rounding": "窗口圆角"
|
||||
},
|
||||
"Workspace": {
|
||||
"Workspace": "工作区"
|
||||
@@ -4072,6 +4162,9 @@
|
||||
"author attribution": {
|
||||
"by %1": "%1"
|
||||
},
|
||||
"bar shadow settings card": {
|
||||
"Shadow": ""
|
||||
},
|
||||
"browse themes button | theme browser header | theme browser window title": {
|
||||
"Browse Themes": "浏览主题"
|
||||
},
|
||||
@@ -4105,6 +4198,9 @@
|
||||
"dms/binds.kdl is now included in config.kdl": {
|
||||
"dms/binds.kdl is now included in config.kdl": "dms/binds.kdl 现已包含在 config.kdl 中"
|
||||
},
|
||||
"dms/cursor config exists but is not included. Cursor settings won't apply.": {
|
||||
"dms/cursor config exists but is not included. Cursor settings won't apply.": ""
|
||||
},
|
||||
"dms/outputs config exists but is not included in your compositor config. Display changes won't persist.": {
|
||||
"dms/outputs config exists but is not included in your compositor config. Display changes won't persist.": "dms/输出配置存在,但不包含在你的合成器配置里。显示更改不会保留。"
|
||||
},
|
||||
@@ -4142,143 +4238,143 @@
|
||||
"Material Design inspired color themes": "受Material设计启发的色彩主题"
|
||||
},
|
||||
"greeter back button": {
|
||||
"Back": ""
|
||||
"Back": "返回"
|
||||
},
|
||||
"greeter completion page subtitle": {
|
||||
"DankMaterialShell is ready to use": ""
|
||||
"DankMaterialShell is ready to use": "DankMaterialShell现已可用"
|
||||
},
|
||||
"greeter completion page title": {
|
||||
"You're All Set!": ""
|
||||
"You're All Set!": "已全部设置!"
|
||||
},
|
||||
"greeter configure keybinds link": {
|
||||
"Configure Keybinds": ""
|
||||
"Configure Keybinds": "配置快捷键绑定"
|
||||
},
|
||||
"greeter dankbar description": {
|
||||
"Widgets, layout, style": ""
|
||||
"Widgets, layout, style": "部件、布局与风格"
|
||||
},
|
||||
"greeter displays description": {
|
||||
"Resolution, position, scale": ""
|
||||
"Resolution, position, scale": "分辨率、位置与缩放"
|
||||
},
|
||||
"greeter dock description": {
|
||||
"Position, pinned apps": ""
|
||||
"Position, pinned apps": "位置与已固定应用"
|
||||
},
|
||||
"greeter doctor page button": {
|
||||
"Run Again": ""
|
||||
"Run Again": "启动应用"
|
||||
},
|
||||
"greeter doctor page empty state": {
|
||||
"No checks passed": "",
|
||||
"No errors": "",
|
||||
"No info items": "",
|
||||
"No warnings": ""
|
||||
"No checks passed": "检查未通过",
|
||||
"No errors": "无报错",
|
||||
"No info items": "无信息项目",
|
||||
"No warnings": "无警告"
|
||||
},
|
||||
"greeter doctor page error count": {
|
||||
"%1 issue(s) found": ""
|
||||
"%1 issue(s) found": "发现%1个问题"
|
||||
},
|
||||
"greeter doctor page loading text": {
|
||||
"Analyzing configuration...": ""
|
||||
"Analyzing configuration...": "配置分析中..."
|
||||
},
|
||||
"greeter doctor page status card": {
|
||||
"Errors": "",
|
||||
"Info": "",
|
||||
"OK": "",
|
||||
"Warnings": ""
|
||||
"Errors": "错误",
|
||||
"Info": "信息",
|
||||
"OK": "OK",
|
||||
"Warnings": "警告"
|
||||
},
|
||||
"greeter doctor page success": {
|
||||
"All checks passed": ""
|
||||
"All checks passed": "所有检查均已通过"
|
||||
},
|
||||
"greeter doctor page title": {
|
||||
"System Check": ""
|
||||
"System Check": "系统检查"
|
||||
},
|
||||
"greeter documentation link": {
|
||||
"Docs": ""
|
||||
"Docs": "文档"
|
||||
},
|
||||
"greeter explore section header": {
|
||||
"Explore": ""
|
||||
"Explore": "浏览"
|
||||
},
|
||||
"greeter feature card description": {
|
||||
"Background app icons": "",
|
||||
"Colors from wallpaper": "",
|
||||
"Community themes": "",
|
||||
"Extensible architecture": "",
|
||||
"GTK, Qt, IDEs, more": "",
|
||||
"Modular widget bar": "",
|
||||
"Night mode & gamma": "",
|
||||
"Per-screen config": "",
|
||||
"Quick system toggles": ""
|
||||
"Background app icons": "背景应用图标",
|
||||
"Colors from wallpaper": "从壁纸选取颜色",
|
||||
"Community themes": "社区主题",
|
||||
"Extensible architecture": "可扩展架构",
|
||||
"GTK, Qt, IDEs, more": "GTK、Qt、IDEs等",
|
||||
"Modular widget bar": "模块化部件状态栏",
|
||||
"Night mode & gamma": "夜间模式与伽玛",
|
||||
"Per-screen config": "按屏幕区分设置",
|
||||
"Quick system toggles": "快速系统切换"
|
||||
},
|
||||
"greeter feature card title": {
|
||||
"App Theming": "",
|
||||
"Control Center": "",
|
||||
"Display Control": "",
|
||||
"Dynamic Theming": "",
|
||||
"Multi-Monitor": "",
|
||||
"System Tray": "",
|
||||
"Theme Registry": ""
|
||||
"App Theming": "应用主题",
|
||||
"Control Center": "设置中心",
|
||||
"Display Control": "显示控制",
|
||||
"Dynamic Theming": "动态主题",
|
||||
"Multi-Monitor": "多显示器",
|
||||
"System Tray": "系统托盘",
|
||||
"Theme Registry": "主题注册表"
|
||||
},
|
||||
"greeter feature card title | greeter plugins link": {
|
||||
"Plugins": ""
|
||||
"Plugins": "插件"
|
||||
},
|
||||
"greeter feature card title | greeter settings link": {
|
||||
"DankBar": ""
|
||||
"DankBar": "DankBar"
|
||||
},
|
||||
"greeter finish button": {
|
||||
"Finish": ""
|
||||
"Finish": "完成"
|
||||
},
|
||||
"greeter first page button": {
|
||||
"Get Started": ""
|
||||
"Get Started": "已开始"
|
||||
},
|
||||
"greeter keybinds niri description": {
|
||||
"niri shortcuts config": ""
|
||||
"niri shortcuts config": "Niri快捷键设置"
|
||||
},
|
||||
"greeter keybinds section header": {
|
||||
"DMS Shortcuts": ""
|
||||
"DMS Shortcuts": "DMS快捷键"
|
||||
},
|
||||
"greeter modal window title": {
|
||||
"Welcome": ""
|
||||
"Welcome": "欢迎"
|
||||
},
|
||||
"greeter next button": {
|
||||
"Next": ""
|
||||
"Next": "下一个"
|
||||
},
|
||||
"greeter no keybinds message": {
|
||||
"No DMS shortcuts configured": ""
|
||||
"No DMS shortcuts configured": "未配置DMS快捷键"
|
||||
},
|
||||
"greeter notifications description": {
|
||||
"Popup behavior, position": ""
|
||||
"Popup behavior, position": "弹窗行为与位置"
|
||||
},
|
||||
"greeter settings link": {
|
||||
"Displays": "",
|
||||
"Dock": "",
|
||||
"Keybinds": "",
|
||||
"Notifications": "",
|
||||
"Theme & Colors": "",
|
||||
"Wallpaper": ""
|
||||
"Displays": "显示器",
|
||||
"Dock": "程序坞",
|
||||
"Keybinds": "快捷键绑定",
|
||||
"Notifications": "通知",
|
||||
"Theme & Colors": "主题与颜色",
|
||||
"Wallpaper": "壁纸"
|
||||
},
|
||||
"greeter settings section header": {
|
||||
"Configure": ""
|
||||
"Configure": "配置"
|
||||
},
|
||||
"greeter skip button": {
|
||||
"Skip": ""
|
||||
"Skip": "跳过"
|
||||
},
|
||||
"greeter skip button tooltip": {
|
||||
"Skip setup": ""
|
||||
"Skip setup": "跳过设置"
|
||||
},
|
||||
"greeter theme description": {
|
||||
"Dynamic colors, presets": ""
|
||||
"Dynamic colors, presets": "动态颜色与预设"
|
||||
},
|
||||
"greeter themes link": {
|
||||
"Themes": ""
|
||||
"Themes": "主题"
|
||||
},
|
||||
"greeter wallpaper description": {
|
||||
"Background image": ""
|
||||
"Background image": "背景图片"
|
||||
},
|
||||
"greeter welcome page section header": {
|
||||
"Features": ""
|
||||
"Features": "功能"
|
||||
},
|
||||
"greeter welcome page tagline": {
|
||||
"A modern desktop shell for Wayland compositors": ""
|
||||
"A modern desktop shell for Wayland compositors": "为wayland合成器设计的一款现代桌面shell"
|
||||
},
|
||||
"greeter welcome page title": {
|
||||
"Welcome to DankMaterialShell": ""
|
||||
"Welcome to DankMaterialShell": "欢迎来到DankMaterialShell"
|
||||
},
|
||||
"install action button": {
|
||||
"Install": "安装"
|
||||
@@ -4302,17 +4398,17 @@
|
||||
"Loading...": "加载中..."
|
||||
},
|
||||
"lock screen notification mode option": {
|
||||
"App Names": "",
|
||||
"Count Only": "",
|
||||
"Disabled": "",
|
||||
"Full Content": ""
|
||||
"App Names": "仅应用名",
|
||||
"Count Only": "仅数量",
|
||||
"Disabled": "禁用",
|
||||
"Full Content": "完整内容"
|
||||
},
|
||||
"lock screen notification privacy setting": {
|
||||
"Control what notification information is shown on the lock screen": "",
|
||||
"Notification Display": ""
|
||||
"Control what notification information is shown on the lock screen": "控制在锁屏上显示的通知内容",
|
||||
"Notification Display": "通知显示"
|
||||
},
|
||||
"lock screen notifications settings card": {
|
||||
"Lock Screen": ""
|
||||
"Lock Screen": "锁屏"
|
||||
},
|
||||
"loginctl not available - lock integration requires DMS socket connection": {
|
||||
"loginctl not available - lock integration requires DMS socket connection": "loginctl 不可用 - 启用锁定集成需连接 DMS socket"
|
||||
@@ -4421,6 +4517,13 @@
|
||||
"settings_displays": {
|
||||
"Widgets": "部件"
|
||||
},
|
||||
"shadow color option": {
|
||||
"Surface": "",
|
||||
"Text": ""
|
||||
},
|
||||
"shadow intensity slider": {
|
||||
"Intensity": ""
|
||||
},
|
||||
"source code link": {
|
||||
"source": "源"
|
||||
},
|
||||
|
||||
@@ -164,6 +164,9 @@
|
||||
"Activate": {
|
||||
"Activate": "啟用"
|
||||
},
|
||||
"Activation": {
|
||||
"Activation": ""
|
||||
},
|
||||
"Active": {
|
||||
"Active": "啟用"
|
||||
},
|
||||
@@ -233,6 +236,9 @@
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": {
|
||||
"Alt+←/Backspace: Back • F1/I: File Info • F10: Help • Esc: Close": "Alt+←/Backspace: 返回 • F1/I: 檔案資訊 • F10: 幫助 • Esc: 關閉"
|
||||
},
|
||||
"Always Active": {
|
||||
"Always Active": ""
|
||||
},
|
||||
"Always Show Percentage": {
|
||||
"Always Show Percentage": "始終顯示百分比"
|
||||
},
|
||||
@@ -365,6 +371,9 @@
|
||||
"Auto-Clear After": {
|
||||
"Auto-Clear After": "自動清除於"
|
||||
},
|
||||
"Auto-Hide Timeout": {
|
||||
"Auto-Hide Timeout": ""
|
||||
},
|
||||
"Auto-close Niri overview when launching apps.": {
|
||||
"Auto-close Niri overview when launching apps.": "啟動應用程式時自動關閉 Niri 總覽。"
|
||||
},
|
||||
@@ -692,6 +701,9 @@
|
||||
"Clear at Startup": {
|
||||
"Clear at Startup": "啟動時清除"
|
||||
},
|
||||
"Click 'Setup' to create cursor config and add include to your compositor config.": {
|
||||
"Click 'Setup' to create cursor config and add include to your compositor config.": ""
|
||||
},
|
||||
"Click 'Setup' to create dms/binds.kdl and add include to config.kdl.": {
|
||||
"Click 'Setup' to create dms/binds.kdl and add include to config.kdl.": "按一下「設定」以建立 dms/binds.kdl 並將其包含至 config.kdl 中。"
|
||||
},
|
||||
@@ -878,6 +890,9 @@
|
||||
"Copied!": {
|
||||
"Copied!": "已複製!"
|
||||
},
|
||||
"Copy": {
|
||||
"Copy": ""
|
||||
},
|
||||
"Copy PID": {
|
||||
"Copy PID": "複製 PID"
|
||||
},
|
||||
@@ -932,6 +947,18 @@
|
||||
"Current: %1": {
|
||||
"Current: %1": "目前:%1"
|
||||
},
|
||||
"Cursor Config Not Configured": {
|
||||
"Cursor Config Not Configured": ""
|
||||
},
|
||||
"Cursor Include Missing": {
|
||||
"Cursor Include Missing": ""
|
||||
},
|
||||
"Cursor Size": {
|
||||
"Cursor Size": ""
|
||||
},
|
||||
"Cursor Theme": {
|
||||
"Cursor Theme": ""
|
||||
},
|
||||
"Custom": {
|
||||
"Custom": "自訂"
|
||||
},
|
||||
@@ -1772,9 +1799,24 @@
|
||||
"Hide Delay": {
|
||||
"Hide Delay": "隱藏延遲"
|
||||
},
|
||||
"Hide When Typing": {
|
||||
"Hide When Typing": ""
|
||||
},
|
||||
"Hide When Windows Open": {
|
||||
"Hide When Windows Open": "視窗開啟時隱藏"
|
||||
},
|
||||
"Hide cursor after inactivity (0 = disabled)": {
|
||||
"Hide cursor after inactivity (0 = disabled)": ""
|
||||
},
|
||||
"Hide cursor when pressing keyboard keys": {
|
||||
"Hide cursor when pressing keyboard keys": ""
|
||||
},
|
||||
"Hide cursor when using touch input": {
|
||||
"Hide cursor when using touch input": ""
|
||||
},
|
||||
"Hide on Touch": {
|
||||
"Hide on Touch": ""
|
||||
},
|
||||
"Hide the dock when not in use and reveal it when hovering near the dock area": {
|
||||
"Hide the dock when not in use and reveal it when hovering near the dock area": "不使用時隱藏 Dock,並在 Dock 區域附近懸停時顯示 Dock"
|
||||
},
|
||||
@@ -1937,6 +1979,15 @@
|
||||
"Key": {
|
||||
"Key": "按鍵"
|
||||
},
|
||||
"Keybind Sources": {
|
||||
"Keybind Sources": ""
|
||||
},
|
||||
"Keybinds Search Settings": {
|
||||
"Keybinds Search Settings": ""
|
||||
},
|
||||
"Keybinds shown alongside regular search results": {
|
||||
"Keybinds shown alongside regular search results": ""
|
||||
},
|
||||
"Keyboard Layout Name": {
|
||||
"Keyboard Layout Name": "鍵盤布局名稱"
|
||||
},
|
||||
@@ -2255,6 +2306,12 @@
|
||||
"Mount": {
|
||||
"Mount": "掛載"
|
||||
},
|
||||
"Mouse pointer appearance": {
|
||||
"Mouse pointer appearance": ""
|
||||
},
|
||||
"Mouse pointer size in pixels": {
|
||||
"Mouse pointer size in pixels": ""
|
||||
},
|
||||
"Move Widget": {
|
||||
"Move Widget": "移動小工具"
|
||||
},
|
||||
@@ -3038,6 +3095,9 @@
|
||||
"Scrolling": {
|
||||
"Scrolling": "滾動"
|
||||
},
|
||||
"Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.": {
|
||||
"Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.": ""
|
||||
},
|
||||
"Search file contents": {
|
||||
"Search file contents": "搜尋檔案內容"
|
||||
},
|
||||
@@ -3050,6 +3110,9 @@
|
||||
"Search keybinds...": {
|
||||
"Search keybinds...": "搜尋按鍵綁定..."
|
||||
},
|
||||
"Search keyboard shortcuts from your compositor and applications": {
|
||||
"Search keyboard shortcuts from your compositor and applications": ""
|
||||
},
|
||||
"Search plugins...": {
|
||||
"Search plugins...": "搜尋插件..."
|
||||
},
|
||||
@@ -3092,6 +3155,9 @@
|
||||
"Select an image file...": {
|
||||
"Select an image file...": "選擇一張圖片..."
|
||||
},
|
||||
"Select at least one provider": {
|
||||
"Select at least one provider": ""
|
||||
},
|
||||
"Select device...": {
|
||||
"Select device...": "選擇裝置..."
|
||||
},
|
||||
@@ -3116,6 +3182,9 @@
|
||||
"Select the palette algorithm used for wallpaper-based colors": {
|
||||
"Select the palette algorithm used for wallpaper-based colors": "請選擇調色板演算法,以桌布的顏色為基底。"
|
||||
},
|
||||
"Select which keybind providers to include": {
|
||||
"Select which keybind providers to include": ""
|
||||
},
|
||||
"Select which transitions to include in randomization": {
|
||||
"Select which transitions to include in randomization": "選擇要包含在隨機中的轉換效果"
|
||||
},
|
||||
@@ -3293,6 +3362,9 @@
|
||||
"Show on Overview": {
|
||||
"Show on Overview": "顯示在概覽畫面"
|
||||
},
|
||||
"Show on Overview Only": {
|
||||
"Show on Overview Only": ""
|
||||
},
|
||||
"Show on all connected displays": {
|
||||
"Show on all connected displays": "在所有連接的螢幕上顯示"
|
||||
},
|
||||
@@ -3683,12 +3755,21 @@
|
||||
"Transparency": {
|
||||
"Transparency": "透明度"
|
||||
},
|
||||
"Trigger": {
|
||||
"Trigger": ""
|
||||
},
|
||||
"Trigger Prefix": {
|
||||
"Trigger Prefix": ""
|
||||
},
|
||||
"Turn off monitors after": {
|
||||
"Turn off monitors after": "關閉螢幕之後"
|
||||
},
|
||||
"Type": {
|
||||
"Type": "類型"
|
||||
},
|
||||
"Type this prefix to search keybinds": {
|
||||
"Type this prefix to search keybinds": ""
|
||||
},
|
||||
"Typography": {
|
||||
"Typography": "字體排版"
|
||||
},
|
||||
@@ -3716,6 +3797,9 @@
|
||||
"Unknown Network": {
|
||||
"Unknown Network": "未知網路"
|
||||
},
|
||||
"Unpin": {
|
||||
"Unpin": ""
|
||||
},
|
||||
"Unpin from Dock": {
|
||||
"Unpin from Dock": "取消 Dock 釘選"
|
||||
},
|
||||
@@ -3737,6 +3821,9 @@
|
||||
"Update Plugin": {
|
||||
"Update Plugin": "更新插件"
|
||||
},
|
||||
"Usage Tips": {
|
||||
"Usage Tips": ""
|
||||
},
|
||||
"Use 24-hour time format instead of 12-hour AM/PM": {
|
||||
"Use 24-hour time format instead of 12-hour AM/PM": "使用 24 小時時間格式,而不是 12 小時 AM/PM"
|
||||
},
|
||||
@@ -3791,6 +3878,9 @@
|
||||
"Use sound theme from system settings": {
|
||||
"Use sound theme from system settings": "使用系統設定中的音效主題"
|
||||
},
|
||||
"Use trigger prefix to activate": {
|
||||
"Use trigger prefix to activate": ""
|
||||
},
|
||||
"Use%": {
|
||||
"Use%": "使用%"
|
||||
},
|
||||
@@ -4072,6 +4162,9 @@
|
||||
"author attribution": {
|
||||
"by %1": "作者:%1"
|
||||
},
|
||||
"bar shadow settings card": {
|
||||
"Shadow": ""
|
||||
},
|
||||
"browse themes button | theme browser header | theme browser window title": {
|
||||
"Browse Themes": "瀏覽佈景主題"
|
||||
},
|
||||
@@ -4105,6 +4198,9 @@
|
||||
"dms/binds.kdl is now included in config.kdl": {
|
||||
"dms/binds.kdl is now included in config.kdl": "dms/binds.kdl 現已包含在 config.kdl 中"
|
||||
},
|
||||
"dms/cursor config exists but is not included. Cursor settings won't apply.": {
|
||||
"dms/cursor config exists but is not included. Cursor settings won't apply.": ""
|
||||
},
|
||||
"dms/outputs config exists but is not included in your compositor config. Display changes won't persist.": {
|
||||
"dms/outputs config exists but is not included in your compositor config. Display changes won't persist.": "dms/outputs 組態存在,但未包含在您的合成器組態中。顯示變更將不會保留。"
|
||||
},
|
||||
@@ -4421,6 +4517,13 @@
|
||||
"settings_displays": {
|
||||
"Widgets": "小工具"
|
||||
},
|
||||
"shadow color option": {
|
||||
"Surface": "",
|
||||
"Text": ""
|
||||
},
|
||||
"shadow intensity slider": {
|
||||
"Intensity": ""
|
||||
},
|
||||
"source code link": {
|
||||
"source": "來源"
|
||||
},
|
||||
|
||||
@@ -1283,6 +1283,20 @@
|
||||
"start"
|
||||
]
|
||||
},
|
||||
{
|
||||
"section": "builtInPlugins",
|
||||
"label": "DMS",
|
||||
"tabIndex": 9,
|
||||
"category": "Launcher",
|
||||
"keywords": [
|
||||
"dms",
|
||||
"drawer",
|
||||
"launcher",
|
||||
"menu",
|
||||
"start"
|
||||
],
|
||||
"icon": "extension"
|
||||
},
|
||||
{
|
||||
"section": "niriOverviewOverlayEnabled",
|
||||
"label": "Enable Overview Overlay",
|
||||
@@ -1535,6 +1549,28 @@
|
||||
"icon": "terminal",
|
||||
"description": "Sync dark mode with settings portals for system-wide theme hints"
|
||||
},
|
||||
{
|
||||
"section": "cursorHideAfterInactive",
|
||||
"label": "Auto-Hide Timeout",
|
||||
"tabIndex": 10,
|
||||
"category": "Theme & Colors",
|
||||
"keywords": [
|
||||
"after",
|
||||
"appearance",
|
||||
"auto",
|
||||
"colors",
|
||||
"cursor",
|
||||
"hide",
|
||||
"inactive",
|
||||
"inactivity",
|
||||
"look",
|
||||
"scheme",
|
||||
"style",
|
||||
"theme",
|
||||
"timeout"
|
||||
],
|
||||
"description": "Hide cursor after inactivity (0 = disabled)"
|
||||
},
|
||||
{
|
||||
"section": "niriLayoutBorderSize",
|
||||
"label": "Border Size",
|
||||
@@ -1649,6 +1685,48 @@
|
||||
],
|
||||
"description": "0 = square corners"
|
||||
},
|
||||
{
|
||||
"section": "cursorSize",
|
||||
"label": "Cursor Size",
|
||||
"tabIndex": 10,
|
||||
"category": "Theme & Colors",
|
||||
"keywords": [
|
||||
"appearance",
|
||||
"colors",
|
||||
"cursor",
|
||||
"look",
|
||||
"mouse",
|
||||
"pixels",
|
||||
"pointer",
|
||||
"scheme",
|
||||
"size",
|
||||
"style",
|
||||
"theme"
|
||||
],
|
||||
"description": "Mouse pointer size in pixels"
|
||||
},
|
||||
{
|
||||
"section": "cursorTheme",
|
||||
"label": "Cursor Theme",
|
||||
"tabIndex": 10,
|
||||
"category": "Theme & Colors",
|
||||
"keywords": [
|
||||
"appearance",
|
||||
"colors",
|
||||
"colour",
|
||||
"cursor",
|
||||
"look",
|
||||
"mouse",
|
||||
"pointer",
|
||||
"scheme",
|
||||
"size",
|
||||
"style",
|
||||
"theme"
|
||||
],
|
||||
"icon": "mouse",
|
||||
"description": "Mouse pointer appearance",
|
||||
"conditionKey": "isNiri"
|
||||
},
|
||||
{
|
||||
"section": "modalDarkenBackground",
|
||||
"label": "Darken Modal Background",
|
||||
@@ -1726,6 +1804,48 @@
|
||||
"theme"
|
||||
]
|
||||
},
|
||||
{
|
||||
"section": "cursorHideWhenTyping",
|
||||
"label": "Hide When Typing",
|
||||
"tabIndex": 10,
|
||||
"category": "Theme & Colors",
|
||||
"keywords": [
|
||||
"appearance",
|
||||
"colors",
|
||||
"cursor",
|
||||
"hide",
|
||||
"keyboard",
|
||||
"keys",
|
||||
"look",
|
||||
"pressing",
|
||||
"scheme",
|
||||
"style",
|
||||
"theme",
|
||||
"typing"
|
||||
],
|
||||
"description": "Hide cursor when pressing keyboard keys",
|
||||
"conditionKey": "isNiri"
|
||||
},
|
||||
{
|
||||
"section": "cursorHideOnTouch",
|
||||
"label": "Hide on Touch",
|
||||
"tabIndex": 10,
|
||||
"category": "Theme & Colors",
|
||||
"keywords": [
|
||||
"appearance",
|
||||
"colors",
|
||||
"cursor",
|
||||
"hide",
|
||||
"input",
|
||||
"look",
|
||||
"scheme",
|
||||
"style",
|
||||
"theme",
|
||||
"touch"
|
||||
],
|
||||
"description": "Hide cursor when using touch input",
|
||||
"conditionKey": "isHyprland"
|
||||
},
|
||||
{
|
||||
"section": "matugenTemplateHyprland",
|
||||
"label": "Hyprland",
|
||||
|
||||
@@ -398,6 +398,13 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Activation",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Active",
|
||||
"translation": "",
|
||||
@@ -566,6 +573,13 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Always Active",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Always Show Percentage",
|
||||
"translation": "",
|
||||
@@ -902,6 +916,13 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Auto-Hide Timeout",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Auto-close Niri overview when launching apps.",
|
||||
"translation": "",
|
||||
@@ -1700,6 +1721,13 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Click 'Setup' to create cursor config and add include to your compositor config.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Click 'Setup' to create dms/binds.kdl and add include to config.kdl.",
|
||||
"translation": "",
|
||||
@@ -2183,6 +2211,13 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Copy",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Copy PID",
|
||||
"translation": "",
|
||||
@@ -2330,6 +2365,34 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Cursor Config Not Configured",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Cursor Include Missing",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Cursor Size",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Cursor Theme",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Custom",
|
||||
"translation": "",
|
||||
@@ -4374,6 +4437,13 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Hide When Typing",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Hide When Windows Open",
|
||||
"translation": "",
|
||||
@@ -4381,6 +4451,34 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Hide cursor after inactivity (0 = disabled)",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Hide cursor when pressing keyboard keys",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Hide cursor when using touch input",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Hide on Touch",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Hide the dock when not in use and reveal it when hovering near the dock area",
|
||||
"translation": "",
|
||||
@@ -4766,6 +4864,13 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Intensity",
|
||||
"translation": "",
|
||||
"context": "shadow intensity slider",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Interface:",
|
||||
"translation": "",
|
||||
@@ -4857,6 +4962,13 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Keybind Sources",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Keybinds",
|
||||
"translation": "",
|
||||
@@ -4864,6 +4976,20 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Keybinds Search Settings",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Keybinds shown alongside regular search results",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Keyboard Layout Name",
|
||||
"translation": "",
|
||||
@@ -5641,6 +5767,20 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Mouse pointer appearance",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Mouse pointer size in pixels",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Move Widget",
|
||||
"translation": "",
|
||||
@@ -6190,7 +6330,7 @@
|
||||
{
|
||||
"term": "Notepad",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"context": "Notepad",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
@@ -7629,6 +7769,13 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Search by key combo, description, or action name.\\n\\nDefault action copies the keybind to clipboard.\\nRight-click or press Right Arrow to pin frequently used keybinds - they'll appear at the top when not searching.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Search file contents",
|
||||
"translation": "",
|
||||
@@ -7657,6 +7804,13 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Search keyboard shortcuts from your compositor and applications",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Search plugins...",
|
||||
"translation": "",
|
||||
@@ -7790,6 +7944,13 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Select at least one provider",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Select device...",
|
||||
"translation": "",
|
||||
@@ -7846,6 +8007,13 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Select which keybind providers to include",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Select which transitions to include in randomization",
|
||||
"translation": "",
|
||||
@@ -7923,6 +8091,13 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Shadow",
|
||||
"translation": "",
|
||||
"context": "bar shadow settings card",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Shell",
|
||||
"translation": "",
|
||||
@@ -8315,6 +8490,13 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Show on Overview Only",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Show on all connected displays",
|
||||
"translation": "",
|
||||
@@ -8724,7 +8906,7 @@
|
||||
{
|
||||
"term": "Surface",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"context": "shadow color option",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
@@ -8934,7 +9116,7 @@
|
||||
{
|
||||
"term": "Text",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"context": "shadow color option",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
@@ -9253,6 +9435,20 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Trigger",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Trigger Prefix",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Turn off monitors after",
|
||||
"translation": "",
|
||||
@@ -9267,6 +9463,13 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Type this prefix to search keybinds",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Typography",
|
||||
"translation": "",
|
||||
@@ -9358,6 +9561,13 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Unpin",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Unpin from Dock",
|
||||
"translation": "",
|
||||
@@ -9407,6 +9617,13 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Usage Tips",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Use 24-hour time format instead of 12-hour AM/PM",
|
||||
"translation": "",
|
||||
@@ -9540,6 +9757,13 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Use trigger prefix to activate",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "Use%",
|
||||
"translation": "",
|
||||
@@ -10254,6 +10478,13 @@
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "dms/cursor config exists but is not included. Cursor settings won't apply.",
|
||||
"translation": "",
|
||||
"context": "",
|
||||
"reference": "",
|
||||
"comment": ""
|
||||
},
|
||||
{
|
||||
"term": "dms/outputs config exists but is not included in your compositor config. Display changes won't persist.",
|
||||
"translation": "",
|
||||
|
||||
Reference in New Issue
Block a user