Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package nwg-look for openSUSE:Factory checked in at 2026-05-07 17:32:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/nwg-look (Old) and /work/SRC/openSUSE:Factory/.nwg-look.new.1966 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "nwg-look" Thu May 7 17:32:22 2026 rev:3 rq:1351430 version:1.1.0 Changes: -------- --- /work/SRC/openSUSE:Factory/nwg-look/nwg-look.changes 2026-04-29 19:19:42.209652311 +0200 +++ /work/SRC/openSUSE:Factory/.nwg-look.new.1966/nwg-look.changes 2026-05-07 17:32:23.317277935 +0200 @@ -1,0 +2,14 @@ +Thu May 07 12:54:24 UTC 2026 - Khang Lê <[email protected]> + +- Update to version 1.1.0: + * update dependencies + * fix: Give up on bundling gtk themes in favor of a much simpler mount strategy + * feat: Add option to install selected gtk theme to flatpak + * Include Spanish lang and keywords on nwg-look.desktop + * Create es_ES.yml + * fix: Only consider/show flatpak options if flatpak is installed + * feat: Add option to override flatpak GTK and icon themes + * pt_BR language file added. + * fix #107 + +------------------------------------------------------------------- Old: ---- nwg-look-1.0.6.tar.gz New: ---- nwg-look-1.1.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ nwg-look.spec ++++++ --- /var/tmp/diff_new_pack.N1mjmG/_old 2026-05-07 17:32:24.469325463 +0200 +++ /var/tmp/diff_new_pack.N1mjmG/_new 2026-05-07 17:32:24.469325463 +0200 @@ -16,7 +16,7 @@ # Name: nwg-look -Version: 1.0.6 +Version: 1.1.0 Release: 0 Summary: GTK3 settings editor adapted to work in sway/wlroots environment License: MIT ++++++ _service ++++++ --- /var/tmp/diff_new_pack.N1mjmG/_old 2026-05-07 17:32:24.517327443 +0200 +++ /var/tmp/diff_new_pack.N1mjmG/_new 2026-05-07 17:32:24.521327608 +0200 @@ -3,7 +3,7 @@ <param name="url">https://github.com/nwg-piotr/nwg-look.git</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="revision">@PARENT_TAG@</param> + <param name="revision">v1.1.0</param> <param name="versionformat">@PARENT_TAG@</param> <param name="changesgenerate">enable</param> <param name="versionrewrite-pattern">v(.*)</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.N1mjmG/_old 2026-05-07 17:32:24.557329092 +0200 +++ /var/tmp/diff_new_pack.N1mjmG/_new 2026-05-07 17:32:24.561329258 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">https://github.com/nwg-piotr/nwg-look.git</param> - <param name="changesrevision">1282e6422491ea912ac22c5f532277eb011cc5bb</param></service></servicedata> + <param name="changesrevision">38d177b00f3eeec2652578d4398b32db9a3ea6bc</param></service></servicedata> (No newline at EOF) ++++++ nwg-look-1.0.6.tar.gz -> nwg-look-1.1.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-look-1.0.6/go.mod new/nwg-look-1.1.0/go.mod --- old/nwg-look-1.0.6/go.mod 2025-06-17 01:16:22.000000000 +0200 +++ new/nwg-look-1.1.0/go.mod 2026-05-07 03:12:54.000000000 +0200 @@ -1,12 +1,10 @@ module github.com/nwg-piotr/nwg-look -go 1.23.0 - -toolchain go1.24.1 +go 1.25.0 require ( github.com/gotk3/gotk3 v0.6.5-0.20240618185848-ff349ae13f56 - github.com/sirupsen/logrus v1.9.3 + github.com/sirupsen/logrus v1.9.4 ) -require golang.org/x/sys v0.33.0 // indirect +require golang.org/x/sys v0.43.0 // indirect diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-look-1.0.6/go.sum new/nwg-look-1.1.0/go.sum --- old/nwg-look-1.0.6/go.sum 2025-06-17 01:16:22.000000000 +0200 +++ new/nwg-look-1.1.0/go.sum 2026-05-07 03:12:54.000000000 +0200 @@ -7,9 +7,12 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.4 h1:TsZE7l11zFCLZnZ+teH4Umoq5BhEIfIzfRDZ1Uzql2w= +github.com/sirupsen/logrus v1.9.4/go.mod h1:ftWc9WdOfJ0a92nsE2jF5u5ZwH8Bv2zdeOC42RjbV2g= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.29.0 h1:TPYlXGxvx1MGTn2GiZDhnjPA9wZzZeGKHHmKhHYvgaU= golang.org/x/sys v0.29.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= @@ -17,6 +20,9 @@ golang.org/x/sys v0.31.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI= +golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-look-1.0.6/langs/cs_CZ.json new/nwg-look-1.1.0/langs/cs_CZ.json --- old/nwg-look-1.0.6/langs/cs_CZ.json 2025-06-17 01:16:22.000000000 +0200 +++ new/nwg-look-1.1.0/langs/cs_CZ.json 2026-05-07 03:12:54.000000000 +0200 @@ -50,5 +50,9 @@ "toolbar-style": "Styl panelu nástrojů", "ui-settings": "Nastevení uživatelského rozhranní", "widgets": "Nástroje", - "widget-style-preview": "Náhled stylu nástroje" + "widget-style-preview": "Náhled stylu nástroje", + "flatpak-settings": "Nastavení Flatpaku", + "flatpak-override-flatpak-gtk-theme": "Přepsat GTK motiv Flatpaku", + "flatpak-override-flatpak-icon-theme": "Přepsat motiv ikon Flatpaku", + "flatpak-install-current-gtk-theme": "Nainstalovat aktuální GTK motiv" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-look-1.0.6/langs/en_US.json new/nwg-look-1.1.0/langs/en_US.json --- old/nwg-look-1.0.6/langs/en_US.json 2025-06-17 01:16:22.000000000 +0200 +++ new/nwg-look-1.1.0/langs/en_US.json 2026-05-07 03:12:54.000000000 +0200 @@ -51,5 +51,9 @@ "toolbar-style": "Toolbar style", "ui-settings": "UI settings", "widgets": "Widgets", - "widget-style-preview": "Widget style preview" + "widget-style-preview": "Widget style preview", + "flatpak-settings": "Flatpak settings", + "flatpak-override-flatpak-gtk-theme": "Override flatpak GTK theme", + "flatpak-override-flatpak-icon-theme": "Override flatpak icon theme", + "flatpak-install-current-gtk-theme": "Install current GTK theme" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-look-1.0.6/langs/es_ES.yml new/nwg-look-1.1.0/langs/es_ES.yml --- old/nwg-look-1.0.6/langs/es_ES.yml 1970-01-01 01:00:00.000000000 +0100 +++ new/nwg-look-1.1.0/langs/es_ES.yml 2026-05-07 03:12:54.000000000 +0200 @@ -0,0 +1,59 @@ +{ + "apply": "Aplicar", + "button": "Botón", + "check-button": "Botón de selección", + "clear": "Limpiar", + "clear-gtk4-tooltip": "Limpiar enlaces simbólicos de GTK4 y settings.ini", + "close": "Cerrar", + "color-scheme": "Esquema de colores", + "cursor-size": "Tamaño del cursor", + "cursor-theme-preview": "Vista previa del tema de cursores", + "default": "Predeterminado", + "default-font": "Fuente predeterminada", + "deprecated": "obsoleto", + "deprecated-since-gtk-310": "Obsoleto desde GTK 3.10", + "enable-event-sounds": "Activar sonidos de eventos", + "enable-input-feedback-sounds": "Activar sonidos de respuesta de entrada", + "entry": "Entrada de texto", + "files-to-export": "Archivos a exportar", + "font": "Fuente", + "font-antialiasing": "Suavizado de fuente (Antialiasing)", + "font-hinting": "Optimización de fuente (Hinting)", + "font-rgba-order": "Orden RGBA de la fuente", + "font-settings": "Ajustes de fuentes", + "full": "Completo", + "grayscale": "Escala de grises", + "icon-theme": "Tema de iconos", + "icon-theme-preview": "Vista previa del tema de iconos", + "icons": "Iconos", + "ignored": "ignorado", + "large": "Grande", + "medium": "Mediano", + "mouse-cursor": "Cursor del ratón", + "none": "Ninguno", + "other": "Otro", + "other-settings": "Otros ajustes", + "prefer-dark": "Preferir oscuro", + "prefer-light": "Preferir claro", + "preferences": "Preferencias", + "program-settings": "Ajustes del programa", + "radio-button": "Botón de opción", + "show-button-images": "Mostrar imágenes en botones", + "show-menu-images": "Mostrar imágenes en menús", + "slight": "Ligero", + "small": "Pequeño", + "sound-effects": "Efectos de sonido", + "text": "Texto", + "text-below-icons": "Texto debajo de los iconos", + "text-next-to-icons": "Texto junto a los iconos", + "text-scaling-factor": "Factor de escala del texto", + "toolbar-icon-size": "Tamaño de iconos de barra de herramientas", + "toolbar-style": "Estilo de barra de herramientas", + "ui-settings": "Ajustes de interfaz", + "widgets": "Widgets", + "widget-style-preview": "Vista previa del estilo de widgets", + "flatpak-settings": "Configuración de Flatpak", + "flatpak-override-flatpak-gtk-theme": "Sobrescribir el tema GTK de Flatpak", + "flatpak-override-flatpak-icon-theme": "Sobrescribir el tema de iconos de Flatpak", + "flatpak-install-current-gtk-theme": "Instalar el tema GTK actual", +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-look-1.0.6/langs/ja_JP.json new/nwg-look-1.1.0/langs/ja_JP.json --- old/nwg-look-1.0.6/langs/ja_JP.json 2025-06-17 01:16:22.000000000 +0200 +++ new/nwg-look-1.1.0/langs/ja_JP.json 2026-05-07 03:12:54.000000000 +0200 @@ -50,5 +50,9 @@ "toolbar-style": "ツールバーのスタイル", "ui-settings": "UI 設定", "widgets": "ウィジェット", - "widget-style-preview": "ウィジェットスタイル プレビュー" + "widget-style-preview": "ウィジェットスタイル プレビュー", + "flatpak-settings": "Flatpakの設定", + "flatpak-override-flatpak-gtk-theme": "FlatpakのGTKテーマを上書きする", + "flatpak-override-flatpak-icon-theme": "Flatpakのアイコンテーマを上書きする", + "flatpak-install-current-gtk-theme": "現在のGTKテーマをインストールする" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-look-1.0.6/langs/pl_PL.json new/nwg-look-1.1.0/langs/pl_PL.json --- old/nwg-look-1.0.6/langs/pl_PL.json 2025-06-17 01:16:22.000000000 +0200 +++ new/nwg-look-1.1.0/langs/pl_PL.json 2026-05-07 03:12:54.000000000 +0200 @@ -51,5 +51,9 @@ "toolbar-style": "Styl paska narzędzi", "ui-settings": "Ustawienia interfejsu użytkownika", "widgets": "Widżety", - "widget-style-preview": "Podgląd stylu widżetów" + "widget-style-preview": "Podgląd stylu widżetów", + "flatpak-settings": "Ustawienia Flatpaka", + "flatpak-override-flatpak-gtk-theme": "Nadpisz motyw GTK Flatpaka", + "flatpak-override-flatpak-icon-theme": "Nadpisz motyw ikon Flatpaka", + "flatpak-install-current-gtk-theme": "Zainstaluj bieżący motyw GTK" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-look-1.0.6/langs/pt_BR.json new/nwg-look-1.1.0/langs/pt_BR.json --- old/nwg-look-1.0.6/langs/pt_BR.json 1970-01-01 01:00:00.000000000 +0100 +++ new/nwg-look-1.1.0/langs/pt_BR.json 2026-05-07 03:12:54.000000000 +0200 @@ -0,0 +1,55 @@ +{ + "apply": "Aplicar", + "button": "Botão", + "check-button": "Botão de marcação", + "clear": "Limpar", + "clear-gtk4-tooltip": "Limpar links simbólicos do GTK4 e settings.ini", + "close": "Fechar", + "color-scheme": "Esquema de cores", + "cursor-size": "Tamanho do cursor", + "cursor-theme-preview": "Pré-visualização do tema do cursor", + "default": "Padrão", + "default-font": "Fonte padrão", + "deprecated": "Obsoleto", + "deprecated-since-gtk-310": "Obsoleto desde o GTK 3.10", + "enable-event-sounds": "Habilitar sons de eventos", + "enable-input-feedback-sounds": "Habilitar sons de feedback de entrada", + "entry": "Entrada", + "files-to-export": "Arquivos para exportar", + "font": "Fonte", + "font-antialiasing": "Suavização de fontes", + "font-hinting": "Ajuste de fonte", + "font-rgba-order": "Ordem RGBA da fonte", + "font-settings": "Configurações da fonte", + "full": "Completo", + "grayscale": "Escala de cinza", + "icon-theme": "Tema de ícones", + "icon-theme-preview": "Prévia do tema de ícones", + "icons": "Ícones", + "ignored": "Ignorar", + "large": "Grande", + "medium": "Médio", + "mouse-cursor": "Cursor do mouse", + "none": "Nenhum", + "other": "Outro", + "other-settings": "Outras configurações", + "prefer-dark": "Preferir escuro", + "prefer-light": "Preferir claro", + "preferences": "Preferências", + "program-settings": "Configurações do programa", + "radio-button": "Botão de opção", + "show-button-images": "Mostrar imagens dos botões", + "show-menu-images": "Mostrar imagens do menu", + "slight": "Leve", + "small": "Pequeno", + "sound-effects": "Efeitos sonoros", + "text": "Texto", + "text-below-icons": "Texto abaixo dos ícones", + "text-next-to-icons": "Texto ao lado dos ícones", + "text-scaling-factor": "Fator de escala do texto", + "toolbar-icon-size": "Tamanho do ícone da barra de ferramentas", + "toolbar-style": "Estilo da barra de ferramentas", + "ui-settings": "Configurações da interface do usuário", + "widgets": "Widgets", + "widget-style-preview": "Pré-visualização do estilo do widget" +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-look-1.0.6/langs/ru_RU.json new/nwg-look-1.1.0/langs/ru_RU.json --- old/nwg-look-1.0.6/langs/ru_RU.json 2025-06-17 01:16:22.000000000 +0200 +++ new/nwg-look-1.1.0/langs/ru_RU.json 2026-05-07 03:12:54.000000000 +0200 @@ -50,5 +50,9 @@ "toolbar-style": "Стиль панели инструментов", "ui-settings": "Настройки интерфейса", "widgets": "Виджеты", - "widget-style-preview": "Предпросмотр стиля виджетов" + "widget-style-preview": "Предпросмотр стиля виджетов", + "flatpak-settings": "Настройки Flatpak", + "flatpak-override-flatpak-gtk-theme": "Переопределить тему GTK для Flatpak", + "flatpak-override-flatpak-icon-theme": "Переопределить тему значков Flatpak", + "flatpak-install-current-gtk-theme": "Установить текущую тему GTK" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-look-1.0.6/langs/tr_TR.json new/nwg-look-1.1.0/langs/tr_TR.json --- old/nwg-look-1.0.6/langs/tr_TR.json 2025-06-17 01:16:22.000000000 +0200 +++ new/nwg-look-1.1.0/langs/tr_TR.json 2026-05-07 03:12:54.000000000 +0200 @@ -1,54 +1,58 @@ { - "apply": "Uygula", - "button": "Buton", - "check-button": "Kontrol butonu", - "clear": "Temizle", - "close": "Kapat", - "color-scheme": "Renk şeması", - "cursor-size": "İmleç boyutu", - "cursor-theme-preview": "İmleç teması önizlemesi", - "default": "Varsayılan", - "default-font": "Varsayılan yazı tipi", - "deprecated": "Terkedilmiş", - "deprecated-since-gtk-310": "Deprecated since GTK 3.10", - "enable-event-sounds": "Olay seslerini etkinleştir", - "enable-input-feedback-sounds": "Giriş geri bildirim seslerini etkinleştir", - "entry": "Girdi", - "files-to-export": "Dışa aktarılacak dosyalar", - "font": "Yazı tipi", - "font-antialiasing": "Yazı tipi kenar yumuşatma", - "font-hinting": "Yazı tipi ipucu", - "font-rgba-order": "Yazı tipi RGBA düzeni", - "font-settings": "Yazı tipi ayarları", - "full": "Tam", - "grayscale": "Gri tonlama", - "icon-theme": "İkon teması", - "icon-theme-preview": "İkon teması önizlemesi", - "icons": "İkonlar", - "ignored": "Yok say", - "large": "Geniş", - "medium": "Orta", - "mouse-cursor": "Fare imleci", - "none": "Hiçbiri", - "other": "Diğer", - "other-settings": "Diğer ayarlar", - "prefer-dark": "Karanlığı tercih et", - "prefer-light": "Aydınlığı tercih et", - "preferences": "Tercihler", - "program-settings": "Program ayarları", - "radio-button": "Radyo butonu", - "show-button-images": "Buton görsellerini göster", - "show-menu-images": "Menü görsellerini göster", - "slight": "Hafif", - "small": "Küçük", - "sound-effects": "Ses efektleri", - "text": "Metin", - "text-below-icons": "İkonların altındaki metinler", - "text-next-to-icons": "İkonların yanındaki metinler", - "text-scaling-factor": "Metin ölçeklendirme faktörü", - "toolbar-icon-size": "Araç çubuğu ikon boyutu", - "toolbar-style": "Araç çubuğu tarzı", - "ui-settings": "UI ayarları", - "widgets": "Widgetlar", - "widget-style-preview": "Widget tarzı önizlemesi" -} \ No newline at end of file + "apply": "Uygula", + "button": "Buton", + "check-button": "Kontrol butonu", + "clear": "Temizle", + "close": "Kapat", + "color-scheme": "Renk şeması", + "cursor-size": "İmleç boyutu", + "cursor-theme-preview": "İmleç teması önizlemesi", + "default": "Varsayılan", + "default-font": "Varsayılan yazı tipi", + "deprecated": "Terkedilmiş", + "deprecated-since-gtk-310": "Deprecated since GTK 3.10", + "enable-event-sounds": "Olay seslerini etkinleştir", + "enable-input-feedback-sounds": "Giriş geri bildirim seslerini etkinleştir", + "entry": "Girdi", + "files-to-export": "Dışa aktarılacak dosyalar", + "font": "Yazı tipi", + "font-antialiasing": "Yazı tipi kenar yumuşatma", + "font-hinting": "Yazı tipi ipucu", + "font-rgba-order": "Yazı tipi RGBA düzeni", + "font-settings": "Yazı tipi ayarları", + "full": "Tam", + "grayscale": "Gri tonlama", + "icon-theme": "İkon teması", + "icon-theme-preview": "İkon teması önizlemesi", + "icons": "İkonlar", + "ignored": "Yok say", + "large": "Geniş", + "medium": "Orta", + "mouse-cursor": "Fare imleci", + "none": "Hiçbiri", + "other": "Diğer", + "other-settings": "Diğer ayarlar", + "prefer-dark": "Karanlığı tercih et", + "prefer-light": "Aydınlığı tercih et", + "preferences": "Tercihler", + "program-settings": "Program ayarları", + "radio-button": "Radyo butonu", + "show-button-images": "Buton görsellerini göster", + "show-menu-images": "Menü görsellerini göster", + "slight": "Hafif", + "small": "Küçük", + "sound-effects": "Ses efektleri", + "text": "Metin", + "text-below-icons": "İkonların altındaki metinler", + "text-next-to-icons": "İkonların yanındaki metinler", + "text-scaling-factor": "Metin ölçeklendirme faktörü", + "toolbar-icon-size": "Araç çubuğu ikon boyutu", + "toolbar-style": "Araç çubuğu tarzı", + "ui-settings": "UI ayarları", + "widgets": "Widgetlar", + "widget-style-preview": "Widget tarzı önizlemesi", + "flatpak-settings": "Flatpak ayarları", + "flatpak-override-flatpak-gtk-theme": "Flatpak GTK temasını geçersiz kıl", + "flatpak-override-flatpak-icon-theme": "Flatpak simge temasını geçersiz kıl", + "flatpak-install-current-gtk-theme": "Mevcut GTK temasını yükle" +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-look-1.0.6/langs/zh_CN.json new/nwg-look-1.1.0/langs/zh_CN.json --- old/nwg-look-1.0.6/langs/zh_CN.json 2025-06-17 01:16:22.000000000 +0200 +++ new/nwg-look-1.1.0/langs/zh_CN.json 2026-05-07 03:12:54.000000000 +0200 @@ -1,54 +1,58 @@ { - "apply": "应用", - "button": "按钮", - "check-button": "复选按钮", - "clear": "清除设置", - "close": "关闭", - "color-scheme": "颜色方案", - "cursor-size": "光标大小", - "cursor-theme-preview": "光标样式预览", - "default": "默认", - "default-font": "默认字体", - "deprecated": "已弃用", - "deprecated-since-gtk-310": "自 GTK 3.10 起已弃用", - "enable-event-sounds": "启用事件声音", - "enable-input-feedback-sounds": "启用输入反馈声音", - "entry": "输入框", - "files-to-export": "要导出的文件", - "font": "字体", - "font-antialiasing": "字体抗锯齿", - "font-hinting": "字体微调", - "font-rgba-order": "字体 RGBA 顺序", - "font-settings": "字体设置", - "full": "完全", - "grayscale": "灰度", - "icon-theme": "图标主题", - "icon-theme-preview": "图标主题预览", - "icons": "图标", - "ignored": "已忽略", - "large": "大", - "medium": "中等", - "mouse-cursor": "鼠标光标", - "none": "无", - "other": "其他", - "other-settings": "其他设置", - "prefer-dark": "倾向暗色", - "prefer-light": "倾向亮色", - "preferences": "偏好设置", - "program-settings": "程序设置", - "radio-button": "单选按钮", - "show-button-images": "显示按钮图片", - "show-menu-images": "显示菜单图片", - "slight": "轻微", - "small": "小", - "sound-effects": "声音效果", - "text": "文本", - "text-below-icons": "文本在图标下方", - "text-next-to-icons": "文本在图标侧面", - "text-scaling-factor": "文本缩放因子", - "toolbar-icon-size": "工具栏图标大小", - "toolbar-style": "工具栏样式", - "ui-settings": "界面设置", - "widgets": "组件", - "widget-style-preview": "组件风格预览" - } + "apply": "应用", + "button": "按钮", + "check-button": "复选按钮", + "clear": "清除设置", + "close": "关闭", + "color-scheme": "颜色方案", + "cursor-size": "光标大小", + "cursor-theme-preview": "光标样式预览", + "default": "默认", + "default-font": "默认字体", + "deprecated": "已弃用", + "deprecated-since-gtk-310": "自 GTK 3.10 起已弃用", + "enable-event-sounds": "启用事件声音", + "enable-input-feedback-sounds": "启用输入反馈声音", + "entry": "输入框", + "files-to-export": "要导出的文件", + "font": "字体", + "font-antialiasing": "字体抗锯齿", + "font-hinting": "字体微调", + "font-rgba-order": "字体 RGBA 顺序", + "font-settings": "字体设置", + "full": "完全", + "grayscale": "灰度", + "icon-theme": "图标主题", + "icon-theme-preview": "图标主题预览", + "icons": "图标", + "ignored": "已忽略", + "large": "大", + "medium": "中等", + "mouse-cursor": "鼠标光标", + "none": "无", + "other": "其他", + "other-settings": "其他设置", + "prefer-dark": "倾向暗色", + "prefer-light": "倾向亮色", + "preferences": "偏好设置", + "program-settings": "程序设置", + "radio-button": "单选按钮", + "show-button-images": "显示按钮图片", + "show-menu-images": "显示菜单图片", + "slight": "轻微", + "small": "小", + "sound-effects": "声音效果", + "text": "文本", + "text-below-icons": "文本在图标下方", + "text-next-to-icons": "文本在图标侧面", + "text-scaling-factor": "文本缩放因子", + "toolbar-icon-size": "工具栏图标大小", + "toolbar-style": "工具栏样式", + "ui-settings": "界面设置", + "widgets": "组件", + "widget-style-preview": "组件风格预览", + "flatpak-settings": "Flatpak 设置", + "flatpak-override-flatpak-gtk-theme": "覆盖 Flatpak GTK 主题", + "flatpak-override-flatpak-icon-theme": "覆盖 Flatpak 图标主题", + "flatpak-install-current-gtk-theme": "安装当前 GTK 主题" +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-look-1.0.6/main.go new/nwg-look-1.1.0/main.go --- old/nwg-look-1.0.6/main.go 2025-06-17 01:16:22.000000000 +0200 +++ new/nwg-look-1.1.0/main.go 2026-05-07 03:12:54.000000000 +0200 @@ -15,6 +15,7 @@ "path/filepath" "strings" + "github.com/nwg-piotr/nwg-look/stylepak" log "github.com/sirupsen/logrus" "github.com/gotk3/gotk3/gdk" @@ -46,11 +47,14 @@ ) type programSettings struct { - ExportSettingsIni bool `json:"export-settings-ini"` - ExportGtkRc20 bool `json:"export-gtkrc-20"` - ExportIndexTheme bool `json:"export-index-theme"` - ExportXsettingsd bool `json:"export-xsettingsd"` - ExportGtk4Symlinks bool `json:"export-gtk4-symlinks"` + ExportSettingsIni bool `json:"export-settings-ini"` + ExportGtkRc20 bool `json:"export-gtkrc-20"` + ExportIndexTheme bool `json:"export-index-theme"` + ExportXsettingsd bool `json:"export-xsettingsd"` + ExportGtk4Symlinks bool `json:"export-gtk4-symlinks"` + FlatpakExportGTKThemeOverride bool `json:"flatpak-export-gtk-theme-override"` + FlatpakExportIconThemeOverride bool `json:"flatpak-export-icon-theme-override"` + FlatpakInstallCurrentGTKTheme bool `json:"flatpak-install-current-gtk-theme"` } func programSettingsNewWithDefaults() programSettings { @@ -61,6 +65,10 @@ p.ExportXsettingsd = true p.ExportGtk4Symlinks = true + p.FlatpakExportGTKThemeOverride = false + p.FlatpakExportIconThemeOverride = false + p.FlatpakInstallCurrentGTKTheme = false + return p } @@ -284,6 +292,7 @@ lang := detectLang() log.Infof("lang: %s", lang) + dataDirs = getDataDirs() voc = loadVocabulary(lang) // initialize gsettings type with default gtk values @@ -314,6 +323,7 @@ saveXsettingsd() } if preferences.ExportGtk4Symlinks { + _, gtkThemePaths = getThemeNames() linkGtk4Stuff() saveGtkIni4() } else { @@ -351,7 +361,6 @@ os.Exit(0) } - dataDirs = getDataDirs() cursorThemes, cursorThemeNames = getCursorThemes() gtk.Init(nil) @@ -445,6 +454,22 @@ linkGtk4Stuff() saveGtkIni4() } + if preferences.FlatpakExportGTKThemeOverride { + overrideFlatpakGTKTheme() + } else if flatpakAvailable() { + unsetFlatpakGTKTheme() + } + if preferences.FlatpakExportIconThemeOverride { + overrideFlatpakIconTheme() + } else if flatpakAvailable() { + unsetFlatpakIconTheme() + } + + if preferences.FlatpakInstallCurrentGTKTheme { + if err := stylepak.InstallUserTheme("", nil); err != nil { + log.Warnf("failed to install flatpak theme: %s", err) + } + } savePreferences() }) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-look-1.0.6/stuff/nwg-look.desktop new/nwg-look-1.1.0/stuff/nwg-look.desktop --- old/nwg-look-1.0.6/stuff/nwg-look.desktop 2025-06-17 01:16:22.000000000 +0200 +++ new/nwg-look-1.1.0/stuff/nwg-look.desktop 2026-05-07 03:12:54.000000000 +0200 @@ -2,12 +2,16 @@ Type=Application Name=GTK Settings Name[pl]=Ustawienia GTK +Name[es]=Ajustes de GTK GenericName=Adjust Look and Feel GenericName[pl]=Dopasuj ustawienia wyglądu +GenericName[es]=Personalizar apariencia Comment=Customizes GTK3 look and feel settings Comment[pl]=Dostosowuje ustawienia środowiska graficznego GTK3 +Comment[es]=Personaliza la apariencia y el comportamiento de GTK3 Keywords=windows;preferences;settings;theme;style;appearance;look; Keywords[pl]=okna;preferencje;ustawienia;motyw;styl;wygląd; +Keywords[es]=ventanas;preferencias;ajustes;tema;estilo;apariencia;aspecto; Icon=nwg-look Exec=nwg-look NotShowIn=GNOME;KDE;XFCE;MATE; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-look-1.0.6/stylepak/helpers.go new/nwg-look-1.1.0/stylepak/helpers.go --- old/nwg-look-1.0.6/stylepak/helpers.go 1970-01-01 01:00:00.000000000 +0100 +++ new/nwg-look-1.1.0/stylepak/helpers.go 2026-05-07 03:12:54.000000000 +0200 @@ -0,0 +1,172 @@ +package stylepak + +import ( + "errors" + "fmt" + "io" + "os" + "path/filepath" + "regexp" + "sort" + "strings" +) + +func getenvDefault(key, def string) string { + if v := os.Getenv(key); v != "" { + return v + } + return def +} + +func validateTheme(theme string) error { + re := regexp.MustCompile(`^[A-Za-z0-9._\-]+$`) + if !re.MatchString(theme) { + return fmt.Errorf("invalid theme name %q (allowed: letters, digits, '.', '_', '-')", theme) + } + return nil +} + +func clean(paths ...string) error { + for _, p := range paths { + if err := os.RemoveAll(p); err != nil { + return fmt.Errorf("remove path %q: %w", p, err) + } + } + return nil +} + +func getCurrentGTKTheme(r Runner) (string, error) { + out, err := r.Output("gsettings", "get", "org.gnome.desktop.interface", "gtk-theme") + if err != nil { + return "", fmt.Errorf("failed to get current GTK theme: %w", err) + } + return strings.Trim(string(out), "'\n "), nil +} + +func findThemePath(theme, dataHome, home string) (string, error) { + paths := []string{ + filepath.Join(dataHome, "themes"), + filepath.Join(home, ".themes"), + "/usr/share/themes", + } + + for _, base := range paths { + full := filepath.Join(base, theme) + if fi, err := os.Stat(full); err == nil && fi.IsDir() { + return full, nil + } + } + return "", errors.New("theme directory not found in known locations") +} + +func detectGTKVersion(themePath string) (string, error) { + entries, err := os.ReadDir(themePath) + if err != nil { + return "", fmt.Errorf("read theme dir %q: %w", themePath, err) + } + + re := regexp.MustCompile(`gtk-3\.(\d+)$`) + var versions []int + + for _, e := range entries { + if m := re.FindStringSubmatch(e.Name()); len(m) == 2 { + var v int + fmt.Sscanf(m[1], "%d", &v) + versions = append(versions, v) + } + } + + if len(versions) == 0 { + return "", errors.New("no GTK 3.x directories found") + } + + sort.Sort(sort.Reverse(sort.IntSlice(versions))) + return fmt.Sprintf("%d", versions[0]), nil +} + +func getFlatpakArchitectures(r Runner) ([]string, error) { + out, err := r.Output("flatpak", "list", "--runtime", "--columns=arch") + if err != nil { + return nil, err + } + + lines := strings.Split(string(out), "\n") + set := make(map[string]struct{}) + + for _, l := range lines { + l = strings.TrimSpace(l) + if l != "" { + set[l] = struct{}{} + } + } + + if len(set) == 0 { + return nil, errors.New("no flatpak architectures detected") + } + + var arches []string + for k := range set { + arches = append(arches, k) + } + sort.Strings(arches) + + return arches, nil +} + +func copyDir(src, dst string) error { + return filepath.Walk(src, func(path string, info os.FileInfo, err error) error { + if err != nil { + return fmt.Errorf("walk path %q: %w", path, err) + } + + rel, err := filepath.Rel(src, path) + if err != nil { + return fmt.Errorf("compute relative path: %w", err) + } + + target := filepath.Join(dst, rel) + + switch { + case info.Mode()&os.ModeSymlink != 0: + link, err := os.Readlink(path) + if err != nil { + return fmt.Errorf("read symlink %q: %w", path, err) + } + if err := os.Symlink(link, target); err != nil { + return fmt.Errorf("create symlink %q: %w", target, err) + } + + case info.IsDir(): + if err := os.MkdirAll(target, info.Mode()); err != nil { + return fmt.Errorf("create dir %q: %w", target, err) + } + + default: + if err := copyFile(path, target, info.Mode()); err != nil { + return err + } + } + + return nil + }) +} + +func copyFile(src, dst string, perm os.FileMode) error { + in, err := os.Open(src) + if err != nil { + return fmt.Errorf("open source file %q: %w", src, err) + } + defer in.Close() + + out, err := os.OpenFile(dst, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, perm) + if err != nil { + return fmt.Errorf("open destination file %q: %w", dst, err) + } + defer out.Close() + + if _, err := io.Copy(out, in); err != nil { + return fmt.Errorf("copy file %q -> %q: %w", src, dst, err) + } + + return nil +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-look-1.0.6/stylepak/stylepak.go new/nwg-look-1.1.0/stylepak/stylepak.go --- old/nwg-look-1.0.6/stylepak/stylepak.go 1970-01-01 01:00:00.000000000 +0100 +++ new/nwg-look-1.1.0/stylepak/stylepak.go 2026-05-07 03:12:54.000000000 +0200 @@ -0,0 +1,213 @@ +// This file is derived from stylepak (https://github.com/refi64/stylepak) +// Original work licensed under the Mozilla Public License 2.0. +// Modifications and Go translation by Eslam Allam [email protected]. + +package stylepak + +import ( + "fmt" + "os" + "os/exec" + "path/filepath" + "strings" + + log "github.com/sirupsen/logrus" +) + + +const ( + nwgLookMarker = ".nwg-look" +) + +type themeInstallAction int + +const ( + themeActionFreshInstall themeInstallAction = iota + themeActionUpdate + themeActionSkip // user-managed, don't touch +) + +// Runner abstracts command execution (useful for testing/mocking) +type Runner interface { + Run(name string, args ...string) error + Output(name string, args ...string) ([]byte, error) +} + +type ExecRunner struct{} + +func (r ExecRunner) Run(name string, args ...string) error { + cmd := exec.Command(name, args...) + + if err := cmd.Run(); err != nil { + return fmt.Errorf("command failed: %s %v: %w", name, args, err) + } + return nil +} + +func (r ExecRunner) Output(name string, args ...string) ([]byte, error) { + cmd := exec.Command(name, args...) + out, err := cmd.Output() + if err != nil { + return nil, fmt.Errorf("command output failed: %s %v: %w", name, args, err) + } + return out, nil +} + +func determineInstallAction(themeDir string) (themeInstallAction, error) { + if _, err := os.Stat(themeDir); os.IsNotExist(err) { + return themeActionFreshInstall, nil + } else if err != nil { + return 0, fmt.Errorf("stat theme dir %q: %w", themeDir, err) + } + + markerPath := filepath.Join(themeDir, nwgLookMarker) + if _, err := os.Stat(markerPath); os.IsNotExist(err) { + return themeActionSkip, nil + } else if err != nil { + return 0, fmt.Errorf("stat marker %q: %w", markerPath, err) + } + + return themeActionUpdate, nil +} + +func removeStaleThemes(themesDir, currentTheme string) error { + entries, err := os.ReadDir(themesDir) + if os.IsNotExist(err) { + return nil + } + if err != nil { + return fmt.Errorf("read themes dir %q: %w", themesDir, err) + } + + for _, entry := range entries { + if !entry.IsDir() || entry.Name() == currentTheme { + continue + } + markerPath := filepath.Join(themesDir, entry.Name(), nwgLookMarker) + if _, err := os.Stat(markerPath); err != nil { + continue + } + log.Infof("Removing previously managed theme: %s", entry.Name()) + if err := os.RemoveAll(filepath.Join(themesDir, entry.Name())); err != nil { + return fmt.Errorf("remove previous theme %q: %w", entry.Name(), err) + } + } + return nil +} + +func copyThemeFiles(src, dst string) error { + entries, err := os.ReadDir(src) + if err != nil { + return fmt.Errorf("read theme dir %q: %w", src, err) + } + + copied := 0 + for _, entry := range entries { + if !entry.IsDir() || !strings.HasPrefix(entry.Name(), "gtk-") { + continue + } + entryDst := filepath.Join(dst, entry.Name()) + if err := os.MkdirAll(entryDst, 0o755); err != nil { + return fmt.Errorf("create dir %q: %w", entryDst, err) + } + if err := copyDir(filepath.Join(src, entry.Name()), entryDst); err != nil { + return fmt.Errorf("copy theme dir %q: %w", entry.Name(), err) + } + copied++ + log.Info("Copied theme dir:", entry.Name()) + } + + if copied == 0 { + return fmt.Errorf("no gtk-* directories found in theme %q", src) + } + + if data, err := os.ReadFile(filepath.Join(src, "index.theme")); err == nil { + if err := os.WriteFile(filepath.Join(dst, "index.theme"), data, 0o644); err != nil { + return fmt.Errorf("write index.theme: %w", err) + } + log.Info("Copied index.theme") + } + + return nil +} + +func InstallUserTheme(theme string, runner Runner) error { + if runner == nil { + runner = ExecRunner{} + } + + home, err := os.UserHomeDir() + if err != nil { + return fmt.Errorf("resolve home directory: %w", err) + } + + dataHome := getenvDefault("XDG_DATA_HOME", filepath.Join(home, ".local", "share")) + + if theme == "" { + theme, err = getCurrentGTKTheme(runner) + if err != nil { + return fmt.Errorf("resolve current GTK theme: %w", err) + } + } + + if err := validateTheme(theme); err != nil { + return err + } + + log.Info("Converting theme:", theme) + + themesDir := filepath.Join(home, ".themes") + userThemeDir := filepath.Join(themesDir, theme) + markerPath := filepath.Join(userThemeDir, nwgLookMarker) + + // Find system theme path, explicitly excluding ~/.themes to avoid + // copying a theme into itself + themePath, err := findThemePath(theme, dataHome, home) + if err != nil { + return fmt.Errorf("locate theme %q: %w", theme, err) + } + if themePath == userThemeDir { + return fmt.Errorf("theme %q is already in ~/.themes and was not installed by nwg-look", theme) + } + log.Info("Found theme located at:", themePath) + + if err := removeStaleThemes(themesDir, theme); err != nil { + return fmt.Errorf("remove stale themes: %w", err) + } + + action, err := determineInstallAction(userThemeDir) + if err != nil { + return err + } + + switch action { + case themeActionFreshInstall: + log.Infof("Installing theme to ~/.themes/%s", theme) + if err := os.MkdirAll(userThemeDir, 0o755); err != nil { + return fmt.Errorf("create ~/.themes/%s: %w", theme, err) + } + if err := copyThemeFiles(themePath, userThemeDir); err != nil { + return err + } + if err := os.WriteFile(markerPath, []byte("managed by nwg-look\n"), 0o644); err != nil { + return fmt.Errorf("write nwg-look marker: %w", err) + } + case themeActionUpdate: + log.Infof("Updating existing nwg-look-managed theme at ~/.themes/%s", theme) + if err := copyThemeFiles(themePath, userThemeDir); err != nil { + return err + } + case themeActionSkip: + log.Infof("~/.themes/%s already exists and was not created by nwg-look, skipping copy", theme) + } + + if err := runner.Run("flatpak", "override", "--user", + "--filesystem="+themesDir+":ro", + ); err != nil { + return fmt.Errorf("flatpak override ~/.themes: %w", err) + } + log.Info("Configured flatpak to access ~/.themes") + + log.Infof("Successfully installed theme %s", theme) + return nil +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-look-1.0.6/tools.go new/nwg-look-1.1.0/tools.go --- old/nwg-look-1.0.6/tools.go 2025-06-17 01:16:22.000000000 +0200 +++ new/nwg-look-1.1.0/tools.go 2026-05-07 03:12:54.000000000 +0200 @@ -963,6 +963,39 @@ } } } +func overrideFlatpakGTKTheme() { + theme := gsettings.gtkTheme + log.Infof("Overriding flatpak GTK theme to %s...", theme) + cmd := exec.Command("flatpak", "override", "--user", "--env", fmt.Sprintf("GTK_THEME=%s", theme)) + if _, err := cmd.CombinedOutput(); err != nil { + log.Warnf("failed to override flatpak gtk theme to %s: %s", theme, err) + } +} + +func unsetFlatpakGTKTheme() { + log.Info("Removing Flatpak GTK Theme override...") + cmd := exec.Command("flatpak", "override", "--user", "--unset-env", "GTK_THEME") + if _, err := cmd.CombinedOutput(); err != nil { + log.Warnf("failed to unset flatpak gtk theme override: %s", err) + } +} + +func overrideFlatpakIconTheme() { + theme := gsettings.iconTheme + log.Infof("Overriding flatpak Icon theme to %s...", theme) + cmd := exec.Command("flatpak", "override", "--user", "--env", fmt.Sprintf("ICON_THEME=%s", theme)) + if _, err := cmd.CombinedOutput(); err != nil { + log.Warnf("failed to override flatpak icon theme to %s: %s", theme, err) + } +} + +func unsetFlatpakIconTheme() { + log.Info("Removing Flatpak Icon Theme override...") + cmd := exec.Command("flatpak", "override", "--user", "--unset-env", "ICON_THEME") + if _, err := cmd.CombinedOutput(); err != nil { + log.Warnf("failed to unset flatpak icon theme override: %s", err) + } +} func saveIndexTheme() { home := os.Getenv("HOME") @@ -1421,9 +1454,14 @@ return lang } +func flatpakAvailable() bool { + if _, err := exec.LookPath("flatpak"); err != nil { + return false + } + return true +} + func loadVocabulary(lang string) map[string]string { - var dataDirs []string - dataDirs = getDataDirs() for _, d := range dataDirs { langsDir := filepath.Join(d, "/nwg-look/langs/") enUSFile := filepath.Join(langsDir, "en_US.json") diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/nwg-look-1.0.6/uicomponents.go new/nwg-look-1.1.0/uicomponents.go --- old/nwg-look-1.0.6/uicomponents.go 2025-06-17 01:16:22.000000000 +0200 +++ new/nwg-look-1.1.0/uicomponents.go 2026-05-07 03:12:54.000000000 +0200 @@ -640,51 +640,90 @@ g.SetProperty("vexpand", true) frame.Add(g) + var row int + lbl, _ := gtk.LabelNew("") lbl.SetMarkup(fmt.Sprintf("<b>%s</b>", voc["files-to-export"])) lbl.SetProperty("halign", gtk.ALIGN_START) - g.Attach(lbl, 0, 0, 1, 1) + g.Attach(lbl, 0, row, 1, 1) + row++ cb1, _ := gtk.CheckButtonNewWithLabel("~/.config/gtk-3.0/settings.ini") cb1.SetActive(preferences.ExportSettingsIni) cb1.Connect("toggled", func() { preferences.ExportSettingsIni = cb1.GetActive() }) - g.Attach(cb1, 0, 1, 1, 1) + g.Attach(cb1, 0, row, 1, 1) + row++ cb2, _ := gtk.CheckButtonNewWithLabel("~/.gtkrc-2.0") cb2.SetActive(preferences.ExportGtkRc20) cb2.Connect("toggled", func() { preferences.ExportGtkRc20 = cb2.GetActive() }) - g.Attach(cb2, 0, 2, 1, 1) + g.Attach(cb2, 0, row, 1, 1) + row++ cb3, _ := gtk.CheckButtonNewWithLabel("~/.icons/default/index.theme") cb3.SetActive(preferences.ExportIndexTheme) cb3.Connect("toggled", func() { preferences.ExportIndexTheme = cb3.GetActive() }) - g.Attach(cb3, 0, 3, 1, 1) + g.Attach(cb3, 0, row, 1, 1) + row++ cb4, _ := gtk.CheckButtonNewWithLabel("~/.config/xsettingsd/xsettingsd.conf") cb4.SetActive(preferences.ExportXsettingsd) cb4.Connect("toggled", func() { preferences.ExportXsettingsd = cb4.GetActive() }) - g.Attach(cb4, 0, 4, 1, 1) + g.Attach(cb4, 0, row, 1, 1) + row++ cb5, _ := gtk.CheckButtonNewWithLabel("~/.config/gtk-4.0/*") cb5.SetActive(preferences.ExportGtk4Symlinks) cb5.Connect("toggled", func() { preferences.ExportGtk4Symlinks = cb5.GetActive() }) - g.Attach(cb5, 0, 5, 1, 1) + g.Attach(cb5, 0, row, 1, 1) btn, _ := gtk.ButtonNewWithLabel(voc["clear"]) btn.Connect("clicked", clearGtk4Symlinks) - fmt.Println(voc) btn.SetTooltipText(voc["clear-gtk4-tooltip"]) - g.Attach(btn, 1, 5, 1, 1) + g.Attach(btn, 1, row, 1, 1) + row++ + + if flatpakAvailable() { + lbl2, _ := gtk.LabelNew("") + lbl2.SetMarkup(fmt.Sprintf("<b>%s</b>", voc["flatpak-settings"])) + lbl2.SetProperty("halign", gtk.ALIGN_START) + g.Attach(lbl2, 0, row, 1, 1) + row++ + + cb6, _ := gtk.CheckButtonNewWithLabel(voc["flatpak-override-flatpak-gtk-theme"]) + cb6.SetActive(preferences.FlatpakExportGTKThemeOverride) + cb6.Connect("toggled", func() { + preferences.FlatpakExportGTKThemeOverride = cb6.GetActive() + }) + g.Attach(cb6, 0, row, 1, 1) + row++ + + cb7, _ := gtk.CheckButtonNewWithLabel(voc["flatpak-override-flatpak-icon-theme"]) + cb7.SetActive(preferences.FlatpakExportIconThemeOverride) + cb7.Connect("toggled", func() { + preferences.FlatpakExportIconThemeOverride = cb7.GetActive() + }) + g.Attach(cb7, 0, row, 1, 1) + row++ + + cb8, _ := gtk.CheckButtonNewWithLabel(voc["flatpak-install-current-gtk-theme"]) + cb8.SetActive(preferences.FlatpakInstallCurrentGTKTheme) + cb8.Connect("toggled", func() { + preferences.FlatpakInstallCurrentGTKTheme = cb8.GetActive() + }) + g.Attach(cb8, 0, row, 1, 1) + row++ + } return frame } ++++++ vendor.tar.gz ++++++ ++++ 8631 lines of diff (skipped)
