Stage 5: das-update and das-welcome (0.3.0)

das-tools (Go, GTK 3 via gotk3):
- das-update: update window, tray icon when updates are available,
  --cli mode; xbps-install -Su between a snapper pre/post snapshot pair,
  privileged part through pkexec, rollback and reboot hints
- das-welcome: first-login window with install (live), language,
  home folder renaming, updates, settings and help

das-settings 0.3.0: create home folders with translated names.
xdg-user-dirs 0.20 only looks for translations in the first
XDG_DATA_DIRS entry with a locale directory (/usr/local/share/locale).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
das
2026-10-19 18:24:39 +03:00
co-authored by Claude Opus 5.5
parent 3b4527990e
commit d1d76c2bef
40 changed files with 2529 additions and 17 deletions
@@ -0,0 +1,29 @@
package main
import (
"reflect"
"testing"
)
func TestParseLocales(t *testing.T) {
got := parseLocales("C\nC.utf8\nPOSIX\nuk_UA.utf8\nen_US.UTF-8\nde_DE.iso88591\n")
want := []string{"en_US.UTF-8", "uk_UA.UTF-8"}
if !reflect.DeepEqual(got, want) {
t.Errorf("parseLocales = %q, want %q", got, want)
}
}
func TestSetDmrcLanguage(t *testing.T) {
tests := []struct{ in, want string }{
{"", "[Desktop]\nLanguage=en_US.UTF-8\n"},
{"[Desktop]\nSession=xfce\n", "[Desktop]\nSession=xfce\nLanguage=en_US.UTF-8\n"},
{"[Desktop]\nLanguage=uk_UA.UTF-8\nSession=xfce\n", "[Desktop]\nLanguage=en_US.UTF-8\nSession=xfce\n"},
{"[Desktop]\nSession=xfce\n[Other]\nLanguage=x\n", "[Desktop]\nSession=xfce\nLanguage=en_US.UTF-8\n[Other]\nLanguage=x\n"},
{"[Other]\nKey=1\n", "[Other]\nKey=1\n[Desktop]\nLanguage=en_US.UTF-8\n"},
}
for _, tt := range tests {
if got := setDmrcLanguage(tt.in, "en_US.UTF-8"); got != tt.want {
t.Errorf("setDmrcLanguage(%q) =\n%q\nwant\n%q", tt.in, got, tt.want)
}
}
}