diff --git a/doc/de/weechat_user.de.adoc b/doc/de/weechat_user.de.adoc index bbdd45cc0..85c1a22d2 100644 --- a/doc/de/weechat_user.de.adoc +++ b/doc/de/weechat_user.de.adoc @@ -2248,6 +2248,20 @@ is aborted before any option is changed. The name of the last applied theme is stored in `+weechat.look.theme+` (informational only; not re-applied at startup). +[[themes_reset]] +==== Resetting to defaults + +To restore the look shipped with WeeChat, reset every themable option +to its default value: + +---- +/theme reset +---- + +A backup is written first (same gate as `+/theme apply+`); on backup +failure the reset is aborted before any option is changed. +`+weechat.look.theme+` is cleared too. + [[themes_save_delete]] ==== Saving and deleting user themes diff --git a/doc/en/weechat_user.en.adoc b/doc/en/weechat_user.en.adoc index 8d3676c8d..901c60541 100644 --- a/doc/en/weechat_user.en.adoc +++ b/doc/en/weechat_user.en.adoc @@ -2235,6 +2235,20 @@ is aborted before any option is changed. The name of the last applied theme is stored in `+weechat.look.theme+` (informational only; not re-applied at startup). +[[themes_reset]] +==== Resetting to defaults + +To restore the look shipped with WeeChat, reset every themable option +to its default value: + +---- +/theme reset +---- + +A backup is written first (same gate as `+/theme apply+`); on backup +failure the reset is aborted before any option is changed. +`+weechat.look.theme+` is cleared too. + [[themes_save_delete]] ==== Saving and deleting user themes diff --git a/doc/fr/weechat_user.fr.adoc b/doc/fr/weechat_user.fr.adoc index ce9f308ed..b15a50eef 100644 --- a/doc/fr/weechat_user.fr.adoc +++ b/doc/fr/weechat_user.fr.adoc @@ -2282,6 +2282,21 @@ Le nom du dernier thème appliqué est conservé dans `+weechat.look.theme+` (à titre informatif uniquement ; il n'est pas ré-appliqué au démarrage). +[[themes_reset]] +==== Réinitialiser aux valeurs par défaut + +Pour rétablir l'apparence d'origine livrée avec WeeChat, réinitialiser +toutes les options modifiables à leur valeur par défaut : + +---- +/theme reset +---- + +Une sauvegarde est écrite au préalable (même garde-fou que +`+/theme apply+`) ; si la sauvegarde échoue, la réinitialisation est +annulée avant qu'aucune option ne soit modifiée. L'option +`+weechat.look.theme+` est également remise à vide. + [[themes_save_delete]] ==== Sauvegarder et supprimer des thèmes utilisateur diff --git a/doc/it/weechat_user.it.adoc b/doc/it/weechat_user.it.adoc index 6575fc4c8..be12a2396 100644 --- a/doc/it/weechat_user.it.adoc +++ b/doc/it/weechat_user.it.adoc @@ -2490,6 +2490,20 @@ is aborted before any option is changed. The name of the last applied theme is stored in `+weechat.look.theme+` (informational only; not re-applied at startup). +[[themes_reset]] +==== Resetting to defaults + +To restore the look shipped with WeeChat, reset every themable option +to its default value: + +---- +/theme reset +---- + +A backup is written first (same gate as `+/theme apply+`); on backup +failure the reset is aborted before any option is changed. +`+weechat.look.theme+` is cleared too. + [[themes_save_delete]] ==== Saving and deleting user themes diff --git a/doc/ja/weechat_user.ja.adoc b/doc/ja/weechat_user.ja.adoc index 6a2cbb72b..031ca36a8 100644 --- a/doc/ja/weechat_user.ja.adoc +++ b/doc/ja/weechat_user.ja.adoc @@ -2426,6 +2426,20 @@ is aborted before any option is changed. The name of the last applied theme is stored in `+weechat.look.theme+` (informational only; not re-applied at startup). +[[themes_reset]] +==== Resetting to defaults + +To restore the look shipped with WeeChat, reset every themable option +to its default value: + +---- +/theme reset +---- + +A backup is written first (same gate as `+/theme apply+`); on backup +failure the reset is aborted before any option is changed. +`+weechat.look.theme+` is cleared too. + [[themes_save_delete]] ==== Saving and deleting user themes diff --git a/doc/pl/weechat_user.pl.adoc b/doc/pl/weechat_user.pl.adoc index 957827921..d8d2c9ba7 100644 --- a/doc/pl/weechat_user.pl.adoc +++ b/doc/pl/weechat_user.pl.adoc @@ -2242,6 +2242,20 @@ is aborted before any option is changed. The name of the last applied theme is stored in `+weechat.look.theme+` (informational only; not re-applied at startup). +[[themes_reset]] +==== Resetting to defaults + +To restore the look shipped with WeeChat, reset every themable option +to its default value: + +---- +/theme reset +---- + +A backup is written first (same gate as `+/theme apply+`); on backup +failure the reset is aborted before any option is changed. +`+weechat.look.theme+` is cleared too. + [[themes_save_delete]] ==== Saving and deleting user themes diff --git a/doc/sr/weechat_user.sr.adoc b/doc/sr/weechat_user.sr.adoc index 775ba5b01..f2b458159 100644 --- a/doc/sr/weechat_user.sr.adoc +++ b/doc/sr/weechat_user.sr.adoc @@ -2144,6 +2144,20 @@ is aborted before any option is changed. The name of the last applied theme is stored in `+weechat.look.theme+` (informational only; not re-applied at startup). +[[themes_reset]] +==== Resetting to defaults + +To restore the look shipped with WeeChat, reset every themable option +to its default value: + +---- +/theme reset +---- + +A backup is written first (same gate as `+/theme apply+`); on backup +failure the reset is aborted before any option is changed. +`+weechat.look.theme+` is cleared too. + [[themes_save_delete]] ==== Saving and deleting user themes diff --git a/po/cs.po b/po/cs.po index 99bf38048..95cdc5c17 100644 --- a/po/cs.po +++ b/po/cs.po @@ -23,7 +23,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2026-07-04 20:23+0200\n" +"POT-Creation-Date: 2026-07-04 20:47+0200\n" "PO-Revision-Date: 2026-05-30 14:01+0200\n" "Last-Translator: Ondřej Súkup \n" "Language-Team: Czech \n" @@ -3714,8 +3714,8 @@ msgstr "seznam položek polí" #. TRANSLATORS: only text between angle brackets (eg: "") may be translated msgid "" -"[list [-backups]] || apply || save [-full] || del || " -"info " +"[list [-backups]] || apply || reset || save [-full] || del " +" || info " msgstr "" #, fuzzy @@ -3735,6 +3735,11 @@ msgid "" "shadows any built-in theme of the same name" msgstr "" +msgid "" +"raw[reset]: reset every themable option to its default value (restores the " +"original look shipped with WeeChat)" +msgstr "" + msgid "" "raw[save]: save current themable options to a file .theme in directory " "\"themes\"; by default only options whose value differs from their default " @@ -6364,6 +6369,12 @@ msgstr "" msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s" msgstr "" +#, c-format +msgid "" +"%sUnable to create theme backup; aborting reset (disable option " +"weechat.look.theme_backup to force)" +msgstr "" + #, c-format msgid "%sName \"%s\" is reserved for automatic backups" msgstr "" diff --git a/po/de.po b/po/de.po index 7b4711f5c..e4a29dd13 100644 --- a/po/de.po +++ b/po/de.po @@ -26,7 +26,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2026-07-04 20:23+0200\n" +"POT-Creation-Date: 2026-07-04 20:47+0200\n" "PO-Revision-Date: 2026-06-28 08:28+0200\n" "Last-Translator: Nils Görs \n" "Language-Team: German \n" @@ -4106,8 +4106,8 @@ msgstr "Verwalten von benutzerdefinierten Bar-Items" #. TRANSLATORS: only text between angle brackets (eg: "") may be translated msgid "" -"[list [-backups]] || apply || save [-full] || del || " -"info " +"[list [-backups]] || apply || reset || save [-full] || del " +" || info " msgstr "" #, fuzzy @@ -4134,6 +4134,11 @@ msgid "" "shadows any built-in theme of the same name" msgstr "" +msgid "" +"raw[reset]: reset every themable option to its default value (restores the " +"original look shipped with WeeChat)" +msgstr "" + msgid "" "raw[save]: save current themable options to a file .theme in directory " "\"themes\"; by default only options whose value differs from their default " @@ -7206,6 +7211,12 @@ msgstr "" msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s" msgstr "" +#, c-format +msgid "" +"%sUnable to create theme backup; aborting reset (disable option " +"weechat.look.theme_backup to force)" +msgstr "" + #, fuzzy, c-format #| msgid "%sBuffer name \"%s\" is reserved for WeeChat" msgid "%sName \"%s\" is reserved for automatic backups" diff --git a/po/es.po b/po/es.po index ff4826b1b..fafa32b63 100644 --- a/po/es.po +++ b/po/es.po @@ -24,7 +24,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2026-07-04 20:23+0200\n" +"POT-Creation-Date: 2026-07-04 20:47+0200\n" "PO-Revision-Date: 2026-06-28 08:46+0200\n" "Last-Translator: Santiago Forero \n" "Language-Team: Spanish \n" @@ -3806,8 +3806,8 @@ msgstr "lista de elementos de barra" #. TRANSLATORS: only text between angle brackets (eg: "") may be translated msgid "" -"[list [-backups]] || apply || save [-full] || del || " -"info " +"[list [-backups]] || apply || reset || save [-full] || del " +" || info " msgstr "" #, fuzzy @@ -3827,6 +3827,11 @@ msgid "" "shadows any built-in theme of the same name" msgstr "" +msgid "" +"raw[reset]: reset every themable option to its default value (restores the " +"original look shipped with WeeChat)" +msgstr "" + msgid "" "raw[save]: save current themable options to a file .theme in directory " "\"themes\"; by default only options whose value differs from their default " @@ -6522,6 +6527,12 @@ msgstr "" msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s" msgstr "" +#, c-format +msgid "" +"%sUnable to create theme backup; aborting reset (disable option " +"weechat.look.theme_backup to force)" +msgstr "" + #, fuzzy, c-format #| msgid "%sBuffer name \"%s\" is reserved for WeeChat" msgid "%sName \"%s\" is reserved for automatic backups" diff --git a/po/fr.po b/po/fr.po index ac0b3ddd8..b78f4e024 100644 --- a/po/fr.po +++ b/po/fr.po @@ -23,8 +23,8 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2026-07-04 20:23+0200\n" -"PO-Revision-Date: 2026-07-04 20:24+0200\n" +"POT-Creation-Date: 2026-07-04 20:47+0200\n" +"PO-Revision-Date: 2026-07-04 20:49+0200\n" "Last-Translator: Sébastien Helleu \n" "Language-Team: French \n" "Language: fr\n" @@ -4031,11 +4031,11 @@ msgstr "gestion des thèmes de couleurs" #. TRANSLATORS: only text between angle brackets (eg: "") may be translated msgid "" -"[list [-backups]] || apply || save [-full] || del || " -"info " +"[list [-backups]] || apply || reset || save [-full] || del " +" || info " msgstr "" -"[list [-backups]] || apply || save [-full] || del || info " -"" +"[list [-backups]] || apply || reset || save [-full] || del " +"|| info " msgid "" "raw[list]: list registered themes and any *.theme files in the WeeChat " @@ -4058,6 +4058,13 @@ msgstr "" "thème à la valeur du thème) ; si un fichier nommé .theme existe dans le " "répertoire \"themes\", il masque tout thème intégré du même nom" +msgid "" +"raw[reset]: reset every themable option to its default value (restores the " +"original look shipped with WeeChat)" +msgstr "" +"raw[reset] : réinitialiser toutes les options de thème à leurs valeurs par " +"défaut (rétablit l'apparence d'origine de WeeChat)" + msgid "" "raw[save]: save current themable options to a file .theme in directory " "\"themes\"; by default only options whose value differs from their default " @@ -7088,6 +7095,14 @@ msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s" msgstr "" "État précédent sauvé sous le thème \"%s\" ; pour restaurer : /theme apply %s" +#, c-format +msgid "" +"%sUnable to create theme backup; aborting reset (disable option " +"weechat.look.theme_backup to force)" +msgstr "" +"%sImpossible de créer une sauvegarde du thème ; abandon de la " +"réinitialisation (désactivez l'option weechat.look.theme_backup pour forcer)" + #, c-format msgid "%sName \"%s\" is reserved for automatic backups" msgstr "%sLe nom \"%s\" est réservé pour les sauvegardes automatiques" diff --git a/po/hu.po b/po/hu.po index 5a9bb3fc4..6f28c9118 100644 --- a/po/hu.po +++ b/po/hu.po @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2026-07-04 20:23+0200\n" +"POT-Creation-Date: 2026-07-04 20:47+0200\n" "PO-Revision-Date: 2026-03-08 08:59+0100\n" "Last-Translator: Andras Voroskoi \n" "Language-Team: Hungarian \n" @@ -3559,8 +3559,8 @@ msgstr "Aliaszok listája:\n" #. TRANSLATORS: only text between angle brackets (eg: "") may be translated msgid "" -"[list [-backups]] || apply || save [-full] || del || " -"info " +"[list [-backups]] || apply || reset || save [-full] || del " +" || info " msgstr "" #, fuzzy @@ -3579,6 +3579,11 @@ msgid "" "shadows any built-in theme of the same name" msgstr "" +msgid "" +"raw[reset]: reset every themable option to its default value (restores the " +"original look shipped with WeeChat)" +msgstr "" + msgid "" "raw[save]: save current themable options to a file .theme in directory " "\"themes\"; by default only options whose value differs from their default " @@ -6030,6 +6035,12 @@ msgstr "" msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s" msgstr "" +#, c-format +msgid "" +"%sUnable to create theme backup; aborting reset (disable option " +"weechat.look.theme_backup to force)" +msgstr "" + #, c-format msgid "%sName \"%s\" is reserved for automatic backups" msgstr "" diff --git a/po/it.po b/po/it.po index 3aaf6cf5c..bd4836136 100644 --- a/po/it.po +++ b/po/it.po @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2026-07-04 20:23+0200\n" +"POT-Creation-Date: 2026-07-04 20:47+0200\n" "PO-Revision-Date: 2026-05-30 14:02+0200\n" "Last-Translator: Esteban I. Ruiz Moreno \n" "Language-Team: Italian \n" @@ -3737,8 +3737,8 @@ msgstr "elenco degli elementi barra" #. TRANSLATORS: only text between angle brackets (eg: "") may be translated msgid "" -"[list [-backups]] || apply || save [-full] || del || " -"info " +"[list [-backups]] || apply || reset || save [-full] || del " +" || info " msgstr "" #, fuzzy @@ -3758,6 +3758,11 @@ msgid "" "shadows any built-in theme of the same name" msgstr "" +msgid "" +"raw[reset]: reset every themable option to its default value (restores the " +"original look shipped with WeeChat)" +msgstr "" + msgid "" "raw[save]: save current themable options to a file .theme in directory " "\"themes\"; by default only options whose value differs from their default " @@ -6510,6 +6515,12 @@ msgstr "" msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s" msgstr "" +#, c-format +msgid "" +"%sUnable to create theme backup; aborting reset (disable option " +"weechat.look.theme_backup to force)" +msgstr "" + #, c-format msgid "%sName \"%s\" is reserved for automatic backups" msgstr "" diff --git a/po/ja.po b/po/ja.po index 9359c66e5..82182b09d 100644 --- a/po/ja.po +++ b/po/ja.po @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2026-07-04 20:23+0200\n" +"POT-Creation-Date: 2026-07-04 20:47+0200\n" "PO-Revision-Date: 2026-05-30 14:02+0200\n" "Last-Translator: AYANOKOUZI, Ryuunosuke \n" "Language-Team: Japanese \n" @@ -3822,8 +3822,8 @@ msgstr "バー要素のリスト" #. TRANSLATORS: only text between angle brackets (eg: "") may be translated msgid "" -"[list [-backups]] || apply || save [-full] || del || " -"info " +"[list [-backups]] || apply || reset || save [-full] || del " +" || info " msgstr "" #, fuzzy @@ -3843,6 +3843,11 @@ msgid "" "shadows any built-in theme of the same name" msgstr "" +msgid "" +"raw[reset]: reset every themable option to its default value (restores the " +"original look shipped with WeeChat)" +msgstr "" + msgid "" "raw[save]: save current themable options to a file .theme in directory " "\"themes\"; by default only options whose value differs from their default " @@ -6686,6 +6691,12 @@ msgstr "" msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s" msgstr "" +#, c-format +msgid "" +"%sUnable to create theme backup; aborting reset (disable option " +"weechat.look.theme_backup to force)" +msgstr "" + #, fuzzy, c-format msgid "%sName \"%s\" is reserved for automatic backups" msgstr "%sエラー: \"%s\" は WeeChat の予約名です" diff --git a/po/pl.po b/po/pl.po index f6a600bb1..fb6eb96d7 100644 --- a/po/pl.po +++ b/po/pl.po @@ -23,7 +23,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2026-07-04 20:23+0200\n" +"POT-Creation-Date: 2026-07-04 20:47+0200\n" "PO-Revision-Date: 2026-06-28 08:55+0200\n" "Last-Translator: Krzysztof Korościk \n" "Language-Team: Polish \n" @@ -3932,8 +3932,8 @@ msgstr "zarządza niestandardowymi elementami pasków" #. TRANSLATORS: only text between angle brackets (eg: "") may be translated msgid "" -"[list [-backups]] || apply || save [-full] || del || " -"info " +"[list [-backups]] || apply || reset || save [-full] || del " +" || info " msgstr "" #, fuzzy @@ -3959,6 +3959,11 @@ msgid "" "shadows any built-in theme of the same name" msgstr "" +msgid "" +"raw[reset]: reset every themable option to its default value (restores the " +"original look shipped with WeeChat)" +msgstr "" + msgid "" "raw[save]: save current themable options to a file .theme in directory " "\"themes\"; by default only options whose value differs from their default " @@ -6867,6 +6872,12 @@ msgstr "" msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s" msgstr "" +#, c-format +msgid "" +"%sUnable to create theme backup; aborting reset (disable option " +"weechat.look.theme_backup to force)" +msgstr "" + #, fuzzy, c-format #| msgid "%sBuffer name \"%s\" is reserved for WeeChat" msgid "%sName \"%s\" is reserved for automatic backups" diff --git a/po/pt.po b/po/pt.po index bb008a01e..c381f8cc9 100644 --- a/po/pt.po +++ b/po/pt.po @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2026-07-04 20:23+0200\n" +"POT-Creation-Date: 2026-07-04 20:47+0200\n" "PO-Revision-Date: 2026-06-28 08:48+0200\n" "Last-Translator: Vasco Almeida \n" "Language-Team: Portuguese \n" @@ -3831,8 +3831,8 @@ msgstr "lista de itens da barra" #. TRANSLATORS: only text between angle brackets (eg: "") may be translated msgid "" -"[list [-backups]] || apply || save [-full] || del || " -"info " +"[list [-backups]] || apply || reset || save [-full] || del " +" || info " msgstr "" #, fuzzy @@ -3852,6 +3852,11 @@ msgid "" "shadows any built-in theme of the same name" msgstr "" +msgid "" +"raw[reset]: reset every themable option to its default value (restores the " +"original look shipped with WeeChat)" +msgstr "" + msgid "" "raw[save]: save current themable options to a file .theme in directory " "\"themes\"; by default only options whose value differs from their default " @@ -6742,6 +6747,12 @@ msgstr "" msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s" msgstr "" +#, c-format +msgid "" +"%sUnable to create theme backup; aborting reset (disable option " +"weechat.look.theme_backup to force)" +msgstr "" + #, c-format msgid "%sName \"%s\" is reserved for automatic backups" msgstr "" diff --git a/po/pt_BR.po b/po/pt_BR.po index c850ae408..fb8c2d47f 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -46,7 +46,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2026-07-04 20:23+0200\n" +"POT-Creation-Date: 2026-07-04 20:47+0200\n" "PO-Revision-Date: 2026-06-28 08:49+0200\n" "Last-Translator: Érico Nogueira \n" "Language-Team: Portuguese (Brazil) \n" @@ -3751,8 +3751,8 @@ msgstr "lista de itens da barra" #. TRANSLATORS: only text between angle brackets (eg: "") may be translated msgid "" -"[list [-backups]] || apply || save [-full] || del || " -"info " +"[list [-backups]] || apply || reset || save [-full] || del " +" || info " msgstr "" #, fuzzy @@ -3772,6 +3772,11 @@ msgid "" "shadows any built-in theme of the same name" msgstr "" +msgid "" +"raw[reset]: reset every themable option to its default value (restores the " +"original look shipped with WeeChat)" +msgstr "" + msgid "" "raw[save]: save current themable options to a file .theme in directory " "\"themes\"; by default only options whose value differs from their default " @@ -6408,6 +6413,12 @@ msgstr "" msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s" msgstr "" +#, c-format +msgid "" +"%sUnable to create theme backup; aborting reset (disable option " +"weechat.look.theme_backup to force)" +msgstr "" + #, c-format msgid "%sName \"%s\" is reserved for automatic backups" msgstr "" diff --git a/po/ru.po b/po/ru.po index 70131f7c4..84ca35b62 100644 --- a/po/ru.po +++ b/po/ru.po @@ -23,7 +23,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2026-07-04 20:23+0200\n" +"POT-Creation-Date: 2026-07-04 20:47+0200\n" "PO-Revision-Date: 2026-03-08 08:59+0100\n" "Last-Translator: Aleksey V Zapparov AKA ixti \n" "Language-Team: Russian \n" @@ -3583,8 +3583,8 @@ msgstr "Список сокращений:\n" #. TRANSLATORS: only text between angle brackets (eg: "") may be translated msgid "" -"[list [-backups]] || apply || save [-full] || del || " -"info " +"[list [-backups]] || apply || reset || save [-full] || del " +" || info " msgstr "" #, fuzzy @@ -3603,6 +3603,11 @@ msgid "" "shadows any built-in theme of the same name" msgstr "" +msgid "" +"raw[reset]: reset every themable option to its default value (restores the " +"original look shipped with WeeChat)" +msgstr "" + msgid "" "raw[save]: save current themable options to a file .theme in directory " "\"themes\"; by default only options whose value differs from their default " @@ -6067,6 +6072,12 @@ msgstr "" msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s" msgstr "" +#, c-format +msgid "" +"%sUnable to create theme backup; aborting reset (disable option " +"weechat.look.theme_backup to force)" +msgstr "" + #, c-format msgid "%sName \"%s\" is reserved for automatic backups" msgstr "" diff --git a/po/sr.po b/po/sr.po index c48e6f11d..f55d7ebc5 100644 --- a/po/sr.po +++ b/po/sr.po @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2026-07-04 20:23+0200\n" +"POT-Creation-Date: 2026-07-04 20:47+0200\n" "PO-Revision-Date: 2026-06-28 08:52+0200\n" "Last-Translator: Ivan Pešić \n" "Language-Team: Serbian \n" @@ -3909,8 +3909,8 @@ msgstr "управљање прилагођеним ставкама траке" #. TRANSLATORS: only text between angle brackets (eg: "") may be translated msgid "" -"[list [-backups]] || apply || save [-full] || del || " -"info " +"[list [-backups]] || apply || reset || save [-full] || del " +" || info " msgstr "" #, fuzzy @@ -3936,6 +3936,11 @@ msgid "" "shadows any built-in theme of the same name" msgstr "" +msgid "" +"raw[reset]: reset every themable option to its default value (restores the " +"original look shipped with WeeChat)" +msgstr "" + msgid "" "raw[save]: save current themable options to a file .theme in directory " "\"themes\"; by default only options whose value differs from their default " @@ -6849,6 +6854,12 @@ msgstr "" msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s" msgstr "" +#, c-format +msgid "" +"%sUnable to create theme backup; aborting reset (disable option " +"weechat.look.theme_backup to force)" +msgstr "" + #, fuzzy, c-format #| msgid "%sBuffer name \"%s\" is reserved for WeeChat" msgid "%sName \"%s\" is reserved for automatic backups" diff --git a/po/tr.po b/po/tr.po index 6af8372fc..c404351ae 100644 --- a/po/tr.po +++ b/po/tr.po @@ -23,7 +23,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2026-07-04 20:23+0200\n" +"POT-Creation-Date: 2026-07-04 20:47+0200\n" "PO-Revision-Date: 2026-06-28 08:53+0200\n" "Last-Translator: Emir SARI \n" "Language-Team: Turkish \n" @@ -3768,8 +3768,8 @@ msgstr "özel çubuk ögelerini yönet" #. TRANSLATORS: only text between angle brackets (eg: "") may be translated msgid "" -"[list [-backups]] || apply || save [-full] || del || " -"info " +"[list [-backups]] || apply || reset || save [-full] || del " +" || info " msgstr "" #, fuzzy @@ -3791,6 +3791,11 @@ msgid "" "shadows any built-in theme of the same name" msgstr "" +msgid "" +"raw[reset]: reset every themable option to its default value (restores the " +"original look shipped with WeeChat)" +msgstr "" + msgid "" "raw[save]: save current themable options to a file .theme in directory " "\"themes\"; by default only options whose value differs from their default " @@ -6646,6 +6651,12 @@ msgstr "" msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s" msgstr "" +#, c-format +msgid "" +"%sUnable to create theme backup; aborting reset (disable option " +"weechat.look.theme_backup to force)" +msgstr "" + #, fuzzy, c-format #| msgid "%sBuffer name \"%s\" is reserved for WeeChat" msgid "%sName \"%s\" is reserved for automatic backups" diff --git a/po/weechat.pot b/po/weechat.pot index 3f02e7fb5..4daff38fc 100644 --- a/po/weechat.pot +++ b/po/weechat.pot @@ -23,7 +23,7 @@ msgid "" msgstr "" "Project-Id-Version: WeeChat\n" "Report-Msgid-Bugs-To: flashcode@flashtux.org\n" -"POT-Creation-Date: 2026-07-04 20:23+0200\n" +"POT-Creation-Date: 2026-07-04 20:47+0200\n" "PO-Revision-Date: 2014-08-16 10:27+0200\n" "Last-Translator: Sébastien Helleu \n" "Language-Team: weechat-dev \n" @@ -3351,8 +3351,8 @@ msgstr "" #. TRANSLATORS: only text between angle brackets (eg: "") may be translated msgid "" -"[list [-backups]] || apply || save [-full] || del || " -"info " +"[list [-backups]] || apply || reset || save [-full] || del " +" || info " msgstr "" msgid "" @@ -3370,6 +3370,11 @@ msgid "" "shadows any built-in theme of the same name" msgstr "" +msgid "" +"raw[reset]: reset every themable option to its default value (restores the " +"original look shipped with WeeChat)" +msgstr "" + msgid "" "raw[save]: save current themable options to a file .theme in directory " "\"themes\"; by default only options whose value differs from their default " @@ -5625,6 +5630,12 @@ msgstr "" msgid "Previous state saved as theme \"%s\"; to restore: /theme apply %s" msgstr "" +#, c-format +msgid "" +"%sUnable to create theme backup; aborting reset (disable option " +"weechat.look.theme_backup to force)" +msgstr "" + #, c-format msgid "%sName \"%s\" is reserved for automatic backups" msgstr "" diff --git a/src/core/core-command.c b/src/core/core-command.c index 0f9d94844..7494f14ae 100644 --- a/src/core/core-command.c +++ b/src/core/core-command.c @@ -7339,6 +7339,12 @@ COMMAND_CALLBACK(theme) return theme_apply (argv[2]); } + /* "/theme reset": reset every themable option to its default value */ + if (string_strcmp (argv[1], "reset") == 0) + { + return theme_reset (); + } + /* "/theme save [-full]": write a user theme file */ if (string_strcmp (argv[1], "save") == 0) { @@ -10079,6 +10085,7 @@ command_init (void) /* TRANSLATORS: only text between angle brackets (eg: "") may be translated */ N_("[list [-backups]]" " || apply " + " || reset" " || save [-full]" " || del " " || info "), @@ -10091,6 +10098,8 @@ command_init (void) "value from the theme); if a file named .theme " "exists in directory \"themes\" it shadows any built-in " "theme of the same name"), + N_("raw[reset]: reset every themable option to its default " + "value (restores the original look shipped with WeeChat)"), N_("raw[save]: save current themable options to a file " ".theme in directory \"themes\"; by default only " "options whose value differs from their default are " @@ -10114,6 +10123,7 @@ command_init (void) "This is controlled by the option weechat.look.theme_backup.")), "list -backups" " || apply %(theme_themes_all)" + " || reset" " || save %(theme_themes_user) -full" " || del %(theme_themes_user)" " || info %(theme_themes_all)", diff --git a/src/core/core-theme.c b/src/core/core-theme.c index bc8786c7a..e2bcd2f33 100644 --- a/src/core/core-theme.c +++ b/src/core/core-theme.c @@ -1036,6 +1036,84 @@ theme_apply (const char *name) return WEECHAT_RC_OK; } +/* + * Reset every themable option to its default value. + * + * Same backup-first safety as theme_apply: if weechat.look.theme_backup + * is on, a backup file is written before any option is touched, and the + * reset is aborted if the backup cannot be written. The active-theme + * label (weechat.look.theme) is reset to its default (empty string). + * + * Return WEECHAT_RC_OK on success, WEECHAT_RC_ERROR if the backup is + * required but failed. + */ + +int +theme_reset (void) +{ + struct t_config_file *ptr_config; + struct t_config_section *ptr_section; + struct t_config_option *ptr_option; + char *backup_name = NULL; + + if (CONFIG_BOOLEAN(config_look_theme_backup)) + { + backup_name = theme_make_backup (); + if (!backup_name) + { + gui_chat_printf ( + NULL, + _("%sUnable to create theme backup; aborting reset " + "(disable option weechat.look.theme_backup to force)"), + gui_chat_prefix[GUI_CHAT_PREFIX_ERROR]); + return WEECHAT_RC_ERROR; + } + } + + /* reset every themable option to its default value; per-option gui + refreshes are suppressed via theme_applying */ + theme_applying = 1; + for (ptr_config = config_files; ptr_config; + ptr_config = ptr_config->next_config) + { + for (ptr_section = ptr_config->sections; ptr_section; + ptr_section = ptr_section->next_section) + { + for (ptr_option = ptr_section->options; ptr_option; + ptr_option = ptr_option->next_option) + { + if (ptr_option->themable) + config_file_option_reset (ptr_option, 1); + } + } + } + theme_applying = 0; + + if (gui_init_ok) + { + gui_color_init_weechat (); + gui_window_ask_refresh (1); + } + + /* clear active-theme label */ + config_file_option_reset (config_look_theme, 1); + + if (backup_name) + { + gui_chat_printf ( + NULL, + _("Previous state saved as theme \"%s\"; to restore: " + "/theme apply %s"), + backup_name, backup_name); + free (backup_name); + } + + hook_signal_send ("theme_applied", + WEECHAT_HOOK_SIGNAL_STRING, (char *)""); + + return WEECHAT_RC_OK; +} + /* * Save the current themable options to a user theme file. * diff --git a/src/core/core-theme.h b/src/core/core-theme.h index 2f51848c8..bd3ea80a3 100644 --- a/src/core/core-theme.h +++ b/src/core/core-theme.h @@ -69,6 +69,7 @@ extern const char *theme_get_override (struct t_theme *theme, const char *option_name); extern struct t_arraylist *theme_list (void); extern int theme_apply (const char *name); +extern int theme_reset (void); extern int theme_save (const char *name, int full); extern int theme_delete (const char *name); extern char *theme_make_backup (void); diff --git a/tests/unit/core/test-core-theme.cpp b/tests/unit/core/test-core-theme.cpp index 40cab2a08..7f483288f 100644 --- a/tests/unit/core/test-core-theme.cpp +++ b/tests/unit/core/test-core-theme.cpp @@ -689,6 +689,56 @@ TEST(CoreTheme, ApplyMergeAcrossContributions) free (saved_value); } +/* + * Test functions: + * theme_reset + */ + +TEST(CoreTheme, Reset) +{ + struct t_hashtable *overrides; + struct t_config_option *opt_prefix_error; + char *saved_prefix_error, *saved_theme_label, *default_prefix_error; + int saved_backup; + + opt_prefix_error = NULL; + config_file_search_with_string ("weechat.look.prefix_error", + NULL, NULL, &opt_prefix_error, NULL); + CHECK(opt_prefix_error != NULL); + saved_prefix_error = strdup (CONFIG_STRING(opt_prefix_error)); + saved_theme_label = strdup (CONFIG_STRING(config_look_theme)); + saved_backup = CONFIG_BOOLEAN(config_look_theme_backup); + default_prefix_error = strdup (CONFIG_STRING_DEFAULT(opt_prefix_error)); + + config_file_option_set (config_look_theme_backup, "off", 1); + + /* set up a non-default state: apply a theme that flips one option + and sets weechat.look.theme as a side effect */ + overrides = make_overrides ("weechat.look.prefix_error", "RESET_ME!", + NULL, NULL); + theme_register (NULL, NULL, "reset_test", overrides); + hashtable_free (overrides); + LONGS_EQUAL(WEECHAT_RC_OK, theme_apply ("reset_test")); + STRCMP_EQUAL("RESET_ME!", CONFIG_STRING(opt_prefix_error)); + STRCMP_EQUAL("reset_test", CONFIG_STRING(config_look_theme)); + + /* reset: themable option goes back to its default, label is cleared */ + LONGS_EQUAL(WEECHAT_RC_OK, theme_reset ()); + STRCMP_EQUAL(default_prefix_error, CONFIG_STRING(opt_prefix_error)); + STRCMP_EQUAL(CONFIG_STRING_DEFAULT(config_look_theme), + CONFIG_STRING(config_look_theme)); + + /* restore */ + config_file_option_set (opt_prefix_error, saved_prefix_error, 1); + config_file_option_set (config_look_theme, saved_theme_label, 1); + config_file_option_set (config_look_theme_backup, + (saved_backup) ? "on" : "off", 1); + + free (saved_prefix_error); + free (saved_theme_label); + free (default_prefix_error); +} + /* * Test functions: * theme_file_strip_quotes