mirror of
https://github.com/weechat/weechat.git
synced 2026-07-05 01:03:14 +02:00
Compare commits
77 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| f8cebd9d82 | |||
| cbc147b0a5 | |||
| 4cb55ce0af | |||
| 8275745b8c | |||
| 3fd5c321da | |||
| 1dc651742b | |||
| 867625b65a | |||
| 887108463c | |||
| 27426e4f25 | |||
| 94ad3ca5fd | |||
| ea02f83389 | |||
| 051c8a839f | |||
| 34263a2e6e | |||
| ce4fb15c8b | |||
| 1d9b8e8109 | |||
| 0ea5e61207 | |||
| d54a2d8ca3 | |||
| 4b67c9133f | |||
| 0ae0b4c217 | |||
| 368aafe679 | |||
| 4cf111153b | |||
| efdcb6f2dd | |||
| 3a5f177a28 | |||
| daaca6dee6 | |||
| 4c352f5c38 | |||
| 0ed1b03b36 | |||
| 266d05ac66 | |||
| 9e7903c601 | |||
| 0e245e8e0c | |||
| 9a86f1327b | |||
| 4d8588116e | |||
| afd2728255 | |||
| 3e0c5ff556 | |||
| d8433eaf55 | |||
| 68d5004e12 | |||
| 5a341c69f5 | |||
| 825f05015f | |||
| 055642b9df | |||
| 5a2c412ded | |||
| f3e14829ab | |||
| 376ea3cc9e | |||
| df6b994d3b | |||
| 1f9c3784c7 | |||
| a217e9f72f | |||
| 8858d4b6b4 | |||
| e9d998a9bf | |||
| bfb34faa97 | |||
| a4b8d7aedd | |||
| 75b364cd89 | |||
| 914d3df639 | |||
| a5404172c8 | |||
| 1dd423cb23 | |||
| 8f33a72c99 | |||
| f4564a1cb0 | |||
| c4dfb16df0 | |||
| 6facd390fe | |||
| 2aada3d0ca | |||
| 791c39cc84 | |||
| ce6a214ce1 | |||
| 3c302e078d | |||
| 90761d6350 | |||
| 4eba4f9a47 | |||
| fcbb508cd7 | |||
| b49eac6f2d | |||
| 9b418b4dc2 | |||
| 08b173f9b7 | |||
| 42b91aa91d | |||
| 4ac2f6c2ad | |||
| 3d804810a0 | |||
| 987b03da39 | |||
| a1f1443fd8 | |||
| ca8312a48c | |||
| 971f7b1660 | |||
| 643f2fab5b | |||
| 5f36c52935 | |||
| 92219ba132 | |||
| 905a68739e |
@@ -115,6 +115,9 @@ jobs:
|
|||||||
|
|
||||||
checks:
|
checks:
|
||||||
|
|
||||||
|
env:
|
||||||
|
POEXAM_VERSION: "0.0.12"
|
||||||
|
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
os:
|
||||||
@@ -130,13 +133,20 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
sudo apt-get update -qq
|
sudo apt-get update -qq
|
||||||
sudo apt-get --yes --no-install-recommends install ${{ env.CHECK_DEPS_UBUNTU }}
|
sudo apt-get --yes --no-install-recommends install ${{ env.CHECK_DEPS_UBUNTU }}
|
||||||
pipx install msgcheck ruff
|
pipx install ruff
|
||||||
cargo install --version 0.0.11 poexam
|
|
||||||
|
|
||||||
- name: Check gettext files (msgcheck)
|
- name: Cache poexam
|
||||||
run: msgcheck po/*.po
|
id: cache-poexam
|
||||||
|
uses: actions/cache@v6
|
||||||
|
with:
|
||||||
|
path: ~/.cargo/bin/poexam
|
||||||
|
key: poexam-${{ env.POEXAM_VERSION }}-${{ runner.os }}
|
||||||
|
|
||||||
- name: Check gettext files (poexam)
|
- name: Install poexam
|
||||||
|
if: steps.cache-poexam.outputs.cache-hit != 'true'
|
||||||
|
run: cargo install --version "$POEXAM_VERSION" poexam
|
||||||
|
|
||||||
|
- name: Check gettext files
|
||||||
run: poexam check --file-stats --rule-stats
|
run: poexam check --file-stats --rule-stats
|
||||||
|
|
||||||
- name: Check shell and Python scripts
|
- name: Check shell and Python scripts
|
||||||
|
|||||||
@@ -235,6 +235,7 @@ sys
|
|||||||
tThe
|
tThe
|
||||||
tcl
|
tcl
|
||||||
tg
|
tg
|
||||||
|
themable
|
||||||
tls
|
tls
|
||||||
tlscertkey
|
tlscertkey
|
||||||
toggleautoload
|
toggleautoload
|
||||||
|
|||||||
@@ -69,6 +69,9 @@ autorejoin
|
|||||||
away
|
away
|
||||||
away-notify
|
away-notify
|
||||||
backspace
|
backspace
|
||||||
|
backup
|
||||||
|
backup-
|
||||||
|
backups
|
||||||
bare
|
bare
|
||||||
bash
|
bash
|
||||||
beep
|
beep
|
||||||
@@ -529,6 +532,9 @@ tcl
|
|||||||
term
|
term
|
||||||
text
|
text
|
||||||
tg
|
tg
|
||||||
|
themable
|
||||||
|
theme
|
||||||
|
themes
|
||||||
time
|
time
|
||||||
timeout
|
timeout
|
||||||
timer
|
timer
|
||||||
|
|||||||
@@ -17,6 +17,12 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
|
- core: add command `/theme`
|
||||||
|
- core: add built-in "light" theme
|
||||||
|
- core: add `themable` flag on configuration options
|
||||||
|
- core: add options weechat.look.theme and weechat.look.theme_backup
|
||||||
|
- api: add function theme_register
|
||||||
|
- fset: add filter `t:themable`
|
||||||
- relay/api: add resource `GET /api/scripts`
|
- relay/api: add resource `GET /api/scripts`
|
||||||
- relay: add option relay.network.unix_socket_permissions ([#2317](https://github.com/weechat/weechat/issues/2317))
|
- relay: add option relay.network.unix_socket_permissions ([#2317](https://github.com/weechat/weechat/issues/2317))
|
||||||
- script: add info "script_languages"
|
- script: add info "script_languages"
|
||||||
@@ -28,14 +34,17 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|||||||
- api: fix infinite loop in function string_replace when the search string is empty
|
- api: fix infinite loop in function string_replace when the search string is empty
|
||||||
- irc: fix tag in message with list of names when joining a channel
|
- irc: fix tag in message with list of names when joining a channel
|
||||||
- fset: remove error displayed in core buffer when clicking with the mouse below the last option displayed
|
- fset: remove error displayed in core buffer when clicking with the mouse below the last option displayed
|
||||||
|
- guile, lua, perl, python, ruby, tcl: fix conversion of dates in the API functions
|
||||||
- irc: limit size of data received from the server to prevent memory exhaustion
|
- irc: limit size of data received from the server to prevent memory exhaustion
|
||||||
- irc: fix out-of-bounds read on incoming DCC command with a quoted filename ending the message ([#2322](https://github.com/weechat/weechat/issues/2322))
|
- irc: fix out-of-bounds read on incoming DCC command with a quoted filename ending the message ([#2322](https://github.com/weechat/weechat/issues/2322))
|
||||||
|
- irc: fix conversion of dates in received messages
|
||||||
- relay: limit size of decompressed websocket frame with permessage-deflate to prevent memory exhaustion ([GHSA-v2v4-45wm-5cr3](https://github.com/weechat/weechat/security/advisories/GHSA-v2v4-45wm-5cr3), [CVE-2026-53524](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-53524))
|
- relay: limit size of decompressed websocket frame with permessage-deflate to prevent memory exhaustion ([GHSA-v2v4-45wm-5cr3](https://github.com/weechat/weechat/security/advisories/GHSA-v2v4-45wm-5cr3), [CVE-2026-53524](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-53524))
|
||||||
- relay: limit size of received websocket frame and HTTP body to prevent memory exhaustion
|
- relay: limit size of received websocket frame and HTTP body to prevent memory exhaustion
|
||||||
- relay: limit size of partial message received while reading an HTTP request to prevent memory exhaustion
|
- relay: limit size of partial message received while reading an HTTP request to prevent memory exhaustion
|
||||||
- relay: fix timing attack on password authentication ([GHSA-vhv8-g2r9-cwcc](https://github.com/weechat/weechat/security/advisories/GHSA-vhv8-g2r9-cwcc), [CVE-2026-53525](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-53525))
|
- relay: fix timing attack on password authentication ([GHSA-vhv8-g2r9-cwcc](https://github.com/weechat/weechat/security/advisories/GHSA-vhv8-g2r9-cwcc), [CVE-2026-53525](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-53525))
|
||||||
- relay: fix out-of-bounds read in dump of data ([#2324](https://github.com/weechat/weechat/issues/2324))
|
- relay: fix out-of-bounds read in dump of data ([#2324](https://github.com/weechat/weechat/issues/2324))
|
||||||
- relay/api: fix memory leak in resources "handshake", "input" and "completion"
|
- relay/api: fix memory leak in resources "handshake", "input" and "completion"
|
||||||
|
- relay: fix read of uncompressed websocket frame ([#2331](https://github.com/weechat/weechat/issues/2331))
|
||||||
- api, relay: fix timing attack on TOTP validation ([GHSA-vhv8-g2r9-cwcc](https://github.com/weechat/weechat/security/advisories/GHSA-vhv8-g2r9-cwcc), [CVE-2026-53525](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-53525))
|
- api, relay: fix timing attack on TOTP validation ([GHSA-vhv8-g2r9-cwcc](https://github.com/weechat/weechat/security/advisories/GHSA-vhv8-g2r9-cwcc), [CVE-2026-53525](https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-53525))
|
||||||
- xfer: replace directory separator in remote nick by underscore in download filename to prevent writing the file outside the download directory ([#2321](https://github.com/weechat/weechat/issues/2321))
|
- xfer: replace directory separator in remote nick by underscore in download filename to prevent writing the file outside the download directory ([#2321](https://github.com/weechat/weechat/issues/2321))
|
||||||
- xfer: fix out-of-bounds read when receiving empty line in DCC chat ([#2323](https://github.com/weechat/weechat/issues/2323))
|
- xfer: fix out-of-bounds read when receiving empty line in DCC chat ([#2323](https://github.com/weechat/weechat/issues/2323))
|
||||||
|
|||||||
@@ -2197,6 +2197,152 @@ Um der Vordergrundfarbe des Terminals das Attribut "fett" zuzuordnen:
|
|||||||
/set weechat.color.status_time *99999
|
/set weechat.color.status_time *99999
|
||||||
----
|
----
|
||||||
|
|
||||||
|
// TRANSLATION MISSING
|
||||||
|
[[themes]]
|
||||||
|
=== Themen
|
||||||
|
|
||||||
|
A theme is a named bundle of option overrides that can be applied with
|
||||||
|
the <<command_weechat_theme,/theme>> command. WeeChat ships a built-in
|
||||||
|
`"light"` theme tuned for light-background terminals and supports
|
||||||
|
user-defined themes loaded transiently from files.
|
||||||
|
|
||||||
|
[[themes_themable_options]]
|
||||||
|
==== Themable options
|
||||||
|
|
||||||
|
Themes can only set options marked as _themable_. All `*.color.*`
|
||||||
|
options are themable by default; a few string options that hold format
|
||||||
|
expressions with `+${color:...}+` references (such as
|
||||||
|
`+weechat.color.chat_nick_colors+`, `+weechat.look.prefix_error+` or the
|
||||||
|
`+buflist.format.*+` formats) are explicitly opted in.
|
||||||
|
|
||||||
|
You can list the full themable surface area from the
|
||||||
|
<<command_fset_fset,/fset>> buffer with the `+t:themable+` filter.
|
||||||
|
|
||||||
|
[[themes_apply]]
|
||||||
|
==== Applying a theme
|
||||||
|
|
||||||
|
To switch to the built-in light-background theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply light
|
||||||
|
----
|
||||||
|
|
||||||
|
The current state of every themable option is saved beforehand to a
|
||||||
|
backup theme file named like `+backup-YYYYMMDD-HHMMSS-uuuuuu+` in
|
||||||
|
directory `+themes+` inside the WeeChat configuration directory, so the
|
||||||
|
previous look can be restored at any time with:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply backup-YYYYMMDD-HHMMSS-uuuuuu
|
||||||
|
----
|
||||||
|
|
||||||
|
Backup creation can be disabled (not recommended):
|
||||||
|
|
||||||
|
----
|
||||||
|
/set weechat.look.theme_backup off
|
||||||
|
----
|
||||||
|
|
||||||
|
If backup is enabled and the backup file cannot be written, the apply
|
||||||
|
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
|
||||||
|
|
||||||
|
Save the current themable options as a new user theme file:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme save mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
Every themable option is written, so the file is self-contained and
|
||||||
|
applies the exact same look on any WeeChat, regardless of its current
|
||||||
|
configuration.
|
||||||
|
|
||||||
|
Reserved names (built-in theme names like `+light+` and any name
|
||||||
|
starting with `+backup-+`) are refused. Files live at
|
||||||
|
`+${weechat_config_dir}/themes/<name>.theme+`.
|
||||||
|
|
||||||
|
Rename a user theme (typical use: keep a useful automatic backup
|
||||||
|
under a meaningful name):
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme rename backup-20260525-094210-123456 mybackup
|
||||||
|
----
|
||||||
|
|
||||||
|
Built-in themes have no file and cannot be renamed; the target name
|
||||||
|
cannot match a built-in name or start with `+backup-+`, and the
|
||||||
|
target file must not already exist. The `+[info]+` `+name+` field
|
||||||
|
inside the file is rewritten so `/theme info` reports the new name
|
||||||
|
consistently.
|
||||||
|
|
||||||
|
Delete a user theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme del mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
This removes the file on disk; built-in themes cannot be deleted.
|
||||||
|
|
||||||
|
[[themes_file_format]]
|
||||||
|
==== Theme file format
|
||||||
|
|
||||||
|
A theme file is INI-like with two sections:
|
||||||
|
|
||||||
|
----
|
||||||
|
[info]
|
||||||
|
name = "solarized_light"
|
||||||
|
description = "Light-background theme inspired by Solarized"
|
||||||
|
date = "2026-05-25 09:42:10"
|
||||||
|
weechat = "4.10.0-dev"
|
||||||
|
|
||||||
|
[options]
|
||||||
|
weechat.color.chat = "darkgray"
|
||||||
|
weechat.color.separator = "blue"
|
||||||
|
irc.color.input_nick = "magenta"
|
||||||
|
buflist.format.number = "${color:28}${number}${if:${number_displayed}?.: }"
|
||||||
|
----
|
||||||
|
|
||||||
|
`+[info]+` is informational metadata shown by `/theme info`. `+[options]+`
|
||||||
|
holds the actual overrides; keys are the full option names that would
|
||||||
|
appear in `/set`. String values can be enclosed in double or single
|
||||||
|
quotes; quotes are stripped at parse time. Non-themable options listed
|
||||||
|
in a theme file are refused at apply time and logged to the core
|
||||||
|
buffer (so a `.theme` file imported from an untrusted source cannot
|
||||||
|
overwrite passwords, autoload lists, or startup commands).
|
||||||
|
|
||||||
|
User theme files are never cached: on every `/theme apply <name>` the
|
||||||
|
file is parsed, applied, and freed.
|
||||||
|
|
||||||
|
[[themes_resolution]]
|
||||||
|
==== Resolution order
|
||||||
|
|
||||||
|
When `+/theme apply <name>+` is run:
|
||||||
|
|
||||||
|
* If `+${weechat_config_dir}/themes/<name>.theme+` exists, the file
|
||||||
|
is parsed and used (it shadows any built-in with the same name).
|
||||||
|
* Otherwise the built-in theme registry is consulted; built-ins are
|
||||||
|
registered programmatically by core, plugins and scripts (see the
|
||||||
|
plugin and scripting documentation for `+weechat_theme_register+`).
|
||||||
|
|
||||||
|
If neither source provides the name, the apply is refused.
|
||||||
|
|
||||||
[[charset]]
|
[[charset]]
|
||||||
=== Charset
|
=== Charset
|
||||||
|
|
||||||
|
|||||||
@@ -7367,7 +7367,7 @@ section = weechat.config_search_section(config_file, "section")
|
|||||||
|
|
||||||
==== config_new_option
|
==== config_new_option
|
||||||
|
|
||||||
_Updated in 1.5, 4.1.0._
|
_Updated in 1.5, 4.1.0, 4.10.0._
|
||||||
|
|
||||||
Create a new option in a section of a configuration file.
|
Create a new option in a section of a configuration file.
|
||||||
|
|
||||||
@@ -7413,7 +7413,9 @@ Arguments:
|
|||||||
option name (the value of parent option will be displayed in `/set` command
|
option name (the value of parent option will be displayed in `/set` command
|
||||||
output if this option is "null"), the syntax is then:
|
output if this option is "null"), the syntax is then:
|
||||||
"name << file.section.option"
|
"name << file.section.option"
|
||||||
* _type_: type of option:
|
* _type_: type of option; any type can be suffixed with `+|themable+` to mark
|
||||||
|
the option as themable, so that it can be set by the `/theme` command
|
||||||
|
(options of type _color_ are always themable) _(WeeChat ≥ 4.10.0)_:
|
||||||
** _boolean_: boolean value (on/off)
|
** _boolean_: boolean value (on/off)
|
||||||
** _integer_: integer value
|
** _integer_: integer value
|
||||||
** _string_: string value
|
** _string_: string value
|
||||||
@@ -7499,7 +7501,7 @@ struct t_config_option *option_int =
|
|||||||
|
|
||||||
/* string */
|
/* string */
|
||||||
struct t_config_option *option_str =
|
struct t_config_option *option_str =
|
||||||
weechat_config_new_option (config_file, section, "option_str", "string",
|
weechat_config_new_option (config_file, section, "option_str", "string|themable",
|
||||||
"My option, type string",
|
"My option, type string",
|
||||||
NULL,
|
NULL,
|
||||||
0, 0,
|
0, 0,
|
||||||
@@ -7575,7 +7577,7 @@ option_int = weechat.config_new_option(config_file, section, "option_int", "inte
|
|||||||
"", "",
|
"", "",
|
||||||
"", "")
|
"", "")
|
||||||
|
|
||||||
option_str = weechat.config_new_option(config_file, section, "option_str", "string",
|
option_str = weechat.config_new_option(config_file, section, "option_str", "string|themable",
|
||||||
"My option, type string",
|
"My option, type string",
|
||||||
"", 0, 0, "test", "test", 1,
|
"", 0, 0, "test", "test", 1,
|
||||||
"option_str_check_value_cb", "",
|
"option_str_check_value_cb", "",
|
||||||
@@ -9627,6 +9629,89 @@ elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_ERROR:
|
|||||||
# ...
|
# ...
|
||||||
----
|
----
|
||||||
|
|
||||||
|
[[themes]]
|
||||||
|
=== Themes
|
||||||
|
|
||||||
|
Functions to contribute color (and other themable option) overrides to
|
||||||
|
built-in themes. See the
|
||||||
|
link:weechat_user.en.html#themes[user's guide / Themes] section for the
|
||||||
|
end-user side and the `+/theme+` command.
|
||||||
|
|
||||||
|
==== theme_register
|
||||||
|
|
||||||
|
_WeeChat ≥ 4.10.0._
|
||||||
|
|
||||||
|
Register a contribution of option overrides under a named theme. The
|
||||||
|
caller's plugin is the owner of the contribution; subsequent calls
|
||||||
|
with the same theme name from the same plugin merge into the existing
|
||||||
|
contribution (later keys win for duplicates).
|
||||||
|
|
||||||
|
When the calling plugin is unloaded, all its contributions are
|
||||||
|
automatically dropped from every theme.
|
||||||
|
|
||||||
|
Prototype:
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
----
|
||||||
|
struct t_theme *weechat_theme_register (const char *name,
|
||||||
|
struct t_hashtable *overrides);
|
||||||
|
----
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
* _name_: theme name (for example `+light+` or a custom name)
|
||||||
|
* _overrides_: hashtable mapping full option names
|
||||||
|
(e.g. `+irc.color.input_nick+`) to their string values; the caller
|
||||||
|
retains ownership and may free the hashtable right after the call
|
||||||
|
|
||||||
|
Return value:
|
||||||
|
|
||||||
|
* pointer to the registered theme (existing or newly created), NULL on
|
||||||
|
error
|
||||||
|
|
||||||
|
C example:
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
----
|
||||||
|
struct t_hashtable *overrides = weechat_hashtable_new (
|
||||||
|
8,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
NULL, NULL);
|
||||||
|
if (overrides)
|
||||||
|
{
|
||||||
|
weechat_hashtable_set (overrides, "irc.color.input_nick", "cyan");
|
||||||
|
weechat_hashtable_set (overrides, "irc.color.topic_old", "darkgray");
|
||||||
|
weechat_theme_register ("light", overrides);
|
||||||
|
weechat_hashtable_free (overrides);
|
||||||
|
}
|
||||||
|
----
|
||||||
|
|
||||||
|
Script (Python):
|
||||||
|
|
||||||
|
[source,python]
|
||||||
|
----
|
||||||
|
# prototype
|
||||||
|
def theme_register(name: str, overrides: Dict[str, str]) -> str: ...
|
||||||
|
|
||||||
|
# example
|
||||||
|
weechat.theme_register("light", {
|
||||||
|
"irc.color.input_nick": "cyan",
|
||||||
|
"irc.color.topic_old": "darkgray",
|
||||||
|
})
|
||||||
|
----
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
Only options that have the _themable_ flag will be set by `/theme apply`.
|
||||||
|
All `*.color.*` options are themable by default; string options that
|
||||||
|
hold `+${color:...}+` references are explicitly opted in. Entries
|
||||||
|
targeting non-themable options are silently skipped at apply-time with
|
||||||
|
a warning logged to the _core_ buffer.
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
When called from a script, the contribution is automatically dropped
|
||||||
|
when the script unloads (no manual cleanup is needed).
|
||||||
|
|
||||||
[[key_bindings]]
|
[[key_bindings]]
|
||||||
=== Key bindings
|
=== Key bindings
|
||||||
|
|
||||||
|
|||||||
@@ -1034,6 +1034,13 @@ Path parameters:
|
|||||||
confused with the buffer number, which is different)
|
confused with the buffer number, which is different)
|
||||||
* `buffer_name` (string, **required**): buffer name
|
* `buffer_name` (string, **required**): buffer name
|
||||||
|
|
||||||
|
Query parameters:
|
||||||
|
|
||||||
|
* `colors` (string, optional, default: `ansi`): how to return strings with color codes:
|
||||||
|
** `ansi`: return ANSI color codes
|
||||||
|
** `weechat`: return WeeChat internal color codes
|
||||||
|
** `strip`: strip colors
|
||||||
|
|
||||||
Request example: get nicks of a buffer:
|
Request example: get nicks of a buffer:
|
||||||
|
|
||||||
[source,shell]
|
[source,shell]
|
||||||
|
|||||||
@@ -2185,6 +2185,151 @@ Example of bold with terminal foreground color:
|
|||||||
/set weechat.color.status_time *99999
|
/set weechat.color.status_time *99999
|
||||||
----
|
----
|
||||||
|
|
||||||
|
[[themes]]
|
||||||
|
=== Themes
|
||||||
|
|
||||||
|
A theme is a named bundle of option overrides that can be applied with
|
||||||
|
the <<command_weechat_theme,/theme>> command. WeeChat ships a built-in
|
||||||
|
`"light"` theme tuned for light-background terminals and supports
|
||||||
|
user-defined themes loaded transiently from files.
|
||||||
|
|
||||||
|
[[themes_themable_options]]
|
||||||
|
==== Themable options
|
||||||
|
|
||||||
|
Themes can only set options marked as _themable_. All `*.color.*`
|
||||||
|
options are themable by default; a few string options that hold format
|
||||||
|
expressions with `+${color:...}+` references (such as
|
||||||
|
`+weechat.color.chat_nick_colors+`, `+weechat.look.prefix_error+` or the
|
||||||
|
`+buflist.format.*+` formats) are explicitly opted in.
|
||||||
|
|
||||||
|
You can list the full themable surface area from the
|
||||||
|
<<command_fset_fset,/fset>> buffer with the `+t:themable+` filter.
|
||||||
|
|
||||||
|
[[themes_apply]]
|
||||||
|
==== Applying a theme
|
||||||
|
|
||||||
|
To switch to the built-in light-background theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply light
|
||||||
|
----
|
||||||
|
|
||||||
|
The current state of every themable option is saved beforehand to a
|
||||||
|
backup theme file named like `+backup-YYYYMMDD-HHMMSS-uuuuuu+` in
|
||||||
|
directory `+themes+` inside the WeeChat configuration directory, so the
|
||||||
|
previous look can be restored at any time with:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply backup-YYYYMMDD-HHMMSS-uuuuuu
|
||||||
|
----
|
||||||
|
|
||||||
|
Backup creation can be disabled (not recommended):
|
||||||
|
|
||||||
|
----
|
||||||
|
/set weechat.look.theme_backup off
|
||||||
|
----
|
||||||
|
|
||||||
|
If backup is enabled and the backup file cannot be written, the apply
|
||||||
|
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
|
||||||
|
|
||||||
|
Save the current themable options as a new user theme file:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme save mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
Every themable option is written, so the file is self-contained and
|
||||||
|
applies the exact same look on any WeeChat, regardless of its current
|
||||||
|
configuration.
|
||||||
|
|
||||||
|
Reserved names (built-in theme names like `+light+` and any name
|
||||||
|
starting with `+backup-+`) are refused. Files live at
|
||||||
|
`+${weechat_config_dir}/themes/<name>.theme+`.
|
||||||
|
|
||||||
|
Rename a user theme (typical use: keep a useful automatic backup
|
||||||
|
under a meaningful name):
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme rename backup-20260525-094210-123456 mybackup
|
||||||
|
----
|
||||||
|
|
||||||
|
Built-in themes have no file and cannot be renamed; the target name
|
||||||
|
cannot match a built-in name or start with `+backup-+`, and the
|
||||||
|
target file must not already exist. The `+[info]+` `+name+` field
|
||||||
|
inside the file is rewritten so `/theme info` reports the new name
|
||||||
|
consistently.
|
||||||
|
|
||||||
|
Delete a user theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme del mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
This removes the file on disk; built-in themes cannot be deleted.
|
||||||
|
|
||||||
|
[[themes_file_format]]
|
||||||
|
==== Theme file format
|
||||||
|
|
||||||
|
A theme file is INI-like with two sections:
|
||||||
|
|
||||||
|
----
|
||||||
|
[info]
|
||||||
|
name = "solarized_light"
|
||||||
|
description = "Light-background theme inspired by Solarized"
|
||||||
|
date = "2026-05-25 09:42:10"
|
||||||
|
weechat = "4.10.0-dev"
|
||||||
|
|
||||||
|
[options]
|
||||||
|
weechat.color.chat = "darkgray"
|
||||||
|
weechat.color.separator = "blue"
|
||||||
|
irc.color.input_nick = "magenta"
|
||||||
|
buflist.format.number = "${color:28}${number}${if:${number_displayed}?.: }"
|
||||||
|
----
|
||||||
|
|
||||||
|
`+[info]+` is informational metadata shown by `/theme info`. `+[options]+`
|
||||||
|
holds the actual overrides; keys are the full option names that would
|
||||||
|
appear in `/set`. String values can be enclosed in double or single
|
||||||
|
quotes; quotes are stripped at parse time. Non-themable options listed
|
||||||
|
in a theme file are refused at apply time and logged to the core
|
||||||
|
buffer (so a `.theme` file imported from an untrusted source cannot
|
||||||
|
overwrite passwords, autoload lists, or startup commands).
|
||||||
|
|
||||||
|
User theme files are never cached: on every `/theme apply <name>` the
|
||||||
|
file is parsed, applied, and freed.
|
||||||
|
|
||||||
|
[[themes_resolution]]
|
||||||
|
==== Resolution order
|
||||||
|
|
||||||
|
When `+/theme apply <name>+` is run:
|
||||||
|
|
||||||
|
* If `+${weechat_config_dir}/themes/<name>.theme+` exists, the file
|
||||||
|
is parsed and used (it shadows any built-in with the same name).
|
||||||
|
* Otherwise the built-in theme registry is consulted; built-ins are
|
||||||
|
registered programmatically by core, plugins and scripts (see the
|
||||||
|
plugin and scripting documentation for `+weechat_theme_register+`).
|
||||||
|
|
||||||
|
If neither source provides the name, the apply is refused.
|
||||||
|
|
||||||
[[charset]]
|
[[charset]]
|
||||||
=== Charset
|
=== Charset
|
||||||
|
|
||||||
|
|||||||
@@ -7488,7 +7488,7 @@ section = weechat.config_search_section(config_file, "section")
|
|||||||
|
|
||||||
==== config_new_option
|
==== config_new_option
|
||||||
|
|
||||||
_Mis à jour dans la 1.5, 4.1.0._
|
_Mis à jour dans la 1.5, 4.1.0, 4.10.0._
|
||||||
|
|
||||||
Créer une nouvelle option dans une section d'un fichier de configuration.
|
Créer une nouvelle option dans une section d'un fichier de configuration.
|
||||||
|
|
||||||
@@ -7534,7 +7534,10 @@ Paramètres :
|
|||||||
d'une option parente (la valeur de l'option parente sera affichée dans la
|
d'une option parente (la valeur de l'option parente sera affichée dans la
|
||||||
sortie de `/set` si cette option est "null"), la syntaxe est alors :
|
sortie de `/set` si cette option est "null"), la syntaxe est alors :
|
||||||
"name << file.section.option"
|
"name << file.section.option"
|
||||||
* _type_ : type de l'option :
|
* _type_ : type de l'option ; n'importe quel type peut être suffixé par
|
||||||
|
`+|themable+` pour rendre l'option modifiable par un thème, afin qu'elle
|
||||||
|
puisse être définie par la commande `/theme` (les options de type _color_
|
||||||
|
sont toujours modifiables par un thème) _(WeeChat ≥ 4.10.0)_ :
|
||||||
** _boolean_ : valeur booléenne (on/off)
|
** _boolean_ : valeur booléenne (on/off)
|
||||||
** _integer_ : valeur entière
|
** _integer_ : valeur entière
|
||||||
** _string_ : une chaîne de caractères
|
** _string_ : une chaîne de caractères
|
||||||
@@ -7625,7 +7628,7 @@ struct t_config_option *option_int =
|
|||||||
|
|
||||||
/* chaîne */
|
/* chaîne */
|
||||||
struct t_config_option *option_str =
|
struct t_config_option *option_str =
|
||||||
weechat_config_new_option (config_file, section, "option_str", "string",
|
weechat_config_new_option (config_file, section, "option_str", "string|themable",
|
||||||
"Mon option, type chaîne",
|
"Mon option, type chaîne",
|
||||||
NULL,
|
NULL,
|
||||||
0, 0,
|
0, 0,
|
||||||
@@ -7701,7 +7704,7 @@ option_int = weechat.config_new_option(config_file, section, "option_int", "inte
|
|||||||
"", "",
|
"", "",
|
||||||
"", "")
|
"", "")
|
||||||
|
|
||||||
option_str = weechat.config_new_option(config_file, section, "option_str", "string",
|
option_str = weechat.config_new_option(config_file, section, "option_str", "string|themable",
|
||||||
"Mon option, type chaîne",
|
"Mon option, type chaîne",
|
||||||
"", 0, 0, "test", "test", 1,
|
"", 0, 0, "test", "test", 1,
|
||||||
"option_str_check_value_cb", "",
|
"option_str_check_value_cb", "",
|
||||||
@@ -9771,6 +9774,95 @@ elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_ERROR:
|
|||||||
# ...
|
# ...
|
||||||
----
|
----
|
||||||
|
|
||||||
|
[[themes]]
|
||||||
|
=== Thèmes
|
||||||
|
|
||||||
|
Fonctions permettant de contribuer des surcharges d'options de couleur
|
||||||
|
(et autres options modifiables par un thème) à des thèmes intégrés.
|
||||||
|
Voir la section
|
||||||
|
link:weechat_user.fr.html#themes[guide utilisateur / Thèmes] pour le
|
||||||
|
côté utilisateur final et la commande `+/theme+`.
|
||||||
|
|
||||||
|
==== theme_register
|
||||||
|
|
||||||
|
_WeeChat ≥ 4.10.0._
|
||||||
|
|
||||||
|
Enregistrer une contribution de surcharges d'options sous un thème
|
||||||
|
nommé. L'extension appelante est le propriétaire de la contribution ;
|
||||||
|
les appels suivants avec le même nom de thème depuis la même extension
|
||||||
|
sont fusionnés dans la contribution existante (en cas de doublons, les
|
||||||
|
dernières clés gagnent).
|
||||||
|
|
||||||
|
Lorsque l'extension appelante est déchargée, toutes ses contributions
|
||||||
|
sont automatiquement retirées de tous les thèmes.
|
||||||
|
|
||||||
|
Prototype :
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
----
|
||||||
|
struct t_theme *weechat_theme_register (const char *name,
|
||||||
|
struct t_hashtable *overrides);
|
||||||
|
----
|
||||||
|
|
||||||
|
Paramètres :
|
||||||
|
|
||||||
|
* _name_ : nom du thème (par exemple `+light+` ou un nom personnalisé)
|
||||||
|
* _overrides_ : table de hachage associant des noms d'options complets
|
||||||
|
(par exemple `+irc.color.input_nick+`) à leurs valeurs chaîne ;
|
||||||
|
l'appelant en conserve la propriété et peut la libérer juste après
|
||||||
|
l'appel
|
||||||
|
|
||||||
|
Valeur de retour :
|
||||||
|
|
||||||
|
* pointeur vers le thème enregistré (existant ou nouvellement créé),
|
||||||
|
NULL en cas d'erreur
|
||||||
|
|
||||||
|
Exemple en C :
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
----
|
||||||
|
struct t_hashtable *overrides = weechat_hashtable_new (
|
||||||
|
8,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
NULL, NULL);
|
||||||
|
if (overrides)
|
||||||
|
{
|
||||||
|
weechat_hashtable_set (overrides, "irc.color.input_nick", "cyan");
|
||||||
|
weechat_hashtable_set (overrides, "irc.color.topic_old", "darkgray");
|
||||||
|
weechat_theme_register ("light", overrides);
|
||||||
|
weechat_hashtable_free (overrides);
|
||||||
|
}
|
||||||
|
----
|
||||||
|
|
||||||
|
Script (Python) :
|
||||||
|
|
||||||
|
[source,python]
|
||||||
|
----
|
||||||
|
# prototype
|
||||||
|
def theme_register(name: str, overrides: Dict[str, str]) -> str: ...
|
||||||
|
|
||||||
|
# exemple
|
||||||
|
weechat.theme_register("light", {
|
||||||
|
"irc.color.input_nick": "cyan",
|
||||||
|
"irc.color.topic_old": "darkgray",
|
||||||
|
})
|
||||||
|
----
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
Seules les options possédant le flag _themable_ seront modifiées par
|
||||||
|
`/theme apply`. Toutes les options `*.color.*` sont modifiables par
|
||||||
|
défaut ; les options de type chaîne contenant des références
|
||||||
|
`+${color:...}+` sont explicitement déclarées comme modifiables. Les
|
||||||
|
entrées ciblant des options non modifiables sont silencieusement
|
||||||
|
ignorées au moment de l'application avec un avertissement écrit sur
|
||||||
|
le tampon _core_.
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
Lorsqu'elle est appelée depuis un script, la contribution est
|
||||||
|
automatiquement retirée lorsque le script est déchargé (aucun nettoyage
|
||||||
|
manuel n'est nécessaire).
|
||||||
|
|
||||||
[[key_bindings]]
|
[[key_bindings]]
|
||||||
=== Associations de touches
|
=== Associations de touches
|
||||||
|
|
||||||
|
|||||||
@@ -1046,6 +1046,14 @@ Paramètres de chemin :
|
|||||||
confondre avec le numéro du tampon, qui est différent)
|
confondre avec le numéro du tampon, qui est différent)
|
||||||
* `buffer_name` (chaîne, **obligatoire**) : nom du tampon
|
* `buffer_name` (chaîne, **obligatoire**) : nom du tampon
|
||||||
|
|
||||||
|
Paramètres de requête :
|
||||||
|
|
||||||
|
* `colors` (chaîne, facultatif, par défaut : `ansi`) : comment les chaînes avec
|
||||||
|
des couleurs sont retournées :
|
||||||
|
** `ansi` : retourner les codes couleur ANSI
|
||||||
|
** `weechat` : retourner les codes couleur internes WeeChat
|
||||||
|
** `strip` : supprimer les couleurs
|
||||||
|
|
||||||
Exemple de requête : obtenir les pseudos d'un tampon :
|
Exemple de requête : obtenir les pseudos d'un tampon :
|
||||||
|
|
||||||
[source,shell]
|
[source,shell]
|
||||||
|
|||||||
@@ -2227,6 +2227,166 @@ Exemple de gras avec la couleur de texte du terminal :
|
|||||||
/set weechat.color.status_time *99999
|
/set weechat.color.status_time *99999
|
||||||
----
|
----
|
||||||
|
|
||||||
|
[[themes]]
|
||||||
|
=== Thèmes
|
||||||
|
|
||||||
|
Un thème est un ensemble nommé de surcharges d'options qui peut être
|
||||||
|
appliqué par la commande <<command_weechat_theme,/theme>>. WeeChat est
|
||||||
|
livré avec un thème intégré `"light"` adapté aux terminaux à fond clair
|
||||||
|
et permet de charger temporairement des thèmes utilisateur depuis des
|
||||||
|
fichiers.
|
||||||
|
|
||||||
|
[[themes_themable_options]]
|
||||||
|
==== Options modifiables par un thème
|
||||||
|
|
||||||
|
Les thèmes ne peuvent modifier que les options marquées comme
|
||||||
|
_themable_ (modifiables par un thème). Toutes les options `*.color.*`
|
||||||
|
le sont par défaut ; certaines options de type chaîne contenant des
|
||||||
|
références `+${color:...}+` (par exemple
|
||||||
|
`+weechat.color.chat_nick_colors+`, `+weechat.look.prefix_error+` ou les
|
||||||
|
formats `+buflist.format.*+`) sont explicitement déclarées comme
|
||||||
|
modifiables.
|
||||||
|
|
||||||
|
La liste complète des options modifiables peut être affichée depuis le
|
||||||
|
tampon <<command_fset_fset,/fset>> avec le filtre `+t:themable+`.
|
||||||
|
|
||||||
|
[[themes_apply]]
|
||||||
|
==== Appliquer un thème
|
||||||
|
|
||||||
|
Pour basculer vers le thème intégré pour fond clair :
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply light
|
||||||
|
----
|
||||||
|
|
||||||
|
L'état actuel de toutes les options modifiables est sauvegardé au
|
||||||
|
préalable dans un fichier de sauvegarde nommé
|
||||||
|
`+backup-AAAAMMJJ-HHMMSS-uuuuuu+` dans le répertoire `+themes+` du
|
||||||
|
répertoire de configuration de WeeChat. L'apparence précédente peut
|
||||||
|
ainsi être restaurée à tout moment avec :
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply backup-AAAAMMJJ-HHMMSS-uuuuuu
|
||||||
|
----
|
||||||
|
|
||||||
|
La création de la sauvegarde peut être désactivée (déconseillé) :
|
||||||
|
|
||||||
|
----
|
||||||
|
/set weechat.look.theme_backup off
|
||||||
|
----
|
||||||
|
|
||||||
|
Si la sauvegarde est activée et que le fichier ne peut pas être écrit,
|
||||||
|
l'application est annulée avant qu'aucune option ne soit modifiée.
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
Sauvegarder l'état actuel des options modifiables en tant que nouveau
|
||||||
|
thème utilisateur :
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme save monTheme
|
||||||
|
----
|
||||||
|
|
||||||
|
Toutes les options modifiables sont écrites, donc le fichier est
|
||||||
|
autonome et applique exactement le même aspect sur n'importe quel
|
||||||
|
WeeChat, quelle que soit sa configuration actuelle.
|
||||||
|
|
||||||
|
Les noms réservés (noms de thèmes intégrés comme `+light+` et tout nom
|
||||||
|
commençant par `+backup-+`) sont refusés. Les fichiers sont placés
|
||||||
|
dans `+${weechat_config_dir}/themes/<nom>.theme+`.
|
||||||
|
|
||||||
|
Renommer un thème utilisateur (usage typique : conserver une
|
||||||
|
sauvegarde automatique utile sous un nom plus parlant) :
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme rename backup-20260525-094210-123456 maSauvegarde
|
||||||
|
----
|
||||||
|
|
||||||
|
Les thèmes intégrés n'ont pas de fichier et ne peuvent pas être
|
||||||
|
renommés ; le nom cible ne peut pas correspondre à un nom intégré ni
|
||||||
|
commencer par `+backup-+`, et le fichier cible ne doit pas déjà
|
||||||
|
exister. Le champ `+name+` de la section `+[info]+` à l'intérieur du
|
||||||
|
fichier est réécrit afin que `/theme info` affiche le nouveau nom de
|
||||||
|
manière cohérente.
|
||||||
|
|
||||||
|
Supprimer un thème utilisateur :
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme del monTheme
|
||||||
|
----
|
||||||
|
|
||||||
|
Cela supprime le fichier sur le disque ; les thèmes intégrés ne
|
||||||
|
peuvent pas être supprimés.
|
||||||
|
|
||||||
|
[[themes_file_format]]
|
||||||
|
==== Format du fichier de thème
|
||||||
|
|
||||||
|
Un fichier de thème est de type INI avec deux sections :
|
||||||
|
|
||||||
|
----
|
||||||
|
[info]
|
||||||
|
name = "solarized_light"
|
||||||
|
description = "Thème fond clair inspiré de Solarized"
|
||||||
|
date = "2026-05-25 09:42:10"
|
||||||
|
weechat = "4.10.0-dev"
|
||||||
|
|
||||||
|
[options]
|
||||||
|
weechat.color.chat = "darkgray"
|
||||||
|
weechat.color.separator = "blue"
|
||||||
|
irc.color.input_nick = "magenta"
|
||||||
|
buflist.format.number = "${color:28}${number}${if:${number_displayed}?.: }"
|
||||||
|
----
|
||||||
|
|
||||||
|
`+[info]+` est une section de métadonnées informatives affichées par
|
||||||
|
`/theme info`. `+[options]+` contient les surcharges réelles ; les clés
|
||||||
|
sont les noms complets d'options tels qu'affichés par `/set`. Les
|
||||||
|
valeurs de type chaîne peuvent être encadrées par des guillemets
|
||||||
|
simples ou doubles ; les guillemets sont retirés à l'analyse. Les
|
||||||
|
options non modifiables par un thème listées dans un fichier sont
|
||||||
|
refusées au moment de l'application et signalées sur le tampon _core_
|
||||||
|
(ainsi, un fichier `.theme` importé depuis une source non fiable ne
|
||||||
|
peut pas écraser des mots de passe, des listes d'auto-chargement ou
|
||||||
|
des commandes de démarrage).
|
||||||
|
|
||||||
|
Les fichiers de thème utilisateur ne sont jamais mis en cache : à
|
||||||
|
chaque `/theme apply <nom>`, le fichier est analysé, appliqué, puis
|
||||||
|
libéré.
|
||||||
|
|
||||||
|
[[themes_resolution]]
|
||||||
|
==== Ordre de résolution
|
||||||
|
|
||||||
|
Lors de l'exécution de `+/theme apply <nom>+` :
|
||||||
|
|
||||||
|
* Si `+${weechat_config_dir}/themes/<nom>.theme+` existe, le fichier
|
||||||
|
est analysé et utilisé (il masque tout thème intégré du même nom).
|
||||||
|
* Sinon, le registre des thèmes intégrés est consulté ; les thèmes
|
||||||
|
intégrés sont enregistrés par programmation par le cœur, les
|
||||||
|
extensions et les scripts (voir la documentation des extensions et
|
||||||
|
des scripts pour `+weechat_theme_register+`).
|
||||||
|
|
||||||
|
Si aucune des deux sources ne fournit le nom, l'application est
|
||||||
|
refusée.
|
||||||
|
|
||||||
[[charset]]
|
[[charset]]
|
||||||
=== Charset
|
=== Charset
|
||||||
|
|
||||||
|
|||||||
@@ -7661,7 +7661,7 @@ section = weechat.config_search_section(config_file, "section")
|
|||||||
==== config_new_option
|
==== config_new_option
|
||||||
|
|
||||||
// TRANSLATION MISSING
|
// TRANSLATION MISSING
|
||||||
_Updated in 1.5, 4.1.0._
|
_Updated in 1.5, 4.1.0, 4.10.0._
|
||||||
|
|
||||||
Crea una nuova opzione nella sezione di un file di configurazione.
|
Crea una nuova opzione nella sezione di un file di configurazione.
|
||||||
|
|
||||||
@@ -7708,7 +7708,10 @@ Argomenti:
|
|||||||
option name (the value of parent option will be displayed in `/set` command
|
option name (the value of parent option will be displayed in `/set` command
|
||||||
output if this option is "null"), the syntax is then:
|
output if this option is "null"), the syntax is then:
|
||||||
"name << file.section.option"
|
"name << file.section.option"
|
||||||
* _type_: tipo dell'opzione:
|
// TRANSLATION MISSING
|
||||||
|
* _type_: type of option; any type can be suffixed with `+|themable+` to mark
|
||||||
|
the option as themable, so that it can be set by the `/theme` command
|
||||||
|
(options of type _color_ are always themable) _(WeeChat ≥ 4.10.0)_:
|
||||||
** _boolean_: valore booleano (on/off)
|
** _boolean_: valore booleano (on/off)
|
||||||
** _integer_: valore intero
|
** _integer_: valore intero
|
||||||
** _string_: valore stringa
|
** _string_: valore stringa
|
||||||
@@ -7799,7 +7802,7 @@ struct t_config_option *option_int =
|
|||||||
|
|
||||||
/* stringa */
|
/* stringa */
|
||||||
struct t_config_option *option_str =
|
struct t_config_option *option_str =
|
||||||
weechat_config_new_option (config_file, section, "option_str", "string",
|
weechat_config_new_option (config_file, section, "option_str", "string|themable",
|
||||||
"My option, type string",
|
"My option, type string",
|
||||||
NULL,
|
NULL,
|
||||||
0, 0,
|
0, 0,
|
||||||
@@ -7875,7 +7878,7 @@ option_int = weechat.config_new_option(config_file, section, "option_int", "inte
|
|||||||
"", "",
|
"", "",
|
||||||
"", "")
|
"", "")
|
||||||
|
|
||||||
option_str = weechat.config_new_option(config_file, section, "option_str", "string",
|
option_str = weechat.config_new_option(config_file, section, "option_str", "string|themable",
|
||||||
"My option, type string",
|
"My option, type string",
|
||||||
"", 0, 0, "test", "test", 1,
|
"", 0, 0, "test", "test", 1,
|
||||||
"option_str_check_value_cb", "",
|
"option_str_check_value_cb", "",
|
||||||
@@ -9967,6 +9970,90 @@ elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_ERROR:
|
|||||||
# ...
|
# ...
|
||||||
----
|
----
|
||||||
|
|
||||||
|
// TRANSLATION MISSING
|
||||||
|
[[themes]]
|
||||||
|
=== Themes
|
||||||
|
|
||||||
|
Functions to contribute color (and other themable option) overrides to
|
||||||
|
built-in themes. See the
|
||||||
|
link:weechat_user.it.html#themes[user's guide / Themes] section for the
|
||||||
|
end-user side and the `+/theme+` command.
|
||||||
|
|
||||||
|
==== theme_register
|
||||||
|
|
||||||
|
_WeeChat ≥ 4.10.0._
|
||||||
|
|
||||||
|
Register a contribution of option overrides under a named theme. The
|
||||||
|
caller's plugin is the owner of the contribution; subsequent calls
|
||||||
|
with the same theme name from the same plugin merge into the existing
|
||||||
|
contribution (later keys win for duplicates).
|
||||||
|
|
||||||
|
When the calling plugin is unloaded, all its contributions are
|
||||||
|
automatically dropped from every theme.
|
||||||
|
|
||||||
|
Prototype:
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
----
|
||||||
|
struct t_theme *weechat_theme_register (const char *name,
|
||||||
|
struct t_hashtable *overrides);
|
||||||
|
----
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
* _name_: theme name (for example `+light+` or a custom name)
|
||||||
|
* _overrides_: hashtable mapping full option names
|
||||||
|
(e.g. `+irc.color.input_nick+`) to their string values; the caller
|
||||||
|
retains ownership and may free the hashtable right after the call
|
||||||
|
|
||||||
|
Return value:
|
||||||
|
|
||||||
|
* pointer to the registered theme (existing or newly created), NULL on
|
||||||
|
error
|
||||||
|
|
||||||
|
C example:
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
----
|
||||||
|
struct t_hashtable *overrides = weechat_hashtable_new (
|
||||||
|
8,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
NULL, NULL);
|
||||||
|
if (overrides)
|
||||||
|
{
|
||||||
|
weechat_hashtable_set (overrides, "irc.color.input_nick", "cyan");
|
||||||
|
weechat_hashtable_set (overrides, "irc.color.topic_old", "darkgray");
|
||||||
|
weechat_theme_register ("light", overrides);
|
||||||
|
weechat_hashtable_free (overrides);
|
||||||
|
}
|
||||||
|
----
|
||||||
|
|
||||||
|
Script (Python):
|
||||||
|
|
||||||
|
[source,python]
|
||||||
|
----
|
||||||
|
# prototype
|
||||||
|
def theme_register(name: str, overrides: Dict[str, str]) -> str: ...
|
||||||
|
|
||||||
|
# example
|
||||||
|
weechat.theme_register("light", {
|
||||||
|
"irc.color.input_nick": "cyan",
|
||||||
|
"irc.color.topic_old": "darkgray",
|
||||||
|
})
|
||||||
|
----
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
Only options that have the _themable_ flag will be set by `/theme apply`.
|
||||||
|
All `*.color.*` options are themable by default; string options that
|
||||||
|
hold `+${color:...}+` references are explicitly opted in. Entries
|
||||||
|
targeting non-themable options are silently skipped at apply-time with
|
||||||
|
a warning logged to the _core_ buffer.
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
When called from a script, the contribution is automatically dropped
|
||||||
|
when the script unloads (no manual cleanup is needed).
|
||||||
|
|
||||||
[[key_bindings]]
|
[[key_bindings]]
|
||||||
=== Combinazione tasti
|
=== Combinazione tasti
|
||||||
|
|
||||||
|
|||||||
@@ -2439,6 +2439,152 @@ Esempio di grassetto con il colore di primo piano del terminale:
|
|||||||
/set weechat.color.status_time *99999
|
/set weechat.color.status_time *99999
|
||||||
----
|
----
|
||||||
|
|
||||||
|
// TRANSLATION MISSING
|
||||||
|
[[themes]]
|
||||||
|
=== Themes
|
||||||
|
|
||||||
|
A theme is a named bundle of option overrides that can be applied with
|
||||||
|
the <<command_weechat_theme,/theme>> command. WeeChat ships a built-in
|
||||||
|
`"light"` theme tuned for light-background terminals and supports
|
||||||
|
user-defined themes loaded transiently from files.
|
||||||
|
|
||||||
|
[[themes_themable_options]]
|
||||||
|
==== Themable options
|
||||||
|
|
||||||
|
Themes can only set options marked as _themable_. All `*.color.*`
|
||||||
|
options are themable by default; a few string options that hold format
|
||||||
|
expressions with `+${color:...}+` references (such as
|
||||||
|
`+weechat.color.chat_nick_colors+`, `+weechat.look.prefix_error+` or the
|
||||||
|
`+buflist.format.*+` formats) are explicitly opted in.
|
||||||
|
|
||||||
|
You can list the full themable surface area from the
|
||||||
|
<<command_fset_fset,/fset>> buffer with the `+t:themable+` filter.
|
||||||
|
|
||||||
|
[[themes_apply]]
|
||||||
|
==== Applying a theme
|
||||||
|
|
||||||
|
To switch to the built-in light-background theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply light
|
||||||
|
----
|
||||||
|
|
||||||
|
The current state of every themable option is saved beforehand to a
|
||||||
|
backup theme file named like `+backup-YYYYMMDD-HHMMSS-uuuuuu+` in
|
||||||
|
directory `+themes+` inside the WeeChat configuration directory, so the
|
||||||
|
previous look can be restored at any time with:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply backup-YYYYMMDD-HHMMSS-uuuuuu
|
||||||
|
----
|
||||||
|
|
||||||
|
Backup creation can be disabled (not recommended):
|
||||||
|
|
||||||
|
----
|
||||||
|
/set weechat.look.theme_backup off
|
||||||
|
----
|
||||||
|
|
||||||
|
If backup is enabled and the backup file cannot be written, the apply
|
||||||
|
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
|
||||||
|
|
||||||
|
Save the current themable options as a new user theme file:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme save mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
Every themable option is written, so the file is self-contained and
|
||||||
|
applies the exact same look on any WeeChat, regardless of its current
|
||||||
|
configuration.
|
||||||
|
|
||||||
|
Reserved names (built-in theme names like `+light+` and any name
|
||||||
|
starting with `+backup-+`) are refused. Files live at
|
||||||
|
`+${weechat_config_dir}/themes/<name>.theme+`.
|
||||||
|
|
||||||
|
Rename a user theme (typical use: keep a useful automatic backup
|
||||||
|
under a meaningful name):
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme rename backup-20260525-094210-123456 mybackup
|
||||||
|
----
|
||||||
|
|
||||||
|
Built-in themes have no file and cannot be renamed; the target name
|
||||||
|
cannot match a built-in name or start with `+backup-+`, and the
|
||||||
|
target file must not already exist. The `+[info]+` `+name+` field
|
||||||
|
inside the file is rewritten so `/theme info` reports the new name
|
||||||
|
consistently.
|
||||||
|
|
||||||
|
Delete a user theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme del mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
This removes the file on disk; built-in themes cannot be deleted.
|
||||||
|
|
||||||
|
[[themes_file_format]]
|
||||||
|
==== Theme file format
|
||||||
|
|
||||||
|
A theme file is INI-like with two sections:
|
||||||
|
|
||||||
|
----
|
||||||
|
[info]
|
||||||
|
name = "solarized_light"
|
||||||
|
description = "Light-background theme inspired by Solarized"
|
||||||
|
date = "2026-05-25 09:42:10"
|
||||||
|
weechat = "4.10.0-dev"
|
||||||
|
|
||||||
|
[options]
|
||||||
|
weechat.color.chat = "darkgray"
|
||||||
|
weechat.color.separator = "blue"
|
||||||
|
irc.color.input_nick = "magenta"
|
||||||
|
buflist.format.number = "${color:28}${number}${if:${number_displayed}?.: }"
|
||||||
|
----
|
||||||
|
|
||||||
|
`+[info]+` is informational metadata shown by `/theme info`. `+[options]+`
|
||||||
|
holds the actual overrides; keys are the full option names that would
|
||||||
|
appear in `/set`. String values can be enclosed in double or single
|
||||||
|
quotes; quotes are stripped at parse time. Non-themable options listed
|
||||||
|
in a theme file are refused at apply time and logged to the core
|
||||||
|
buffer (so a `.theme` file imported from an untrusted source cannot
|
||||||
|
overwrite passwords, autoload lists, or startup commands).
|
||||||
|
|
||||||
|
User theme files are never cached: on every `/theme apply <name>` the
|
||||||
|
file is parsed, applied, and freed.
|
||||||
|
|
||||||
|
[[themes_resolution]]
|
||||||
|
==== Resolution order
|
||||||
|
|
||||||
|
When `+/theme apply <name>+` is run:
|
||||||
|
|
||||||
|
* If `+${weechat_config_dir}/themes/<name>.theme+` exists, the file
|
||||||
|
is parsed and used (it shadows any built-in with the same name).
|
||||||
|
* Otherwise the built-in theme registry is consulted; built-ins are
|
||||||
|
registered programmatically by core, plugins and scripts (see the
|
||||||
|
plugin and scripting documentation for `+weechat_theme_register+`).
|
||||||
|
|
||||||
|
If neither source provides the name, the apply is refused.
|
||||||
|
|
||||||
[[charset]]
|
[[charset]]
|
||||||
=== Charset
|
=== Charset
|
||||||
|
|
||||||
|
|||||||
@@ -7472,7 +7472,7 @@ section = weechat.config_search_section(config_file, "section")
|
|||||||
==== config_new_option
|
==== config_new_option
|
||||||
|
|
||||||
// TRANSLATION MISSING
|
// TRANSLATION MISSING
|
||||||
_Updated in 1.5, 4.1.0._
|
_Updated in 1.5, 4.1.0, 4.10.0._
|
||||||
|
|
||||||
設定ファイルのあるセクションに新しいオプションを作成。
|
設定ファイルのあるセクションに新しいオプションを作成。
|
||||||
|
|
||||||
@@ -7518,7 +7518,10 @@ struct t_config_option *weechat_config_new_option (
|
|||||||
(このオプションが "null" の場合、親オプションの値が `/set`
|
(このオプションが "null" の場合、親オプションの値が `/set`
|
||||||
コマンドの出力に表示されます)。以下の構文を使ってください:
|
コマンドの出力に表示されます)。以下の構文を使ってください:
|
||||||
"name << file.section.option"
|
"name << file.section.option"
|
||||||
* _type_: オプションの型:
|
// TRANSLATION MISSING
|
||||||
|
* _type_: type of option; any type can be suffixed with `+|themable+` to mark
|
||||||
|
the option as themable, so that it can be set by the `/theme` command
|
||||||
|
(options of type _color_ are always themable) _(WeeChat ≥ 4.10.0)_:
|
||||||
** _boolean_: ブール値 (on/off)
|
** _boolean_: ブール値 (on/off)
|
||||||
** _integer_: 整数値
|
** _integer_: 整数値
|
||||||
** _string_: 文字列
|
** _string_: 文字列
|
||||||
@@ -7606,7 +7609,7 @@ struct t_config_option *option_int =
|
|||||||
|
|
||||||
/* string */
|
/* string */
|
||||||
struct t_config_option *option_str =
|
struct t_config_option *option_str =
|
||||||
weechat_config_new_option (config_file, section, "option_str", "string",
|
weechat_config_new_option (config_file, section, "option_str", "string|themable",
|
||||||
"My option, type string",
|
"My option, type string",
|
||||||
NULL,
|
NULL,
|
||||||
0, 0,
|
0, 0,
|
||||||
@@ -7682,7 +7685,7 @@ option_int = weechat.config_new_option(config_file, section, "option_int", "inte
|
|||||||
"", "",
|
"", "",
|
||||||
"", "")
|
"", "")
|
||||||
|
|
||||||
option_str = weechat.config_new_option(config_file, section, "option_str", "string",
|
option_str = weechat.config_new_option(config_file, section, "option_str", "string|themable",
|
||||||
"My option, type string",
|
"My option, type string",
|
||||||
"", 0, 0, "test", "test", 1,
|
"", 0, 0, "test", "test", 1,
|
||||||
"option_str_check_value_cb", "",
|
"option_str_check_value_cb", "",
|
||||||
@@ -9746,6 +9749,90 @@ elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_ERROR:
|
|||||||
# ...
|
# ...
|
||||||
----
|
----
|
||||||
|
|
||||||
|
// TRANSLATION MISSING
|
||||||
|
[[themes]]
|
||||||
|
=== Themes
|
||||||
|
|
||||||
|
Functions to contribute color (and other themable option) overrides to
|
||||||
|
built-in themes. See the
|
||||||
|
link:weechat_user.ja.html#themes[user's guide / Themes] section for the
|
||||||
|
end-user side and the `+/theme+` command.
|
||||||
|
|
||||||
|
==== theme_register
|
||||||
|
|
||||||
|
_WeeChat ≥ 4.10.0._
|
||||||
|
|
||||||
|
Register a contribution of option overrides under a named theme. The
|
||||||
|
caller's plugin is the owner of the contribution; subsequent calls
|
||||||
|
with the same theme name from the same plugin merge into the existing
|
||||||
|
contribution (later keys win for duplicates).
|
||||||
|
|
||||||
|
When the calling plugin is unloaded, all its contributions are
|
||||||
|
automatically dropped from every theme.
|
||||||
|
|
||||||
|
Prototype:
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
----
|
||||||
|
struct t_theme *weechat_theme_register (const char *name,
|
||||||
|
struct t_hashtable *overrides);
|
||||||
|
----
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
* _name_: theme name (for example `+light+` or a custom name)
|
||||||
|
* _overrides_: hashtable mapping full option names
|
||||||
|
(e.g. `+irc.color.input_nick+`) to their string values; the caller
|
||||||
|
retains ownership and may free the hashtable right after the call
|
||||||
|
|
||||||
|
Return value:
|
||||||
|
|
||||||
|
* pointer to the registered theme (existing or newly created), NULL on
|
||||||
|
error
|
||||||
|
|
||||||
|
C example:
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
----
|
||||||
|
struct t_hashtable *overrides = weechat_hashtable_new (
|
||||||
|
8,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
NULL, NULL);
|
||||||
|
if (overrides)
|
||||||
|
{
|
||||||
|
weechat_hashtable_set (overrides, "irc.color.input_nick", "cyan");
|
||||||
|
weechat_hashtable_set (overrides, "irc.color.topic_old", "darkgray");
|
||||||
|
weechat_theme_register ("light", overrides);
|
||||||
|
weechat_hashtable_free (overrides);
|
||||||
|
}
|
||||||
|
----
|
||||||
|
|
||||||
|
Script (Python):
|
||||||
|
|
||||||
|
[source,python]
|
||||||
|
----
|
||||||
|
# prototype
|
||||||
|
def theme_register(name: str, overrides: Dict[str, str]) -> str: ...
|
||||||
|
|
||||||
|
# example
|
||||||
|
weechat.theme_register("light", {
|
||||||
|
"irc.color.input_nick": "cyan",
|
||||||
|
"irc.color.topic_old": "darkgray",
|
||||||
|
})
|
||||||
|
----
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
Only options that have the _themable_ flag will be set by `/theme apply`.
|
||||||
|
All `*.color.*` options are themable by default; string options that
|
||||||
|
hold `+${color:...}+` references are explicitly opted in. Entries
|
||||||
|
targeting non-themable options are silently skipped at apply-time with
|
||||||
|
a warning logged to the _core_ buffer.
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
When called from a script, the contribution is automatically dropped
|
||||||
|
when the script unloads (no manual cleanup is needed).
|
||||||
|
|
||||||
[[key_bindings]]
|
[[key_bindings]]
|
||||||
=== キー割り当て
|
=== キー割り当て
|
||||||
|
|
||||||
|
|||||||
@@ -2375,6 +2375,152 @@ WeeChat は画面に色が表示された時点で色ペアを動的に割り当
|
|||||||
/set weechat.color.status_time *99999
|
/set weechat.color.status_time *99999
|
||||||
----
|
----
|
||||||
|
|
||||||
|
// TRANSLATION MISSING
|
||||||
|
[[themes]]
|
||||||
|
=== Themes
|
||||||
|
|
||||||
|
A theme is a named bundle of option overrides that can be applied with
|
||||||
|
the <<command_weechat_theme,/theme>> command. WeeChat ships a built-in
|
||||||
|
`"light"` theme tuned for light-background terminals and supports
|
||||||
|
user-defined themes loaded transiently from files.
|
||||||
|
|
||||||
|
[[themes_themable_options]]
|
||||||
|
==== Themable options
|
||||||
|
|
||||||
|
Themes can only set options marked as _themable_. All `*.color.*`
|
||||||
|
options are themable by default; a few string options that hold format
|
||||||
|
expressions with `+${color:...}+` references (such as
|
||||||
|
`+weechat.color.chat_nick_colors+`, `+weechat.look.prefix_error+` or the
|
||||||
|
`+buflist.format.*+` formats) are explicitly opted in.
|
||||||
|
|
||||||
|
You can list the full themable surface area from the
|
||||||
|
<<command_fset_fset,/fset>> buffer with the `+t:themable+` filter.
|
||||||
|
|
||||||
|
[[themes_apply]]
|
||||||
|
==== Applying a theme
|
||||||
|
|
||||||
|
To switch to the built-in light-background theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply light
|
||||||
|
----
|
||||||
|
|
||||||
|
The current state of every themable option is saved beforehand to a
|
||||||
|
backup theme file named like `+backup-YYYYMMDD-HHMMSS-uuuuuu+` in
|
||||||
|
directory `+themes+` inside the WeeChat configuration directory, so the
|
||||||
|
previous look can be restored at any time with:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply backup-YYYYMMDD-HHMMSS-uuuuuu
|
||||||
|
----
|
||||||
|
|
||||||
|
Backup creation can be disabled (not recommended):
|
||||||
|
|
||||||
|
----
|
||||||
|
/set weechat.look.theme_backup off
|
||||||
|
----
|
||||||
|
|
||||||
|
If backup is enabled and the backup file cannot be written, the apply
|
||||||
|
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
|
||||||
|
|
||||||
|
Save the current themable options as a new user theme file:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme save mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
Every themable option is written, so the file is self-contained and
|
||||||
|
applies the exact same look on any WeeChat, regardless of its current
|
||||||
|
configuration.
|
||||||
|
|
||||||
|
Reserved names (built-in theme names like `+light+` and any name
|
||||||
|
starting with `+backup-+`) are refused. Files live at
|
||||||
|
`+${weechat_config_dir}/themes/<name>.theme+`.
|
||||||
|
|
||||||
|
Rename a user theme (typical use: keep a useful automatic backup
|
||||||
|
under a meaningful name):
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme rename backup-20260525-094210-123456 mybackup
|
||||||
|
----
|
||||||
|
|
||||||
|
Built-in themes have no file and cannot be renamed; the target name
|
||||||
|
cannot match a built-in name or start with `+backup-+`, and the
|
||||||
|
target file must not already exist. The `+[info]+` `+name+` field
|
||||||
|
inside the file is rewritten so `/theme info` reports the new name
|
||||||
|
consistently.
|
||||||
|
|
||||||
|
Delete a user theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme del mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
This removes the file on disk; built-in themes cannot be deleted.
|
||||||
|
|
||||||
|
[[themes_file_format]]
|
||||||
|
==== Theme file format
|
||||||
|
|
||||||
|
A theme file is INI-like with two sections:
|
||||||
|
|
||||||
|
----
|
||||||
|
[info]
|
||||||
|
name = "solarized_light"
|
||||||
|
description = "Light-background theme inspired by Solarized"
|
||||||
|
date = "2026-05-25 09:42:10"
|
||||||
|
weechat = "4.10.0-dev"
|
||||||
|
|
||||||
|
[options]
|
||||||
|
weechat.color.chat = "darkgray"
|
||||||
|
weechat.color.separator = "blue"
|
||||||
|
irc.color.input_nick = "magenta"
|
||||||
|
buflist.format.number = "${color:28}${number}${if:${number_displayed}?.: }"
|
||||||
|
----
|
||||||
|
|
||||||
|
`+[info]+` is informational metadata shown by `/theme info`. `+[options]+`
|
||||||
|
holds the actual overrides; keys are the full option names that would
|
||||||
|
appear in `/set`. String values can be enclosed in double or single
|
||||||
|
quotes; quotes are stripped at parse time. Non-themable options listed
|
||||||
|
in a theme file are refused at apply time and logged to the core
|
||||||
|
buffer (so a `.theme` file imported from an untrusted source cannot
|
||||||
|
overwrite passwords, autoload lists, or startup commands).
|
||||||
|
|
||||||
|
User theme files are never cached: on every `/theme apply <name>` the
|
||||||
|
file is parsed, applied, and freed.
|
||||||
|
|
||||||
|
[[themes_resolution]]
|
||||||
|
==== Resolution order
|
||||||
|
|
||||||
|
When `+/theme apply <name>+` is run:
|
||||||
|
|
||||||
|
* If `+${weechat_config_dir}/themes/<name>.theme+` exists, the file
|
||||||
|
is parsed and used (it shadows any built-in with the same name).
|
||||||
|
* Otherwise the built-in theme registry is consulted; built-ins are
|
||||||
|
registered programmatically by core, plugins and scripts (see the
|
||||||
|
plugin and scripting documentation for `+weechat_theme_register+`).
|
||||||
|
|
||||||
|
If neither source provides the name, the apply is refused.
|
||||||
|
|
||||||
[[charset]]
|
[[charset]]
|
||||||
=== Charset
|
=== Charset
|
||||||
|
|
||||||
|
|||||||
@@ -2191,6 +2191,152 @@ Przykład pogrubienia z domyślnym kolorem terminala:
|
|||||||
/set weechat.color.status_time *99999
|
/set weechat.color.status_time *99999
|
||||||
----
|
----
|
||||||
|
|
||||||
|
// TRANSLATION MISSING
|
||||||
|
[[themes]]
|
||||||
|
=== Motywy
|
||||||
|
|
||||||
|
A theme is a named bundle of option overrides that can be applied with
|
||||||
|
the <<command_weechat_theme,/theme>> command. WeeChat ships a built-in
|
||||||
|
`"light"` theme tuned for light-background terminals and supports
|
||||||
|
user-defined themes loaded transiently from files.
|
||||||
|
|
||||||
|
[[themes_themable_options]]
|
||||||
|
==== Themable options
|
||||||
|
|
||||||
|
Themes can only set options marked as _themable_. All `*.color.*`
|
||||||
|
options are themable by default; a few string options that hold format
|
||||||
|
expressions with `+${color:...}+` references (such as
|
||||||
|
`+weechat.color.chat_nick_colors+`, `+weechat.look.prefix_error+` or the
|
||||||
|
`+buflist.format.*+` formats) are explicitly opted in.
|
||||||
|
|
||||||
|
You can list the full themable surface area from the
|
||||||
|
<<command_fset_fset,/fset>> buffer with the `+t:themable+` filter.
|
||||||
|
|
||||||
|
[[themes_apply]]
|
||||||
|
==== Applying a theme
|
||||||
|
|
||||||
|
To switch to the built-in light-background theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply light
|
||||||
|
----
|
||||||
|
|
||||||
|
The current state of every themable option is saved beforehand to a
|
||||||
|
backup theme file named like `+backup-YYYYMMDD-HHMMSS-uuuuuu+` in
|
||||||
|
directory `+themes+` inside the WeeChat configuration directory, so the
|
||||||
|
previous look can be restored at any time with:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply backup-YYYYMMDD-HHMMSS-uuuuuu
|
||||||
|
----
|
||||||
|
|
||||||
|
Backup creation can be disabled (not recommended):
|
||||||
|
|
||||||
|
----
|
||||||
|
/set weechat.look.theme_backup off
|
||||||
|
----
|
||||||
|
|
||||||
|
If backup is enabled and the backup file cannot be written, the apply
|
||||||
|
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
|
||||||
|
|
||||||
|
Save the current themable options as a new user theme file:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme save mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
Every themable option is written, so the file is self-contained and
|
||||||
|
applies the exact same look on any WeeChat, regardless of its current
|
||||||
|
configuration.
|
||||||
|
|
||||||
|
Reserved names (built-in theme names like `+light+` and any name
|
||||||
|
starting with `+backup-+`) are refused. Files live at
|
||||||
|
`+${weechat_config_dir}/themes/<name>.theme+`.
|
||||||
|
|
||||||
|
Rename a user theme (typical use: keep a useful automatic backup
|
||||||
|
under a meaningful name):
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme rename backup-20260525-094210-123456 mybackup
|
||||||
|
----
|
||||||
|
|
||||||
|
Built-in themes have no file and cannot be renamed; the target name
|
||||||
|
cannot match a built-in name or start with `+backup-+`, and the
|
||||||
|
target file must not already exist. The `+[info]+` `+name+` field
|
||||||
|
inside the file is rewritten so `/theme info` reports the new name
|
||||||
|
consistently.
|
||||||
|
|
||||||
|
Delete a user theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme del mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
This removes the file on disk; built-in themes cannot be deleted.
|
||||||
|
|
||||||
|
[[themes_file_format]]
|
||||||
|
==== Theme file format
|
||||||
|
|
||||||
|
A theme file is INI-like with two sections:
|
||||||
|
|
||||||
|
----
|
||||||
|
[info]
|
||||||
|
name = "solarized_light"
|
||||||
|
description = "Light-background theme inspired by Solarized"
|
||||||
|
date = "2026-05-25 09:42:10"
|
||||||
|
weechat = "4.10.0-dev"
|
||||||
|
|
||||||
|
[options]
|
||||||
|
weechat.color.chat = "darkgray"
|
||||||
|
weechat.color.separator = "blue"
|
||||||
|
irc.color.input_nick = "magenta"
|
||||||
|
buflist.format.number = "${color:28}${number}${if:${number_displayed}?.: }"
|
||||||
|
----
|
||||||
|
|
||||||
|
`+[info]+` is informational metadata shown by `/theme info`. `+[options]+`
|
||||||
|
holds the actual overrides; keys are the full option names that would
|
||||||
|
appear in `/set`. String values can be enclosed in double or single
|
||||||
|
quotes; quotes are stripped at parse time. Non-themable options listed
|
||||||
|
in a theme file are refused at apply time and logged to the core
|
||||||
|
buffer (so a `.theme` file imported from an untrusted source cannot
|
||||||
|
overwrite passwords, autoload lists, or startup commands).
|
||||||
|
|
||||||
|
User theme files are never cached: on every `/theme apply <name>` the
|
||||||
|
file is parsed, applied, and freed.
|
||||||
|
|
||||||
|
[[themes_resolution]]
|
||||||
|
==== Resolution order
|
||||||
|
|
||||||
|
When `+/theme apply <name>+` is run:
|
||||||
|
|
||||||
|
* If `+${weechat_config_dir}/themes/<name>.theme+` exists, the file
|
||||||
|
is parsed and used (it shadows any built-in with the same name).
|
||||||
|
* Otherwise the built-in theme registry is consulted; built-ins are
|
||||||
|
registered programmatically by core, plugins and scripts (see the
|
||||||
|
plugin and scripting documentation for `+weechat_theme_register+`).
|
||||||
|
|
||||||
|
If neither source provides the name, the apply is refused.
|
||||||
|
|
||||||
[[charset]]
|
[[charset]]
|
||||||
=== Charset
|
=== Charset
|
||||||
|
|
||||||
|
|||||||
@@ -7171,7 +7171,7 @@ section = weechat.config_search_section(config_file, "section")
|
|||||||
|
|
||||||
==== config_new_option
|
==== config_new_option
|
||||||
|
|
||||||
_Ажурирано у верзији 1.5, 4.1.0._
|
_Ажурирано у верзији 1.5, 4.1.0, 4.10.0._
|
||||||
|
|
||||||
Креира нову опцију у одељку конфигурационог фајла.
|
Креира нову опцију у одељку конфигурационог фајла.
|
||||||
|
|
||||||
@@ -7214,7 +7214,10 @@ struct t_config_option *weechat_config_new_option (
|
|||||||
* _config_file_: показивач на конфигурациони фајл
|
* _config_file_: показивач на конфигурациони фајл
|
||||||
* _section_: показивач на одељак
|
* _section_: показивач на одељак
|
||||||
* _name_: име опције; у програм у WeeChat верзије ≥ 1.4, име може да укључи и име родитељске опције (у случају да је ова опција „null”, вредност родитељске опције ће се приказати у излазу команде `/set`), тада је синтакса: „име << фајл.одељак.опција”
|
* _name_: име опције; у програм у WeeChat верзије ≥ 1.4, име може да укључи и име родитељске опције (у случају да је ова опција „null”, вредност родитељске опције ће се приказати у излазу команде `/set`), тада је синтакса: „име << фајл.одељак.опција”
|
||||||
* _type_: тип опције:
|
// TRANSLATION MISSING
|
||||||
|
* _type_: type of option; any type can be suffixed with `+|themable+` to mark
|
||||||
|
the option as themable, so that it can be set by the `/theme` command
|
||||||
|
(options of type _color_ are always themable) _(WeeChat ≥ 4.10.0)_:
|
||||||
** _boolean_: логичка вредност (on/off)
|
** _boolean_: логичка вредност (on/off)
|
||||||
** _integer_: целобројна вредност
|
** _integer_: целобројна вредност
|
||||||
** _string_: стринг вредност
|
** _string_: стринг вредност
|
||||||
@@ -7287,7 +7290,7 @@ struct t_config_option *option_int =
|
|||||||
|
|
||||||
/* стринг */
|
/* стринг */
|
||||||
struct t_config_option *option_str =
|
struct t_config_option *option_str =
|
||||||
weechat_config_new_option (config_file, section, "option_str", "string",
|
weechat_config_new_option (config_file, section, "option_str", "string|themable",
|
||||||
"My option, type string",
|
"My option, type string",
|
||||||
NULL,
|
NULL,
|
||||||
0, 0,
|
0, 0,
|
||||||
@@ -7363,7 +7366,7 @@ option_int = weechat.config_new_option(config_file, section, "option_int", "inte
|
|||||||
"", "",
|
"", "",
|
||||||
"", "")
|
"", "")
|
||||||
|
|
||||||
option_str = weechat.config_new_option(config_file, section, "option_str", "string",
|
option_str = weechat.config_new_option(config_file, section, "option_str", "string|themable",
|
||||||
"My option, type string",
|
"My option, type string",
|
||||||
"", 0, 0, "test", "test", 1,
|
"", 0, 0, "test", "test", 1,
|
||||||
"option_str_check_value_cb", "",
|
"option_str_check_value_cb", "",
|
||||||
@@ -9436,6 +9439,90 @@ elif rc == weechat.WEECHAT_CONFIG_OPTION_UNSET_ERROR:
|
|||||||
# ...
|
# ...
|
||||||
----
|
----
|
||||||
|
|
||||||
|
// TRANSLATION MISSING
|
||||||
|
[[themes]]
|
||||||
|
=== Теме
|
||||||
|
|
||||||
|
Functions to contribute color (and other themable option) overrides to
|
||||||
|
built-in themes. See the
|
||||||
|
link:weechat_user.sr.html#themes[user's guide / Themes] section for the
|
||||||
|
end-user side and the `+/theme+` command.
|
||||||
|
|
||||||
|
==== theme_register
|
||||||
|
|
||||||
|
_WeeChat ≥ 4.10.0._
|
||||||
|
|
||||||
|
Register a contribution of option overrides under a named theme. The
|
||||||
|
caller's plugin is the owner of the contribution; subsequent calls
|
||||||
|
with the same theme name from the same plugin merge into the existing
|
||||||
|
contribution (later keys win for duplicates).
|
||||||
|
|
||||||
|
When the calling plugin is unloaded, all its contributions are
|
||||||
|
automatically dropped from every theme.
|
||||||
|
|
||||||
|
Prototype:
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
----
|
||||||
|
struct t_theme *weechat_theme_register (const char *name,
|
||||||
|
struct t_hashtable *overrides);
|
||||||
|
----
|
||||||
|
|
||||||
|
Arguments:
|
||||||
|
|
||||||
|
* _name_: theme name (for example `+light+` or a custom name)
|
||||||
|
* _overrides_: hashtable mapping full option names
|
||||||
|
(e.g. `+irc.color.input_nick+`) to their string values; the caller
|
||||||
|
retains ownership and may free the hashtable right after the call
|
||||||
|
|
||||||
|
Return value:
|
||||||
|
|
||||||
|
* pointer to the registered theme (existing or newly created), NULL on
|
||||||
|
error
|
||||||
|
|
||||||
|
C example:
|
||||||
|
|
||||||
|
[source,c]
|
||||||
|
----
|
||||||
|
struct t_hashtable *overrides = weechat_hashtable_new (
|
||||||
|
8,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
NULL, NULL);
|
||||||
|
if (overrides)
|
||||||
|
{
|
||||||
|
weechat_hashtable_set (overrides, "irc.color.input_nick", "cyan");
|
||||||
|
weechat_hashtable_set (overrides, "irc.color.topic_old", "darkgray");
|
||||||
|
weechat_theme_register ("light", overrides);
|
||||||
|
weechat_hashtable_free (overrides);
|
||||||
|
}
|
||||||
|
----
|
||||||
|
|
||||||
|
Script (Python):
|
||||||
|
|
||||||
|
[source,python]
|
||||||
|
----
|
||||||
|
# prototype
|
||||||
|
def theme_register(name: str, overrides: Dict[str, str]) -> str: ...
|
||||||
|
|
||||||
|
# example
|
||||||
|
weechat.theme_register("light", {
|
||||||
|
"irc.color.input_nick": "cyan",
|
||||||
|
"irc.color.topic_old": "darkgray",
|
||||||
|
})
|
||||||
|
----
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
Only options that have the _themable_ flag will be set by `/theme apply`.
|
||||||
|
All `*.color.*` options are themable by default; string options that
|
||||||
|
hold `+${color:...}+` references are explicitly opted in. Entries
|
||||||
|
targeting non-themable options are silently skipped at apply-time with
|
||||||
|
a warning logged to the _core_ buffer.
|
||||||
|
|
||||||
|
[NOTE]
|
||||||
|
When called from a script, the contribution is automatically dropped
|
||||||
|
when the script unloads (no manual cleanup is needed).
|
||||||
|
|
||||||
[[key_bindings]]
|
[[key_bindings]]
|
||||||
=== Тастерске пречице
|
=== Тастерске пречице
|
||||||
|
|
||||||
|
|||||||
@@ -1030,12 +1030,19 @@ GET /api/buffers/{id_бафера}/nicks
|
|||||||
GET /api/buffers/{име_бафера}/nicks
|
GET /api/buffers/{име_бафера}/nicks
|
||||||
----
|
----
|
||||||
|
|
||||||
Параметри упита:
|
Параметри путање:
|
||||||
|
|
||||||
* `id_бафера` (цео број, **обавезно**): јединствени идентификатор бафера (не треба
|
* `id_бафера` (цео број, **обавезно**): јединствени идентификатор бафера (не треба
|
||||||
да се помеша са бројем бафера, то је нешто друго)
|
да се помеша са бројем бафера, то је нешто друго)
|
||||||
* `име_бафера` (стринг, **обавезно**): име бафера
|
* `име_бафера` (стринг, **обавезно**): име бафера
|
||||||
|
|
||||||
|
Параметри упита:
|
||||||
|
|
||||||
|
* `colors` (стринг, није обавезно, подразумевано: `ansi`): како се враћају стрингови са кодовима боје:
|
||||||
|
** `ansi`: враћају се ANSI кодови боје
|
||||||
|
** `weechat`: враћају се WeeChat интерни кодови боје
|
||||||
|
** `strip`: уклањају се боје
|
||||||
|
|
||||||
Пример захтева: врати надимке бафера:
|
Пример захтева: врати надимке бафера:
|
||||||
|
|
||||||
[source,shell]
|
[source,shell]
|
||||||
@@ -1181,12 +1188,10 @@ HTTP/1.1 200 OK
|
|||||||
]
|
]
|
||||||
----
|
----
|
||||||
|
|
||||||
// TRANSLATION MISSING
|
|
||||||
[[resource_scripts]]
|
[[resource_scripts]]
|
||||||
=== Scripts
|
=== Скрипте
|
||||||
|
|
||||||
// TRANSLATION MISSING
|
Враћа учитане скрипте (на свим језицима).
|
||||||
Return loaded scripts (all languages).
|
|
||||||
|
|
||||||
Крајња тачка:
|
Крајња тачка:
|
||||||
|
|
||||||
|
|||||||
@@ -2093,6 +2093,152 @@ include::{autogendir}/autogen_user_options.sr.adoc[tag=fset_options]
|
|||||||
/set weechat.color.status_time *99999
|
/set weechat.color.status_time *99999
|
||||||
----
|
----
|
||||||
|
|
||||||
|
// TRANSLATION MISSING
|
||||||
|
[[themes]]
|
||||||
|
=== Теме
|
||||||
|
|
||||||
|
A theme is a named bundle of option overrides that can be applied with
|
||||||
|
the <<command_weechat_theme,/theme>> command. WeeChat ships a built-in
|
||||||
|
`"light"` theme tuned for light-background terminals and supports
|
||||||
|
user-defined themes loaded transiently from files.
|
||||||
|
|
||||||
|
[[themes_themable_options]]
|
||||||
|
==== Themable options
|
||||||
|
|
||||||
|
Themes can only set options marked as _themable_. All `*.color.*`
|
||||||
|
options are themable by default; a few string options that hold format
|
||||||
|
expressions with `+${color:...}+` references (such as
|
||||||
|
`+weechat.color.chat_nick_colors+`, `+weechat.look.prefix_error+` or the
|
||||||
|
`+buflist.format.*+` formats) are explicitly opted in.
|
||||||
|
|
||||||
|
You can list the full themable surface area from the
|
||||||
|
<<command_fset_fset,/fset>> buffer with the `+t:themable+` filter.
|
||||||
|
|
||||||
|
[[themes_apply]]
|
||||||
|
==== Applying a theme
|
||||||
|
|
||||||
|
To switch to the built-in light-background theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply light
|
||||||
|
----
|
||||||
|
|
||||||
|
The current state of every themable option is saved beforehand to a
|
||||||
|
backup theme file named like `+backup-YYYYMMDD-HHMMSS-uuuuuu+` in
|
||||||
|
directory `+themes+` inside the WeeChat configuration directory, so the
|
||||||
|
previous look can be restored at any time with:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme apply backup-YYYYMMDD-HHMMSS-uuuuuu
|
||||||
|
----
|
||||||
|
|
||||||
|
Backup creation can be disabled (not recommended):
|
||||||
|
|
||||||
|
----
|
||||||
|
/set weechat.look.theme_backup off
|
||||||
|
----
|
||||||
|
|
||||||
|
If backup is enabled and the backup file cannot be written, the apply
|
||||||
|
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
|
||||||
|
|
||||||
|
Save the current themable options as a new user theme file:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme save mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
Every themable option is written, so the file is self-contained and
|
||||||
|
applies the exact same look on any WeeChat, regardless of its current
|
||||||
|
configuration.
|
||||||
|
|
||||||
|
Reserved names (built-in theme names like `+light+` and any name
|
||||||
|
starting with `+backup-+`) are refused. Files live at
|
||||||
|
`+${weechat_config_dir}/themes/<name>.theme+`.
|
||||||
|
|
||||||
|
Rename a user theme (typical use: keep a useful automatic backup
|
||||||
|
under a meaningful name):
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme rename backup-20260525-094210-123456 mybackup
|
||||||
|
----
|
||||||
|
|
||||||
|
Built-in themes have no file and cannot be renamed; the target name
|
||||||
|
cannot match a built-in name or start with `+backup-+`, and the
|
||||||
|
target file must not already exist. The `+[info]+` `+name+` field
|
||||||
|
inside the file is rewritten so `/theme info` reports the new name
|
||||||
|
consistently.
|
||||||
|
|
||||||
|
Delete a user theme:
|
||||||
|
|
||||||
|
----
|
||||||
|
/theme del mytheme
|
||||||
|
----
|
||||||
|
|
||||||
|
This removes the file on disk; built-in themes cannot be deleted.
|
||||||
|
|
||||||
|
[[themes_file_format]]
|
||||||
|
==== Theme file format
|
||||||
|
|
||||||
|
A theme file is INI-like with two sections:
|
||||||
|
|
||||||
|
----
|
||||||
|
[info]
|
||||||
|
name = "solarized_light"
|
||||||
|
description = "Light-background theme inspired by Solarized"
|
||||||
|
date = "2026-05-25 09:42:10"
|
||||||
|
weechat = "4.10.0-dev"
|
||||||
|
|
||||||
|
[options]
|
||||||
|
weechat.color.chat = "darkgray"
|
||||||
|
weechat.color.separator = "blue"
|
||||||
|
irc.color.input_nick = "magenta"
|
||||||
|
buflist.format.number = "${color:28}${number}${if:${number_displayed}?.: }"
|
||||||
|
----
|
||||||
|
|
||||||
|
`+[info]+` is informational metadata shown by `/theme info`. `+[options]+`
|
||||||
|
holds the actual overrides; keys are the full option names that would
|
||||||
|
appear in `/set`. String values can be enclosed in double or single
|
||||||
|
quotes; quotes are stripped at parse time. Non-themable options listed
|
||||||
|
in a theme file are refused at apply time and logged to the core
|
||||||
|
buffer (so a `.theme` file imported from an untrusted source cannot
|
||||||
|
overwrite passwords, autoload lists, or startup commands).
|
||||||
|
|
||||||
|
User theme files are never cached: on every `/theme apply <name>` the
|
||||||
|
file is parsed, applied, and freed.
|
||||||
|
|
||||||
|
[[themes_resolution]]
|
||||||
|
==== Resolution order
|
||||||
|
|
||||||
|
When `+/theme apply <name>+` is run:
|
||||||
|
|
||||||
|
* If `+${weechat_config_dir}/themes/<name>.theme+` exists, the file
|
||||||
|
is parsed and used (it shadows any built-in with the same name).
|
||||||
|
* Otherwise the built-in theme registry is consulted; built-ins are
|
||||||
|
registered programmatically by core, plugins and scripts (see the
|
||||||
|
plugin and scripting documentation for `+weechat_theme_register+`).
|
||||||
|
|
||||||
|
If neither source provides the name, the apply is refused.
|
||||||
|
|
||||||
[[charset]]
|
[[charset]]
|
||||||
=== Charset
|
=== Charset
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: WeeChat\n"
|
"Project-Id-Version: WeeChat\n"
|
||||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||||
"POT-Creation-Date: 2026-06-08 22:23+0200\n"
|
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||||
"PO-Revision-Date: 2026-05-30 14:01+0200\n"
|
"PO-Revision-Date: 2026-05-30 14:01+0200\n"
|
||||||
"Last-Translator: Ondřej Súkup <mimi.vx@gmail.com>\n"
|
"Last-Translator: Ondřej Súkup <mimi.vx@gmail.com>\n"
|
||||||
"Language-Team: Czech <weechat-dev@nongnu.org>\n"
|
"Language-Team: Czech <weechat-dev@nongnu.org>\n"
|
||||||
@@ -1005,6 +1005,55 @@ msgstr "Volba vytvořena: "
|
|||||||
msgid "%sFunction \"%s\" is not available on this system"
|
msgid "%sFunction \"%s\" is not available on this system"
|
||||||
msgstr "%s: upozornění: slovník \"%s\" není dostupný ve vašem systému"
|
msgstr "%s: upozornění: slovník \"%s\" není dostupný ve vašem systému"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "no variable"
|
||||||
|
msgid "No theme available"
|
||||||
|
msgstr "není proměnná"
|
||||||
|
|
||||||
|
msgid "Themes:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " %s %s%s%s (file)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sKey \"%s\" not found"
|
||||||
|
msgid "%sTheme \"%s\" not found"
|
||||||
|
msgstr "%sKlávesa \"%s\" nenalezena"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Option \"%s%s%s\":"
|
||||||
|
msgid "Theme \"%s%s%s\":"
|
||||||
|
msgstr "Volba \"%s%s%s\":"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid " file: %s"
|
||||||
|
msgid " source: %s"
|
||||||
|
msgstr " soubor: %s"
|
||||||
|
|
||||||
|
msgid " source: built-in (in-memory)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "description"
|
||||||
|
msgid " description: %s"
|
||||||
|
msgstr "popis"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid " file: %s"
|
||||||
|
msgid " date: %s"
|
||||||
|
msgstr " soubor: %s"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "WeeChat version"
|
||||||
|
msgid " WeeChat version: %s"
|
||||||
|
msgstr "verze WeeChat"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " overrides: %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sFailed to unset option \"%s\""
|
msgid "%sFailed to unset option \"%s\""
|
||||||
msgstr "%sSelhalo odnastavení volby \"%s\""
|
msgstr "%sSelhalo odnastavení volby \"%s\""
|
||||||
@@ -3658,6 +3707,78 @@ msgstr ""
|
|||||||
msgid "number: number of processes to clean"
|
msgid "number: number of processes to clean"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "list of bar items"
|
||||||
|
msgid "manage color themes"
|
||||||
|
msgstr "seznam položek polí"
|
||||||
|
|
||||||
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
|
msgid ""
|
||||||
|
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||||
|
"<new> || del <name> || info <name>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "list of filters"
|
||||||
|
msgid ""
|
||||||
|
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||||
|
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||||
|
"marked with \"->\""
|
||||||
|
msgstr "seznam filtrů"
|
||||||
|
|
||||||
|
msgid "raw[-backups]: display backup theme files"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||||
|
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||||
|
"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 <name>.theme in directory "
|
||||||
|
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||||
|
"the name must not match a built-in theme or start with \"backup-\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "names of filters"
|
||||||
|
msgid "raw[rename]: rename a user theme file"
|
||||||
|
msgstr "jména filtrů"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "get/set channel topic"
|
||||||
|
msgid "raw[del]: delete a user theme file"
|
||||||
|
msgstr "získat/nastavit téma kanálu"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[info]: display details on a theme (name, description, creation date, "
|
||||||
|
"WeeChat version, number of option overrides)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "name: name of a theme"
|
||||||
|
msgstr "zapni podporu myši"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||||
|
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||||
|
"directory \"themes\" inside the WeeChat configuration directory."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By default, `/theme apply` command creates a backup of current themable "
|
||||||
|
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||||
|
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||||
|
"backup-<timestamp>`. This is controlled by the option "
|
||||||
|
"weechat.look.theme_backup."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "values for a configuration option"
|
#| msgid "values for a configuration option"
|
||||||
msgid "toggle value of a config option"
|
msgid "toggle value of a config option"
|
||||||
@@ -4246,6 +4367,15 @@ msgstr ""
|
|||||||
msgid "names of layouts"
|
msgid "names of layouts"
|
||||||
msgstr "jména rozvržení"
|
msgstr "jména rozvržení"
|
||||||
|
|
||||||
|
msgid "names of themes (built-ins + user files + backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of user theme files (without built-ins and backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "names of secured data (file sec.conf, section data)"
|
msgid "names of secured data (file sec.conf, section data)"
|
||||||
msgstr "jména chráněných dat (soubor sec.conf, sekce data)"
|
msgstr "jména chráněných dat (soubor sec.conf, sekce data)"
|
||||||
|
|
||||||
@@ -5216,6 +5346,20 @@ msgstr ""
|
|||||||
msgid "number of spaces used to display tabs in messages"
|
msgid "number of spaces used to display tabs in messages"
|
||||||
msgstr "prefix pro zprávy akcí"
|
msgstr "prefix pro zprávy akcí"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"name of the last theme applied with command /theme (set automatically, do "
|
||||||
|
"not change manually); informational only, the theme is not re-applied at "
|
||||||
|
"startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"create a backup theme file with the current themable options before applying "
|
||||||
|
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||||
|
"is aborted (no option is changed); the backup file is written to directory "
|
||||||
|
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||||
|
"with the command: `/theme apply backup-<timestamp>`"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"time format for dates converted to strings and displayed in messages (see "
|
"time format for dates converted to strings and displayed in messages (see "
|
||||||
@@ -6187,6 +6331,111 @@ msgstr "%s: chyba: slovník \"%s\" není ve vašem systému dostupný"
|
|||||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||||
msgstr "Využití paměti (viz \"man mallinfo\" pro nápovědu):"
|
msgstr "Využití paměti (viz \"man mallinfo\" pro nápovědu):"
|
||||||
|
|
||||||
|
msgid "WeeChat default theme for light-background terminals"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Automatic backup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sKey \"%s\" not found"
|
||||||
|
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||||
|
msgstr "%sKlávesa \"%s\" nenalezena"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s: script \"%s\" is not installed"
|
||||||
|
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||||
|
msgstr "%s: skript \"%s\" není nainstalován"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: malformed section header"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||||
|
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||||
|
msgstr "%sUpozornění: %s, řádek %d: neznámý identifikátor sekce (\"%s\")"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: missing '=' separator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||||
|
msgstr "%sUpozornění: %s, řádek %d: neznámý identifikátor sekce (\"%s\")"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to parse theme file \"%s\""
|
||||||
|
msgstr "%s%s: nemůžu parsovat soubor \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%sUnable to create theme backup; aborting apply (disable option "
|
||||||
|
"weechat.look.theme_backup to force)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
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 ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to save theme \"%s\""
|
||||||
|
msgstr "%s%s: nemůžu parsovat soubor \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Option \"%s%s%s\":"
|
||||||
|
msgid "Theme saved to: %s"
|
||||||
|
msgstr "Volba \"%s%s%s\":"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sCannot rename built-in theme \"%s\""
|
||||||
|
msgstr "%sChyba: nemohu vytvořit soubor \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sNew name is the same as old name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sTheme \"%s\" already exists"
|
||||||
|
msgstr "%s%s: vzorec přesměrování \"%s\" již existuje"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||||
|
msgstr "%sChyba: nemohu přejmenovat filter \"%s\" na \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "Theme \"%s\" renamed to \"%s\""
|
||||||
|
msgstr "Filtr \"%s\" přejmenován na \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sCannot delete built-in theme \"%s\""
|
||||||
|
msgstr "%sChyba: nemohu vytvořit soubor \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to delete theme \"%s\""
|
||||||
|
msgstr "%s%s: nemůžu parsovat soubor \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme deleted: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||||
msgstr "%sChyba aktualizace WeeChat se souborem \"%s\":"
|
msgstr "%sChyba aktualizace WeeChat se souborem \"%s\":"
|
||||||
@@ -6350,37 +6599,36 @@ msgstr "Konec příkazu '%s', vypršel časový limit (%.1fs)"
|
|||||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||||
msgstr "1 pokud se WeeChat aktualizuje (příkaz `/upgrade`)"
|
msgstr "1 pokud se WeeChat aktualizuje (příkaz `/upgrade`)"
|
||||||
|
|
||||||
#, fuzzy
|
msgid "Welcome to WeeChat!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Welcome to WeeChat!\n"
|
|
||||||
"\n"
|
|
||||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||||
"main WeeChat concepts.\n"
|
"main WeeChat concepts."
|
||||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
#, c-format
|
||||||
|
msgid "All WeeChat docs are available at: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"Moreover, there is inline help with /help on all commands and options (use "
|
"Moreover, there is inline help with /help on all commands and options (use "
|
||||||
"Tab key to complete the name).\n"
|
"Tab key to complete the name)."
|
||||||
"The command /fset can help to customize WeeChat.\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
msgid "The command /fset can help to customize WeeChat."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"You can add and connect to an IRC server with /server and /connect commands "
|
"You can add and connect to an IRC server with /server and /connect commands "
|
||||||
"(see /help server)."
|
"(see /help server)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Vítejte v WeeChatu!\n"
|
|
||||||
"\n"
|
msgid ""
|
||||||
"Pokud objevujete WeeChat je doporučeno si prečíst alespoň \"quickstart\" "
|
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||||
"průvodce, a pokud máte trochu času tak uživatelskou příručku, oboje vám "
|
"switch back to the default dark theme."
|
||||||
"vyvětlí hlavní koncepty WeeChatu.\n"
|
msgstr ""
|
||||||
"Veškerá dokumentace WeeChatu je dostupná na adrese: https://weechat.org/"
|
|
||||||
"doc/\n"
|
|
||||||
"\n"
|
|
||||||
"Navíc je zde dostupná integrovaná nápověda /help fungující na všech "
|
|
||||||
"příkazech a nastaveních ( použijte Tab klávesu pro doplňování názvů).\n"
|
|
||||||
"Příkaz /iset (script iset.pl) může pomoci upravit WeeChat\" /script install "
|
|
||||||
"iset.pl\n"
|
|
||||||
"\n"
|
|
||||||
"Můžete přidat IRC server a připojit se k němu pomocí príkazů /server a /"
|
|
||||||
"connect ( podívejte se na /help server)."
|
|
||||||
|
|
||||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -7895,7 +8143,8 @@ msgstr "Neznámý konfigurační soubor \"%s\""
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||||
"string/color/enum)"
|
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||||
|
"options that can be used in themes, regardless of type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> `d`: show only changed options"
|
msgid "> `d`: show only changed options"
|
||||||
@@ -16690,7 +16939,9 @@ msgstr ""
|
|||||||
msgid "> type `command_run`: command(s) (required)"
|
msgid "> type `command_run`: command(s) (required)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
msgid ""
|
||||||
|
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||||
|
"calls"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `config`: name(s) of option (required)"
|
msgid "> type `config`: name(s) of option (required)"
|
||||||
@@ -17531,3 +17782,35 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"%s%s: nelze akceptovat obnovení souboru \"%s\" (port: %d, počáteční pozice: "
|
"%s%s: nelze akceptovat obnovení souboru \"%s\" (port: %d, počáteční pozice: "
|
||||||
"%llu): xfer nenalezen nebo není připraven pro přenos"
|
"%llu): xfer nenalezen nebo není připraven pro přenos"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Welcome to WeeChat!\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
|
#~ "quickstart guide, and the user's guide if you have some time; they "
|
||||||
|
#~ "explain main WeeChat concepts.\n"
|
||||||
|
#~ "All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Moreover, there is inline help with /help on all commands and options "
|
||||||
|
#~ "(use Tab key to complete the name).\n"
|
||||||
|
#~ "The command /fset can help to customize WeeChat.\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "You can add and connect to an IRC server with /server and /connect "
|
||||||
|
#~ "commands (see /help server)."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Vítejte v WeeChatu!\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Pokud objevujete WeeChat je doporučeno si prečíst alespoň \"quickstart\" "
|
||||||
|
#~ "průvodce, a pokud máte trochu času tak uživatelskou příručku, oboje vám "
|
||||||
|
#~ "vyvětlí hlavní koncepty WeeChatu.\n"
|
||||||
|
#~ "Veškerá dokumentace WeeChatu je dostupná na adrese: https://weechat.org/"
|
||||||
|
#~ "doc/\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Navíc je zde dostupná integrovaná nápověda /help fungující na všech "
|
||||||
|
#~ "příkazech a nastaveních ( použijte Tab klávesu pro doplňování názvů).\n"
|
||||||
|
#~ "Příkaz /iset (script iset.pl) může pomoci upravit WeeChat\" /script "
|
||||||
|
#~ "install iset.pl\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Můžete přidat IRC server a připojit se k němu pomocí príkazů /server a /"
|
||||||
|
#~ "connect ( podívejte se na /help server)."
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
#
|
#
|
||||||
# SPDX-FileCopyrightText: 2005 Rudolf Polzer <weechat-te@durchnull.de>
|
# SPDX-FileCopyrightText: 2005 Rudolf Polzer <weechat-te@durchnull.de>
|
||||||
# SPDX-FileCopyrightText: 2006-2007 Thomas Schuetz <i18n@internet-villa.de>
|
# SPDX-FileCopyrightText: 2006-2007 Thomas Schuetz <i18n@internet-villa.de>
|
||||||
# SPDX-FileCopyrightText: 2009-2019, 2023, 2024, 2025 Nils Görs <weechatter@arcor.de>
|
# SPDX-FileCopyrightText: 2009-2026 Nils Görs <weechatter@arcor.de>
|
||||||
|
# SPDX-FileCopyrightText: 2018 w8rabbit <w8rabbit@mail.i2p>
|
||||||
# SPDX-FileCopyrightText: 2015 Sven Knurr <zeug@tuxproject.de>
|
# SPDX-FileCopyrightText: 2015 Sven Knurr <zeug@tuxproject.de>
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
@@ -21,18 +22,14 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
# along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
#
|
|
||||||
# w8rabbit <w8rabbit@mail.i2p>, 2018.
|
|
||||||
# Nils Görs <>, 2022-2026.
|
|
||||||
#
|
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: WeeChat\n"
|
"Project-Id-Version: WeeChat\n"
|
||||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||||
"POT-Creation-Date: 2026-06-08 22:23+0200\n"
|
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||||
"PO-Revision-Date: 2026-06-09 10:41+0200\n"
|
"PO-Revision-Date: 2026-06-28 08:28+0200\n"
|
||||||
"Last-Translator: Nils Görs <weechatter@arcor.de>\n"
|
"Last-Translator: Nils Görs <weechatter@arcor.de>\n"
|
||||||
"Language-Team: German - Germany <weechat-dev@nongnu.org>\n"
|
"Language-Team: German <weechatter@arcor.de>\n"
|
||||||
"Language: de\n"
|
"Language: de\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@@ -1006,6 +1003,55 @@ msgstr "Einstellung erstellt: "
|
|||||||
msgid "%sFunction \"%s\" is not available on this system"
|
msgid "%sFunction \"%s\" is not available on this system"
|
||||||
msgstr "%sFunktion \"%s\" ist auf dem Rechner nicht verfügbar"
|
msgstr "%sFunktion \"%s\" ist auf dem Rechner nicht verfügbar"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "not available"
|
||||||
|
msgid "No theme available"
|
||||||
|
msgstr "nicht verfügbar"
|
||||||
|
|
||||||
|
msgid "Themes:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " %s %s%s%s (file)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sKey \"%s\" not found"
|
||||||
|
msgid "%sTheme \"%s\" not found"
|
||||||
|
msgstr "%sTastenbelegung \"%s\" nicht gefunden"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Option \"%s%s%s\":"
|
||||||
|
msgid "Theme \"%s%s%s\":"
|
||||||
|
msgstr "Einstellung \"%s%s%s\":"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid " file: %s"
|
||||||
|
msgid " source: %s"
|
||||||
|
msgstr " Datei: %s"
|
||||||
|
|
||||||
|
msgid " source: built-in (in-memory)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "description"
|
||||||
|
msgid " description: %s"
|
||||||
|
msgstr "Beschreibung"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid " file: %s"
|
||||||
|
msgid " date: %s"
|
||||||
|
msgstr " Datei: %s"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "WeeChat version"
|
||||||
|
msgid " WeeChat version: %s"
|
||||||
|
msgstr "WeeChat-Version"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " overrides: %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sFailed to unset option \"%s\""
|
msgid "%sFailed to unset option \"%s\""
|
||||||
msgstr "%sEinstellung \"%s\" konnte nicht zurück gesetzt werden"
|
msgstr "%sEinstellung \"%s\" konnte nicht zurück gesetzt werden"
|
||||||
@@ -4053,6 +4099,86 @@ msgstr ""
|
|||||||
msgid "number: number of processes to clean"
|
msgid "number: number of processes to clean"
|
||||||
msgstr "Anzahl: Anzahl der zu bereinigenden Prozesse"
|
msgstr "Anzahl: Anzahl der zu bereinigenden Prozesse"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "manage custom bar items"
|
||||||
|
msgid "manage color themes"
|
||||||
|
msgstr "Verwalten von benutzerdefinierten Bar-Items"
|
||||||
|
|
||||||
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
|
msgid ""
|
||||||
|
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||||
|
"<new> || del <name> || info <name>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid ""
|
||||||
|
#| "raw[list]: list remote relay servers (without argument, this list is "
|
||||||
|
#| "displayed)"
|
||||||
|
msgid ""
|
||||||
|
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||||
|
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||||
|
"marked with \"->\""
|
||||||
|
msgstr ""
|
||||||
|
"raw[list]: listet relay-Server auf (ohne Angabe von Argumente wird diese "
|
||||||
|
"Liste standardmäßig ausgegeben)"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "raw[tags]: display tags for lines"
|
||||||
|
msgid "raw[-backups]: display backup theme files"
|
||||||
|
msgstr ""
|
||||||
|
"raw[tags]: schaltet für jede Zeile die dazugehörigen Schlagwörter an / aus"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||||
|
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||||
|
"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 <name>.theme in directory "
|
||||||
|
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||||
|
"the name must not match a built-in theme or start with \"backup-\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "raw[rename]: rename a filter"
|
||||||
|
msgid "raw[rename]: rename a user theme file"
|
||||||
|
msgstr "raw[rename]: benennt einen Filter um"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "raw[del]: delete a server"
|
||||||
|
msgid "raw[del]: delete a user theme file"
|
||||||
|
msgstr "raw[del]: entfernt einen Server"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[info]: display details on a theme (name, description, creation date, "
|
||||||
|
"WeeChat version, number of option overrides)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "name: name of trigger"
|
||||||
|
msgid "name: name of a theme"
|
||||||
|
msgstr "name: Name des Triggers"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||||
|
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||||
|
"directory \"themes\" inside the WeeChat configuration directory."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By default, `/theme apply` command creates a backup of current themable "
|
||||||
|
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||||
|
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||||
|
"backup-<timestamp>`. This is controlled by the option "
|
||||||
|
"weechat.look.theme_backup."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "toggle value of a config option"
|
msgid "toggle value of a config option"
|
||||||
msgstr "den Wert einer Konfigurationsoption umschalten"
|
msgstr "den Wert einer Konfigurationsoption umschalten"
|
||||||
|
|
||||||
@@ -4710,6 +4836,15 @@ msgstr ""
|
|||||||
msgid "names of layouts"
|
msgid "names of layouts"
|
||||||
msgstr "Namen der Layouts"
|
msgstr "Namen der Layouts"
|
||||||
|
|
||||||
|
msgid "names of themes (built-ins + user files + backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of user theme files (without built-ins and backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "names of secured data (file sec.conf, section data)"
|
msgid "names of secured data (file sec.conf, section data)"
|
||||||
msgstr "Namen der geschützten Daten (Datei sec.conf, section data)"
|
msgstr "Namen der geschützten Daten (Datei sec.conf, section data)"
|
||||||
|
|
||||||
@@ -5922,6 +6057,20 @@ msgstr ""
|
|||||||
msgid "number of spaces used to display tabs in messages"
|
msgid "number of spaces used to display tabs in messages"
|
||||||
msgstr "Anzahl an Leerzeichen um Tabulatoren in Nachrichten darzustellen"
|
msgstr "Anzahl an Leerzeichen um Tabulatoren in Nachrichten darzustellen"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"name of the last theme applied with command /theme (set automatically, do "
|
||||||
|
"not change manually); informational only, the theme is not re-applied at "
|
||||||
|
"startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"create a backup theme file with the current themable options before applying "
|
||||||
|
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||||
|
"is aborted (no option is changed); the backup file is written to directory "
|
||||||
|
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||||
|
"with the command: `/theme apply backup-<timestamp>`"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"time format for dates converted to strings and displayed in messages (see "
|
"time format for dates converted to strings and displayed in messages (see "
|
||||||
"man strftime for date/time specifiers)"
|
"man strftime for date/time specifiers)"
|
||||||
@@ -7020,6 +7169,122 @@ msgstr "Die Systemfunktion „%s“ ist nicht verfügbar"
|
|||||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||||
msgstr "Ressourcennutzung (siehe „man getrusage“ für Hilfe):"
|
msgstr "Ressourcennutzung (siehe „man getrusage“ für Hilfe):"
|
||||||
|
|
||||||
|
msgid "WeeChat default theme for light-background terminals"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Automatic backup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sKey \"%s\" not found"
|
||||||
|
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||||
|
msgstr "%sTastenbelegung \"%s\" nicht gefunden"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s: script \"%s\" is not installed"
|
||||||
|
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||||
|
msgstr "%s: Skript \"%s\" ist nicht installiert"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: malformed section header"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sWarning: %s, line %d: ignoring unknown section identifier (\"%s\")"
|
||||||
|
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||||
|
msgstr "%sWarnung: %s, Zeile %d: unbekannte Sektion wird ignoriert (\"%s\")"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: missing '=' separator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid ""
|
||||||
|
#| "%sWarning: %s, line %d: ignoring unknown option for section \"%s\": %s"
|
||||||
|
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
"%sWarnung: %s, Zeile %d: ignoriert unbekannte Einstellung für Sektion "
|
||||||
|
"\"%s\": %s"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to parse theme file \"%s\""
|
||||||
|
msgstr "%s%s: Datei \"%s\" Analyse nicht möglich"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%sUnable to create theme backup; aborting apply (disable option "
|
||||||
|
"weechat.look.theme_backup to force)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
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"
|
||||||
|
msgstr "%sDer Buffer-Name \"%s\" ist für WeeChat reserviert"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sBuffer name \"%s\" is reserved for WeeChat"
|
||||||
|
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||||
|
msgstr "%sDer Buffer-Name \"%s\" ist für WeeChat reserviert"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to save theme \"%s\""
|
||||||
|
msgstr "%s%s: Datei \"%s\" Analyse nicht möglich"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Option \"%s%s%s\":"
|
||||||
|
msgid "Theme saved to: %s"
|
||||||
|
msgstr "Einstellung \"%s%s%s\":"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sCannot create file \"%s\""
|
||||||
|
msgid "%sCannot rename built-in theme \"%s\""
|
||||||
|
msgstr "%sDie Datei \"%s\" kann nicht erstellt werden"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sNew name is the same as old name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sBar \"%s\" already exists"
|
||||||
|
msgid "%sTheme \"%s\" already exists"
|
||||||
|
msgstr "%sBar \"%s\" existiert bereits"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sUnable to rename filter \"%s\" to \"%s\""
|
||||||
|
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||||
|
msgstr "%sUmbenennung des Filters von \"%s\" in \"%s\" nicht möglich"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Trigger \"%s\" renamed to \"%s\""
|
||||||
|
msgid "Theme \"%s\" renamed to \"%s\""
|
||||||
|
msgstr "Trigger \"%s\" wurde umbenannt. Der neue Name lautet \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sCannot create file \"%s\""
|
||||||
|
msgid "%sCannot delete built-in theme \"%s\""
|
||||||
|
msgstr "%sDie Datei \"%s\" kann nicht erstellt werden"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to delete theme \"%s\""
|
||||||
|
msgstr "%s%s: Datei \"%s\" Analyse nicht möglich"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme deleted: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -7182,37 +7447,36 @@ msgstr "Ende der URL-Übertragung '%s', Übertragung gestoppt"
|
|||||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||||
msgstr "WeeChat läuft im Hintergrundmodus (ctrl-c zum Beenden)."
|
msgstr "WeeChat läuft im Hintergrundmodus (ctrl-c zum Beenden)."
|
||||||
|
|
||||||
|
msgid "Welcome to WeeChat!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Welcome to WeeChat!\n"
|
|
||||||
"\n"
|
|
||||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||||
"main WeeChat concepts.\n"
|
"main WeeChat concepts."
|
||||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
#, c-format
|
||||||
|
msgid "All WeeChat docs are available at: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"Moreover, there is inline help with /help on all commands and options (use "
|
"Moreover, there is inline help with /help on all commands and options (use "
|
||||||
"Tab key to complete the name).\n"
|
"Tab key to complete the name)."
|
||||||
"The command /fset can help to customize WeeChat.\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
msgid "The command /fset can help to customize WeeChat."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"You can add and connect to an IRC server with /server and /connect commands "
|
"You can add and connect to an IRC server with /server and /connect commands "
|
||||||
"(see /help server)."
|
"(see /help server)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Willkommen zu WeeChat!\n"
|
|
||||||
"\n"
|
msgid ""
|
||||||
"Wenn Du WeeChat nutzen möchtest dann solltest Du zumindest einen Blick in "
|
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||||
"die Quickstart-Anleitung werfen. Wir empfehlen aber um den vollen "
|
"switch back to the default dark theme."
|
||||||
"Funktionsumfang und das Konzept hinter WeeChat kennen zu lernen, die "
|
msgstr ""
|
||||||
"Benutzeranleitung zu lesen.\n"
|
|
||||||
"Die vollständige Dokumentation findet man unter: https://weechat.org/doc/\n"
|
|
||||||
"\n"
|
|
||||||
"Darüber hinaus ist in WeeChat eine interne Hilfe integriert die man mit /"
|
|
||||||
"help auf alle Befehle und Optionen anwenden kann (mittels der TAB-Taste kann "
|
|
||||||
"eine Namensvervollständigung durchgeführt werden).\n"
|
|
||||||
"Mit dem Befehl /fset kann WeeChat sehr einfach und übersichtlich den eigenen "
|
|
||||||
"Bedürfnissen angepasst werden.\n"
|
|
||||||
"\n"
|
|
||||||
"Um einen IRC Server zu erstellen und sich mit selbigem zu Verbinden müssen "
|
|
||||||
"die Befehle /server und /connect verwendet werden (siehe /help server)."
|
|
||||||
|
|
||||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -9039,9 +9303,14 @@ msgstr "> `xxx`: zeigt nur Optionen mit \"xxx\" im Namen"
|
|||||||
msgid "> `f:xxx`: show only configuration file \"xxx\""
|
msgid "> `f:xxx`: show only configuration file \"xxx\""
|
||||||
msgstr "> `f:xxx`: zeigt nur Konfigurationsdatei \"xxx\" an"
|
msgstr "> `f:xxx`: zeigt nur Konfigurationsdatei \"xxx\" an"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid ""
|
||||||
|
#| "> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/"
|
||||||
|
#| "integer/string/color/enum)"
|
||||||
msgid ""
|
msgid ""
|
||||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||||
"string/color/enum)"
|
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||||
|
"options that can be used in themes, regardless of type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"> `t:xxx`: zeigt nur Optionen des entsprechenden Typs, \"xxx\" (bool/int/str/"
|
"> `t:xxx`: zeigt nur Optionen des entsprechenden Typs, \"xxx\" (bool/int/str/"
|
||||||
"col/enum oder boolean/Ganzzahl/Zeichenkette/Farbe/Aufzählung)"
|
"col/enum oder boolean/Ganzzahl/Zeichenkette/Farbe/Aufzählung)"
|
||||||
@@ -18181,10 +18450,12 @@ msgstr ""
|
|||||||
msgid "> type `command_run`: command(s) (required)"
|
msgid "> type `command_run`: command(s) (required)"
|
||||||
msgstr "> type `command_run`: Befehl(e) (erforderlich)"
|
msgstr "> type `command_run`: Befehl(e) (erforderlich)"
|
||||||
|
|
||||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
msgid ""
|
||||||
|
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||||
|
"calls"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"> type `timer`: Intervall (erforderlich), an Sekunden anpassen, maximale "
|
"> type `timer`: Intervall (erforderlich, in Millisekunden), an Sekunde "
|
||||||
"Anzahl an Aufrufen"
|
"anpassen, maximale Anzahl an Aufrufen"
|
||||||
|
|
||||||
msgid "> type `config`: name(s) of option (required)"
|
msgid "> type `config`: name(s) of option (required)"
|
||||||
msgstr "> type `config`: Name der Einstellung (erforderlich)"
|
msgstr "> type `config`: Name der Einstellung (erforderlich)"
|
||||||
@@ -19105,3 +19376,37 @@ msgstr ""
|
|||||||
"%s%s Datei \"%s\" zum Fortsetzen der Übertragung wird nicht akzeptiert "
|
"%s%s Datei \"%s\" zum Fortsetzen der Übertragung wird nicht akzeptiert "
|
||||||
"(Port: %d, Startposition: %llu): xfer nicht gefunden oder nicht bereit für "
|
"(Port: %d, Startposition: %llu): xfer nicht gefunden oder nicht bereit für "
|
||||||
"Transfer"
|
"Transfer"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Welcome to WeeChat!\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
|
#~ "quickstart guide, and the user's guide if you have some time; they "
|
||||||
|
#~ "explain main WeeChat concepts.\n"
|
||||||
|
#~ "All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Moreover, there is inline help with /help on all commands and options "
|
||||||
|
#~ "(use Tab key to complete the name).\n"
|
||||||
|
#~ "The command /fset can help to customize WeeChat.\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "You can add and connect to an IRC server with /server and /connect "
|
||||||
|
#~ "commands (see /help server)."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Willkommen zu WeeChat!\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Wenn Du WeeChat nutzen möchtest dann solltest Du zumindest einen Blick in "
|
||||||
|
#~ "die Quickstart-Anleitung werfen. Wir empfehlen aber um den vollen "
|
||||||
|
#~ "Funktionsumfang und das Konzept hinter WeeChat kennen zu lernen, die "
|
||||||
|
#~ "Benutzeranleitung zu lesen.\n"
|
||||||
|
#~ "Die vollständige Dokumentation findet man unter: https://weechat.org/"
|
||||||
|
#~ "doc/\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Darüber hinaus ist in WeeChat eine interne Hilfe integriert die man mit /"
|
||||||
|
#~ "help auf alle Befehle und Optionen anwenden kann (mittels der TAB-Taste "
|
||||||
|
#~ "kann eine Namensvervollständigung durchgeführt werden).\n"
|
||||||
|
#~ "Mit dem Befehl /fset kann WeeChat sehr einfach und übersichtlich den "
|
||||||
|
#~ "eigenen Bedürfnissen angepasst werden.\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Um einen IRC Server zu erstellen und sich mit selbigem zu Verbinden "
|
||||||
|
#~ "müssen die Befehle /server und /connect verwendet werden (siehe /help "
|
||||||
|
#~ "server)."
|
||||||
|
|||||||
@@ -24,10 +24,10 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: WeeChat\n"
|
"Project-Id-Version: WeeChat\n"
|
||||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||||
"POT-Creation-Date: 2026-06-08 22:23+0200\n"
|
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||||
"PO-Revision-Date: 2026-05-30 14:01+0200\n"
|
"PO-Revision-Date: 2026-06-28 08:46+0200\n"
|
||||||
"Last-Translator: Santiago Forero <santiago@forero.xyz>\n"
|
"Last-Translator: Santiago Forero <santiago@forero.xyz>\n"
|
||||||
"Language-Team: Spanish - Spain <weechat-dev@nongnu.org>\n"
|
"Language-Team: Spanish <weechat-dev@nongnu.org>\n"
|
||||||
"Language: es\n"
|
"Language: es\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@@ -1034,6 +1034,54 @@ msgstr "Opción creada: "
|
|||||||
msgid "%sFunction \"%s\" is not available on this system"
|
msgid "%sFunction \"%s\" is not available on this system"
|
||||||
msgstr "%s: atención: diccionario \"%s\" no está disponible en su sistema"
|
msgstr "%s: atención: diccionario \"%s\" no está disponible en su sistema"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "No theme available"
|
||||||
|
msgstr "Variables"
|
||||||
|
|
||||||
|
msgid "Themes:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " %s %s%s%s (file)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sKey \"%s\" not found"
|
||||||
|
msgid "%sTheme \"%s\" not found"
|
||||||
|
msgstr "%sTecla \"%s\" no encontrada"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Option \"%s%s%s\":"
|
||||||
|
msgid "Theme \"%s%s%s\":"
|
||||||
|
msgstr "Opción \"%s%s%s\":"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid " file: %s"
|
||||||
|
msgid " source: %s"
|
||||||
|
msgstr " archivo: %s"
|
||||||
|
|
||||||
|
msgid " source: built-in (in-memory)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "description"
|
||||||
|
msgid " description: %s"
|
||||||
|
msgstr "descripción"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid " file: %s"
|
||||||
|
msgid " date: %s"
|
||||||
|
msgstr " archivo: %s"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "WeeChat version"
|
||||||
|
msgid " WeeChat version: %s"
|
||||||
|
msgstr "versión de WeeChat"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " overrides: %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sFailed to unset option \"%s\""
|
msgid "%sFailed to unset option \"%s\""
|
||||||
msgstr "%sNo se pudo deshacer la opción \"%s\""
|
msgstr "%sNo se pudo deshacer la opción \"%s\""
|
||||||
@@ -3751,6 +3799,78 @@ msgstr ""
|
|||||||
msgid "number: number of processes to clean"
|
msgid "number: number of processes to clean"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "list of bar items"
|
||||||
|
msgid "manage color themes"
|
||||||
|
msgstr "lista de elementos de barra"
|
||||||
|
|
||||||
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
|
msgid ""
|
||||||
|
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||||
|
"<new> || del <name> || info <name>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "list of filters"
|
||||||
|
msgid ""
|
||||||
|
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||||
|
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||||
|
"marked with \"->\""
|
||||||
|
msgstr "lista de filtros"
|
||||||
|
|
||||||
|
msgid "raw[-backups]: display backup theme files"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||||
|
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||||
|
"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 <name>.theme in directory "
|
||||||
|
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||||
|
"the name must not match a built-in theme or start with \"backup-\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "names of filters"
|
||||||
|
msgid "raw[rename]: rename a user theme file"
|
||||||
|
msgstr "nombre de los filtros"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "get/set channel topic"
|
||||||
|
msgid "raw[del]: delete a user theme file"
|
||||||
|
msgstr "ver/establecer el tema del canal"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[info]: display details on a theme (name, description, creation date, "
|
||||||
|
"WeeChat version, number of option overrides)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "name: name of a theme"
|
||||||
|
msgstr "habilitar soporte para ratón"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||||
|
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||||
|
"directory \"themes\" inside the WeeChat configuration directory."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By default, `/theme apply` command creates a backup of current themable "
|
||||||
|
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||||
|
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||||
|
"backup-<timestamp>`. This is controlled by the option "
|
||||||
|
"weechat.look.theme_backup."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "values for a configuration option"
|
#| msgid "values for a configuration option"
|
||||||
msgid "toggle value of a config option"
|
msgid "toggle value of a config option"
|
||||||
@@ -4337,6 +4457,15 @@ msgstr "áreas (\"chat\" o nombre de barra) para movimiento libre del cursor"
|
|||||||
msgid "names of layouts"
|
msgid "names of layouts"
|
||||||
msgstr "nombres de temas"
|
msgstr "nombres de temas"
|
||||||
|
|
||||||
|
msgid "names of themes (built-ins + user files + backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of user theme files (without built-ins and backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "names of secured data (file sec.conf, section data)"
|
msgid "names of secured data (file sec.conf, section data)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -5362,6 +5491,20 @@ msgstr ""
|
|||||||
msgid "number of spaces used to display tabs in messages"
|
msgid "number of spaces used to display tabs in messages"
|
||||||
msgstr "localización para traducción de mensajes"
|
msgstr "localización para traducción de mensajes"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"name of the last theme applied with command /theme (set automatically, do "
|
||||||
|
"not change manually); informational only, the theme is not re-applied at "
|
||||||
|
"startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"create a backup theme file with the current themable options before applying "
|
||||||
|
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||||
|
"is aborted (no option is changed); the backup file is written to directory "
|
||||||
|
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||||
|
"with the command: `/theme apply backup-<timestamp>`"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"time format for dates converted to strings and displayed in messages (see "
|
"time format for dates converted to strings and displayed in messages (see "
|
||||||
@@ -6343,6 +6486,117 @@ msgstr "%s: error: diccionario \"%s\" no está disponible en tu sistema"
|
|||||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||||
msgstr "Uso de memoria (ver en \"man mallinfo\" por ayuda):"
|
msgstr "Uso de memoria (ver en \"man mallinfo\" por ayuda):"
|
||||||
|
|
||||||
|
msgid "WeeChat default theme for light-background terminals"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Automatic backup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sKey \"%s\" not found"
|
||||||
|
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||||
|
msgstr "%sTecla \"%s\" no encontrada"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s: script \"%s\" is not installed"
|
||||||
|
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||||
|
msgstr "%s: el script \"%s\" no esta instalado"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: malformed section header"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||||
|
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
"%sAtención: %s, línea %d: identificador de sección desconocido (\"%s\")"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: missing '=' separator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sWarning: %s, line %d: unknown option for section \"%s\": %s"
|
||||||
|
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
"%sAtención: %s, línea %d: opción desconocida para la sección \"%s\": %s"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to parse theme file \"%s\""
|
||||||
|
msgstr "%s%s: no es posible analizar el archivo \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%sUnable to create theme backup; aborting apply (disable option "
|
||||||
|
"weechat.look.theme_backup to force)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
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"
|
||||||
|
msgstr "%sEl nombre del buffer \"%s\" está reservado por WeeChat"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sBuffer name \"%s\" is reserved for WeeChat"
|
||||||
|
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||||
|
msgstr "%sEl nombre del buffer \"%s\" está reservado por WeeChat"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to save theme \"%s\""
|
||||||
|
msgstr "%s%s: no es posible analizar el archivo \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Option \"%s%s%s\":"
|
||||||
|
msgid "Theme saved to: %s"
|
||||||
|
msgstr "Opción \"%s%s%s\":"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sCannot rename built-in theme \"%s\""
|
||||||
|
msgstr "%sError: no es posible crear el archivo \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sNew name is the same as old name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sTheme \"%s\" already exists"
|
||||||
|
msgstr "%sError: el filtro \"%s\" ya existe"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sUnable to rename filter \"%s\" to \"%s\""
|
||||||
|
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||||
|
msgstr "%sError: no se pudo renombrar el filtro \"%s\" a \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "Theme \"%s\" renamed to \"%s\""
|
||||||
|
msgstr "Filtro \"%s\" renombrado a \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sCannot delete built-in theme \"%s\""
|
||||||
|
msgstr "%sError: no es posible crear el archivo \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to delete theme \"%s\""
|
||||||
|
msgstr "%s%s: no es posible analizar el archivo \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme deleted: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||||
msgstr "%sError al actualizar WeeChat con el archivo \"%s\":"
|
msgstr "%sError al actualizar WeeChat con el archivo \"%s\":"
|
||||||
@@ -6510,35 +6764,36 @@ msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"WeeChat se está ejecutando en modo de segundo plano (Ctrl-C para salir)."
|
"WeeChat se está ejecutando en modo de segundo plano (Ctrl-C para salir)."
|
||||||
|
|
||||||
|
msgid "Welcome to WeeChat!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Welcome to WeeChat!\n"
|
|
||||||
"\n"
|
|
||||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||||
"main WeeChat concepts.\n"
|
"main WeeChat concepts."
|
||||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
#, c-format
|
||||||
|
msgid "All WeeChat docs are available at: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"Moreover, there is inline help with /help on all commands and options (use "
|
"Moreover, there is inline help with /help on all commands and options (use "
|
||||||
"Tab key to complete the name).\n"
|
"Tab key to complete the name)."
|
||||||
"The command /fset can help to customize WeeChat.\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
msgid "The command /fset can help to customize WeeChat."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"You can add and connect to an IRC server with /server and /connect commands "
|
"You can add and connect to an IRC server with /server and /connect commands "
|
||||||
"(see /help server)."
|
"(see /help server)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"¡Bienvenido a WeeChat!\n"
|
|
||||||
"\n"
|
msgid ""
|
||||||
"Si estás conociendo WeeChat, es recomendable que leas la guia de inicio, y "
|
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||||
"la guia de usuario si tienes tiempo; en ellas se explicanlo conceptos "
|
"switch back to the default dark theme."
|
||||||
"principales de WeeChat.\n"
|
msgstr ""
|
||||||
"Toda la documentación de WeeChat se encuentra disponible en: https://"
|
|
||||||
"weechat.org/doc/\n"
|
|
||||||
"\n"
|
|
||||||
"Adicionalmente, hay un menú de ayuda con el comando /help con todos los "
|
|
||||||
"comandos y opciones (usa el tabulador (Tab) para completar el nombre).\n"
|
|
||||||
"El comando /fset puede ayudar a customizar WeeChat.\n"
|
|
||||||
"\n"
|
|
||||||
"Puedes agregar y conectarte a un servidor IRC con los comandos /server y /"
|
|
||||||
"connect (más información en /help server)."
|
|
||||||
|
|
||||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -8054,7 +8309,8 @@ msgstr "Archivo de configuración \"%s\" desconocido"
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||||
"string/color/enum)"
|
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||||
|
"options that can be used in themes, regardless of type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> `d`: show only changed options"
|
msgid "> `d`: show only changed options"
|
||||||
@@ -16980,7 +17236,9 @@ msgstr ""
|
|||||||
msgid "> type `command_run`: command(s) (required)"
|
msgid "> type `command_run`: command(s) (required)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
msgid ""
|
||||||
|
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||||
|
"calls"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `config`: name(s) of option (required)"
|
msgid "> type `config`: name(s) of option (required)"
|
||||||
@@ -17829,3 +18087,33 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"%s%s: no es posible aceptar la continuación del archivo \"%s\" (puerto: %d, "
|
"%s%s: no es posible aceptar la continuación del archivo \"%s\" (puerto: %d, "
|
||||||
"posición inicial: %llu): xfer encontrado o no está listo para transferir"
|
"posición inicial: %llu): xfer encontrado o no está listo para transferir"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Welcome to WeeChat!\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
|
#~ "quickstart guide, and the user's guide if you have some time; they "
|
||||||
|
#~ "explain main WeeChat concepts.\n"
|
||||||
|
#~ "All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Moreover, there is inline help with /help on all commands and options "
|
||||||
|
#~ "(use Tab key to complete the name).\n"
|
||||||
|
#~ "The command /fset can help to customize WeeChat.\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "You can add and connect to an IRC server with /server and /connect "
|
||||||
|
#~ "commands (see /help server)."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "¡Bienvenido a WeeChat!\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Si estás conociendo WeeChat, es recomendable que leas la guia de inicio, "
|
||||||
|
#~ "y la guia de usuario si tienes tiempo; en ellas se explicanlo conceptos "
|
||||||
|
#~ "principales de WeeChat.\n"
|
||||||
|
#~ "Toda la documentación de WeeChat se encuentra disponible en: https://"
|
||||||
|
#~ "weechat.org/doc/\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Adicionalmente, hay un menú de ayuda con el comando /help con todos los "
|
||||||
|
#~ "comandos y opciones (usa el tabulador (Tab) para completar el nombre).\n"
|
||||||
|
#~ "El comando /fset puede ayudar a customizar WeeChat.\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Puedes agregar y conectarte a un servidor IRC con los comandos /server y /"
|
||||||
|
#~ "connect (más información en /help server)."
|
||||||
|
|||||||
@@ -23,10 +23,10 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: WeeChat\n"
|
"Project-Id-Version: WeeChat\n"
|
||||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||||
"POT-Creation-Date: 2026-06-08 22:23+0200\n"
|
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||||
"PO-Revision-Date: 2026-06-08 23:14+0200\n"
|
"PO-Revision-Date: 2026-07-04 22:02+0200\n"
|
||||||
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
|
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
|
||||||
"Language-Team: French - France <weechat-dev@nongnu.org>\n"
|
"Language-Team: French <flashcode@flashtux.org>\n"
|
||||||
"Language: fr\n"
|
"Language: fr\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@@ -989,6 +989,47 @@ msgstr "Option créée : "
|
|||||||
msgid "%sFunction \"%s\" is not available on this system"
|
msgid "%sFunction \"%s\" is not available on this system"
|
||||||
msgstr "%sLa fonction \"%s\" n'est pas disponible sur ce système"
|
msgstr "%sLa fonction \"%s\" n'est pas disponible sur ce système"
|
||||||
|
|
||||||
|
msgid "No theme available"
|
||||||
|
msgstr "Aucun thème disponible"
|
||||||
|
|
||||||
|
msgid "Themes:"
|
||||||
|
msgstr "Thèmes :"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " %s %s%s%s (file)"
|
||||||
|
msgstr " %s %s%s%s (fichier)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sTheme \"%s\" not found"
|
||||||
|
msgstr "%sThème \"%s\" non trouvé"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme \"%s%s%s\":"
|
||||||
|
msgstr "Thème \"%s%s%s\" :"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " source: %s"
|
||||||
|
msgstr " source : %s"
|
||||||
|
|
||||||
|
msgid " source: built-in (in-memory)"
|
||||||
|
msgstr " source : intégré (en mémoire)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " description: %s"
|
||||||
|
msgstr " description : %s"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " date: %s"
|
||||||
|
msgstr " date : %s"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " WeeChat version: %s"
|
||||||
|
msgstr " version de WeeChat : %s"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " overrides: %d"
|
||||||
|
msgstr " remplace : %d"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sFailed to unset option \"%s\""
|
msgid "%sFailed to unset option \"%s\""
|
||||||
msgstr "%sImpossible de supprimer/réinitialiser l'option \"%s\""
|
msgstr "%sImpossible de supprimer/réinitialiser l'option \"%s\""
|
||||||
@@ -3985,6 +4026,94 @@ msgstr ""
|
|||||||
msgid "number: number of processes to clean"
|
msgid "number: number of processes to clean"
|
||||||
msgstr "nombre : nombre de processus à nettoyer"
|
msgstr "nombre : nombre de processus à nettoyer"
|
||||||
|
|
||||||
|
msgid "manage color themes"
|
||||||
|
msgstr "gestion des thèmes de couleurs"
|
||||||
|
|
||||||
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
|
msgid ""
|
||||||
|
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||||
|
"<new> || del <name> || info <name>"
|
||||||
|
msgstr ""
|
||||||
|
"[list [-backups]] || apply <nom> || reset || save <nom> || rename <ancien> "
|
||||||
|
"<nouveau> || del <nom> || info <nom>"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||||
|
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||||
|
"marked with \"->\""
|
||||||
|
msgstr ""
|
||||||
|
"raw[list] : afficher les thèmes enregistrés et tous les fichiers *.theme "
|
||||||
|
"dans le répertoire de configuration de WeeChat ; le thème actif "
|
||||||
|
"(correspondant à weechat.look.theme) est marqué avec \"->\""
|
||||||
|
|
||||||
|
msgid "raw[-backups]: display backup theme files"
|
||||||
|
msgstr "raw[-backups] : afficher les fichier de sauvegarde de thèmes"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||||
|
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||||
|
"shadows any built-in theme of the same name"
|
||||||
|
msgstr ""
|
||||||
|
"raw[apply] : appliquer un thème (définir chaque option personnalisable par "
|
||||||
|
"thème à la valeur du thème) ; si un fichier nommé <nom>.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 <name>.theme in directory "
|
||||||
|
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||||
|
"the name must not match a built-in theme or start with \"backup-\""
|
||||||
|
msgstr ""
|
||||||
|
"raw[save] : sauvegarder les options de thème dans un fichier <nom>.theme "
|
||||||
|
"dans le répertoire \"themes\" ; toutes les options de thème sont écrites, le "
|
||||||
|
"fichier est donc autonome ; le nom ne doit pas correspondre à un thème "
|
||||||
|
"intégré ou démarrer par \"backup-\""
|
||||||
|
|
||||||
|
msgid "raw[rename]: rename a user theme file"
|
||||||
|
msgstr "raw[rename] : renommer un fichier de thème utilisateur"
|
||||||
|
|
||||||
|
msgid "raw[del]: delete a user theme file"
|
||||||
|
msgstr "raw[del] : supprimer un fichier de thème utilisateur"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[info]: display details on a theme (name, description, creation date, "
|
||||||
|
"WeeChat version, number of option overrides)"
|
||||||
|
msgstr ""
|
||||||
|
"raw[info] : afficher les détails sur un thème (nom, description, date de "
|
||||||
|
"création, version de WeeChat, nombre d'options remplacées)"
|
||||||
|
|
||||||
|
msgid "name: name of a theme"
|
||||||
|
msgstr "nom : nom du thème"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||||
|
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||||
|
"directory \"themes\" inside the WeeChat configuration directory."
|
||||||
|
msgstr ""
|
||||||
|
"Les thèmes sont des ensembles nommés de redéfinitions d'options. Les thèmes "
|
||||||
|
"intégrés sont enregistrés en mémoire par le cœur, les plugins ou les "
|
||||||
|
"scripts ; les thèmes utilisateur sont lus à partir de fichiers situés dans "
|
||||||
|
"le répertoire \"themes\" du répertoire de configuration de WeeChat."
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By default, `/theme apply` command creates a backup of current themable "
|
||||||
|
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||||
|
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||||
|
"backup-<timestamp>`. This is controlled by the option "
|
||||||
|
"weechat.look.theme_backup."
|
||||||
|
msgstr ""
|
||||||
|
"Par défaut, la commande `/theme apply` crée une sauvegarde des valeurs du "
|
||||||
|
"thème actuel dans le répertoire \"themes\" avant de les appliquer (nom de "
|
||||||
|
"fichier : \"backup-<horodatage>.theme\") ; l'état précédent peut être "
|
||||||
|
"restauré à l'aide de la commande `/theme apply backup-<horodatage>`. Ce "
|
||||||
|
"comportement est régi par l'option weechat.look.theme_backup."
|
||||||
|
|
||||||
msgid "toggle value of a config option"
|
msgid "toggle value of a config option"
|
||||||
msgstr "basculer la valeur d'une option de configuration"
|
msgstr "basculer la valeur d'une option de configuration"
|
||||||
|
|
||||||
@@ -4627,6 +4756,17 @@ msgstr "zones (\"chat\" ou un nom de barre) pour le mouvement libre du curseur"
|
|||||||
msgid "names of layouts"
|
msgid "names of layouts"
|
||||||
msgstr "noms des dispositions"
|
msgstr "noms des dispositions"
|
||||||
|
|
||||||
|
msgid "names of themes (built-ins + user files + backups)"
|
||||||
|
msgstr "noms des thèmes (intégrés + fichiers utilisateur + sauvegardes)"
|
||||||
|
|
||||||
|
msgid "names of user theme files (without built-ins and backups)"
|
||||||
|
msgstr "noms des thèmes utilisateur (sans les intégrés et sauvegardes)"
|
||||||
|
|
||||||
|
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||||
|
msgstr ""
|
||||||
|
"noms des fichiers de thèmes sur le disque (fichiers utilisateur + "
|
||||||
|
"sauvegardes, pas les intégrés)"
|
||||||
|
|
||||||
msgid "names of secured data (file sec.conf, section data)"
|
msgid "names of secured data (file sec.conf, section data)"
|
||||||
msgstr "noms de données sécurisées (fichier sec.conf, section data)"
|
msgstr "noms de données sécurisées (fichier sec.conf, section data)"
|
||||||
|
|
||||||
@@ -5800,6 +5940,29 @@ msgid "number of spaces used to display tabs in messages"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"nombre d'espaces utilisés pour afficher les tabulations dans les messages"
|
"nombre d'espaces utilisés pour afficher les tabulations dans les messages"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"name of the last theme applied with command /theme (set automatically, do "
|
||||||
|
"not change manually); informational only, the theme is not re-applied at "
|
||||||
|
"startup"
|
||||||
|
msgstr ""
|
||||||
|
"nom du dernier thème appliqué avec la commande /theme (défini "
|
||||||
|
"automatiquement, ne pas changer manuellement) ; à titre d'information "
|
||||||
|
"seulement, le thème n'est pas réappliqué au démarrage"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"create a backup theme file with the current themable options before applying "
|
||||||
|
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||||
|
"is aborted (no option is changed); the backup file is written to directory "
|
||||||
|
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||||
|
"with the command: `/theme apply backup-<timestamp>`"
|
||||||
|
msgstr ""
|
||||||
|
"créer un fichier de sauvegarde des options de thème actuelles avant "
|
||||||
|
"d'appliquer un thème avec la commande `/theme` ; si le fichier de sauvegarde "
|
||||||
|
"ne peut pas être écrit, l'application est annulée (aucune option n'est "
|
||||||
|
"modifiée) ; le fichier de sauvegarde est enregistré dans le répertoire "
|
||||||
|
"\"themes\" situé dans le répertoire de configuration de WeeChat et peut être "
|
||||||
|
"restauré à l'aide de la commande : `/theme apply backup-<horodatage>`"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"time format for dates converted to strings and displayed in messages (see "
|
"time format for dates converted to strings and displayed in messages (see "
|
||||||
"man strftime for date/time specifiers)"
|
"man strftime for date/time specifiers)"
|
||||||
@@ -6894,6 +7057,109 @@ msgstr "La fonction système \"%s\" n'est pas disponible"
|
|||||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||||
msgstr "Utilisation des ressources (voir \"man getrusage\" pour de l'aide) :"
|
msgstr "Utilisation des ressources (voir \"man getrusage\" pour de l'aide) :"
|
||||||
|
|
||||||
|
msgid "WeeChat default theme for light-background terminals"
|
||||||
|
msgstr "Thème par défaut de WeeChat par défaut pour les terminaux à fond clair"
|
||||||
|
|
||||||
|
msgid "Automatic backup"
|
||||||
|
msgstr "Sauvegarde automatique"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||||
|
msgstr "%sThème : option \"%s\" non trouvée, ignorée"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||||
|
msgstr "%sThème : l'option \"%s\" n'est pas personnalisable par thème, ignorée"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: malformed section header"
|
||||||
|
msgstr "%s%s : ligne %d : en-tête de section mal formé"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||||
|
msgstr "%s%s : ligne %d : section \"%s\" inconnue, ignorée"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: missing '=' separator"
|
||||||
|
msgstr "%s%s : ligne %d : séparateur '=' manquant"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||||
|
msgstr "%s%s : ligne %d : clé [info] \"%s\" inconnue, ignorée"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sFailed to parse theme file \"%s\""
|
||||||
|
msgstr "%sÉchec de l'analyse du fichier de thème \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%sUnable to create theme backup; aborting apply (disable option "
|
||||||
|
"weechat.look.theme_backup to force)"
|
||||||
|
msgstr ""
|
||||||
|
"%sImpossible de créer une sauvegarde du thème ; abandon de l'application "
|
||||||
|
"(désactivez l'option weechat.look.theme_backup pour forcer)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
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"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||||
|
msgstr "%sLe nom \"%s\" est réservé pour un thème intégré"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sFailed to save theme \"%s\""
|
||||||
|
msgstr "%sÉchec de sauvegarde du thème \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme saved to: %s"
|
||||||
|
msgstr "Thème sauvegardé vers : %s"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sCannot rename built-in theme \"%s\""
|
||||||
|
msgstr "%sImpossible de renommer le thème intégré \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sNew name is the same as old name"
|
||||||
|
msgstr "%sLe nouveau nom est le même que l'ancien"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sTheme \"%s\" already exists"
|
||||||
|
msgstr "%sLe thème \"%s\" existe déjà"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||||
|
msgstr "%sImpossible de renommer le thème \"%s\" en \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme \"%s\" renamed to \"%s\""
|
||||||
|
msgstr "Thème \"%s\" renommé en \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sCannot delete built-in theme \"%s\""
|
||||||
|
msgstr "%sImpossible de supprimer le thème intégré \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sFailed to delete theme \"%s\""
|
||||||
|
msgstr "%sImpossible de supprimer le thème \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme deleted: %s"
|
||||||
|
msgstr "Thème supprimé : %s"
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||||
msgstr "%sErreur de mise à jour de WeeChat avec le fichier \"%s\" :"
|
msgstr "%sErreur de mise à jour de WeeChat avec le fichier \"%s\" :"
|
||||||
@@ -7054,36 +7320,46 @@ msgstr "Fin du transfert d'URL '%s', transfert arrêté"
|
|||||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||||
msgstr "WeeChat tourne sans interface (ctrl-c pour quitter)."
|
msgstr "WeeChat tourne sans interface (ctrl-c pour quitter)."
|
||||||
|
|
||||||
|
msgid "Welcome to WeeChat!"
|
||||||
|
msgstr "Bienvenue dans WeeChat !"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Welcome to WeeChat!\n"
|
|
||||||
"\n"
|
|
||||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||||
"main WeeChat concepts.\n"
|
"main WeeChat concepts."
|
||||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
msgstr ""
|
||||||
"\n"
|
"Si vous découvrez WeeChat, il est recommandé de lire au moins le guide de "
|
||||||
|
"démarrage rapide, et le guide utilisateur si vous avez le temps ; ils "
|
||||||
|
"expliquent les concepts principaux de WeeChat."
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "All WeeChat docs are available at: %s"
|
||||||
|
msgstr "Toutes les documentations WeeChat sont disponibles ici : %s"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"Moreover, there is inline help with /help on all commands and options (use "
|
"Moreover, there is inline help with /help on all commands and options (use "
|
||||||
"Tab key to complete the name).\n"
|
"Tab key to complete the name)."
|
||||||
"The command /fset can help to customize WeeChat.\n"
|
msgstr ""
|
||||||
"\n"
|
"De plus, il y a de l'aide en ligne avec /help sur toutes les commandes et "
|
||||||
|
"options (utilisez la touche Tab pour compléter le nom)."
|
||||||
|
|
||||||
|
msgid "The command /fset can help to customize WeeChat."
|
||||||
|
msgstr "La commande /fset peut aider à paramétrer WeeChat."
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"You can add and connect to an IRC server with /server and /connect commands "
|
"You can add and connect to an IRC server with /server and /connect commands "
|
||||||
"(see /help server)."
|
"(see /help server)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Bienvenue dans WeeChat !\n"
|
|
||||||
"\n"
|
|
||||||
"Si vous découvrez WeeChat, il est recommandé de lire au moins le guide de "
|
|
||||||
"démarrage rapide, et le guide utilisateur si vous avez le temps ; ils "
|
|
||||||
"expliquent les concepts principaux de WeeChat.\n"
|
|
||||||
"Toutes les documentations WeeChat sont disponibles ici : https://weechat.org/"
|
|
||||||
"doc/\n"
|
|
||||||
"\n"
|
|
||||||
"De plus, il y a de l'aide en ligne avec /help sur toutes les commandes et "
|
|
||||||
"options (utilisez la touche Tab pour compléter le nom).\n"
|
|
||||||
"La commande /fset peut aider à paramétrer WeeChat.\n"
|
|
||||||
"\n"
|
|
||||||
"Vous pouvez ajouter et vous connecter à un serveur IRC avec les commandes /"
|
"Vous pouvez ajouter et vous connecter à un serveur IRC avec les commandes /"
|
||||||
"server et /connect (voir /help server)."
|
"server et /connect (voir /help server)."
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||||
|
"switch back to the default dark theme."
|
||||||
|
msgstr ""
|
||||||
|
"Le thème \"light\" sera automatiquement appliqué. Utilisez /theme reset pour "
|
||||||
|
"revenir au thème sombre par défaut."
|
||||||
|
|
||||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -8887,10 +9163,13 @@ msgstr "> `f:xxx` : afficher seulement le fichier de configuration \"xxx\""
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||||
"string/color/enum)"
|
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||||
|
"options that can be used in themes, regardless of type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"> `t:xxx` : afficher seulement le type \"xxx\" (bool/int/str/col/enum ou "
|
"> `t:xxx` : afficher seulement le type \"xxx\" (bool/int/str/col/enum ou "
|
||||||
"boolean/integer/string/color/enum)"
|
"boolean/integer/string/color/enum) ; la valeur spéciale \"themable\" peut "
|
||||||
|
"être utilisée pour afficher toutes les options qui peuvent être utilisées "
|
||||||
|
"dans des thèmes, peu importe le type"
|
||||||
|
|
||||||
msgid "> `d`: show only changed options"
|
msgid "> `d`: show only changed options"
|
||||||
msgstr "> `d` : afficher seulement les options changées"
|
msgstr "> `d` : afficher seulement les options changées"
|
||||||
@@ -17837,10 +18116,12 @@ msgstr ""
|
|||||||
msgid "> type `command_run`: command(s) (required)"
|
msgid "> type `command_run`: command(s) (required)"
|
||||||
msgstr "> type `command_run` : commande(s) (obligatoire)"
|
msgstr "> type `command_run` : commande(s) (obligatoire)"
|
||||||
|
|
||||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
msgid ""
|
||||||
|
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||||
|
"calls"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"> type `timer` : intervalle (obligatoire), alignement sur la seconde, nombre "
|
"> type `timer` : intervalle (obligatoire, en millisecondes), alignement sur "
|
||||||
"max d'appels"
|
"la seconde, nombre max d'appels"
|
||||||
|
|
||||||
msgid "> type `config`: name(s) of option (required)"
|
msgid "> type `config`: name(s) of option (required)"
|
||||||
msgstr "> type `config` : nom(s) de l'option (obligatoire)"
|
msgstr "> type `config` : nom(s) de l'option (obligatoire)"
|
||||||
@@ -18762,3 +19043,51 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"%s%s : impossible d'accepter de continuer le fichier \"%s\" (port : %d, "
|
"%s%s : impossible d'accepter de continuer le fichier \"%s\" (port : %d, "
|
||||||
"position de départ : %llu) : xfer non trouvé ou non prêt pour le transfert"
|
"position de départ : %llu) : xfer non trouvé ou non prêt pour le transfert"
|
||||||
|
|
||||||
|
#~ msgid "Automatic backup written before /theme apply"
|
||||||
|
#~ msgstr "Sauvegarde automatique écrite avant /theme apply"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Welcome to WeeChat!\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
|
#~ "quickstart guide, and the user's guide if you have some time; they "
|
||||||
|
#~ "explain main WeeChat concepts.\n"
|
||||||
|
#~ "All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Moreover, there is inline help with /help on all commands and options "
|
||||||
|
#~ "(use Tab key to complete the name).\n"
|
||||||
|
#~ "The command /fset can help to customize WeeChat.\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "You can add and connect to an IRC server with /server and /connect "
|
||||||
|
#~ "commands (see /help server)."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Bienvenue dans WeeChat !\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Si vous découvrez WeeChat, il est recommandé de lire au moins le guide de "
|
||||||
|
#~ "démarrage rapide, et le guide utilisateur si vous avez le temps ; ils "
|
||||||
|
#~ "expliquent les concepts principaux de WeeChat.\n"
|
||||||
|
#~ "Toutes les documentations WeeChat sont disponibles ici : https://"
|
||||||
|
#~ "weechat.org/doc/\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "De plus, il y a de l'aide en ligne avec /help sur toutes les commandes et "
|
||||||
|
#~ "options (utilisez la touche Tab pour compléter le nom).\n"
|
||||||
|
#~ "La commande /fset peut aider à paramétrer WeeChat.\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Vous pouvez ajouter et vous connecter à un serveur IRC avec les "
|
||||||
|
#~ "commandes /server et /connect (voir /help server)."
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "raw[delete]: delete a user theme file (refuses to delete built-in themes, "
|
||||||
|
#~ "which have no file)"
|
||||||
|
#~ msgstr "raw[delete] : supprimer un fichier thème de l'utilisateur"
|
||||||
|
|
||||||
|
#~ msgid "No theme registered"
|
||||||
|
#~ msgstr "Aucun thème enregistré"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "raw[list]: list registered themes (default action with no argument); "
|
||||||
|
#~ "active theme is marked with \"->\""
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "raw[list] : afficher les thèmes enregistrés (sans paramètre, cette liste "
|
||||||
|
#~ "est affichée), le thème actif est marqué avec \"->\""
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: WeeChat\n"
|
"Project-Id-Version: WeeChat\n"
|
||||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||||
"POT-Creation-Date: 2026-06-08 22:23+0200\n"
|
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||||
"PO-Revision-Date: 2026-03-08 08:59+0100\n"
|
"PO-Revision-Date: 2026-03-08 08:59+0100\n"
|
||||||
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
|
"Last-Translator: Andras Voroskoi <voroskoi@frugalware.org>\n"
|
||||||
"Language-Team: Hungarian <weechat-dev@nongnu.org>\n"
|
"Language-Team: Hungarian <weechat-dev@nongnu.org>\n"
|
||||||
@@ -991,6 +991,48 @@ msgstr "nincs a szobában"
|
|||||||
msgid "%sFunction \"%s\" is not available on this system"
|
msgid "%sFunction \"%s\" is not available on this system"
|
||||||
msgstr "%s a \"%s\" modul nem található\n"
|
msgstr "%s a \"%s\" modul nem található\n"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "No theme available"
|
||||||
|
msgstr " . típus: szám\n"
|
||||||
|
|
||||||
|
msgid "Themes:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " %s %s%s%s (file)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sTheme \"%s\" not found"
|
||||||
|
msgstr "%s a \"%s\" szerver nem található\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "Theme \"%s%s%s\":"
|
||||||
|
msgstr "Felhasználók a %s%s%s szobában: %s["
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid " source: %s"
|
||||||
|
msgstr " IRC(%s)\n"
|
||||||
|
|
||||||
|
msgid " source: built-in (in-memory)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid " description: %s"
|
||||||
|
msgstr " . leírás : %s\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid " date: %s"
|
||||||
|
msgstr " IRC(%s)\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid " WeeChat version: %s"
|
||||||
|
msgstr "WeeChat szlogen"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " overrides: %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%sFailed to unset option \"%s\""
|
msgid "%sFailed to unset option \"%s\""
|
||||||
msgstr "%s nem sikerült a modul opciókat elmenteni\n"
|
msgstr "%s nem sikerült a modul opciókat elmenteni\n"
|
||||||
@@ -3511,6 +3553,75 @@ msgstr ""
|
|||||||
msgid "number: number of processes to clean"
|
msgid "number: number of processes to clean"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "manage color themes"
|
||||||
|
msgstr "Aliaszok listája:\n"
|
||||||
|
|
||||||
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
|
msgid ""
|
||||||
|
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||||
|
"<new> || del <name> || info <name>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||||
|
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||||
|
"marked with \"->\""
|
||||||
|
msgstr "Aliaszok listája:\n"
|
||||||
|
|
||||||
|
msgid "raw[-backups]: display backup theme files"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||||
|
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||||
|
"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 <name>.theme in directory "
|
||||||
|
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||||
|
"the name must not match a built-in theme or start with \"backup-\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "raw[rename]: rename a user theme file"
|
||||||
|
msgstr "Aliaszok listája:\n"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "get/set channel topic"
|
||||||
|
msgid "raw[del]: delete a user theme file"
|
||||||
|
msgstr "szoba témájának olvasása/módosítása"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[info]: display details on a theme (name, description, creation date, "
|
||||||
|
"WeeChat version, number of option overrides)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "name: name of a theme"
|
||||||
|
msgstr "Aliaszok listája:\n"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||||
|
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||||
|
"directory \"themes\" inside the WeeChat configuration directory."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By default, `/theme apply` command creates a backup of current themable "
|
||||||
|
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||||
|
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||||
|
"backup-<timestamp>`. This is controlled by the option "
|
||||||
|
"weechat.look.theme_backup."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "toggle value of a config option"
|
msgid "toggle value of a config option"
|
||||||
msgstr "Nem található az opció\n"
|
msgstr "Nem található az opció\n"
|
||||||
@@ -4067,6 +4178,15 @@ msgstr ""
|
|||||||
msgid "names of layouts"
|
msgid "names of layouts"
|
||||||
msgstr "Aliaszok listája:\n"
|
msgstr "Aliaszok listája:\n"
|
||||||
|
|
||||||
|
msgid "names of themes (built-ins + user files + backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of user theme files (without built-ins and backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "names of secured data (file sec.conf, section data)"
|
msgid "names of secured data (file sec.conf, section data)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -4906,6 +5026,20 @@ msgstr ""
|
|||||||
msgid "number of spaces used to display tabs in messages"
|
msgid "number of spaces used to display tabs in messages"
|
||||||
msgstr "válasz ping üzenetre"
|
msgstr "válasz ping üzenetre"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"name of the last theme applied with command /theme (set automatically, do "
|
||||||
|
"not change manually); informational only, the theme is not re-applied at "
|
||||||
|
"startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"create a backup theme file with the current themable options before applying "
|
||||||
|
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||||
|
"is aborted (no option is changed); the backup file is written to directory "
|
||||||
|
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||||
|
"with the command: `/theme apply backup-<timestamp>`"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"time format for dates converted to strings and displayed in messages (see "
|
"time format for dates converted to strings and displayed in messages (see "
|
||||||
@@ -5866,6 +6000,104 @@ msgstr "%s a \"%s\" modul nem található\n"
|
|||||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "WeeChat default theme for light-background terminals"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Automatic backup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||||
|
msgstr "%s a \"%s\" szerver nem található\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||||
|
msgstr "%s a \"%s\" szerver nem található\n"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: malformed section header"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||||
|
msgstr "%s %s, %d. sor: ismeretlen csoportazonosító (\"%s\")\n"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: missing '=' separator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||||
|
msgstr "%s %s, %d. sor: ismeretlen csoportazonosító (\"%s\")\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sFailed to parse theme file \"%s\""
|
||||||
|
msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%sUnable to create theme backup; aborting apply (disable option "
|
||||||
|
"weechat.look.theme_backup to force)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
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 ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sFailed to save theme \"%s\""
|
||||||
|
msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "Theme saved to: %s"
|
||||||
|
msgstr "Felhasználók a %s%s%s szobában: %s["
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sCannot rename built-in theme \"%s\""
|
||||||
|
msgstr "%s nem sikerült a \"%s\" fájlt létrehozni\n"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sNew name is the same as old name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sTheme \"%s\" already exists"
|
||||||
|
msgstr "%s az ignore már létezik\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||||
|
msgstr "%s ismeretlen opció a \"%s\" parancsnak\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "Theme \"%s\" renamed to \"%s\""
|
||||||
|
msgstr "a felhasználók le lettek tiltva"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sCannot delete built-in theme \"%s\""
|
||||||
|
msgstr "%s nem sikerült a \"%s\" fájlt létrehozni\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sFailed to delete theme \"%s\""
|
||||||
|
msgstr "Nem sikerült a(z) \"%s\" naplófájlt írni\n"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme deleted: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||||
msgstr "WeeChat frissítése...\n"
|
msgstr "WeeChat frissítése...\n"
|
||||||
@@ -6025,22 +6257,37 @@ msgstr ""
|
|||||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Welcome to WeeChat!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Welcome to WeeChat!\n"
|
|
||||||
"\n"
|
|
||||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||||
"main WeeChat concepts.\n"
|
"main WeeChat concepts."
|
||||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
#, c-format
|
||||||
|
msgid "All WeeChat docs are available at: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"Moreover, there is inline help with /help on all commands and options (use "
|
"Moreover, there is inline help with /help on all commands and options (use "
|
||||||
"Tab key to complete the name).\n"
|
"Tab key to complete the name)."
|
||||||
"The command /fset can help to customize WeeChat.\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
msgid "The command /fset can help to customize WeeChat."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"You can add and connect to an IRC server with /server and /connect commands "
|
"You can add and connect to an IRC server with /server and /connect commands "
|
||||||
"(see /help server)."
|
"(see /help server)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||||
|
"switch back to the default dark theme."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -7526,7 +7773,8 @@ msgstr "szerver konfigurációs fájljának újraolvastatása"
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||||
"string/color/enum)"
|
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||||
|
"options that can be used in themes, regardless of type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> `d`: show only changed options"
|
msgid "> `d`: show only changed options"
|
||||||
@@ -15910,7 +16158,9 @@ msgstr ""
|
|||||||
msgid "> type `command_run`: command(s) (required)"
|
msgid "> type `command_run`: command(s) (required)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
msgid ""
|
||||||
|
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||||
|
"calls"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `config`: name(s) of option (required)"
|
msgid "> type `config`: name(s) of option (required)"
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: WeeChat\n"
|
"Project-Id-Version: WeeChat\n"
|
||||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||||
"POT-Creation-Date: 2026-06-08 22:23+0200\n"
|
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||||
"PO-Revision-Date: 2026-05-30 14:02+0200\n"
|
"PO-Revision-Date: 2026-05-30 14:02+0200\n"
|
||||||
"Last-Translator: Esteban I. Ruiz Moreno <exio4.com@gmail.com>\n"
|
"Last-Translator: Esteban I. Ruiz Moreno <exio4.com@gmail.com>\n"
|
||||||
"Language-Team: Italian <weechat-dev@nongnu.org>\n"
|
"Language-Team: Italian <weechat-dev@nongnu.org>\n"
|
||||||
@@ -999,6 +999,54 @@ msgid "%sFunction \"%s\" is not available on this system"
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"%s: attenzione: il dizionario \"%s\" non è disponibile su questo sistema"
|
"%s: attenzione: il dizionario \"%s\" non è disponibile su questo sistema"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "No theme available"
|
||||||
|
msgstr "Variabili"
|
||||||
|
|
||||||
|
msgid "Themes:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " %s %s%s%s (file)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sKey \"%s\" not found"
|
||||||
|
msgid "%sTheme \"%s\" not found"
|
||||||
|
msgstr "%sTasto \"%s\" non trovato"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Option \"%s%s%s\":"
|
||||||
|
msgid "Theme \"%s%s%s\":"
|
||||||
|
msgstr "Opzione \"%s%s%s\":"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid " file: %s"
|
||||||
|
msgid " source: %s"
|
||||||
|
msgstr " file: %s"
|
||||||
|
|
||||||
|
msgid " source: built-in (in-memory)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "description"
|
||||||
|
msgid " description: %s"
|
||||||
|
msgstr "descrizione"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid " file: %s"
|
||||||
|
msgid " date: %s"
|
||||||
|
msgstr " file: %s"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "WeeChat version"
|
||||||
|
msgid " WeeChat version: %s"
|
||||||
|
msgstr "versione di WeeChat"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " overrides: %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sFailed to unset option \"%s\""
|
msgid "%sFailed to unset option \"%s\""
|
||||||
msgstr "%sImpossibile disabilitare l'opzione \"%s\""
|
msgstr "%sImpossibile disabilitare l'opzione \"%s\""
|
||||||
@@ -3682,6 +3730,78 @@ msgstr ""
|
|||||||
msgid "number: number of processes to clean"
|
msgid "number: number of processes to clean"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "list of bar items"
|
||||||
|
msgid "manage color themes"
|
||||||
|
msgstr "elenco degli elementi barra"
|
||||||
|
|
||||||
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
|
msgid ""
|
||||||
|
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||||
|
"<new> || del <name> || info <name>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "list of filters"
|
||||||
|
msgid ""
|
||||||
|
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||||
|
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||||
|
"marked with \"->\""
|
||||||
|
msgstr "elenco dei filtri"
|
||||||
|
|
||||||
|
msgid "raw[-backups]: display backup theme files"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||||
|
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||||
|
"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 <name>.theme in directory "
|
||||||
|
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||||
|
"the name must not match a built-in theme or start with \"backup-\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "names of filters"
|
||||||
|
msgid "raw[rename]: rename a user theme file"
|
||||||
|
msgstr "nomi dei filtri"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "get/set channel topic"
|
||||||
|
msgid "raw[del]: delete a user theme file"
|
||||||
|
msgstr "legge/modifica argomento del canale"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[info]: display details on a theme (name, description, creation date, "
|
||||||
|
"WeeChat version, number of option overrides)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "name: name of a theme"
|
||||||
|
msgstr "abilita il supporto del mouse"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||||
|
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||||
|
"directory \"themes\" inside the WeeChat configuration directory."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By default, `/theme apply` command creates a backup of current themable "
|
||||||
|
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||||
|
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||||
|
"backup-<timestamp>`. This is controlled by the option "
|
||||||
|
"weechat.look.theme_backup."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "values for a configuration option"
|
#| msgid "values for a configuration option"
|
||||||
msgid "toggle value of a config option"
|
msgid "toggle value of a config option"
|
||||||
@@ -4272,6 +4392,15 @@ msgstr "aree (\"chat\" o nome barra) per il movimento libero del cursore"
|
|||||||
msgid "names of layouts"
|
msgid "names of layouts"
|
||||||
msgstr "nomi dei layout"
|
msgstr "nomi dei layout"
|
||||||
|
|
||||||
|
msgid "names of themes (built-ins + user files + backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of user theme files (without built-ins and backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "names of secured data (file sec.conf, section data)"
|
msgid "names of secured data (file sec.conf, section data)"
|
||||||
msgstr "nome dei dati sensibili (file sec.conf, sezione data)"
|
msgstr "nome dei dati sensibili (file sec.conf, sezione data)"
|
||||||
@@ -5319,6 +5448,20 @@ msgstr ""
|
|||||||
msgid "number of spaces used to display tabs in messages"
|
msgid "number of spaces used to display tabs in messages"
|
||||||
msgstr "locale usato per la traduzione dei messaggi"
|
msgstr "locale usato per la traduzione dei messaggi"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"name of the last theme applied with command /theme (set automatically, do "
|
||||||
|
"not change manually); informational only, the theme is not re-applied at "
|
||||||
|
"startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"create a backup theme file with the current themable options before applying "
|
||||||
|
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||||
|
"is aborted (no option is changed); the backup file is written to directory "
|
||||||
|
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||||
|
"with the command: `/theme apply backup-<timestamp>`"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"time format for dates converted to strings and displayed in messages (see "
|
"time format for dates converted to strings and displayed in messages (see "
|
||||||
"man strftime for date/time specifiers)"
|
"man strftime for date/time specifiers)"
|
||||||
@@ -6331,6 +6474,114 @@ msgstr "%s: errore: il dizionario \"%s\" non è disponibile su questo sistema"
|
|||||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||||
msgstr "Uso della memoria (consultare \"man mallinfo\" per aiuto):"
|
msgstr "Uso della memoria (consultare \"man mallinfo\" per aiuto):"
|
||||||
|
|
||||||
|
msgid "WeeChat default theme for light-background terminals"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Automatic backup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sKey \"%s\" not found"
|
||||||
|
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||||
|
msgstr "%sTasto \"%s\" non trovato"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s: script \"%s\" is not installed"
|
||||||
|
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||||
|
msgstr "%s: script \"%s\" non installato"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: malformed section header"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||||
|
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
"%sAttenzione: %s, riga %d: identificatore di sezione sconosciuto (\"%s\")"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: missing '=' separator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sWarning: %s, line %d: unknown option for section \"%s\": %s"
|
||||||
|
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
"%sAttenzione: %s, riga %d: opzione sconosciuta per la sezione \"%s\": %s"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to parse theme file \"%s\""
|
||||||
|
msgstr "%s%s: impossibile analizzare il file \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%sUnable to create theme backup; aborting apply (disable option "
|
||||||
|
"weechat.look.theme_backup to force)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
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 ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to save theme \"%s\""
|
||||||
|
msgstr "%s%s: impossibile analizzare il file \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Option \"%s%s%s\":"
|
||||||
|
msgid "Theme saved to: %s"
|
||||||
|
msgstr "Opzione \"%s%s%s\":"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sCannot rename built-in theme \"%s\""
|
||||||
|
msgstr "%sErrore: impossibile creare il file \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sNew name is the same as old name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sTheme \"%s\" already exists"
|
||||||
|
msgstr "%sErrore: il filtro \"%s\" esiste già"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||||
|
msgstr "%sErrore: impossibile rinominare il filtro da \"%s\" a \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "Theme \"%s\" renamed to \"%s\""
|
||||||
|
msgstr "Filtro \"%s\" rinominato in \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sCannot delete built-in theme \"%s\""
|
||||||
|
msgstr "%sErrore: impossibile creare il file \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to delete theme \"%s\""
|
||||||
|
msgstr "%s%s: impossibile analizzare il file \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme deleted: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||||
msgstr "%sErrore durante l'aggiornamento di WeeChat con il file \"%s\":"
|
msgstr "%sErrore durante l'aggiornamento di WeeChat con il file \"%s\":"
|
||||||
@@ -6495,22 +6746,37 @@ msgstr "Fine comando '%s', timeout raggiunto (%.1fs)"
|
|||||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||||
msgstr "1 se si sta aggiornando WeeChat (comando `/upgrade`)"
|
msgstr "1 se si sta aggiornando WeeChat (comando `/upgrade`)"
|
||||||
|
|
||||||
|
msgid "Welcome to WeeChat!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Welcome to WeeChat!\n"
|
|
||||||
"\n"
|
|
||||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||||
"main WeeChat concepts.\n"
|
"main WeeChat concepts."
|
||||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
#, c-format
|
||||||
|
msgid "All WeeChat docs are available at: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"Moreover, there is inline help with /help on all commands and options (use "
|
"Moreover, there is inline help with /help on all commands and options (use "
|
||||||
"Tab key to complete the name).\n"
|
"Tab key to complete the name)."
|
||||||
"The command /fset can help to customize WeeChat.\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
msgid "The command /fset can help to customize WeeChat."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"You can add and connect to an IRC server with /server and /connect commands "
|
"You can add and connect to an IRC server with /server and /connect commands "
|
||||||
"(see /help server)."
|
"(see /help server)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||||
|
"switch back to the default dark theme."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -8060,7 +8326,8 @@ msgstr "File di configurazione \"%s\" sconosciuto"
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||||
"string/color/enum)"
|
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||||
|
"options that can be used in themes, regardless of type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> `d`: show only changed options"
|
msgid "> `d`: show only changed options"
|
||||||
@@ -17070,7 +17337,9 @@ msgstr ""
|
|||||||
msgid "> type `command_run`: command(s) (required)"
|
msgid "> type `command_run`: command(s) (required)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
msgid ""
|
||||||
|
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||||
|
"calls"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `config`: name(s) of option (required)"
|
msgid "> type `config`: name(s) of option (required)"
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: WeeChat\n"
|
"Project-Id-Version: WeeChat\n"
|
||||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||||
"POT-Creation-Date: 2026-06-08 22:23+0200\n"
|
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||||
"PO-Revision-Date: 2026-05-30 14:02+0200\n"
|
"PO-Revision-Date: 2026-05-30 14:02+0200\n"
|
||||||
"Last-Translator: AYANOKOUZI, Ryuunosuke <i38w7i3@yahoo.co.jp>\n"
|
"Last-Translator: AYANOKOUZI, Ryuunosuke <i38w7i3@yahoo.co.jp>\n"
|
||||||
"Language-Team: Japanese <weechat-dev@nongnu.org>\n"
|
"Language-Team: Japanese <weechat-dev@nongnu.org>\n"
|
||||||
@@ -1004,6 +1004,55 @@ msgstr "作成されたオプション: "
|
|||||||
msgid "%sFunction \"%s\" is not available on this system"
|
msgid "%sFunction \"%s\" is not available on this system"
|
||||||
msgstr "%s: 警告: 辞書 \"%s\" がこのシステム上では利用できません"
|
msgstr "%s: 警告: 辞書 \"%s\" がこのシステム上では利用できません"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "no variable"
|
||||||
|
msgid "No theme available"
|
||||||
|
msgstr "変数がありません"
|
||||||
|
|
||||||
|
msgid "Themes:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " %s %s%s%s (file)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sKey \"%s\" not found"
|
||||||
|
msgid "%sTheme \"%s\" not found"
|
||||||
|
msgstr "%sキー \"%s\" が見つかりません"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Option \"%s%s%s\":"
|
||||||
|
msgid "Theme \"%s%s%s\":"
|
||||||
|
msgstr "オプション \"%s%s%s\":"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid " file: %s"
|
||||||
|
msgid " source: %s"
|
||||||
|
msgstr " ファイル: %s"
|
||||||
|
|
||||||
|
msgid " source: built-in (in-memory)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "description"
|
||||||
|
msgid " description: %s"
|
||||||
|
msgstr "説明"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid " file: %s"
|
||||||
|
msgid " date: %s"
|
||||||
|
msgstr " ファイル: %s"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "WeeChat version"
|
||||||
|
msgid " WeeChat version: %s"
|
||||||
|
msgstr "WeeChat のバージョン"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " overrides: %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sFailed to unset option \"%s\""
|
msgid "%sFailed to unset option \"%s\""
|
||||||
msgstr "%sオプション \"%s\" の無効化に失敗しました"
|
msgstr "%sオプション \"%s\" の無効化に失敗しました"
|
||||||
@@ -3766,6 +3815,79 @@ msgstr ""
|
|||||||
msgid "number: number of processes to clean"
|
msgid "number: number of processes to clean"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "list of bar items"
|
||||||
|
msgid "manage color themes"
|
||||||
|
msgstr "バー要素のリスト"
|
||||||
|
|
||||||
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
|
msgid ""
|
||||||
|
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||||
|
"<new> || del <name> || info <name>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "list of filters"
|
||||||
|
msgid ""
|
||||||
|
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||||
|
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||||
|
"marked with \"->\""
|
||||||
|
msgstr "フィルタのリスト"
|
||||||
|
|
||||||
|
msgid "raw[-backups]: display backup theme files"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||||
|
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||||
|
"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 <name>.theme in directory "
|
||||||
|
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||||
|
"the name must not match a built-in theme or start with \"backup-\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "names of filters"
|
||||||
|
msgid "raw[rename]: rename a user theme file"
|
||||||
|
msgstr "フィルタ名"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "get/set channel topic"
|
||||||
|
msgid "raw[del]: delete a user theme file"
|
||||||
|
msgstr "チャンネルトピックの取得/設定"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[info]: display details on a theme (name, description, creation date, "
|
||||||
|
"WeeChat version, number of option overrides)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "enable trigger support"
|
||||||
|
msgid "name: name of a theme"
|
||||||
|
msgstr "トリガサポートの有効化"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||||
|
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||||
|
"directory \"themes\" inside the WeeChat configuration directory."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By default, `/theme apply` command creates a backup of current themable "
|
||||||
|
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||||
|
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||||
|
"backup-<timestamp>`. This is controlled by the option "
|
||||||
|
"weechat.look.theme_backup."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "values for a configuration option"
|
#| msgid "values for a configuration option"
|
||||||
msgid "toggle value of a config option"
|
msgid "toggle value of a config option"
|
||||||
@@ -4372,6 +4494,15 @@ msgstr "カーソルを自由に動かせるエリア (\"chat\" またはバー
|
|||||||
msgid "names of layouts"
|
msgid "names of layouts"
|
||||||
msgstr "レイアウトの名前"
|
msgstr "レイアウトの名前"
|
||||||
|
|
||||||
|
msgid "names of themes (built-ins + user files + backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of user theme files (without built-ins and backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "names of secured data (file sec.conf, section data)"
|
msgid "names of secured data (file sec.conf, section data)"
|
||||||
msgstr "保護データの名前 (sec.conf ファイル、セクションデータ)"
|
msgstr "保護データの名前 (sec.conf ファイル、セクションデータ)"
|
||||||
|
|
||||||
@@ -5479,6 +5610,20 @@ msgstr ""
|
|||||||
msgid "number of spaces used to display tabs in messages"
|
msgid "number of spaces used to display tabs in messages"
|
||||||
msgstr "メッセージに含まれるタブ文字を表示する際に使う空白文字の数"
|
msgstr "メッセージに含まれるタブ文字を表示する際に使う空白文字の数"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"name of the last theme applied with command /theme (set automatically, do "
|
||||||
|
"not change manually); informational only, the theme is not re-applied at "
|
||||||
|
"startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"create a backup theme file with the current themable options before applying "
|
||||||
|
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||||
|
"is aborted (no option is changed); the backup file is written to directory "
|
||||||
|
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||||
|
"with the command: `/theme apply backup-<timestamp>`"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"time format for dates converted to strings and displayed in messages (see "
|
"time format for dates converted to strings and displayed in messages (see "
|
||||||
"man strftime for date/time specifiers)"
|
"man strftime for date/time specifiers)"
|
||||||
@@ -6507,6 +6652,114 @@ msgstr "%s: エラー: 辞書 \"%s\" がシステム上に見つかりません"
|
|||||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||||
msgstr "メモリ使用量 (ヘルプを見るには \"man mallinfo\" を参照してください):"
|
msgstr "メモリ使用量 (ヘルプを見るには \"man mallinfo\" を参照してください):"
|
||||||
|
|
||||||
|
msgid "WeeChat default theme for light-background terminals"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Automatic backup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sKey \"%s\" not found"
|
||||||
|
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||||
|
msgstr "%sキー \"%s\" が見つかりません"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s: script \"%s\" is not installed"
|
||||||
|
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||||
|
msgstr "%s: スクリプト \"%s\" はインストールされていません"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: malformed section header"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||||
|
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||||
|
msgstr "%s警告: %s、行 %d: セクションインジケータ (\"%s\") は未定義"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: missing '=' separator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sWarning: %s, line %d: unknown option for section \"%s\": %s"
|
||||||
|
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||||
|
msgstr "%s警告: %s、行 %d: セクション \"%s\" の無効なオプション: %s"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to parse theme file \"%s\""
|
||||||
|
msgstr "%s%s: ファイル \"%s\" を解析できません"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%sUnable to create theme backup; aborting apply (disable option "
|
||||||
|
"weechat.look.theme_backup to force)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
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 の予約名です"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||||
|
msgstr "%sエラー: \"%s\" は WeeChat の予約名です"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to save theme \"%s\""
|
||||||
|
msgstr "%s%s: ファイル \"%s\" を解析できません"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Option \"%s%s%s\":"
|
||||||
|
msgid "Theme saved to: %s"
|
||||||
|
msgstr "オプション \"%s%s%s\":"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sCannot rename built-in theme \"%s\""
|
||||||
|
msgstr "%sエラー: ファイル \"%s\" の作成に失敗"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sNew name is the same as old name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: trigger \"%s\" already exists"
|
||||||
|
msgid "%sTheme \"%s\" already exists"
|
||||||
|
msgstr "%s%s: トリガ \"%s\" は既に存在します"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||||
|
msgstr "%sエラー: フィルタ \"%s\" の名前を \"%s\" に変更できません"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Trigger \"%s\" renamed to \"%s\""
|
||||||
|
msgid "Theme \"%s\" renamed to \"%s\""
|
||||||
|
msgstr "トリガ \"%s\" の名前を \"%s\" に変更しました"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sCannot delete built-in theme \"%s\""
|
||||||
|
msgstr "%sエラー: ファイル \"%s\" の作成に失敗"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to delete theme \"%s\""
|
||||||
|
msgstr "%s%s: ファイル \"%s\" を解析できません"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme deleted: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||||
msgstr "%sファイル \"%s\" で WeeChat のアップグレード中にエラー:"
|
msgstr "%sファイル \"%s\" で WeeChat のアップグレード中にエラー:"
|
||||||
@@ -6675,34 +6928,36 @@ msgstr "コマンド '%s' の終了、タイムアウトになりました (%.1f
|
|||||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||||
msgstr "WeeChat をヘッドレスモードで実行中 (Ctrl-C で終了します)。"
|
msgstr "WeeChat をヘッドレスモードで実行中 (Ctrl-C で終了します)。"
|
||||||
|
|
||||||
|
msgid "Welcome to WeeChat!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Welcome to WeeChat!\n"
|
|
||||||
"\n"
|
|
||||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||||
"main WeeChat concepts.\n"
|
"main WeeChat concepts."
|
||||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
#, c-format
|
||||||
|
msgid "All WeeChat docs are available at: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"Moreover, there is inline help with /help on all commands and options (use "
|
"Moreover, there is inline help with /help on all commands and options (use "
|
||||||
"Tab key to complete the name).\n"
|
"Tab key to complete the name)."
|
||||||
"The command /fset can help to customize WeeChat.\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
msgid "The command /fset can help to customize WeeChat."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"You can add and connect to an IRC server with /server and /connect commands "
|
"You can add and connect to an IRC server with /server and /connect commands "
|
||||||
"(see /help server)."
|
"(see /help server)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"WeeChat にようこそ!\n"
|
|
||||||
"\n"
|
msgid ""
|
||||||
"WeeChat を初めて使うのなら、少なくともクイックスタートガイドを、時間があるな"
|
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||||
"らユーザーズガイドを読むことをお勧めします。これらは WeeChat の主な構想を説明"
|
"switch back to the default dark theme."
|
||||||
"しています。\n"
|
msgstr ""
|
||||||
"WeeChat の文書は全てこのサイトから利用可能です: https://weechat.org/doc/\n"
|
|
||||||
"\n"
|
|
||||||
"さらに、すべてのコマンドとオプションには /help から見れるインラインヘルプが用"
|
|
||||||
"意されています (Tab キーで名前補完できます)。\n"
|
|
||||||
"WeeChat をカスタマイズするには /fset を使うと便利です。\n"
|
|
||||||
"\n"
|
|
||||||
"IRC サーバの設定を追加してサーバに接続するには /server と /connect コマンドを"
|
|
||||||
"使ってください (/help server 参照)。"
|
|
||||||
|
|
||||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -8361,7 +8616,8 @@ msgstr "設定ファイル \"%s\" が見つかりません"
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||||
"string/color/enum)"
|
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||||
|
"options that can be used in themes, regardless of type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> `d`: show only changed options"
|
msgid "> `d`: show only changed options"
|
||||||
@@ -17645,7 +17901,9 @@ msgstr ""
|
|||||||
msgid "> type `command_run`: command(s) (required)"
|
msgid "> type `command_run`: command(s) (required)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
msgid ""
|
||||||
|
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||||
|
"calls"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `config`: name(s) of option (required)"
|
msgid "> type `config`: name(s) of option (required)"
|
||||||
@@ -18504,3 +18762,32 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"%s%s: ファイル \"%s\" のリジュームが承認されませんでした (ポート: %d、開始位"
|
"%s%s: ファイル \"%s\" のリジュームが承認されませんでした (ポート: %d、開始位"
|
||||||
"置: %llu): xfer が見つからないか、転送準備が整っていません"
|
"置: %llu): xfer が見つからないか、転送準備が整っていません"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Welcome to WeeChat!\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
|
#~ "quickstart guide, and the user's guide if you have some time; they "
|
||||||
|
#~ "explain main WeeChat concepts.\n"
|
||||||
|
#~ "All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Moreover, there is inline help with /help on all commands and options "
|
||||||
|
#~ "(use Tab key to complete the name).\n"
|
||||||
|
#~ "The command /fset can help to customize WeeChat.\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "You can add and connect to an IRC server with /server and /connect "
|
||||||
|
#~ "commands (see /help server)."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "WeeChat にようこそ!\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "WeeChat を初めて使うのなら、少なくともクイックスタートガイドを、時間がある"
|
||||||
|
#~ "ならユーザーズガイドを読むことをお勧めします。これらは WeeChat の主な構想"
|
||||||
|
#~ "を説明しています。\n"
|
||||||
|
#~ "WeeChat の文書は全てこのサイトから利用可能です: https://weechat.org/doc/\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "さらに、すべてのコマンドとオプションには /help から見れるインラインヘルプ"
|
||||||
|
#~ "が用意されています (Tab キーで名前補完できます)。\n"
|
||||||
|
#~ "WeeChat をカスタマイズするには /fset を使うと便利です。\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "IRC サーバの設定を追加してサーバに接続するには /server と /connect コマン"
|
||||||
|
#~ "ドを使ってください (/help server 参照)。"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
#
|
#
|
||||||
# SPDX-FileCopyrightText: 2009-2016 Krzysztof Koroscik <soltys1@gmail.com>
|
# SPDX-FileCopyrightText: 2009-2026 Krzysztof Koroscik <soltys@soltys.info>
|
||||||
# SPDX-FileCopyrightText: 2010 B.J. Stobiecki <bartek@stobiecki.eu>
|
# SPDX-FileCopyrightText: 2010 B.J. Stobiecki <bartek@stobiecki.eu>
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
@@ -19,15 +19,14 @@
|
|||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
# along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
# Krzysztof Korościk <soltys@soltys.info>, 2018, 2019, 2020.
|
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: WeeChat\n"
|
"Project-Id-Version: WeeChat\n"
|
||||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||||
"POT-Creation-Date: 2026-06-08 22:23+0200\n"
|
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||||
"PO-Revision-Date: 2026-05-30 14:02+0200\n"
|
"PO-Revision-Date: 2026-06-28 08:55+0200\n"
|
||||||
"Last-Translator: Krzysztof Korościk <soltys@soltys.info>\n"
|
"Last-Translator: Krzysztof Korościk <soltys@soltys.info>\n"
|
||||||
"Language-Team: Polish <weechat-dev@nongnu.org>\n"
|
"Language-Team: Polish <soltys@soltys.info>\n"
|
||||||
"Language: pl\n"
|
"Language: pl\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@@ -981,6 +980,55 @@ msgstr "Opcja utworzona: "
|
|||||||
msgid "%sFunction \"%s\" is not available on this system"
|
msgid "%sFunction \"%s\" is not available on this system"
|
||||||
msgstr "%sFunkcja „%s” nie jest dostępna w tym systemie"
|
msgstr "%sFunkcja „%s” nie jest dostępna w tym systemie"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "not available"
|
||||||
|
msgid "No theme available"
|
||||||
|
msgstr "niedostępne"
|
||||||
|
|
||||||
|
msgid "Themes:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " %s %s%s%s (file)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sKey \"%s\" not found"
|
||||||
|
msgid "%sTheme \"%s\" not found"
|
||||||
|
msgstr "%sKlawisz \"%s\" nie znaleziony"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Option \"%s%s%s\":"
|
||||||
|
msgid "Theme \"%s%s%s\":"
|
||||||
|
msgstr "Opcja \"%s%s%s\":"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid " file: %s"
|
||||||
|
msgid " source: %s"
|
||||||
|
msgstr " plik: %s"
|
||||||
|
|
||||||
|
msgid " source: built-in (in-memory)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "description"
|
||||||
|
msgid " description: %s"
|
||||||
|
msgstr "opis"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid " file: %s"
|
||||||
|
msgid " date: %s"
|
||||||
|
msgstr " plik: %s"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "WeeChat version"
|
||||||
|
msgid " WeeChat version: %s"
|
||||||
|
msgstr "Wersja WeeChat"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " overrides: %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sFailed to unset option \"%s\""
|
msgid "%sFailed to unset option \"%s\""
|
||||||
msgstr "%sNie powiodło się wyzerowanie opcji \"%s\""
|
msgstr "%sNie powiodło się wyzerowanie opcji \"%s\""
|
||||||
@@ -3877,6 +3925,85 @@ msgstr ""
|
|||||||
msgid "number: number of processes to clean"
|
msgid "number: number of processes to clean"
|
||||||
msgstr "numer: ilość procesów do wyczyszczenia"
|
msgstr "numer: ilość procesów do wyczyszczenia"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "manage custom bar items"
|
||||||
|
msgid "manage color themes"
|
||||||
|
msgstr "zarządza niestandardowymi elementami pasków"
|
||||||
|
|
||||||
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
|
msgid ""
|
||||||
|
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||||
|
"<new> || del <name> || info <name>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid ""
|
||||||
|
#| "raw[list]: list remote relay servers (without argument, this list is "
|
||||||
|
#| "displayed)"
|
||||||
|
msgid ""
|
||||||
|
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||||
|
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||||
|
"marked with \"->\""
|
||||||
|
msgstr ""
|
||||||
|
"raw[list]: wyświetl pośredników (bez podania argumentu wyświetlana jest ta "
|
||||||
|
"lista)"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "raw[tags]: display tags for lines"
|
||||||
|
msgid "raw[-backups]: display backup theme files"
|
||||||
|
msgstr "raw[tags]: wyświetl tagi dla linii"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||||
|
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||||
|
"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 <name>.theme in directory "
|
||||||
|
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||||
|
"the name must not match a built-in theme or start with \"backup-\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "raw[rename]: rename a filter"
|
||||||
|
msgid "raw[rename]: rename a user theme file"
|
||||||
|
msgstr "raw[rename]: zmień nazwę filtra"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "raw[del]: delete a server"
|
||||||
|
msgid "raw[del]: delete a user theme file"
|
||||||
|
msgstr "raw[del]: usuń serwer"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[info]: display details on a theme (name, description, creation date, "
|
||||||
|
"WeeChat version, number of option overrides)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "name: name of trigger"
|
||||||
|
msgid "name: name of a theme"
|
||||||
|
msgstr "nazwa: nazwa triggera"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||||
|
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||||
|
"directory \"themes\" inside the WeeChat configuration directory."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By default, `/theme apply` command creates a backup of current themable "
|
||||||
|
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||||
|
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||||
|
"backup-<timestamp>`. This is controlled by the option "
|
||||||
|
"weechat.look.theme_backup."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "toggle value of a config option"
|
msgid "toggle value of a config option"
|
||||||
msgstr "przełącza wartość opcji konfiguracyjnej"
|
msgstr "przełącza wartość opcji konfiguracyjnej"
|
||||||
|
|
||||||
@@ -4500,6 +4627,15 @@ msgstr ""
|
|||||||
msgid "names of layouts"
|
msgid "names of layouts"
|
||||||
msgstr "nazwy układów"
|
msgstr "nazwy układów"
|
||||||
|
|
||||||
|
msgid "names of themes (built-ins + user files + backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of user theme files (without built-ins and backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "names of secured data (file sec.conf, section data)"
|
msgid "names of secured data (file sec.conf, section data)"
|
||||||
msgstr "nazwy zabezpieczonych danych (plik sec.conf, sekcja data)"
|
msgstr "nazwy zabezpieczonych danych (plik sec.conf, sekcja data)"
|
||||||
|
|
||||||
@@ -5632,6 +5768,20 @@ msgstr ""
|
|||||||
msgid "number of spaces used to display tabs in messages"
|
msgid "number of spaces used to display tabs in messages"
|
||||||
msgstr "liczba spacji używana do wyświetlania tabulacji w wiadomościach"
|
msgstr "liczba spacji używana do wyświetlania tabulacji w wiadomościach"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"name of the last theme applied with command /theme (set automatically, do "
|
||||||
|
"not change manually); informational only, the theme is not re-applied at "
|
||||||
|
"startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"create a backup theme file with the current themable options before applying "
|
||||||
|
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||||
|
"is aborted (no option is changed); the backup file is written to directory "
|
||||||
|
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||||
|
"with the command: `/theme apply backup-<timestamp>`"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"time format for dates converted to strings and displayed in messages (see "
|
"time format for dates converted to strings and displayed in messages (see "
|
||||||
"man strftime for date/time specifiers)"
|
"man strftime for date/time specifiers)"
|
||||||
@@ -6680,6 +6830,122 @@ msgstr "Funkcja systemowa \"%s\" nie jest dostępna"
|
|||||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||||
msgstr "Zużycie zasobów (zobacz \"man getrusage\"):"
|
msgstr "Zużycie zasobów (zobacz \"man getrusage\"):"
|
||||||
|
|
||||||
|
msgid "WeeChat default theme for light-background terminals"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Automatic backup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sKey \"%s\" not found"
|
||||||
|
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||||
|
msgstr "%sKlawisz \"%s\" nie znaleziony"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s: script \"%s\" is not installed"
|
||||||
|
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||||
|
msgstr "%s: skrypt \"%s\" nie zainstalowany"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: malformed section header"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sWarning: %s, line %d: ignoring unknown section identifier (\"%s\")"
|
||||||
|
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
"%sOstrzeżenie: %s, linia %d: ignoruje nieznany identyfikator sekcji (\"%s\")"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: missing '=' separator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid ""
|
||||||
|
#| "%sWarning: %s, line %d: ignoring unknown option for section \"%s\": %s"
|
||||||
|
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
"%sOstrzeżenie: %s, linia %d: ignoruje nieznaną opcję dla sekcji \"%s\": %s"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to parse theme file \"%s\""
|
||||||
|
msgstr "%s%s: nie można przetworzyć pliku \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%sUnable to create theme backup; aborting apply (disable option "
|
||||||
|
"weechat.look.theme_backup to force)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
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"
|
||||||
|
msgstr "%sNazwa bufora \"%s\" jest zarezerwowana dla WeeChat"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sBuffer name \"%s\" is reserved for WeeChat"
|
||||||
|
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||||
|
msgstr "%sNazwa bufora \"%s\" jest zarezerwowana dla WeeChat"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to save theme \"%s\""
|
||||||
|
msgstr "%s%s: nie można przetworzyć pliku \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Option \"%s%s%s\":"
|
||||||
|
msgid "Theme saved to: %s"
|
||||||
|
msgstr "Opcja \"%s%s%s\":"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sCannot create file \"%s\""
|
||||||
|
msgid "%sCannot rename built-in theme \"%s\""
|
||||||
|
msgstr "%sNie można utworzyć pliku \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sNew name is the same as old name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sBar \"%s\" already exists"
|
||||||
|
msgid "%sTheme \"%s\" already exists"
|
||||||
|
msgstr "%sPasek \"%s\" już istnieje"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sUnable to rename filter \"%s\" to \"%s\""
|
||||||
|
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||||
|
msgstr "%sNie można zmienić nazwy filtru z \"%s\" na \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Trigger \"%s\" renamed to \"%s\""
|
||||||
|
msgid "Theme \"%s\" renamed to \"%s\""
|
||||||
|
msgstr "Zmieniono nazwę triggera z \"%s\" na \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sCannot create file \"%s\""
|
||||||
|
msgid "%sCannot delete built-in theme \"%s\""
|
||||||
|
msgstr "%sNie można utworzyć pliku \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to delete theme \"%s\""
|
||||||
|
msgstr "%s%s: nie można przetworzyć pliku \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme deleted: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||||
msgstr "%sBłąd przy uaktualnianiu WeeChat z użyciem pliku \"%s\":"
|
msgstr "%sBłąd przy uaktualnianiu WeeChat z użyciem pliku \"%s\":"
|
||||||
@@ -6839,35 +7105,36 @@ msgstr "Zakończono transfer URL '%s', transfer zatrzymany"
|
|||||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||||
msgstr "WeeChat działa w trybie bez interfejsu (naciśnij ctrl-c żeby wyjść)."
|
msgstr "WeeChat działa w trybie bez interfejsu (naciśnij ctrl-c żeby wyjść)."
|
||||||
|
|
||||||
|
msgid "Welcome to WeeChat!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Welcome to WeeChat!\n"
|
|
||||||
"\n"
|
|
||||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||||
"main WeeChat concepts.\n"
|
"main WeeChat concepts."
|
||||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
#, c-format
|
||||||
|
msgid "All WeeChat docs are available at: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"Moreover, there is inline help with /help on all commands and options (use "
|
"Moreover, there is inline help with /help on all commands and options (use "
|
||||||
"Tab key to complete the name).\n"
|
"Tab key to complete the name)."
|
||||||
"The command /fset can help to customize WeeChat.\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
msgid "The command /fset can help to customize WeeChat."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"You can add and connect to an IRC server with /server and /connect commands "
|
"You can add and connect to an IRC server with /server and /connect commands "
|
||||||
"(see /help server)."
|
"(see /help server)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Witaj w WeeChat!\n"
|
|
||||||
"\n"
|
msgid ""
|
||||||
"Jeśli dopiero poznajesz WeeChat, zaleca się abyś przeczytał przynajmniej "
|
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||||
"szybki start i poradnik użytkownika jeśli znajdziesz na to chwilę; wyjaśnią "
|
"switch back to the default dark theme."
|
||||||
"one główne założenia WeeChat.\n"
|
msgstr ""
|
||||||
"Wszystkie dokumenty dotyczące WeeChat dostępne są pod adresem: https://"
|
|
||||||
"weechat.org/doc/\n"
|
|
||||||
"\n"
|
|
||||||
"Ponadto, dostępna jest wbudowana pomoc /help dla wszystkich komend i opcji "
|
|
||||||
"(klawisz Tab dopełnia nazwy).\n"
|
|
||||||
"Komenda /fset pomaga w dostosowaniu WeeChat do swoich preferencji.\n"
|
|
||||||
"\n"
|
|
||||||
"Możesz dodać i połączyć się z serwerem IRC za pomocą komend /server i /"
|
|
||||||
"connect (zobacz /help server)."
|
|
||||||
|
|
||||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -8606,9 +8873,14 @@ msgstr "> `xxx`: pokaż tylko opcje z „xxx” w nazwie"
|
|||||||
msgid "> `f:xxx`: show only configuration file \"xxx\""
|
msgid "> `f:xxx`: show only configuration file \"xxx\""
|
||||||
msgstr "> `f:xxx`: pokaż tylko plik konfiguracyjny „xxx”"
|
msgstr "> `f:xxx`: pokaż tylko plik konfiguracyjny „xxx”"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid ""
|
||||||
|
#| "> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/"
|
||||||
|
#| "integer/string/color/enum)"
|
||||||
msgid ""
|
msgid ""
|
||||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||||
"string/color/enum)"
|
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||||
|
"options that can be used in themes, regardless of type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"> `t:xxx`: pokaż tylko opcje typu „xxx” (bool/int/str/col/enum or boolean/"
|
"> `t:xxx`: pokaż tylko opcje typu „xxx” (bool/int/str/col/enum or boolean/"
|
||||||
"integer/string/color/enum)"
|
"integer/string/color/enum)"
|
||||||
@@ -17388,7 +17660,11 @@ msgstr ""
|
|||||||
msgid "> type `command_run`: command(s) (required)"
|
msgid "> type `command_run`: command(s) (required)"
|
||||||
msgstr "> typ `command_run`: komenda(-y) (wymagane)"
|
msgstr "> typ `command_run`: komenda(-y) (wymagane)"
|
||||||
|
|
||||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
#, fuzzy
|
||||||
|
#| msgid "> type `timer`: interval (required), align on second, max calls"
|
||||||
|
msgid ""
|
||||||
|
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||||
|
"calls"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"> typ `timer`: interwał (wymagany), wyrównane do sekund, maksymalne wywołania"
|
"> typ `timer`: interwał (wymagany), wyrównane do sekund, maksymalne wywołania"
|
||||||
|
|
||||||
@@ -18268,3 +18544,33 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"%s%s: nie można zaakceptować wznowienia pliku \"%s\" (port: %d, pozycja "
|
"%s%s: nie można zaakceptować wznowienia pliku \"%s\" (port: %d, pozycja "
|
||||||
"startowa: %llu): xfer nie znaleziony lub nie gotowy do transferu"
|
"startowa: %llu): xfer nie znaleziony lub nie gotowy do transferu"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Welcome to WeeChat!\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
|
#~ "quickstart guide, and the user's guide if you have some time; they "
|
||||||
|
#~ "explain main WeeChat concepts.\n"
|
||||||
|
#~ "All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Moreover, there is inline help with /help on all commands and options "
|
||||||
|
#~ "(use Tab key to complete the name).\n"
|
||||||
|
#~ "The command /fset can help to customize WeeChat.\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "You can add and connect to an IRC server with /server and /connect "
|
||||||
|
#~ "commands (see /help server)."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Witaj w WeeChat!\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Jeśli dopiero poznajesz WeeChat, zaleca się abyś przeczytał przynajmniej "
|
||||||
|
#~ "szybki start i poradnik użytkownika jeśli znajdziesz na to chwilę; "
|
||||||
|
#~ "wyjaśnią one główne założenia WeeChat.\n"
|
||||||
|
#~ "Wszystkie dokumenty dotyczące WeeChat dostępne są pod adresem: https://"
|
||||||
|
#~ "weechat.org/doc/\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Ponadto, dostępna jest wbudowana pomoc /help dla wszystkich komend i "
|
||||||
|
#~ "opcji (klawisz Tab dopełnia nazwy).\n"
|
||||||
|
#~ "Komenda /fset pomaga w dostosowaniu WeeChat do swoich preferencji.\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Możesz dodać i połączyć się z serwerem IRC za pomocą komend /server i /"
|
||||||
|
#~ "connect (zobacz /help server)."
|
||||||
|
|||||||
@@ -22,10 +22,10 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: WeeChat\n"
|
"Project-Id-Version: WeeChat\n"
|
||||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||||
"POT-Creation-Date: 2026-06-08 22:23+0200\n"
|
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||||
"PO-Revision-Date: 2026-05-30 14:02+0200\n"
|
"PO-Revision-Date: 2026-06-28 08:48+0200\n"
|
||||||
"Last-Translator: Vasco Almeida <vascomalmeida@sapo.pt>\n"
|
"Last-Translator: Vasco Almeida <vascomalmeida@sapo.pt>\n"
|
||||||
"Language-Team: Portuguese - Portugal <weechat-dev@nongnu.org>\n"
|
"Language-Team: Portuguese <weechat-dev@nongnu.org>\n"
|
||||||
"Language: pt\n"
|
"Language: pt\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@@ -1006,6 +1006,55 @@ msgstr "Opção criada: "
|
|||||||
msgid "%sFunction \"%s\" is not available on this system"
|
msgid "%sFunction \"%s\" is not available on this system"
|
||||||
msgstr "%s: aviso: o dicionário \"%s\" não está disponível no sistema"
|
msgstr "%s: aviso: o dicionário \"%s\" não está disponível no sistema"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "no variable"
|
||||||
|
msgid "No theme available"
|
||||||
|
msgstr "nenhum variável"
|
||||||
|
|
||||||
|
msgid "Themes:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " %s %s%s%s (file)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sKey \"%s\" not found"
|
||||||
|
msgid "%sTheme \"%s\" not found"
|
||||||
|
msgstr "%sTecla \"%s\" não encontrada"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Option \"%s%s%s\":"
|
||||||
|
msgid "Theme \"%s%s%s\":"
|
||||||
|
msgstr "Opção \"%s%s%s\":"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid " file: %s"
|
||||||
|
msgid " source: %s"
|
||||||
|
msgstr " ficheiro: %s"
|
||||||
|
|
||||||
|
msgid " source: built-in (in-memory)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "description"
|
||||||
|
msgid " description: %s"
|
||||||
|
msgstr "descrição"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid " file: %s"
|
||||||
|
msgid " date: %s"
|
||||||
|
msgstr " ficheiro: %s"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "WeeChat version"
|
||||||
|
msgid " WeeChat version: %s"
|
||||||
|
msgstr "versão do WeeChat"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " overrides: %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sFailed to unset option \"%s\""
|
msgid "%sFailed to unset option \"%s\""
|
||||||
msgstr "%sFalha ao reinicializar a opção \"%s\""
|
msgstr "%sFalha ao reinicializar a opção \"%s\""
|
||||||
@@ -3775,6 +3824,79 @@ msgstr ""
|
|||||||
msgid "number: number of processes to clean"
|
msgid "number: number of processes to clean"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "list of bar items"
|
||||||
|
msgid "manage color themes"
|
||||||
|
msgstr "lista de itens da barra"
|
||||||
|
|
||||||
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
|
msgid ""
|
||||||
|
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||||
|
"<new> || del <name> || info <name>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "list of filters"
|
||||||
|
msgid ""
|
||||||
|
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||||
|
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||||
|
"marked with \"->\""
|
||||||
|
msgstr "lista de filtros"
|
||||||
|
|
||||||
|
msgid "raw[-backups]: display backup theme files"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||||
|
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||||
|
"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 <name>.theme in directory "
|
||||||
|
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||||
|
"the name must not match a built-in theme or start with \"backup-\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "names of filters"
|
||||||
|
msgid "raw[rename]: rename a user theme file"
|
||||||
|
msgstr "nomes dos filtros"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "get/set channel topic"
|
||||||
|
msgid "raw[del]: delete a user theme file"
|
||||||
|
msgstr "obter/definir o tópico do canal"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[info]: display details on a theme (name, description, creation date, "
|
||||||
|
"WeeChat version, number of option overrides)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "enable trigger support"
|
||||||
|
msgid "name: name of a theme"
|
||||||
|
msgstr "ativar suporte de acionadores"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||||
|
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||||
|
"directory \"themes\" inside the WeeChat configuration directory."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By default, `/theme apply` command creates a backup of current themable "
|
||||||
|
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||||
|
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||||
|
"backup-<timestamp>`. This is controlled by the option "
|
||||||
|
"weechat.look.theme_backup."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "values for a configuration option"
|
#| msgid "values for a configuration option"
|
||||||
msgid "toggle value of a config option"
|
msgid "toggle value of a config option"
|
||||||
@@ -4391,6 +4513,15 @@ msgstr "áreas (\"chat\" ou nome da barra) onde mover o cursor livremente"
|
|||||||
msgid "names of layouts"
|
msgid "names of layouts"
|
||||||
msgstr "nomes das disposições"
|
msgstr "nomes das disposições"
|
||||||
|
|
||||||
|
msgid "names of themes (built-ins + user files + backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of user theme files (without built-ins and backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "names of secured data (file sec.conf, section data)"
|
msgid "names of secured data (file sec.conf, section data)"
|
||||||
msgstr "nomes dos ficheiros protegidos (ficheiro sec.conf, secção de dados)"
|
msgstr "nomes dos ficheiros protegidos (ficheiro sec.conf, secção de dados)"
|
||||||
|
|
||||||
@@ -5508,6 +5639,20 @@ msgstr ""
|
|||||||
msgid "number of spaces used to display tabs in messages"
|
msgid "number of spaces used to display tabs in messages"
|
||||||
msgstr "número de espaços usados para apresentar tabulações nas mensagens"
|
msgstr "número de espaços usados para apresentar tabulações nas mensagens"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"name of the last theme applied with command /theme (set automatically, do "
|
||||||
|
"not change manually); informational only, the theme is not re-applied at "
|
||||||
|
"startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"create a backup theme file with the current themable options before applying "
|
||||||
|
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||||
|
"is aborted (no option is changed); the backup file is written to directory "
|
||||||
|
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||||
|
"with the command: `/theme apply backup-<timestamp>`"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"time format for dates converted to strings and displayed in messages (see "
|
"time format for dates converted to strings and displayed in messages (see "
|
||||||
"man strftime for date/time specifiers)"
|
"man strftime for date/time specifiers)"
|
||||||
@@ -6563,6 +6708,114 @@ msgstr "%s: erro: o dicionário \"%s\" não está disponível no sistema"
|
|||||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||||
msgstr "Utilização de memória (ver \"man mallingo\" para obter ajuda):"
|
msgstr "Utilização de memória (ver \"man mallingo\" para obter ajuda):"
|
||||||
|
|
||||||
|
msgid "WeeChat default theme for light-background terminals"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Automatic backup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sKey \"%s\" not found"
|
||||||
|
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||||
|
msgstr "%sTecla \"%s\" não encontrada"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s: script \"%s\" is not installed"
|
||||||
|
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||||
|
msgstr "%s: o script \"%s\" não está instalado"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: malformed section header"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||||
|
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||||
|
msgstr "%sAviso: %s, linha %d: identificador de secção desconhecido (\"%s\")"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: missing '=' separator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sWarning: %s, line %d: unknown option for section \"%s\": %s"
|
||||||
|
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||||
|
msgstr "%sAviso: %s, linha %d: opção desconhecida na secção \"%s\": %s"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to parse theme file \"%s\""
|
||||||
|
msgstr "%s%s: não foi possível analisar o ficheiro \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%sUnable to create theme backup; aborting apply (disable option "
|
||||||
|
"weechat.look.theme_backup to force)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
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 ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to save theme \"%s\""
|
||||||
|
msgstr "%s%s: não foi possível analisar o ficheiro \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Option \"%s%s%s\":"
|
||||||
|
msgid "Theme saved to: %s"
|
||||||
|
msgstr "Opção \"%s%s%s\":"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sCannot rename built-in theme \"%s\""
|
||||||
|
msgstr "%sErro: não é possível criar o ficheiro \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sNew name is the same as old name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: trigger \"%s\" already exists"
|
||||||
|
msgid "%sTheme \"%s\" already exists"
|
||||||
|
msgstr "%s%s: o acionador \"%s\" já existe"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||||
|
msgstr "%sErro: não foi possível mudar o nome do filtro \"%s\" para \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Trigger \"%s\" renamed to \"%s\""
|
||||||
|
msgid "Theme \"%s\" renamed to \"%s\""
|
||||||
|
msgstr "O nome do acionador \"%s\" mudou para \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sCannot delete built-in theme \"%s\""
|
||||||
|
msgstr "%sErro: não é possível criar o ficheiro \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to delete theme \"%s\""
|
||||||
|
msgstr "%s%s: não foi possível analisar o ficheiro \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme deleted: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||||
msgstr "%sErro ao atualizar o WeeChat com o ficheiro \"%s\":"
|
msgstr "%sErro ao atualizar o WeeChat com o ficheiro \"%s\":"
|
||||||
@@ -6727,36 +6980,36 @@ msgstr "Fim do comando '%s', tempo limite atingido (%.1fs)"
|
|||||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||||
msgstr "1 se o WeeChat está a atualizar (comando `/upgrade`)"
|
msgstr "1 se o WeeChat está a atualizar (comando `/upgrade`)"
|
||||||
|
|
||||||
#, fuzzy
|
msgid "Welcome to WeeChat!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Welcome to WeeChat!\n"
|
|
||||||
"\n"
|
|
||||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||||
"main WeeChat concepts.\n"
|
"main WeeChat concepts."
|
||||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
#, c-format
|
||||||
|
msgid "All WeeChat docs are available at: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"Moreover, there is inline help with /help on all commands and options (use "
|
"Moreover, there is inline help with /help on all commands and options (use "
|
||||||
"Tab key to complete the name).\n"
|
"Tab key to complete the name)."
|
||||||
"The command /fset can help to customize WeeChat.\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
msgid "The command /fset can help to customize WeeChat."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"You can add and connect to an IRC server with /server and /connect commands "
|
"You can add and connect to an IRC server with /server and /connect commands "
|
||||||
"(see /help server)."
|
"(see /help server)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Bem-vindo ao WeeChat!\n"
|
|
||||||
"\n"
|
msgid ""
|
||||||
"Se é a primeira vez que usa o WeeChat, recomenda-se que leia pelo menos o "
|
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||||
"guia de introdução, e o manual do utilizador se dispõe de algum tempo; estes "
|
"switch back to the default dark theme."
|
||||||
"explicam os principais conceitos do WeeChat.\n"
|
msgstr ""
|
||||||
"A documentação do WeeChat está disponível em: https://weechat.org/doc/\n"
|
|
||||||
"\n"
|
|
||||||
"Além disso, pode consultar a ajuda incorporada com /help sobre todos os "
|
|
||||||
"comandos e opções (use a tecla Tab para completar o nome).\n"
|
|
||||||
"O comando /iset (script iset.pl) pode ajudá-lo a personalizar o WeeChat: /"
|
|
||||||
"script install iset.pl\n"
|
|
||||||
"\n"
|
|
||||||
"Pode adicionar e conectar-se a um ser servidor de IRC pelos comandos /server "
|
|
||||||
"e /connect (ver /help server)."
|
|
||||||
|
|
||||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -8328,7 +8581,8 @@ msgstr "Ficheiro de configuração desconhecido \"%s\""
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||||
"string/color/enum)"
|
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||||
|
"options that can be used in themes, regardless of type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> `d`: show only changed options"
|
msgid "> `d`: show only changed options"
|
||||||
@@ -17535,7 +17789,9 @@ msgstr ""
|
|||||||
msgid "> type `command_run`: command(s) (required)"
|
msgid "> type `command_run`: command(s) (required)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
msgid ""
|
||||||
|
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||||
|
"calls"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `config`: name(s) of option (required)"
|
msgid "> type `config`: name(s) of option (required)"
|
||||||
@@ -18409,3 +18665,34 @@ msgstr ""
|
|||||||
"%s%s: não foi possível aceitar o ficheiro a retomar \"%s\" (porto: %d, "
|
"%s%s: não foi possível aceitar o ficheiro a retomar \"%s\" (porto: %d, "
|
||||||
"posição inicial: %llu): xfer não foi encontrado ou não está pronto para ser "
|
"posição inicial: %llu): xfer não foi encontrado ou não está pronto para ser "
|
||||||
"transferido"
|
"transferido"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Welcome to WeeChat!\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
|
#~ "quickstart guide, and the user's guide if you have some time; they "
|
||||||
|
#~ "explain main WeeChat concepts.\n"
|
||||||
|
#~ "All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Moreover, there is inline help with /help on all commands and options "
|
||||||
|
#~ "(use Tab key to complete the name).\n"
|
||||||
|
#~ "The command /fset can help to customize WeeChat.\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "You can add and connect to an IRC server with /server and /connect "
|
||||||
|
#~ "commands (see /help server)."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Bem-vindo ao WeeChat!\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Se é a primeira vez que usa o WeeChat, recomenda-se que leia pelo menos o "
|
||||||
|
#~ "guia de introdução, e o manual do utilizador se dispõe de algum tempo; "
|
||||||
|
#~ "estes explicam os principais conceitos do WeeChat.\n"
|
||||||
|
#~ "A documentação do WeeChat está disponível em: https://weechat.org/doc/\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Além disso, pode consultar a ajuda incorporada com /help sobre todos os "
|
||||||
|
#~ "comandos e opções (use a tecla Tab para completar o nome).\n"
|
||||||
|
#~ "O comando /iset (script iset.pl) pode ajudá-lo a personalizar o WeeChat: /"
|
||||||
|
#~ "script install iset.pl\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Pode adicionar e conectar-se a um ser servidor de IRC pelos comandos /"
|
||||||
|
#~ "server e /connect (ver /help server)."
|
||||||
|
|||||||
+278
-13
@@ -46,10 +46,10 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: WeeChat\n"
|
"Project-Id-Version: WeeChat\n"
|
||||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||||
"POT-Creation-Date: 2026-06-08 22:23+0200\n"
|
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||||
"PO-Revision-Date: 2026-05-30 14:02+0200\n"
|
"PO-Revision-Date: 2026-06-28 08:49+0200\n"
|
||||||
"Last-Translator: Érico Nogueira <ericonr@disroot.org>\n"
|
"Last-Translator: Érico Nogueira <ericonr@disroot.org>\n"
|
||||||
"Language-Team: Portuguese - Brazil <weechat-dev@nongnu.org>\n"
|
"Language-Team: Portuguese (Brazil) <weechat-dev@nongnu.org>\n"
|
||||||
"Language: pt_BR\n"
|
"Language: pt_BR\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@@ -1025,6 +1025,54 @@ msgstr "Opção criada: "
|
|||||||
msgid "%sFunction \"%s\" is not available on this system"
|
msgid "%sFunction \"%s\" is not available on this system"
|
||||||
msgstr "%s: aviso: dicionário \"%s\" não está disponível em seu sistema"
|
msgstr "%s: aviso: dicionário \"%s\" não está disponível em seu sistema"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "No theme available"
|
||||||
|
msgstr "Variáveis"
|
||||||
|
|
||||||
|
msgid "Themes:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " %s %s%s%s (file)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sKey \"%s\" not found"
|
||||||
|
msgid "%sTheme \"%s\" not found"
|
||||||
|
msgstr "%sTecla \"%s\" não encontrada"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Option \"%s%s%s\":"
|
||||||
|
msgid "Theme \"%s%s%s\":"
|
||||||
|
msgstr "Opção \"%s%s%s\":"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid " file: %s"
|
||||||
|
msgid " source: %s"
|
||||||
|
msgstr " arquivo: %s"
|
||||||
|
|
||||||
|
msgid " source: built-in (in-memory)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "description"
|
||||||
|
msgid " description: %s"
|
||||||
|
msgstr "descrição"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid " file: %s"
|
||||||
|
msgid " date: %s"
|
||||||
|
msgstr " arquivo: %s"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "WeeChat version"
|
||||||
|
msgid " WeeChat version: %s"
|
||||||
|
msgstr "versão do WeeChat"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " overrides: %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sFailed to unset option \"%s\""
|
msgid "%sFailed to unset option \"%s\""
|
||||||
msgstr "%sFalhou ao desabilitar a opção \"%s\""
|
msgstr "%sFalhou ao desabilitar a opção \"%s\""
|
||||||
@@ -3696,6 +3744,77 @@ msgstr ""
|
|||||||
msgid "number: number of processes to clean"
|
msgid "number: number of processes to clean"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "list of bar items"
|
||||||
|
msgid "manage color themes"
|
||||||
|
msgstr "lista de itens da barra"
|
||||||
|
|
||||||
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
|
msgid ""
|
||||||
|
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||||
|
"<new> || del <name> || info <name>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "list of filters"
|
||||||
|
msgid ""
|
||||||
|
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||||
|
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||||
|
"marked with \"->\""
|
||||||
|
msgstr "lista de filtros"
|
||||||
|
|
||||||
|
msgid "raw[-backups]: display backup theme files"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||||
|
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||||
|
"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 <name>.theme in directory "
|
||||||
|
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||||
|
"the name must not match a built-in theme or start with \"backup-\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "names of filters"
|
||||||
|
msgid "raw[rename]: rename a user theme file"
|
||||||
|
msgstr "nomes dos filtros"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "raw[del]: delete a user theme file"
|
||||||
|
msgstr "lista de atalhos"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[info]: display details on a theme (name, description, creation date, "
|
||||||
|
"WeeChat version, number of option overrides)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "name: name of a theme"
|
||||||
|
msgstr "habilita suporte à mouse"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||||
|
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||||
|
"directory \"themes\" inside the WeeChat configuration directory."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By default, `/theme apply` command creates a backup of current themable "
|
||||||
|
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||||
|
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||||
|
"backup-<timestamp>`. This is controlled by the option "
|
||||||
|
"weechat.look.theme_backup."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
#| msgid "values for a configuration option"
|
#| msgid "values for a configuration option"
|
||||||
msgid "toggle value of a config option"
|
msgid "toggle value of a config option"
|
||||||
@@ -4298,6 +4417,15 @@ msgstr ""
|
|||||||
msgid "names of layouts"
|
msgid "names of layouts"
|
||||||
msgstr "nomes das disposições"
|
msgstr "nomes das disposições"
|
||||||
|
|
||||||
|
msgid "names of themes (built-ins + user files + backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of user theme files (without built-ins and backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "names of secured data (file sec.conf, section data)"
|
msgid "names of secured data (file sec.conf, section data)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -5267,6 +5395,20 @@ msgstr ""
|
|||||||
msgid "number of spaces used to display tabs in messages"
|
msgid "number of spaces used to display tabs in messages"
|
||||||
msgstr "prefixo para mensagens de ação"
|
msgstr "prefixo para mensagens de ação"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"name of the last theme applied with command /theme (set automatically, do "
|
||||||
|
"not change manually); informational only, the theme is not re-applied at "
|
||||||
|
"startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"create a backup theme file with the current themable options before applying "
|
||||||
|
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||||
|
"is aborted (no option is changed); the backup file is written to directory "
|
||||||
|
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||||
|
"with the command: `/theme apply backup-<timestamp>`"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"time format for dates converted to strings and displayed in messages (see "
|
"time format for dates converted to strings and displayed in messages (see "
|
||||||
"man strftime for date/time specifiers)"
|
"man strftime for date/time specifiers)"
|
||||||
@@ -6233,6 +6375,111 @@ msgstr "%s: erro: dicionário \"%s\" não está disponível em seu sistema"
|
|||||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||||
msgstr "Uso de memória (veja \"man mallinfo\" para ajuda):"
|
msgstr "Uso de memória (veja \"man mallinfo\" para ajuda):"
|
||||||
|
|
||||||
|
msgid "WeeChat default theme for light-background terminals"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Automatic backup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sKey \"%s\" not found"
|
||||||
|
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||||
|
msgstr "%sTecla \"%s\" não encontrada"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||||
|
msgstr "%s%s: script \"%s\" não carregado"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: malformed section header"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||||
|
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||||
|
msgstr "%sAviso: %s, linha %d: identificador de seção desconhecido (\"%s\")"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: missing '=' separator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sWarning: %s, line %d: unknown option for section \"%s\": %s"
|
||||||
|
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||||
|
msgstr "%sAviso: %s, linha %d: opção \"%s\" desconhecido para seção \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to parse theme file \"%s\""
|
||||||
|
msgstr "%s%s: não foi possível interpretar arquivo \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%sUnable to create theme backup; aborting apply (disable option "
|
||||||
|
"weechat.look.theme_backup to force)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
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 ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to save theme \"%s\""
|
||||||
|
msgstr "%s%s: não foi possível interpretar arquivo \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Option \"%s%s%s\":"
|
||||||
|
msgid "Theme saved to: %s"
|
||||||
|
msgstr "Opção \"%s%s%s\":"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sCannot rename built-in theme \"%s\""
|
||||||
|
msgstr "%sErro: não foi possível criar arquivo \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sNew name is the same as old name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sTheme \"%s\" already exists"
|
||||||
|
msgstr "%sErro: filtro \"%s\" já existe"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||||
|
msgstr "%sErro: não foi possível renomear filtro \"%s\" para \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "Theme \"%s\" renamed to \"%s\""
|
||||||
|
msgstr "Filtro \"%s\" renomeado para \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sCannot delete built-in theme \"%s\""
|
||||||
|
msgstr "%sErro: não foi possível criar arquivo \"%s\""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to delete theme \"%s\""
|
||||||
|
msgstr "%s%s: não foi possível interpretar arquivo \"%s\""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme deleted: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -6390,22 +6637,37 @@ msgstr ""
|
|||||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||||
msgstr "1 se o WeeChat está sendo atualizado (comando `/upgrade`)"
|
msgstr "1 se o WeeChat está sendo atualizado (comando `/upgrade`)"
|
||||||
|
|
||||||
|
msgid "Welcome to WeeChat!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Welcome to WeeChat!\n"
|
|
||||||
"\n"
|
|
||||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||||
"main WeeChat concepts.\n"
|
"main WeeChat concepts."
|
||||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
#, c-format
|
||||||
|
msgid "All WeeChat docs are available at: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"Moreover, there is inline help with /help on all commands and options (use "
|
"Moreover, there is inline help with /help on all commands and options (use "
|
||||||
"Tab key to complete the name).\n"
|
"Tab key to complete the name)."
|
||||||
"The command /fset can help to customize WeeChat.\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
msgid "The command /fset can help to customize WeeChat."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"You can add and connect to an IRC server with /server and /connect commands "
|
"You can add and connect to an IRC server with /server and /connect commands "
|
||||||
"(see /help server)."
|
"(see /help server)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||||
|
"switch back to the default dark theme."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -7938,7 +8200,8 @@ msgstr "Arquivo de configuração desconhecido \"%s\""
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||||
"string/color/enum)"
|
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||||
|
"options that can be used in themes, regardless of type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> `d`: show only changed options"
|
msgid "> `d`: show only changed options"
|
||||||
@@ -16466,7 +16729,9 @@ msgstr ""
|
|||||||
msgid "> type `command_run`: command(s) (required)"
|
msgid "> type `command_run`: command(s) (required)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
msgid ""
|
||||||
|
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||||
|
"calls"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `config`: name(s) of option (required)"
|
msgid "> type `config`: name(s) of option (required)"
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: WeeChat\n"
|
"Project-Id-Version: WeeChat\n"
|
||||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||||
"POT-Creation-Date: 2026-06-08 22:23+0200\n"
|
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||||
"PO-Revision-Date: 2026-03-08 08:59+0100\n"
|
"PO-Revision-Date: 2026-03-08 08:59+0100\n"
|
||||||
"Last-Translator: Aleksey V Zapparov AKA ixti <ixti@member.fsf.org>\n"
|
"Last-Translator: Aleksey V Zapparov AKA ixti <ixti@member.fsf.org>\n"
|
||||||
"Language-Team: Russian <weechat-dev@nongnu.org>\n"
|
"Language-Team: Russian <weechat-dev@nongnu.org>\n"
|
||||||
@@ -1012,6 +1012,48 @@ msgstr "не на канале"
|
|||||||
msgid "%sFunction \"%s\" is not available on this system"
|
msgid "%sFunction \"%s\" is not available on this system"
|
||||||
msgstr "%s plugin \"%s\" не найден\n"
|
msgstr "%s plugin \"%s\" не найден\n"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "No theme available"
|
||||||
|
msgstr " . тип: целочисленный\n"
|
||||||
|
|
||||||
|
msgid "Themes:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " %s %s%s%s (file)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sTheme \"%s\" not found"
|
||||||
|
msgstr "%s сервер \"%s\" не найден\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "Theme \"%s%s%s\":"
|
||||||
|
msgstr "Ники %s%s%s: %s["
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid " source: %s"
|
||||||
|
msgstr " IRC(%s)\n"
|
||||||
|
|
||||||
|
msgid " source: built-in (in-memory)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid " description: %s"
|
||||||
|
msgstr " . описание: %s\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid " date: %s"
|
||||||
|
msgstr " IRC(%s)\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid " WeeChat version: %s"
|
||||||
|
msgstr "слоган WeeChat"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " overrides: %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%sFailed to unset option \"%s\""
|
msgid "%sFailed to unset option \"%s\""
|
||||||
msgstr "%s не могу сохранить конфигурационный файл pluginов\n"
|
msgstr "%s не могу сохранить конфигурационный файл pluginов\n"
|
||||||
@@ -3535,6 +3577,75 @@ msgstr ""
|
|||||||
msgid "number: number of processes to clean"
|
msgid "number: number of processes to clean"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "manage color themes"
|
||||||
|
msgstr "Список сокращений:\n"
|
||||||
|
|
||||||
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
|
msgid ""
|
||||||
|
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||||
|
"<new> || del <name> || info <name>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||||
|
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||||
|
"marked with \"->\""
|
||||||
|
msgstr "Список сокращений:\n"
|
||||||
|
|
||||||
|
msgid "raw[-backups]: display backup theme files"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||||
|
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||||
|
"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 <name>.theme in directory "
|
||||||
|
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||||
|
"the name must not match a built-in theme or start with \"backup-\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "raw[rename]: rename a user theme file"
|
||||||
|
msgstr "Список сокращений:\n"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "get/set channel topic"
|
||||||
|
msgid "raw[del]: delete a user theme file"
|
||||||
|
msgstr "получить/установить тему канала"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[info]: display details on a theme (name, description, creation date, "
|
||||||
|
"WeeChat version, number of option overrides)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
msgid "name: name of a theme"
|
||||||
|
msgstr "Список сокращений:\n"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||||
|
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||||
|
"directory \"themes\" inside the WeeChat configuration directory."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By default, `/theme apply` command creates a backup of current themable "
|
||||||
|
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||||
|
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||||
|
"backup-<timestamp>`. This is controlled by the option "
|
||||||
|
"weechat.look.theme_backup."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid "toggle value of a config option"
|
msgid "toggle value of a config option"
|
||||||
msgstr "Не найден параметр\n"
|
msgstr "Не найден параметр\n"
|
||||||
@@ -4091,6 +4202,15 @@ msgstr ""
|
|||||||
msgid "names of layouts"
|
msgid "names of layouts"
|
||||||
msgstr "Список сокращений:\n"
|
msgstr "Список сокращений:\n"
|
||||||
|
|
||||||
|
msgid "names of themes (built-ins + user files + backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of user theme files (without built-ins and backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "names of secured data (file sec.conf, section data)"
|
msgid "names of secured data (file sec.conf, section data)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -4940,6 +5060,20 @@ msgstr ""
|
|||||||
msgid "number of spaces used to display tabs in messages"
|
msgid "number of spaces used to display tabs in messages"
|
||||||
msgstr "ответить на ping"
|
msgstr "ответить на ping"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"name of the last theme applied with command /theme (set automatically, do "
|
||||||
|
"not change manually); informational only, the theme is not re-applied at "
|
||||||
|
"startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"create a backup theme file with the current themable options before applying "
|
||||||
|
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||||
|
"is aborted (no option is changed); the backup file is written to directory "
|
||||||
|
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||||
|
"with the command: `/theme apply backup-<timestamp>`"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy
|
#, fuzzy
|
||||||
msgid ""
|
msgid ""
|
||||||
"time format for dates converted to strings and displayed in messages (see "
|
"time format for dates converted to strings and displayed in messages (see "
|
||||||
@@ -5903,6 +6037,104 @@ msgstr "%s plugin \"%s\" не найден\n"
|
|||||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "WeeChat default theme for light-background terminals"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Automatic backup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||||
|
msgstr "%s сервер \"%s\" не найден\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||||
|
msgstr "%s сервер \"%s\" не найден\n"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: malformed section header"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||||
|
msgstr "%s %s, строка %d: неизвестный идентификатор секции (\"%s\")\n"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: missing '=' separator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||||
|
msgstr "%s %s, строка %d: неизвестный идентификатор секции (\"%s\")\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sFailed to parse theme file \"%s\""
|
||||||
|
msgstr "Не могу записать лог-файл \"%s\"\n"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%sUnable to create theme backup; aborting apply (disable option "
|
||||||
|
"weechat.look.theme_backup to force)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
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 ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sFailed to save theme \"%s\""
|
||||||
|
msgstr "Не могу записать лог-файл \"%s\"\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "Theme saved to: %s"
|
||||||
|
msgstr "Ники %s%s%s: %s["
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sCannot rename built-in theme \"%s\""
|
||||||
|
msgstr "%s не могу создать файл \"%s\"\n"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sNew name is the same as old name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sTheme \"%s\" already exists"
|
||||||
|
msgstr "%s игнорирование уже существует\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||||
|
msgstr "%s неизвестный параметр для команды \"%s\"\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "Theme \"%s\" renamed to \"%s\""
|
||||||
|
msgstr "команда users отключена"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sCannot delete built-in theme \"%s\""
|
||||||
|
msgstr "%s не могу создать файл \"%s\"\n"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
msgid "%sFailed to delete theme \"%s\""
|
||||||
|
msgstr "Не могу записать лог-файл \"%s\"\n"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme deleted: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, fuzzy, c-format
|
||||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||||
msgstr "Обновляю WeeChat...\n"
|
msgstr "Обновляю WeeChat...\n"
|
||||||
@@ -6062,22 +6294,37 @@ msgstr ""
|
|||||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Welcome to WeeChat!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Welcome to WeeChat!\n"
|
|
||||||
"\n"
|
|
||||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||||
"main WeeChat concepts.\n"
|
"main WeeChat concepts."
|
||||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
#, c-format
|
||||||
|
msgid "All WeeChat docs are available at: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"Moreover, there is inline help with /help on all commands and options (use "
|
"Moreover, there is inline help with /help on all commands and options (use "
|
||||||
"Tab key to complete the name).\n"
|
"Tab key to complete the name)."
|
||||||
"The command /fset can help to customize WeeChat.\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
msgid "The command /fset can help to customize WeeChat."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"You can add and connect to an IRC server with /server and /connect commands "
|
"You can add and connect to an IRC server with /server and /connect commands "
|
||||||
"(see /help server)."
|
"(see /help server)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||||
|
"switch back to the default dark theme."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -7567,7 +7814,8 @@ msgstr "перезагрузить конфигурационный файл с
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||||
"string/color/enum)"
|
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||||
|
"options that can be used in themes, regardless of type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> `d`: show only changed options"
|
msgid "> `d`: show only changed options"
|
||||||
@@ -15962,7 +16210,9 @@ msgstr ""
|
|||||||
msgid "> type `command_run`: command(s) (required)"
|
msgid "> type `command_run`: command(s) (required)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
msgid ""
|
||||||
|
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||||
|
"calls"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `config`: name(s) of option (required)"
|
msgid "> type `config`: name(s) of option (required)"
|
||||||
|
|||||||
@@ -22,10 +22,10 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: WeeChat\n"
|
"Project-Id-Version: WeeChat\n"
|
||||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||||
"POT-Creation-Date: 2026-06-08 22:23+0200\n"
|
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||||
"PO-Revision-Date: 2026-05-30 14:02+0200\n"
|
"PO-Revision-Date: 2026-06-28 08:52+0200\n"
|
||||||
"Last-Translator: Ivan Pešić <ivan.pesic@gmail.com>\n"
|
"Last-Translator: Ivan Pešić <ivan.pesic@gmail.com>\n"
|
||||||
"Language-Team: Serbian <weechat-dev@nongnu.org>\n"
|
"Language-Team: Serbian <ivan.pesic@gmail.com>\n"
|
||||||
"Language: sr\n"
|
"Language: sr\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@@ -976,6 +976,55 @@ msgstr "Креирана опција: "
|
|||||||
msgid "%sFunction \"%s\" is not available on this system"
|
msgid "%sFunction \"%s\" is not available on this system"
|
||||||
msgstr "%sФункција „%s” није доступна на овом систему"
|
msgstr "%sФункција „%s” није доступна на овом систему"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "not available"
|
||||||
|
msgid "No theme available"
|
||||||
|
msgstr "није доступно"
|
||||||
|
|
||||||
|
msgid "Themes:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " %s %s%s%s (file)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sKey \"%s\" not found"
|
||||||
|
msgid "%sTheme \"%s\" not found"
|
||||||
|
msgstr "%sНије пронађен тастер „%s”"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Option \"%s%s%s\":"
|
||||||
|
msgid "Theme \"%s%s%s\":"
|
||||||
|
msgstr "Опција „%s%s%s”:"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid " file: %s"
|
||||||
|
msgid " source: %s"
|
||||||
|
msgstr " фајл: %s"
|
||||||
|
|
||||||
|
msgid " source: built-in (in-memory)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "description"
|
||||||
|
msgid " description: %s"
|
||||||
|
msgstr "опис"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid " file: %s"
|
||||||
|
msgid " date: %s"
|
||||||
|
msgstr " фајл: %s"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "WeeChat version"
|
||||||
|
msgid " WeeChat version: %s"
|
||||||
|
msgstr "верзија програма WeeChat"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " overrides: %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sFailed to unset option \"%s\""
|
msgid "%sFailed to unset option \"%s\""
|
||||||
msgstr "%sНије успело уклањање опције „%s”"
|
msgstr "%sНије успело уклањање опције „%s”"
|
||||||
@@ -3853,6 +3902,85 @@ msgstr ""
|
|||||||
msgid "number: number of processes to clean"
|
msgid "number: number of processes to clean"
|
||||||
msgstr "број: број процеса који треба да се очисти"
|
msgstr "број: број процеса који треба да се очисти"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "manage custom bar items"
|
||||||
|
msgid "manage color themes"
|
||||||
|
msgstr "управљање прилагођеним ставкама траке"
|
||||||
|
|
||||||
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
|
msgid ""
|
||||||
|
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||||
|
"<new> || del <name> || info <name>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid ""
|
||||||
|
#| "raw[list]: list remote relay servers (without argument, this list is "
|
||||||
|
#| "displayed)"
|
||||||
|
msgid ""
|
||||||
|
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||||
|
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||||
|
"marked with \"->\""
|
||||||
|
msgstr ""
|
||||||
|
"raw[list]: листа сервера релеја удаљених (без аргумента се приказује ова "
|
||||||
|
"листа)"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "raw[tags]: display tags for lines"
|
||||||
|
msgid "raw[-backups]: display backup theme files"
|
||||||
|
msgstr "raw[tags]: исписује ознаке за линије"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||||
|
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||||
|
"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 <name>.theme in directory "
|
||||||
|
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||||
|
"the name must not match a built-in theme or start with \"backup-\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "raw[rename]: rename a filter"
|
||||||
|
msgid "raw[rename]: rename a user theme file"
|
||||||
|
msgstr "raw[rename]: мења име филтеру"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "raw[del]: delete a server"
|
||||||
|
msgid "raw[del]: delete a user theme file"
|
||||||
|
msgstr "raw[del]: брисање сервера"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[info]: display details on a theme (name, description, creation date, "
|
||||||
|
"WeeChat version, number of option overrides)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "name: name of trigger"
|
||||||
|
msgid "name: name of a theme"
|
||||||
|
msgstr "име: име окидача"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||||
|
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||||
|
"directory \"themes\" inside the WeeChat configuration directory."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By default, `/theme apply` command creates a backup of current themable "
|
||||||
|
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||||
|
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||||
|
"backup-<timestamp>`. This is controlled by the option "
|
||||||
|
"weechat.look.theme_backup."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "toggle value of a config option"
|
msgid "toggle value of a config option"
|
||||||
msgstr "пребацује вредност опције конфигурације"
|
msgstr "пребацује вредност опције конфигурације"
|
||||||
|
|
||||||
@@ -4474,6 +4602,15 @@ msgstr "површине („chat” или име траке) за слобод
|
|||||||
msgid "names of layouts"
|
msgid "names of layouts"
|
||||||
msgstr "имена распореда"
|
msgstr "имена распореда"
|
||||||
|
|
||||||
|
msgid "names of themes (built-ins + user files + backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of user theme files (without built-ins and backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "names of secured data (file sec.conf, section data)"
|
msgid "names of secured data (file sec.conf, section data)"
|
||||||
msgstr "имена обезбеђених података (фајл sec.conf, одељак data)"
|
msgstr "имена обезбеђених података (фајл sec.conf, одељак data)"
|
||||||
|
|
||||||
@@ -5607,6 +5744,20 @@ msgstr ""
|
|||||||
msgid "number of spaces used to display tabs in messages"
|
msgid "number of spaces used to display tabs in messages"
|
||||||
msgstr "број размака који се користи за приказ табулатора у порукама"
|
msgstr "број размака који се користи за приказ табулатора у порукама"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"name of the last theme applied with command /theme (set automatically, do "
|
||||||
|
"not change manually); informational only, the theme is not re-applied at "
|
||||||
|
"startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"create a backup theme file with the current themable options before applying "
|
||||||
|
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||||
|
"is aborted (no option is changed); the backup file is written to directory "
|
||||||
|
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||||
|
"with the command: `/theme apply backup-<timestamp>`"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"time format for dates converted to strings and displayed in messages (see "
|
"time format for dates converted to strings and displayed in messages (see "
|
||||||
"man strftime for date/time specifiers)"
|
"man strftime for date/time specifiers)"
|
||||||
@@ -6661,6 +6812,122 @@ msgstr "Системска функција „%s” није доступна"
|
|||||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||||
msgstr "Употреба ресурса (за помоћ погледајте „man getrusage”):"
|
msgstr "Употреба ресурса (за помоћ погледајте „man getrusage”):"
|
||||||
|
|
||||||
|
msgid "WeeChat default theme for light-background terminals"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Automatic backup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sKey \"%s\" not found"
|
||||||
|
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||||
|
msgstr "%sНије пронађен тастер „%s”"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s: script \"%s\" is not installed"
|
||||||
|
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||||
|
msgstr "%s: скрипта „%s” није инсталирана"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: malformed section header"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sWarning: %s, line %d: ignoring unknown section identifier (\"%s\")"
|
||||||
|
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
"%sУпозорење: %s, линија %d: игнорише се непознати идентификатор одељка („%s”)"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: missing '=' separator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid ""
|
||||||
|
#| "%sWarning: %s, line %d: ignoring unknown option for section \"%s\": %s"
|
||||||
|
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
"%sУпозорење: %s, линија %d: игнорише се непозната опција за одељак „%s”: %s"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to parse theme file \"%s\""
|
||||||
|
msgstr "%s%s: није успело парсирање фајла „%s”"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%sUnable to create theme backup; aborting apply (disable option "
|
||||||
|
"weechat.look.theme_backup to force)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
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"
|
||||||
|
msgstr "%sИме бафера „%s” је резервисано за програм WeeChat"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sBuffer name \"%s\" is reserved for WeeChat"
|
||||||
|
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||||
|
msgstr "%sИме бафера „%s” је резервисано за програм WeeChat"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to save theme \"%s\""
|
||||||
|
msgstr "%s%s: није успело парсирање фајла „%s”"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Option \"%s%s%s\":"
|
||||||
|
msgid "Theme saved to: %s"
|
||||||
|
msgstr "Опција „%s%s%s”:"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sCannot create file \"%s\""
|
||||||
|
msgid "%sCannot rename built-in theme \"%s\""
|
||||||
|
msgstr "%sНе може да се креира фајл „%s”"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sNew name is the same as old name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sBar \"%s\" already exists"
|
||||||
|
msgid "%sTheme \"%s\" already exists"
|
||||||
|
msgstr "%sТрака „%s” већ постоји"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sUnable to rename filter \"%s\" to \"%s\""
|
||||||
|
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||||
|
msgstr "%sНије успела промена име филтера „%s” на „%s”"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Trigger \"%s\" renamed to \"%s\""
|
||||||
|
msgid "Theme \"%s\" renamed to \"%s\""
|
||||||
|
msgstr "Окидачу „%s” је промењено име у „%s”"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sCannot create file \"%s\""
|
||||||
|
msgid "%sCannot delete built-in theme \"%s\""
|
||||||
|
msgstr "%sНе може да се креира фајл „%s”"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to delete theme \"%s\""
|
||||||
|
msgstr "%s%s: није успело парсирање фајла „%s”"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme deleted: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||||
msgstr "%sГрешка приликом ажурирања програма WeeChat фајлом „%s”:"
|
msgstr "%sГрешка приликом ажурирања програма WeeChat фајлом „%s”:"
|
||||||
@@ -6820,35 +7087,36 @@ msgstr "Крај URL трансфера ’%s’, трансфер је заус
|
|||||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||||
msgstr "WeeChat се извршава у режиму без интерфејса (ctrl-c за излаз)."
|
msgstr "WeeChat се извршава у режиму без интерфејса (ctrl-c за излаз)."
|
||||||
|
|
||||||
|
msgid "Welcome to WeeChat!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Welcome to WeeChat!\n"
|
|
||||||
"\n"
|
|
||||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||||
"main WeeChat concepts.\n"
|
"main WeeChat concepts."
|
||||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
#, c-format
|
||||||
|
msgid "All WeeChat docs are available at: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"Moreover, there is inline help with /help on all commands and options (use "
|
"Moreover, there is inline help with /help on all commands and options (use "
|
||||||
"Tab key to complete the name).\n"
|
"Tab key to complete the name)."
|
||||||
"The command /fset can help to customize WeeChat.\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
msgid "The command /fset can help to customize WeeChat."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"You can add and connect to an IRC server with /server and /connect commands "
|
"You can add and connect to an IRC server with /server and /connect commands "
|
||||||
"(see /help server)."
|
"(see /help server)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Добродошли у WeeChat!\n"
|
|
||||||
"\n"
|
msgid ""
|
||||||
"Ако се тек упознајете са програмом WeeChat, препоручује се да прочитате "
|
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||||
"барем водич за брзи почетак, и корисничко упутство ако имате више времена; "
|
"switch back to the default dark theme."
|
||||||
"они објашњавају основне концепте програма WeeChat.\n"
|
msgstr ""
|
||||||
"Комплетна WeeChat документација је доступна на адреси: https://weechat.org/"
|
|
||||||
"doc/\n"
|
|
||||||
"\n"
|
|
||||||
"Такође је доступна и активна помоћ са /help за све команде и опције "
|
|
||||||
"(користите тастер Tab да довршите име).\n"
|
|
||||||
"Команда /fset може да вам помогне за прилагођавање програма WeeChat.\n"
|
|
||||||
"\n"
|
|
||||||
"Командама /server и /connect додајете и повезујете се на IRC сервер "
|
|
||||||
"(погледајте /help server)."
|
|
||||||
|
|
||||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -8597,9 +8865,14 @@ msgstr "> `xxx`: приказивање само опција са „xxx” у
|
|||||||
msgid "> `f:xxx`: show only configuration file \"xxx\""
|
msgid "> `f:xxx`: show only configuration file \"xxx\""
|
||||||
msgstr "> `f:xxx`: приказивање само конфигурационог фајла „xxx”"
|
msgstr "> `f:xxx`: приказивање само конфигурационог фајла „xxx”"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid ""
|
||||||
|
#| "> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/"
|
||||||
|
#| "integer/string/color/enum)"
|
||||||
msgid ""
|
msgid ""
|
||||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||||
"string/color/enum)"
|
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||||
|
"options that can be used in themes, regardless of type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"> `t:xxx`: приказивање само типа „xxx” (bool/int/str/col/enum или boolean/"
|
"> `t:xxx`: приказивање само типа „xxx” (bool/int/str/col/enum или boolean/"
|
||||||
"integer/string/color/enum)"
|
"integer/string/color/enum)"
|
||||||
@@ -12664,16 +12937,14 @@ msgstr "%s%s: нисте повезани са сервером"
|
|||||||
msgid "%s%s: this buffer is not a channel!"
|
msgid "%s%s: this buffer is not a channel!"
|
||||||
msgstr "%s%s: овај бафер није канал!"
|
msgstr "%s%s: овај бафер није канал!"
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
#| msgid ""
|
|
||||||
#| "%d channels (total: %d) | Filter: %s | Sort: %s | Key(input): ctrl+j=join "
|
|
||||||
#| "channel, ($)=refresh, (q)=close buffer"
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
|
"%d channels (total: %d) | Filter: %s | Sort: %s | Keys: ctrl+j=join channel "
|
||||||
"| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
|
"| Input: $=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"%d канала (укупно: %d) | Филтер: %s | Сортирање: %s | Тастер(унос): ctrl+j= "
|
"%d канала (укупно: %d) | Филтер: %s | Сортирање: %s | Тастери: "
|
||||||
"приступ каналу, ($)=освежавање, (q)=затварање бафера"
|
"ctrl+j=приступ каналу | Унос: $=освежавање, s:x,y=сортирање, *=ресет "
|
||||||
|
"филтера, q=затварање бафера"
|
||||||
|
|
||||||
msgid "Empty list of channels, try \"$\" to refresh list"
|
msgid "Empty list of channels, try \"$\" to refresh list"
|
||||||
msgstr "Празна листа канала, покушајте „$” да освежите листу"
|
msgstr "Празна листа канала, покушајте „$” да освежите листу"
|
||||||
@@ -15679,14 +15950,6 @@ msgstr ""
|
|||||||
"relay.network.allow_empty_password) (напомена: садржај се израчунава, "
|
"relay.network.allow_empty_password) (напомена: садржај се израчунава, "
|
||||||
"погледајте /help eval)"
|
"погледајте /help eval)"
|
||||||
|
|
||||||
#, fuzzy
|
|
||||||
#| msgid ""
|
|
||||||
#| "comma separated list of hash algorithms used for password authentication "
|
|
||||||
#| "in weechat protocol, among these values: \"plain\" (password in plain "
|
|
||||||
#| "text, not hashed), \"sha256\", \"sha512\", \"pbkdf2+sha256\", "
|
|
||||||
#| "\"pbkdf2+sha512\"), \"*\" means all algorithms, a name beginning with \"!"
|
|
||||||
#| "\" is a negative value to prevent an algorithm from being used, wildcard "
|
|
||||||
#| "\"*\" is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"comma separated list of hash algorithms used for password authentication in "
|
"comma separated list of hash algorithms used for password authentication in "
|
||||||
"\"api\" and \"weechat\" protocols, among these values: \"plain\" (password "
|
"\"api\" and \"weechat\" protocols, among these values: \"plain\" (password "
|
||||||
@@ -15696,28 +15959,22 @@ msgid ""
|
|||||||
"is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
|
"is allowed in names (examples: \"*\", \"pbkdf2*\", \"*,!plain\")"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"листа хеш алгоритама раздвојених запетама који се користе за аутентификацију "
|
"листа хеш алгоритама раздвојених запетама који се користе за аутентификацију "
|
||||||
"лозинке у weechat протоколу, могу бити: „plain” (лозинка је чисти текст, не "
|
"лозинке у „api” и „weechat” протоколима, који могу бити: „plain” (лозинка је "
|
||||||
"хешира се), „sha256”, „sha512”, „pbkdf2+sha256”, „pbkdf2+sha512”), „*” значи "
|
"чисти текст, не хешира се), „sha256”, „sha512”, „pbkdf2+sha256”, "
|
||||||
"сви алгоритми, име које почиње са „!” је негативна вредност којим се "
|
"„pbkdf2+sha512”), „*” значи сви алгоритми, име које почиње са „!” је "
|
||||||
"спречава употреба тог алгоритма, у именима је дозвољена употреба џокера „*” "
|
"негативна вредност којим се спречава употреба тог алгоритма, у именима је "
|
||||||
"(примери: „*”, „pbkdf2*”, „*,!plain”)"
|
"дозвољена употреба џокера „*” (примери: „*”, „pbkdf2*”, „*,!plain”)"
|
||||||
|
|
||||||
#, fuzzy
|
|
||||||
#| msgid ""
|
|
||||||
#| "number of iterations asked to the client in weechat protocol when a "
|
|
||||||
#| "hashed password with algorithm PBKDF2 is used for authentication; more "
|
|
||||||
#| "iterations is better in term of security but is slower to compute; this "
|
|
||||||
#| "number should not be too high if your CPU is slow"
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"number of iterations asked to the client in \"api\" and \"weechat\" "
|
"number of iterations asked to the client in \"api\" and \"weechat\" "
|
||||||
"protocols when a hashed password with algorithm PBKDF2 is used for "
|
"protocols when a hashed password with algorithm PBKDF2 is used for "
|
||||||
"authentication; more iterations is better in term of security but is slower "
|
"authentication; more iterations is better in term of security but is slower "
|
||||||
"to compute; this number should not be too high if your CPU is slow"
|
"to compute; this number should not be too high if your CPU is slow"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"број итерација који се захтева од клијента у weechat протоколу када се за "
|
"број итерација који се захтева од клијента у „api” и „weechat” протоколима "
|
||||||
"аутентификацију користи лозинка хеширана PBKDF2 алгоритмом ; више итерација "
|
"када се за аутентификацију користи лозинка хеширана PBKDF2 алгоритмом; више "
|
||||||
"је боље у смислу безбедности, али је спорије за израчунавање; ако је ваш CPU "
|
"итерација је боље у смислу безбедности, али је спорије за израчунавање; ако "
|
||||||
"спор, овај број не би требало да буде сувише велики"
|
"је ваш CPU спор, овај број не би требало да буде сувише велики"
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"number of seconds to allow before and after the current time for the hash of "
|
"number of seconds to allow before and after the current time for the hash of "
|
||||||
@@ -16303,22 +16560,17 @@ msgstr "(ништа)"
|
|||||||
msgid "Alt+key/input: v=back to list d=jump to diff"
|
msgid "Alt+key/input: v=back to list d=jump to diff"
|
||||||
msgstr "Alt+тастер/унос: v=назад на листу d=скок на diff"
|
msgstr "Alt+тастер/унос: v=назад на листу d=скок на diff"
|
||||||
|
|
||||||
#, fuzzy, c-format
|
#, c-format
|
||||||
#| msgid ""
|
|
||||||
#| "%d/%d scripts (filter: %s) | Sort: %s | Alt+key/input: i=install, "
|
|
||||||
#| "r=remove, l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view "
|
|
||||||
#| "script | Input: q=close, $=refresh, s:x,y=sort, words=filter, *=reset "
|
|
||||||
#| "filter | Mouse: left=select, right=install/remove"
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"%d/%d scripts | Filter: %s | Sort: %s | Alt+key/input: i=install, r=remove, "
|
"%d/%d scripts | Filter: %s | Sort: %s | Alt+key/input: i=install, r=remove, "
|
||||||
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
|
"l=load, L=reload, u=unload, A=autoload, h=(un)hold, v=view script | Input: "
|
||||||
"$=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer | Mouse: "
|
"$=refresh, s:x,y=sort, words=filter, *=reset filter, q=close buffer | Mouse: "
|
||||||
"left=select, right=install/remove"
|
"left=select, right=install/remove"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"%d/%d скрипти (филтер: %s) | Сортирање: %s | Alt+тастер/унос: i=инсталација, "
|
"%d/%d скрипти | Филтер: %s | Сортирање: %s | Alt+тастер/унос: i=инсталација, "
|
||||||
"r=уклањање, l=учитавање, L=поновно учитавање, u=уклањање из меморије, "
|
"r=уклањање, l=учитавање, L=поновно учитавање, u=уклањање из меморије, "
|
||||||
"A=аутоучитавање, h=задржавање, v=преглед скрипте | Унос: q=затварање, "
|
"A=аутоучитавање, h=задржавање, v=преглед скрипте | Унос: q=затварање, "
|
||||||
"$=освежавање, s:x,y=сортирање, речи=филтер, *=ресет филтера | Миш: "
|
"$=освежавање, s:x,y=сортирање, words=филтер, *=ресет филтера | Миш: "
|
||||||
"леви=избор, десни=инсталација/уклањање"
|
"леви=избор, десни=инсталација/уклањање"
|
||||||
|
|
||||||
msgid "Scripts"
|
msgid "Scripts"
|
||||||
@@ -16695,10 +16947,8 @@ msgstr "1 ако је скрипта учитана"
|
|||||||
msgid "script name with extension"
|
msgid "script name with extension"
|
||||||
msgstr "име скрипте са екстензијом"
|
msgstr "име скрипте са екстензијом"
|
||||||
|
|
||||||
#, fuzzy
|
|
||||||
#| msgid "comma separated list of file name extensions for plugins"
|
|
||||||
msgid "comma-separated list of plugin:extension with supported languages"
|
msgid "comma-separated list of plugin:extension with supported languages"
|
||||||
msgstr "листа екстензија имена фајлова за додатке раздвојених запетама"
|
msgstr "листа додатак:екстензија са подржаним језицима раздвојених запетама"
|
||||||
|
|
||||||
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
msgid "script name with extension (wildcard \"*\" is allowed) (optional)"
|
||||||
msgstr "име скрипте са екстензијом (дозвољен је џокер „*”) (није обавезно)"
|
msgstr "име скрипте са екстензијом (дозвољен је џокер „*”) (није обавезно)"
|
||||||
@@ -17333,8 +17583,12 @@ msgstr ""
|
|||||||
msgid "> type `command_run`: command(s) (required)"
|
msgid "> type `command_run`: command(s) (required)"
|
||||||
msgstr "> тип `command_run`: команд(а/е) (обавезно)"
|
msgstr "> тип `command_run`: команд(а/е) (обавезно)"
|
||||||
|
|
||||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
msgid ""
|
||||||
msgstr "> тип `timer`: интервал (обавезан), поравнање на секунди, макс позива"
|
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||||
|
"calls"
|
||||||
|
msgstr ""
|
||||||
|
"> тип `timer`: интервал (обавезан, у милисекундама), поравнање на секунди, "
|
||||||
|
"макс позива"
|
||||||
|
|
||||||
msgid "> type `config`: name(s) of option (required)"
|
msgid "> type `config`: name(s) of option (required)"
|
||||||
msgstr "> тип `config`: име(на) опције (обавезно)"
|
msgstr "> тип `config`: име(на) опције (обавезно)"
|
||||||
@@ -18213,3 +18467,33 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"%s%s: не може да се прихвати настављање фајла „%s” (порт: %d, почетна "
|
"%s%s: не може да се прихвати настављање фајла „%s” (порт: %d, почетна "
|
||||||
"позиција: %llu): xfer није пронађен или није спреман за трансфер"
|
"позиција: %llu): xfer није пронађен или није спреман за трансфер"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Welcome to WeeChat!\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
|
#~ "quickstart guide, and the user's guide if you have some time; they "
|
||||||
|
#~ "explain main WeeChat concepts.\n"
|
||||||
|
#~ "All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Moreover, there is inline help with /help on all commands and options "
|
||||||
|
#~ "(use Tab key to complete the name).\n"
|
||||||
|
#~ "The command /fset can help to customize WeeChat.\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "You can add and connect to an IRC server with /server and /connect "
|
||||||
|
#~ "commands (see /help server)."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "Добродошли у WeeChat!\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Ако се тек упознајете са програмом WeeChat, препоручује се да прочитате "
|
||||||
|
#~ "барем водич за брзи почетак, и корисничко упутство ако имате више "
|
||||||
|
#~ "времена; они објашњавају основне концепте програма WeeChat.\n"
|
||||||
|
#~ "Комплетна WeeChat документација је доступна на адреси: https://"
|
||||||
|
#~ "weechat.org/doc/\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Такође је доступна и активна помоћ са /help за све команде и опције "
|
||||||
|
#~ "(користите тастер Tab да довршите име).\n"
|
||||||
|
#~ "Команда /fset може да вам помогне за прилагођавање програма WeeChat.\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Командама /server и /connect додајете и повезујете се на IRC сервер "
|
||||||
|
#~ "(погледајте /help server)."
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
#
|
#
|
||||||
# SPDX-FileCopyrightText: 2013 Hasan Kiran <sunder67@hotmail.com>
|
# SPDX-FileCopyrightText: 2013 Hasan Kiran <sunder67@hotmail.com>
|
||||||
# SPDX-FileCopyrightText: 2020-2025 Emir SARI <emir_sari@icloud.com>
|
# SPDX-FileCopyrightText: 2020-2026 Emir SARI <emir_sari@icloud.com>
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: GPL-3.0-or-later
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
#
|
#
|
||||||
@@ -23,10 +23,10 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: WeeChat\n"
|
"Project-Id-Version: WeeChat\n"
|
||||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||||
"POT-Creation-Date: 2026-06-08 22:23+0200\n"
|
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||||
"PO-Revision-Date: 2026-05-30 14:02+0200\n"
|
"PO-Revision-Date: 2026-06-28 08:53+0200\n"
|
||||||
"Last-Translator: Emir SARI <emir_sari@icloud.com>\n"
|
"Last-Translator: Emir SARI <emir_sari@icloud.com>\n"
|
||||||
"Language-Team: Turkish <weechat-dev@nongnu.org>\n"
|
"Language-Team: Turkish <emir_sari@icloud.com>\n"
|
||||||
"Language: tr\n"
|
"Language: tr\n"
|
||||||
"MIME-Version: 1.0\n"
|
"MIME-Version: 1.0\n"
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
@@ -971,6 +971,55 @@ msgstr "Seçenek oluşturuldu: "
|
|||||||
msgid "%sFunction \"%s\" is not available on this system"
|
msgid "%sFunction \"%s\" is not available on this system"
|
||||||
msgstr "%s\"%s\" işlevi sisteminizde kullanılabilir değil"
|
msgstr "%s\"%s\" işlevi sisteminizde kullanılabilir değil"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "not available"
|
||||||
|
msgid "No theme available"
|
||||||
|
msgstr "kullanılamıyor"
|
||||||
|
|
||||||
|
msgid "Themes:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " %s %s%s%s (file)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sKey \"%s\" not found"
|
||||||
|
msgid "%sTheme \"%s\" not found"
|
||||||
|
msgstr "%s\"%s\" düğmesi bulunamadı"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Option \"%s%s%s\":"
|
||||||
|
msgid "Theme \"%s%s%s\":"
|
||||||
|
msgstr "\"%s%s%s\" seçeneği:"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid " file: %s"
|
||||||
|
msgid " source: %s"
|
||||||
|
msgstr " dosya: %s"
|
||||||
|
|
||||||
|
msgid " source: built-in (in-memory)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "description"
|
||||||
|
msgid " description: %s"
|
||||||
|
msgstr "açıklama"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid " file: %s"
|
||||||
|
msgid " date: %s"
|
||||||
|
msgstr " dosya: %s"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "WeeChat version"
|
||||||
|
msgid " WeeChat version: %s"
|
||||||
|
msgstr "WeeChat sürümü"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " overrides: %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sFailed to unset option \"%s\""
|
msgid "%sFailed to unset option \"%s\""
|
||||||
msgstr "%s\"%s\" seçeneği kaldırılamadı"
|
msgstr "%s\"%s\" seçeneği kaldırılamadı"
|
||||||
@@ -3712,6 +3761,81 @@ msgstr ""
|
|||||||
msgid "number: number of processes to clean"
|
msgid "number: number of processes to clean"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "manage custom bar items"
|
||||||
|
msgid "manage color themes"
|
||||||
|
msgstr "özel çubuk ögelerini yönet"
|
||||||
|
|
||||||
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
|
msgid ""
|
||||||
|
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||||
|
"<new> || del <name> || info <name>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "list of filters"
|
||||||
|
msgid ""
|
||||||
|
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||||
|
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||||
|
"marked with \"->\""
|
||||||
|
msgstr "süzgeçlerin listesi"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "raw[tags]: display tags for lines"
|
||||||
|
msgid "raw[-backups]: display backup theme files"
|
||||||
|
msgstr "raw[tags]: Satırlar için künyeleri görüntüle"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||||
|
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||||
|
"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 <name>.theme in directory "
|
||||||
|
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||||
|
"the name must not match a built-in theme or start with \"backup-\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "raw[rename]: rename a filter"
|
||||||
|
msgid "raw[rename]: rename a user theme file"
|
||||||
|
msgstr "raw[rename]: Bir süzgeci yeniden adlandır"
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "get/set channel topic"
|
||||||
|
msgid "raw[del]: delete a user theme file"
|
||||||
|
msgstr "kanal konusunu al/ayarla"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[info]: display details on a theme (name, description, creation date, "
|
||||||
|
"WeeChat version, number of option overrides)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy
|
||||||
|
#| msgid "name: name of trigger"
|
||||||
|
msgid "name: name of a theme"
|
||||||
|
msgstr "ad: Tetiğin adı"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||||
|
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||||
|
"directory \"themes\" inside the WeeChat configuration directory."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By default, `/theme apply` command creates a backup of current themable "
|
||||||
|
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||||
|
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||||
|
"backup-<timestamp>`. This is controlled by the option "
|
||||||
|
"weechat.look.theme_backup."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "toggle value of a config option"
|
msgid "toggle value of a config option"
|
||||||
msgstr "bir yapılandırma seçeneğinin değerini aç/kapat"
|
msgstr "bir yapılandırma seçeneğinin değerini aç/kapat"
|
||||||
|
|
||||||
@@ -4304,6 +4428,15 @@ msgstr "serbest imleç hareketi için alanlar (\"chat\" veya çubuk adı)"
|
|||||||
msgid "names of layouts"
|
msgid "names of layouts"
|
||||||
msgstr "dizilim adları"
|
msgstr "dizilim adları"
|
||||||
|
|
||||||
|
msgid "names of themes (built-ins + user files + backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of user theme files (without built-ins and backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "names of secured data (file sec.conf, section data)"
|
msgid "names of secured data (file sec.conf, section data)"
|
||||||
msgstr "güvenli veri adları (sec.conf dosyası, bölüm verisi)"
|
msgstr "güvenli veri adları (sec.conf dosyası, bölüm verisi)"
|
||||||
|
|
||||||
@@ -5431,6 +5564,20 @@ msgstr ""
|
|||||||
msgid "number of spaces used to display tabs in messages"
|
msgid "number of spaces used to display tabs in messages"
|
||||||
msgstr "iletilerdeki sekmeleri görüntülemek için kullanılan boşluk sayısı"
|
msgstr "iletilerdeki sekmeleri görüntülemek için kullanılan boşluk sayısı"
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"name of the last theme applied with command /theme (set automatically, do "
|
||||||
|
"not change manually); informational only, the theme is not re-applied at "
|
||||||
|
"startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"create a backup theme file with the current themable options before applying "
|
||||||
|
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||||
|
"is aborted (no option is changed); the backup file is written to directory "
|
||||||
|
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||||
|
"with the command: `/theme apply backup-<timestamp>`"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"time format for dates converted to strings and displayed in messages (see "
|
"time format for dates converted to strings and displayed in messages (see "
|
||||||
"man strftime for date/time specifiers)"
|
"man strftime for date/time specifiers)"
|
||||||
@@ -6465,6 +6612,119 @@ msgstr "Sistem işlevi \"%s\" kullanılabilir değil"
|
|||||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||||
msgstr "Özkaynak kullanımı (yardım için bkz. \"man getrusage\"):"
|
msgstr "Özkaynak kullanımı (yardım için bkz. \"man getrusage\"):"
|
||||||
|
|
||||||
|
msgid "WeeChat default theme for light-background terminals"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Automatic backup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sKey \"%s\" not found"
|
||||||
|
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||||
|
msgstr "%s\"%s\" düğmesi bulunamadı"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s: script \"%s\" is not installed"
|
||||||
|
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||||
|
msgstr "%s: \"%s\" betiği kurulu değil"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: malformed section header"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sWarning: %s, line %d: unknown section identifier (\"%s\")"
|
||||||
|
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||||
|
msgstr "%sUyarı: %s, %d. satır: Bilinmeyen bölüm tanımlayıcısı (\"%s\")"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: missing '=' separator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sWarning: %s, line %d: unknown option for section \"%s\": %s"
|
||||||
|
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||||
|
msgstr "%sUyarı: %s, %d. satır: \"%s\" bölümü için bilinmeyen seçenek: %s"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to parse theme file \"%s\""
|
||||||
|
msgstr "%s%s: \"%s\" dosyası ayrıştırılamıyor"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%sUnable to create theme backup; aborting apply (disable option "
|
||||||
|
"weechat.look.theme_backup to force)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
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"
|
||||||
|
msgstr "%s\"%s\" arabellek adı WeeChat için ayrılmış"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sBuffer name \"%s\" is reserved for WeeChat"
|
||||||
|
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||||
|
msgstr "%s\"%s\" arabellek adı WeeChat için ayrılmış"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to save theme \"%s\""
|
||||||
|
msgstr "%s%s: \"%s\" dosyası ayrıştırılamıyor"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Option \"%s%s%s\":"
|
||||||
|
msgid "Theme saved to: %s"
|
||||||
|
msgstr "\"%s%s%s\" seçeneği:"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sCannot create file \"%s\""
|
||||||
|
msgid "%sCannot rename built-in theme \"%s\""
|
||||||
|
msgstr "%s\"%s\" dosyası oluşturulamıyor"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sNew name is the same as old name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sBar \"%s\" already exists"
|
||||||
|
msgid "%sTheme \"%s\" already exists"
|
||||||
|
msgstr "%s\"%s\" çubuğu halihazırda var"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sUnable to rename filter \"%s\" to \"%s\""
|
||||||
|
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||||
|
msgstr "%s\"%s\" süzgeci \"%s\" olarak yeniden adlandırılamıyor"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "Trigger \"%s\" renamed to \"%s\""
|
||||||
|
msgid "Theme \"%s\" renamed to \"%s\""
|
||||||
|
msgstr "\"%s\" tetiği \"%s\" olarak yeniden adlandırıldı"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%sCannot create file \"%s\""
|
||||||
|
msgid "%sCannot delete built-in theme \"%s\""
|
||||||
|
msgstr "%s\"%s\" dosyası oluşturulamıyor"
|
||||||
|
|
||||||
|
#, fuzzy, c-format
|
||||||
|
#| msgid "%s%s: unable to parse file \"%s\""
|
||||||
|
msgid "%sFailed to delete theme \"%s\""
|
||||||
|
msgstr "%s%s: \"%s\" dosyası ayrıştırılamıyor"
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme deleted: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||||
msgstr "%sWeeChat'i \"%s\" dosyası ile yükseltirken hata:"
|
msgstr "%sWeeChat'i \"%s\" dosyası ile yükseltirken hata:"
|
||||||
@@ -6623,34 +6883,36 @@ msgstr "\"%s\" URL aktarımının sonu; aktarım durduruldu"
|
|||||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||||
msgstr "WeeChat başsız kipte çalışıyor (çıkmak için ctrl-c yapın)."
|
msgstr "WeeChat başsız kipte çalışıyor (çıkmak için ctrl-c yapın)."
|
||||||
|
|
||||||
|
msgid "Welcome to WeeChat!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Welcome to WeeChat!\n"
|
|
||||||
"\n"
|
|
||||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||||
"main WeeChat concepts.\n"
|
"main WeeChat concepts."
|
||||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
#, c-format
|
||||||
|
msgid "All WeeChat docs are available at: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"Moreover, there is inline help with /help on all commands and options (use "
|
"Moreover, there is inline help with /help on all commands and options (use "
|
||||||
"Tab key to complete the name).\n"
|
"Tab key to complete the name)."
|
||||||
"The command /fset can help to customize WeeChat.\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
msgid "The command /fset can help to customize WeeChat."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"You can add and connect to an IRC server with /server and /connect commands "
|
"You can add and connect to an IRC server with /server and /connect commands "
|
||||||
"(see /help server)."
|
"(see /help server)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"WeeChat'e hoş geldiniz!\n"
|
|
||||||
"\n"
|
msgid ""
|
||||||
"WeeChat'e yeniyseniz hızlı başlangıç kılavuzunu veya biraz daha vaktiniz "
|
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||||
"varsa kullanıcı kılavuzunu okumanız önerilir; bu belgeler WeeChat'in temel "
|
"switch back to the default dark theme."
|
||||||
"konseptlerini açıklarlar.\n"
|
msgstr ""
|
||||||
"Tüm WeeChat belgelendirmesi https://weechat.org/doc/ adresinde mevcuttur.\n"
|
|
||||||
"\n"
|
|
||||||
"Ek olarak, /help komutu ile doğrudan satır içi yardım alabilirsiniz (komutu "
|
|
||||||
"tamamlamak için Sekme düğmesini kullanın).\n"
|
|
||||||
"/fset komutu WeeChat'i özelleştirmenize yardımcı olur.\n"
|
|
||||||
"\n"
|
|
||||||
"IRC sunucularına /server ve /connect komutları ile bağlanabilirsiniz (bkz. /"
|
|
||||||
"help server)."
|
|
||||||
|
|
||||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||||
#, c-format
|
#, c-format
|
||||||
@@ -8309,7 +8571,8 @@ msgstr "Bilinmeyen yapılandırma dosyası \"%s\""
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||||
"string/color/enum)"
|
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||||
|
"options that can be used in themes, regardless of type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> `d`: show only changed options"
|
msgid "> `d`: show only changed options"
|
||||||
@@ -17755,7 +18018,9 @@ msgstr ""
|
|||||||
msgid "> type `command_run`: command(s) (required)"
|
msgid "> type `command_run`: command(s) (required)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
msgid ""
|
||||||
|
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||||
|
"calls"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `config`: name(s) of option (required)"
|
msgid "> type `config`: name(s) of option (required)"
|
||||||
@@ -18616,3 +18881,33 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"%s%s: \"%s\" dosyası sürdürümü kabul edilemiyor (kapı: %d, başlangıç konumu: "
|
"%s%s: \"%s\" dosyası sürdürümü kabul edilemiyor (kapı: %d, başlangıç konumu: "
|
||||||
"%llu): xfer bulunamadı veya aktarım için hazır değil"
|
"%llu): xfer bulunamadı veya aktarım için hazır değil"
|
||||||
|
|
||||||
|
#~ msgid ""
|
||||||
|
#~ "Welcome to WeeChat!\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
|
#~ "quickstart guide, and the user's guide if you have some time; they "
|
||||||
|
#~ "explain main WeeChat concepts.\n"
|
||||||
|
#~ "All WeeChat docs are available at: https://weechat.org/doc/\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Moreover, there is inline help with /help on all commands and options "
|
||||||
|
#~ "(use Tab key to complete the name).\n"
|
||||||
|
#~ "The command /fset can help to customize WeeChat.\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "You can add and connect to an IRC server with /server and /connect "
|
||||||
|
#~ "commands (see /help server)."
|
||||||
|
#~ msgstr ""
|
||||||
|
#~ "WeeChat'e hoş geldiniz!\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "WeeChat'e yeniyseniz hızlı başlangıç kılavuzunu veya biraz daha vaktiniz "
|
||||||
|
#~ "varsa kullanıcı kılavuzunu okumanız önerilir; bu belgeler WeeChat'in "
|
||||||
|
#~ "temel konseptlerini açıklarlar.\n"
|
||||||
|
#~ "Tüm WeeChat belgelendirmesi https://weechat.org/doc/ adresinde "
|
||||||
|
#~ "mevcuttur.\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "Ek olarak, /help komutu ile doğrudan satır içi yardım alabilirsiniz "
|
||||||
|
#~ "(komutu tamamlamak için Sekme düğmesini kullanın).\n"
|
||||||
|
#~ "/fset komutu WeeChat'i özelleştirmenize yardımcı olur.\n"
|
||||||
|
#~ "\n"
|
||||||
|
#~ "IRC sunucularına /server ve /connect komutları ile bağlanabilirsiniz "
|
||||||
|
#~ "(bkz. /help server)."
|
||||||
|
|||||||
+254
-11
@@ -23,7 +23,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: WeeChat\n"
|
"Project-Id-Version: WeeChat\n"
|
||||||
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
"Report-Msgid-Bugs-To: flashcode@flashtux.org\n"
|
||||||
"POT-Creation-Date: 2026-06-08 22:23+0200\n"
|
"POT-Creation-Date: 2026-07-04 22:01+0200\n"
|
||||||
"PO-Revision-Date: 2014-08-16 10:27+0200\n"
|
"PO-Revision-Date: 2014-08-16 10:27+0200\n"
|
||||||
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
|
"Last-Translator: Sébastien Helleu <flashcode@flashtux.org>\n"
|
||||||
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
"Language-Team: weechat-dev <weechat-dev@nongnu.org>\n"
|
||||||
@@ -926,6 +926,47 @@ msgstr ""
|
|||||||
msgid "%sFunction \"%s\" is not available on this system"
|
msgid "%sFunction \"%s\" is not available on this system"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "No theme available"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Themes:"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " %s %s%s%s (file)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sTheme \"%s\" not found"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme \"%s%s%s\":"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " source: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid " source: built-in (in-memory)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " description: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " date: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " WeeChat version: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid " overrides: %d"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sFailed to unset option \"%s\""
|
msgid "%sFailed to unset option \"%s\""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -3305,6 +3346,69 @@ msgstr ""
|
|||||||
msgid "number: number of processes to clean"
|
msgid "number: number of processes to clean"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "manage color themes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#. TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated
|
||||||
|
msgid ""
|
||||||
|
"[list [-backups]] || apply <name> || reset || save <name> || rename <old> "
|
||||||
|
"<new> || del <name> || info <name>"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[list]: list registered themes and any *.theme files in the WeeChat "
|
||||||
|
"configuration directory; the active theme (matching weechat.look.theme) is "
|
||||||
|
"marked with \"->\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "raw[-backups]: display backup theme files"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[apply]: apply a theme (set every themable option to the value from the "
|
||||||
|
"theme); if a file named <name>.theme exists in directory \"themes\" it "
|
||||||
|
"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 <name>.theme in directory "
|
||||||
|
"\"themes\"; every themable option is written, so the file is self-contained; "
|
||||||
|
"the name must not match a built-in theme or start with \"backup-\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "raw[rename]: rename a user theme file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "raw[del]: delete a user theme file"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"raw[info]: display details on a theme (name, description, creation date, "
|
||||||
|
"WeeChat version, number of option overrides)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "name: name of a theme"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"Themes are named bundles of option overrides. Built-in themes are registered "
|
||||||
|
"in memory by core/plugins/scripts; user themes are read from files in "
|
||||||
|
"directory \"themes\" inside the WeeChat configuration directory."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"By default, `/theme apply` command creates a backup of current themable "
|
||||||
|
"values in directory \"themes\" before applying (file name: \"backup-"
|
||||||
|
"<timestamp>.theme\"); the previous state can be restored with: `/theme apply "
|
||||||
|
"backup-<timestamp>`. This is controlled by the option "
|
||||||
|
"weechat.look.theme_backup."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "toggle value of a config option"
|
msgid "toggle value of a config option"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -3817,6 +3921,15 @@ msgstr ""
|
|||||||
msgid "names of layouts"
|
msgid "names of layouts"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of themes (built-ins + user files + backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of user theme files (without built-ins and backups)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "names of theme files on disk (user files + backups, no built-ins)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid "names of secured data (file sec.conf, section data)"
|
msgid "names of secured data (file sec.conf, section data)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@@ -4616,6 +4729,20 @@ msgstr ""
|
|||||||
msgid "number of spaces used to display tabs in messages"
|
msgid "number of spaces used to display tabs in messages"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"name of the last theme applied with command /theme (set automatically, do "
|
||||||
|
"not change manually); informational only, the theme is not re-applied at "
|
||||||
|
"startup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"create a backup theme file with the current themable options before applying "
|
||||||
|
"a theme with command /theme; if the backup file cannot be written, the apply "
|
||||||
|
"is aborted (no option is changed); the backup file is written to directory "
|
||||||
|
"\"themes\" inside the WeeChat configuration directory and can be restored "
|
||||||
|
"with the command: `/theme apply backup-<timestamp>`"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"time format for dates converted to strings and displayed in messages (see "
|
"time format for dates converted to strings and displayed in messages (see "
|
||||||
"man strftime for date/time specifiers)"
|
"man strftime for date/time specifiers)"
|
||||||
@@ -5467,6 +5594,104 @@ msgstr ""
|
|||||||
msgid "Resource usage (see \"man getrusage\" for help):"
|
msgid "Resource usage (see \"man getrusage\" for help):"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "WeeChat default theme for light-background terminals"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Automatic backup"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sTheme: option \"%s\" not found, skipped"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sTheme: option \"%s\" is not themable, skipped"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: malformed section header"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: ignoring unknown section \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: missing '=' separator"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%s%s: line %d: ignoring unknown [info] key \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sFailed to parse theme file \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid ""
|
||||||
|
"%sUnable to create theme backup; aborting apply (disable option "
|
||||||
|
"weechat.look.theme_backup to force)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
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 ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sName \"%s\" is reserved for a built-in theme"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sFailed to save theme \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme saved to: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sCannot rename built-in theme \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sNew name is the same as old name"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sTheme \"%s\" already exists"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sFailed to rename theme \"%s\" to \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme \"%s\" renamed to \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sCannot delete built-in theme \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "%sFailed to delete theme \"%s\""
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#, c-format
|
||||||
|
msgid "Theme deleted: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "%sError upgrading WeeChat with file \"%s\":"
|
msgid "%sError upgrading WeeChat with file \"%s\":"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
@@ -5619,22 +5844,37 @@ msgstr ""
|
|||||||
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
msgid "WeeChat is running in headless mode (ctrl-c to quit)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid "Welcome to WeeChat!"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"Welcome to WeeChat!\n"
|
|
||||||
"\n"
|
|
||||||
"If you are discovering WeeChat, it is recommended to read at least the "
|
"If you are discovering WeeChat, it is recommended to read at least the "
|
||||||
"quickstart guide, and the user's guide if you have some time; they explain "
|
"quickstart guide, and the user's guide if you have some time; they explain "
|
||||||
"main WeeChat concepts.\n"
|
"main WeeChat concepts."
|
||||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
#, c-format
|
||||||
|
msgid "All WeeChat docs are available at: %s"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"Moreover, there is inline help with /help on all commands and options (use "
|
"Moreover, there is inline help with /help on all commands and options (use "
|
||||||
"Tab key to complete the name).\n"
|
"Tab key to complete the name)."
|
||||||
"The command /fset can help to customize WeeChat.\n"
|
msgstr ""
|
||||||
"\n"
|
|
||||||
|
msgid "The command /fset can help to customize WeeChat."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
"You can add and connect to an IRC server with /server and /connect commands "
|
"You can add and connect to an IRC server with /server and /connect commands "
|
||||||
"(see /help server)."
|
"(see /help server)."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
msgid ""
|
||||||
|
"The \"light\" theme will be automatically applied. Use /theme reset to "
|
||||||
|
"switch back to the default dark theme."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
#. TRANSLATORS: the "under %s" can be "under screen" or "under tmux"
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
@@ -7052,7 +7292,8 @@ msgstr ""
|
|||||||
|
|
||||||
msgid ""
|
msgid ""
|
||||||
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
"> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum or boolean/integer/"
|
||||||
"string/color/enum)"
|
"string/color/enum); the special value \"themable\" can be used to show all "
|
||||||
|
"options that can be used in themes, regardless of type"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> `d`: show only changed options"
|
msgid "> `d`: show only changed options"
|
||||||
@@ -14579,7 +14820,9 @@ msgstr ""
|
|||||||
msgid "> type `command_run`: command(s) (required)"
|
msgid "> type `command_run`: command(s) (required)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `timer`: interval (required), align on second, max calls"
|
msgid ""
|
||||||
|
"> type `timer`: interval (required, in milliseconds), align on second, max "
|
||||||
|
"calls"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
msgid "> type `config`: name(s) of option (required)"
|
msgid "> type `config`: name(s) of option (required)"
|
||||||
|
|||||||
@@ -51,6 +51,8 @@ set(LIB_CORE_SRC
|
|||||||
core-signal.c core-signal.h
|
core-signal.c core-signal.h
|
||||||
core-string.c core-string.h
|
core-string.c core-string.h
|
||||||
core-sys.c core-sys.h
|
core-sys.c core-sys.h
|
||||||
|
core-theme.c core-theme.h
|
||||||
|
core-theme-builtin.c
|
||||||
core-upgrade.c core-upgrade.h
|
core-upgrade.c core-upgrade.h
|
||||||
core-upgrade-file.c core-upgrade-file.h
|
core-upgrade-file.c core-upgrade-file.h
|
||||||
core-url.c core-url.h
|
core-url.c core-url.h
|
||||||
|
|||||||
+303
-1
@@ -68,6 +68,7 @@
|
|||||||
#include "core-signal.h"
|
#include "core-signal.h"
|
||||||
#include "core-string.h"
|
#include "core-string.h"
|
||||||
#include "core-sys.h"
|
#include "core-sys.h"
|
||||||
|
#include "core-theme.h"
|
||||||
#include "core-upgrade.h"
|
#include "core-upgrade.h"
|
||||||
#include "core-url.h"
|
#include "core-url.h"
|
||||||
#include "core-utf8.h"
|
#include "core-utf8.h"
|
||||||
@@ -7180,6 +7181,256 @@ COMMAND_CALLBACK(sys)
|
|||||||
COMMAND_ERROR;
|
COMMAND_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Callback for "dir_exec_on_files": collects names of files matching
|
||||||
|
* "*.theme" into an arraylist passed as data; "backup-*.theme" is
|
||||||
|
* excluded when *(int *)data->show_backups is zero.
|
||||||
|
*
|
||||||
|
* The arraylist is iterated outside this callback so all dirent
|
||||||
|
* processing can happen in one place.
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct t_command_theme_dir_collect
|
||||||
|
{
|
||||||
|
struct t_arraylist *names; /* arraylist of char * (owned) */
|
||||||
|
int show_backups; /* include backup-*.theme ? */
|
||||||
|
};
|
||||||
|
|
||||||
|
void
|
||||||
|
command_theme_collect_file_cb (void *data, const char *filename)
|
||||||
|
{
|
||||||
|
struct t_command_theme_dir_collect *ctx;
|
||||||
|
const char *base;
|
||||||
|
char *name;
|
||||||
|
size_t len;
|
||||||
|
|
||||||
|
ctx = (struct t_command_theme_dir_collect *)data;
|
||||||
|
base = strrchr (filename, '/');
|
||||||
|
base = (base) ? base + 1 : filename;
|
||||||
|
len = strlen (base);
|
||||||
|
if ((len < 7) || (strcmp (base + len - 6, ".theme") != 0))
|
||||||
|
return;
|
||||||
|
if (!ctx->show_backups && (strncmp (base, "backup-", 7) == 0))
|
||||||
|
return;
|
||||||
|
name = string_strndup (base, len - 6);
|
||||||
|
if (name)
|
||||||
|
arraylist_add (ctx->names, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Compare two theme file names (callback used by arraylist sort).
|
||||||
|
*
|
||||||
|
* Return negative, zero, or positive value (like strcmp).
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
command_theme_strcmp_cb (void *data, struct t_arraylist *arraylist,
|
||||||
|
void *pointer1, void *pointer2)
|
||||||
|
{
|
||||||
|
/* make C compiler happy */
|
||||||
|
(void) data;
|
||||||
|
(void) arraylist;
|
||||||
|
|
||||||
|
return strcmp ((const char *)pointer1, (const char *)pointer2);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Callback for command "/theme": list or display details on themes.
|
||||||
|
*/
|
||||||
|
|
||||||
|
COMMAND_CALLBACK(theme)
|
||||||
|
{
|
||||||
|
struct t_arraylist *list, *file_names;
|
||||||
|
struct t_command_theme_dir_collect collect;
|
||||||
|
struct t_theme *ptr_theme, *file_theme;
|
||||||
|
const char *ptr_active, *ptr_name;
|
||||||
|
char *path, *dir;
|
||||||
|
int i, size, show_backups;
|
||||||
|
|
||||||
|
/* make C compiler happy */
|
||||||
|
(void) pointer;
|
||||||
|
(void) data;
|
||||||
|
(void) buffer;
|
||||||
|
(void) argv_eol;
|
||||||
|
|
||||||
|
/* "/theme" or "/theme list [-backups]": list themes */
|
||||||
|
if ((argc == 1) || (string_strcmp (argv[1], "list") == 0))
|
||||||
|
{
|
||||||
|
show_backups = ((argc >= 3)
|
||||||
|
&& (string_strcmp (argv[2], "-backups") == 0));
|
||||||
|
ptr_active = CONFIG_STRING(config_look_theme);
|
||||||
|
|
||||||
|
list = theme_list ();
|
||||||
|
|
||||||
|
/* scan ${weechat_config_dir}/themes/ for *.theme files */
|
||||||
|
file_names = arraylist_new (8, 1, 0,
|
||||||
|
&command_theme_strcmp_cb, NULL,
|
||||||
|
NULL, NULL);
|
||||||
|
if (file_names)
|
||||||
|
{
|
||||||
|
dir = NULL;
|
||||||
|
string_asprintf (&dir, "%s/themes", weechat_config_dir);
|
||||||
|
if (dir)
|
||||||
|
{
|
||||||
|
collect.names = file_names;
|
||||||
|
collect.show_backups = show_backups;
|
||||||
|
dir_exec_on_files (dir, 0, 0,
|
||||||
|
&command_theme_collect_file_cb,
|
||||||
|
&collect);
|
||||||
|
free (dir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((!list || (arraylist_size (list) == 0))
|
||||||
|
&& (!file_names || (arraylist_size (file_names) == 0)))
|
||||||
|
{
|
||||||
|
gui_chat_printf (NULL, _("No theme available"));
|
||||||
|
arraylist_free (list);
|
||||||
|
arraylist_free (file_names);
|
||||||
|
return WEECHAT_RC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
gui_chat_printf (NULL, "");
|
||||||
|
gui_chat_printf (NULL, _("Themes:"));
|
||||||
|
size = (list) ? arraylist_size (list) : 0;
|
||||||
|
for (i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
ptr_theme = (struct t_theme *)arraylist_get (list, i);
|
||||||
|
gui_chat_printf (
|
||||||
|
NULL,
|
||||||
|
" %s %s%s%s%s%s",
|
||||||
|
(ptr_active && (strcmp (ptr_active, ptr_theme->name) == 0))
|
||||||
|
? "->" : " ",
|
||||||
|
GUI_COLOR(GUI_COLOR_CHAT_BUFFER),
|
||||||
|
ptr_theme->name,
|
||||||
|
GUI_COLOR(GUI_COLOR_CHAT_DELIMITERS),
|
||||||
|
(ptr_theme->description && ptr_theme->description[0])
|
||||||
|
? ": " : "",
|
||||||
|
(ptr_theme->description) ? ptr_theme->description : "");
|
||||||
|
}
|
||||||
|
size = (file_names) ? arraylist_size (file_names) : 0;
|
||||||
|
for (i = 0; i < size; i++)
|
||||||
|
{
|
||||||
|
ptr_name = (const char *)arraylist_get (file_names, i);
|
||||||
|
gui_chat_printf (
|
||||||
|
NULL,
|
||||||
|
_(" %s %s%s%s (file)"),
|
||||||
|
(ptr_active && (strcmp (ptr_active, ptr_name) == 0))
|
||||||
|
? "->" : " ",
|
||||||
|
GUI_COLOR(GUI_COLOR_CHAT_BUFFER),
|
||||||
|
ptr_name,
|
||||||
|
GUI_COLOR(GUI_COLOR_CHAT));
|
||||||
|
}
|
||||||
|
if (file_names)
|
||||||
|
{
|
||||||
|
size = arraylist_size (file_names);
|
||||||
|
for (i = 0; i < size; i++)
|
||||||
|
free (arraylist_get (file_names, i));
|
||||||
|
arraylist_free (file_names);
|
||||||
|
}
|
||||||
|
arraylist_free (list);
|
||||||
|
return WEECHAT_RC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* "/theme apply <name>": apply a theme */
|
||||||
|
if (string_strcmp (argv[1], "apply") == 0)
|
||||||
|
{
|
||||||
|
COMMAND_MIN_ARGS(3, "apply");
|
||||||
|
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 <name>": write a user theme file */
|
||||||
|
if (string_strcmp (argv[1], "save") == 0)
|
||||||
|
{
|
||||||
|
COMMAND_MIN_ARGS(3, "save");
|
||||||
|
return theme_save (argv[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* "/theme rename <old> <new>": rename a user theme file */
|
||||||
|
if (string_strcmp (argv[1], "rename") == 0)
|
||||||
|
{
|
||||||
|
COMMAND_MIN_ARGS(4, "rename");
|
||||||
|
return theme_rename (argv[2], argv[3]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* "/theme del <name>": remove a user theme file */
|
||||||
|
if (string_strcmp (argv[1], "del") == 0)
|
||||||
|
{
|
||||||
|
COMMAND_MIN_ARGS(3, "del");
|
||||||
|
return theme_delete (argv[2]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* "/theme info <name>": show details about a theme */
|
||||||
|
if (string_strcmp (argv[1], "info") == 0)
|
||||||
|
{
|
||||||
|
COMMAND_MIN_ARGS(3, "info");
|
||||||
|
/* file shadows registry: try user file first */
|
||||||
|
path = theme_user_file_path (argv[2]);
|
||||||
|
file_theme = NULL;
|
||||||
|
if (path && (access (path, R_OK) == 0))
|
||||||
|
file_theme = theme_file_parse (path);
|
||||||
|
if (!file_theme)
|
||||||
|
{
|
||||||
|
free (path);
|
||||||
|
path = NULL;
|
||||||
|
ptr_theme = theme_search (argv[2]);
|
||||||
|
if (!ptr_theme)
|
||||||
|
{
|
||||||
|
gui_chat_printf (NULL,
|
||||||
|
_("%sTheme \"%s\" not found"),
|
||||||
|
gui_chat_prefix[GUI_CHAT_PREFIX_ERROR],
|
||||||
|
argv[2]);
|
||||||
|
return WEECHAT_RC_ERROR;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ptr_theme = file_theme;
|
||||||
|
}
|
||||||
|
gui_chat_printf (NULL, "");
|
||||||
|
gui_chat_printf (NULL,
|
||||||
|
_("Theme \"%s%s%s\":"),
|
||||||
|
GUI_COLOR(GUI_COLOR_CHAT_BUFFER),
|
||||||
|
(ptr_theme->name && ptr_theme->name[0])
|
||||||
|
? ptr_theme->name : argv[2],
|
||||||
|
GUI_COLOR(GUI_COLOR_CHAT));
|
||||||
|
if (path)
|
||||||
|
{
|
||||||
|
gui_chat_printf (NULL,
|
||||||
|
_(" source: %s"), path);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
gui_chat_printf (NULL,
|
||||||
|
_(" source: built-in (in-memory)"));
|
||||||
|
}
|
||||||
|
gui_chat_printf (NULL,
|
||||||
|
_(" description: %s"),
|
||||||
|
(ptr_theme->description) ? ptr_theme->description : "");
|
||||||
|
gui_chat_printf (NULL,
|
||||||
|
_(" date: %s"),
|
||||||
|
(ptr_theme->date) ? ptr_theme->date : "");
|
||||||
|
gui_chat_printf (NULL,
|
||||||
|
_(" WeeChat version: %s"),
|
||||||
|
(ptr_theme->weechat_version)
|
||||||
|
? ptr_theme->weechat_version : "");
|
||||||
|
gui_chat_printf (NULL,
|
||||||
|
_(" overrides: %d"),
|
||||||
|
theme_overrides_count (ptr_theme));
|
||||||
|
free (path);
|
||||||
|
theme_free (file_theme);
|
||||||
|
return WEECHAT_RC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
COMMAND_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Callback for command "/toggle": toggle value of configuration option.
|
* Callback for command "/toggle": toggle value of configuration option.
|
||||||
*/
|
*/
|
||||||
@@ -7401,7 +7652,7 @@ command_upgrade_display (struct t_gui_buffer *buffer,
|
|||||||
str_first_start[0] = '\0';
|
str_first_start[0] = '\0';
|
||||||
str_last_start[0] = '\0';
|
str_last_start[0] = '\0';
|
||||||
|
|
||||||
weechat_last_start_time = (time_t)weechat_current_start_timeval.tv_sec;
|
weechat_last_start_time = weechat_current_start_timeval.tv_sec;
|
||||||
|
|
||||||
if (translated_string)
|
if (translated_string)
|
||||||
{
|
{
|
||||||
@@ -9832,6 +10083,57 @@ command_init (void)
|
|||||||
" || suspend"
|
" || suspend"
|
||||||
" || waitpid 1|10|100|1000",
|
" || waitpid 1|10|100|1000",
|
||||||
&command_sys, NULL, NULL);
|
&command_sys, NULL, NULL);
|
||||||
|
hook_command (
|
||||||
|
NULL, "theme",
|
||||||
|
N_("manage color themes"),
|
||||||
|
/* TRANSLATORS: only text between angle brackets (eg: "<name>") may be translated */
|
||||||
|
N_("[list [-backups]]"
|
||||||
|
" || apply <name>"
|
||||||
|
" || reset"
|
||||||
|
" || save <name>"
|
||||||
|
" || rename <old> <new>"
|
||||||
|
" || del <name>"
|
||||||
|
" || info <name>"),
|
||||||
|
CMD_ARGS_DESC(
|
||||||
|
N_("raw[list]: list registered themes and any *.theme files in "
|
||||||
|
"the WeeChat configuration directory; the active theme "
|
||||||
|
"(matching weechat.look.theme) is marked with \"->\""),
|
||||||
|
N_("raw[-backups]: display backup theme files"),
|
||||||
|
N_("raw[apply]: apply a theme (set every themable option to the "
|
||||||
|
"value from the theme); if a file named <name>.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 "
|
||||||
|
"<name>.theme in directory \"themes\"; every themable "
|
||||||
|
"option is written, so the file is self-contained; the "
|
||||||
|
"name must not match a built-in theme or start with "
|
||||||
|
"\"backup-\""),
|
||||||
|
N_("raw[rename]: rename a user theme file"),
|
||||||
|
N_("raw[del]: delete a user theme file"),
|
||||||
|
N_("raw[info]: display details on a theme (name, description, "
|
||||||
|
"creation date, WeeChat version, number of option overrides)"),
|
||||||
|
N_("name: name of a theme"),
|
||||||
|
"",
|
||||||
|
N_("Themes are named bundles of option overrides. Built-in themes "
|
||||||
|
"are registered in memory by core/plugins/scripts; user themes "
|
||||||
|
"are read from files in directory \"themes\" inside the WeeChat "
|
||||||
|
"configuration directory."),
|
||||||
|
"",
|
||||||
|
N_("By default, `/theme apply` command creates a backup of current "
|
||||||
|
"themable values in directory \"themes\" before applying "
|
||||||
|
"(file name: \"backup-<timestamp>.theme\"); the previous "
|
||||||
|
"state can be restored with: `/theme apply backup-<timestamp>`. "
|
||||||
|
"This is controlled by the option weechat.look.theme_backup.")),
|
||||||
|
"list -backups"
|
||||||
|
" || apply %(theme_themes_all)"
|
||||||
|
" || reset"
|
||||||
|
" || save %(theme_themes_user)"
|
||||||
|
" || rename %(theme_themes_files)"
|
||||||
|
" || del %(theme_themes_user)"
|
||||||
|
" || info %(theme_themes_all)",
|
||||||
|
&command_theme, NULL, NULL);
|
||||||
hook_command (
|
hook_command (
|
||||||
NULL, "toggle",
|
NULL, "toggle",
|
||||||
N_("toggle value of a config option"),
|
N_("toggle value of a config option"),
|
||||||
|
|||||||
@@ -46,6 +46,7 @@
|
|||||||
#include "core-proxy.h"
|
#include "core-proxy.h"
|
||||||
#include "core-secure.h"
|
#include "core-secure.h"
|
||||||
#include "core-string.h"
|
#include "core-string.h"
|
||||||
|
#include "core-theme.h"
|
||||||
#include "../gui/gui-completion.h"
|
#include "../gui/gui-completion.h"
|
||||||
#include "../gui/gui-bar.h"
|
#include "../gui/gui-bar.h"
|
||||||
#include "../gui/gui-bar-item.h"
|
#include "../gui/gui-bar-item.h"
|
||||||
@@ -63,6 +64,12 @@
|
|||||||
|
|
||||||
extern char **environ;
|
extern char **environ;
|
||||||
|
|
||||||
|
struct t_completion_theme_dir
|
||||||
|
{
|
||||||
|
struct t_gui_completion *completion;
|
||||||
|
int show_backups;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Add a word with quotes around to completion list.
|
* Add a word with quotes around to completion list.
|
||||||
@@ -1974,6 +1981,145 @@ completion_list_add_layouts_names_cb (const void *pointer, void *data,
|
|||||||
return WEECHAT_RC_OK;
|
return WEECHAT_RC_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add filename (without ".theme" suffix) to completion list if it ends
|
||||||
|
* with ".theme"; skips "backup-*.theme" entries unless data is non-NULL.
|
||||||
|
*
|
||||||
|
* Callback for dir_exec_on_files; "data" carries a pair of pointers:
|
||||||
|
* data[0] = struct t_gui_completion *completion (target)
|
||||||
|
* data[1] = int *show_backups
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
completion_theme_add_file_cb (void *data, const char *filename)
|
||||||
|
{
|
||||||
|
struct t_completion_theme_dir *ctx;
|
||||||
|
const char *base;
|
||||||
|
char *name;
|
||||||
|
size_t len;
|
||||||
|
|
||||||
|
ctx = (struct t_completion_theme_dir *)data;
|
||||||
|
base = strrchr (filename, '/');
|
||||||
|
base = (base) ? base + 1 : filename;
|
||||||
|
len = strlen (base);
|
||||||
|
if ((len < 7) || (strcmp (base + len - 6, ".theme") != 0))
|
||||||
|
return;
|
||||||
|
if (!ctx->show_backups && (strncmp (base, "backup-", 7) == 0))
|
||||||
|
return;
|
||||||
|
name = string_strndup (base, len - 6);
|
||||||
|
if (!name)
|
||||||
|
return;
|
||||||
|
gui_completion_list_add (ctx->completion, name, 0, WEECHAT_LIST_POS_SORT);
|
||||||
|
free (name);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add theme names to completion list: in-memory built-ins plus any
|
||||||
|
* "*.theme" files in <weechat_config_dir>/themes/ (including backups).
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
completion_list_add_theme_themes_all_cb (const void *pointer, void *data,
|
||||||
|
const char *completion_item,
|
||||||
|
struct t_gui_buffer *buffer,
|
||||||
|
struct t_gui_completion *completion)
|
||||||
|
{
|
||||||
|
struct t_theme *ptr_theme;
|
||||||
|
struct t_completion_theme_dir ctx;
|
||||||
|
char *dir;
|
||||||
|
|
||||||
|
/* make C compiler happy */
|
||||||
|
(void) pointer;
|
||||||
|
(void) data;
|
||||||
|
(void) completion_item;
|
||||||
|
(void) buffer;
|
||||||
|
|
||||||
|
for (ptr_theme = themes; ptr_theme; ptr_theme = ptr_theme->next_theme)
|
||||||
|
{
|
||||||
|
gui_completion_list_add (completion, ptr_theme->name,
|
||||||
|
0, WEECHAT_LIST_POS_SORT);
|
||||||
|
}
|
||||||
|
|
||||||
|
dir = NULL;
|
||||||
|
string_asprintf (&dir, "%s/themes", weechat_config_dir);
|
||||||
|
if (dir)
|
||||||
|
{
|
||||||
|
ctx.completion = completion;
|
||||||
|
ctx.show_backups = 1;
|
||||||
|
dir_exec_on_files (dir, 0, 0, &completion_theme_add_file_cb, &ctx);
|
||||||
|
free (dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
return WEECHAT_RC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add user theme file names (excluding built-ins and backups) to the
|
||||||
|
* completion list; suitable for /theme save and /theme del.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
completion_list_add_theme_themes_user_cb (const void *pointer, void *data,
|
||||||
|
const char *completion_item,
|
||||||
|
struct t_gui_buffer *buffer,
|
||||||
|
struct t_gui_completion *completion)
|
||||||
|
{
|
||||||
|
struct t_completion_theme_dir ctx;
|
||||||
|
char *dir;
|
||||||
|
|
||||||
|
/* make C compiler happy */
|
||||||
|
(void) pointer;
|
||||||
|
(void) data;
|
||||||
|
(void) completion_item;
|
||||||
|
(void) buffer;
|
||||||
|
|
||||||
|
dir = NULL;
|
||||||
|
string_asprintf (&dir, "%s/themes", weechat_config_dir);
|
||||||
|
if (dir)
|
||||||
|
{
|
||||||
|
ctx.completion = completion;
|
||||||
|
ctx.show_backups = 0;
|
||||||
|
dir_exec_on_files (dir, 0, 0, &completion_theme_add_file_cb, &ctx);
|
||||||
|
free (dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
return WEECHAT_RC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Add every on-disk theme file (user files + backups, no built-ins)
|
||||||
|
* to the completion list; suitable for /theme rename which can take a
|
||||||
|
* backup as its source.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
completion_list_add_theme_themes_files_cb (const void *pointer, void *data,
|
||||||
|
const char *completion_item,
|
||||||
|
struct t_gui_buffer *buffer,
|
||||||
|
struct t_gui_completion *completion)
|
||||||
|
{
|
||||||
|
struct t_completion_theme_dir ctx;
|
||||||
|
char *dir;
|
||||||
|
|
||||||
|
/* make C compiler happy */
|
||||||
|
(void) pointer;
|
||||||
|
(void) data;
|
||||||
|
(void) completion_item;
|
||||||
|
(void) buffer;
|
||||||
|
|
||||||
|
dir = NULL;
|
||||||
|
string_asprintf (&dir, "%s/themes", weechat_config_dir);
|
||||||
|
if (dir)
|
||||||
|
{
|
||||||
|
ctx.completion = completion;
|
||||||
|
ctx.show_backups = 1;
|
||||||
|
dir_exec_on_files (dir, 0, 0, &completion_theme_add_file_cb, &ctx);
|
||||||
|
free (dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
return WEECHAT_RC_OK;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Add a secured data to completion list.
|
* Add a secured data to completion list.
|
||||||
*/
|
*/
|
||||||
@@ -2365,6 +2511,16 @@ completion_init (void)
|
|||||||
hook_completion (NULL, "layouts_names",
|
hook_completion (NULL, "layouts_names",
|
||||||
N_("names of layouts"),
|
N_("names of layouts"),
|
||||||
&completion_list_add_layouts_names_cb, NULL, NULL);
|
&completion_list_add_layouts_names_cb, NULL, NULL);
|
||||||
|
hook_completion (NULL, "theme_themes_all",
|
||||||
|
N_("names of themes (built-ins + user files + backups)"),
|
||||||
|
&completion_list_add_theme_themes_all_cb, NULL, NULL);
|
||||||
|
hook_completion (NULL, "theme_themes_user",
|
||||||
|
N_("names of user theme files (without built-ins and backups)"),
|
||||||
|
&completion_list_add_theme_themes_user_cb, NULL, NULL);
|
||||||
|
hook_completion (NULL, "theme_themes_files",
|
||||||
|
N_("names of theme files on disk (user files + backups, "
|
||||||
|
"no built-ins)"),
|
||||||
|
&completion_list_add_theme_themes_files_cb, NULL, NULL);
|
||||||
hook_completion (NULL, "secured_data",
|
hook_completion (NULL, "secured_data",
|
||||||
N_("names of secured data (file sec.conf, section data)"),
|
N_("names of secured data (file sec.conf, section data)"),
|
||||||
&completion_list_add_secured_data_cb, NULL, NULL);
|
&completion_list_add_secured_data_cb, NULL, NULL);
|
||||||
|
|||||||
@@ -648,6 +648,7 @@ config_file_option_malloc (void)
|
|||||||
new_option->name = NULL;
|
new_option->name = NULL;
|
||||||
new_option->parent_name = NULL;
|
new_option->parent_name = NULL;
|
||||||
new_option->type = 0;
|
new_option->type = 0;
|
||||||
|
new_option->themable = 0;
|
||||||
new_option->description = NULL;
|
new_option->description = NULL;
|
||||||
new_option->string_values = NULL;
|
new_option->string_values = NULL;
|
||||||
new_option->min = 0;
|
new_option->min = 0;
|
||||||
@@ -704,17 +705,37 @@ config_file_new_option (struct t_config_file *config_file,
|
|||||||
void *callback_delete_data)
|
void *callback_delete_data)
|
||||||
{
|
{
|
||||||
struct t_config_option *new_option;
|
struct t_config_option *new_option;
|
||||||
int var_type, int_value, argc, i, index_value, number;
|
int var_type, int_value, argc, i, index_value, number, themable;
|
||||||
const char *pos;
|
const char *pos, *ptr_type;
|
||||||
char *option_name, *parent_name;
|
char *option_name, *parent_name, *type_name;
|
||||||
|
|
||||||
new_option = NULL;
|
new_option = NULL;
|
||||||
option_name = NULL;
|
option_name = NULL;
|
||||||
parent_name = NULL;
|
parent_name = NULL;
|
||||||
|
type_name = NULL;
|
||||||
|
themable = 0;
|
||||||
|
|
||||||
if (!name || !type)
|
if (!name || !type)
|
||||||
goto error;
|
goto error;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* extract optional "|themable" suffix from type
|
||||||
|
* (e.g.: "string|themable" for a string option that contains color names)
|
||||||
|
*/
|
||||||
|
pos = strchr (type, '|');
|
||||||
|
if (pos && (strcmp (pos, "|themable") == 0))
|
||||||
|
{
|
||||||
|
type_name = string_strndup (type, pos - type);
|
||||||
|
if (!type_name)
|
||||||
|
goto error;
|
||||||
|
ptr_type = type_name;
|
||||||
|
themable = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ptr_type = type;
|
||||||
|
}
|
||||||
|
|
||||||
pos = strstr (name, " << ");
|
pos = strstr (name, " << ");
|
||||||
if (pos)
|
if (pos)
|
||||||
{
|
{
|
||||||
@@ -735,7 +756,7 @@ config_file_new_option (struct t_config_file *config_file,
|
|||||||
var_type = -1;
|
var_type = -1;
|
||||||
for (i = 0; i < CONFIG_NUM_OPTION_TYPES; i++)
|
for (i = 0; i < CONFIG_NUM_OPTION_TYPES; i++)
|
||||||
{
|
{
|
||||||
if (strcmp (type, config_option_type_string[i]) == 0)
|
if (strcmp (ptr_type, config_option_type_string[i]) == 0)
|
||||||
{
|
{
|
||||||
var_type = i;
|
var_type = i;
|
||||||
break;
|
break;
|
||||||
@@ -745,10 +766,14 @@ config_file_new_option (struct t_config_file *config_file,
|
|||||||
{
|
{
|
||||||
gui_chat_printf (NULL, "%sUnknown option type \"%s\"",
|
gui_chat_printf (NULL, "%sUnknown option type \"%s\"",
|
||||||
gui_chat_prefix[GUI_CHAT_PREFIX_ERROR],
|
gui_chat_prefix[GUI_CHAT_PREFIX_ERROR],
|
||||||
type);
|
ptr_type);
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* color options are always themable */
|
||||||
|
if (var_type == CONFIG_OPTION_TYPE_COLOR)
|
||||||
|
themable = 1;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* compatibility with versions < 4.1.0: force enum type for an integer
|
* compatibility with versions < 4.1.0: force enum type for an integer
|
||||||
* with string values
|
* with string values
|
||||||
@@ -785,6 +810,7 @@ config_file_new_option (struct t_config_file *config_file,
|
|||||||
goto error;
|
goto error;
|
||||||
new_option->parent_name = (parent_name) ? strdup (parent_name) : NULL;
|
new_option->parent_name = (parent_name) ? strdup (parent_name) : NULL;
|
||||||
new_option->type = var_type;
|
new_option->type = var_type;
|
||||||
|
new_option->themable = themable;
|
||||||
if (description)
|
if (description)
|
||||||
{
|
{
|
||||||
new_option->description = strdup (description);
|
new_option->description = strdup (description);
|
||||||
@@ -970,6 +996,7 @@ error:
|
|||||||
end:
|
end:
|
||||||
free (option_name);
|
free (option_name);
|
||||||
free (parent_name);
|
free (parent_name);
|
||||||
|
free (type_name);
|
||||||
return new_option;
|
return new_option;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2440,6 +2467,8 @@ config_file_option_get_pointer (struct t_config_option *option,
|
|||||||
return option->parent_name;
|
return option->parent_name;
|
||||||
else if (strcmp (property, "type") == 0)
|
else if (strcmp (property, "type") == 0)
|
||||||
return &option->type;
|
return &option->type;
|
||||||
|
else if (strcmp (property, "themable") == 0)
|
||||||
|
return &option->themable;
|
||||||
else if (strcmp (property, "description") == 0)
|
else if (strcmp (property, "description") == 0)
|
||||||
return option->description;
|
return option->description;
|
||||||
else if (strcmp (property, "string_values") == 0)
|
else if (strcmp (property, "string_values") == 0)
|
||||||
@@ -4249,6 +4278,7 @@ config_file_hdata_config_option_cb (const void *pointer, void *data,
|
|||||||
HDATA_VAR(struct t_config_option, name, STRING, 0, NULL, NULL);
|
HDATA_VAR(struct t_config_option, name, STRING, 0, NULL, NULL);
|
||||||
HDATA_VAR(struct t_config_option, parent_name, STRING, 0, NULL, NULL);
|
HDATA_VAR(struct t_config_option, parent_name, STRING, 0, NULL, NULL);
|
||||||
HDATA_VAR(struct t_config_option, type, INTEGER, 0, NULL, NULL);
|
HDATA_VAR(struct t_config_option, type, INTEGER, 0, NULL, NULL);
|
||||||
|
HDATA_VAR(struct t_config_option, themable, INTEGER, 0, NULL, NULL);
|
||||||
HDATA_VAR(struct t_config_option, description, STRING, 0, NULL, NULL);
|
HDATA_VAR(struct t_config_option, description, STRING, 0, NULL, NULL);
|
||||||
HDATA_VAR(struct t_config_option, string_values, STRING, 0, "*,*", NULL);
|
HDATA_VAR(struct t_config_option, string_values, STRING, 0, "*,*", NULL);
|
||||||
HDATA_VAR(struct t_config_option, min, INTEGER, 0, NULL, NULL);
|
HDATA_VAR(struct t_config_option, min, INTEGER, 0, NULL, NULL);
|
||||||
@@ -4361,6 +4391,8 @@ config_file_add_option_to_infolist (struct t_infolist *infolist,
|
|||||||
{
|
{
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
|
if (!infolist_new_var_integer (ptr_item, "themable", option->themable))
|
||||||
|
goto error;
|
||||||
if (option->value)
|
if (option->value)
|
||||||
{
|
{
|
||||||
value = config_file_option_value_to_string (option, 0, 0, 0);
|
value = config_file_option_value_to_string (option, 0, 0, 0);
|
||||||
@@ -4525,6 +4557,7 @@ config_file_print_log (void)
|
|||||||
log_printf (" name . . . . . . . . . . . . : '%s'", ptr_option->name);
|
log_printf (" name . . . . . . . . . . . . : '%s'", ptr_option->name);
|
||||||
log_printf (" parent_name. . . . . . . . . : '%s'", ptr_option->parent_name);
|
log_printf (" parent_name. . . . . . . . . : '%s'", ptr_option->parent_name);
|
||||||
log_printf (" type . . . . . . . . . . . . : %d", ptr_option->type);
|
log_printf (" type . . . . . . . . . . . . : %d", ptr_option->type);
|
||||||
|
log_printf (" themable . . . . . . . . . . : %d", ptr_option->themable);
|
||||||
log_printf (" description. . . . . . . . . : '%s'", ptr_option->description);
|
log_printf (" description. . . . . . . . . : '%s'", ptr_option->description);
|
||||||
log_printf (" string_values. . . . . . . . : %p", ptr_option->string_values);
|
log_printf (" string_values. . . . . . . . : %p", ptr_option->string_values);
|
||||||
log_printf (" min. . . . . . . . . . . . . : %d", ptr_option->min);
|
log_printf (" min. . . . . . . . . . . . . : %d", ptr_option->min);
|
||||||
|
|||||||
@@ -154,6 +154,8 @@ struct t_config_option
|
|||||||
char *parent_name; /* parent name (to inherit the */
|
char *parent_name; /* parent name (to inherit the */
|
||||||
/* value from another option) */
|
/* value from another option) */
|
||||||
enum t_config_option_type type; /* type */
|
enum t_config_option_type type; /* type */
|
||||||
|
int themable; /* 1 if option is themable */
|
||||||
|
/* (color, or string with color) */
|
||||||
char *description; /* description */
|
char *description; /* description */
|
||||||
char **string_values; /* allowed string values */
|
char **string_values; /* allowed string values */
|
||||||
int min, max; /* min and max for value */
|
int min, max; /* min and max for value */
|
||||||
|
|||||||
+37
-14
@@ -50,6 +50,7 @@
|
|||||||
#include "core-proxy.h"
|
#include "core-proxy.h"
|
||||||
#include "core-string.h"
|
#include "core-string.h"
|
||||||
#include "core-sys.h"
|
#include "core-sys.h"
|
||||||
|
#include "core-theme.h"
|
||||||
#include "core-util.h"
|
#include "core-util.h"
|
||||||
#include "core-version.h"
|
#include "core-version.h"
|
||||||
#include "../gui/gui-bar.h"
|
#include "../gui/gui-bar.h"
|
||||||
@@ -222,6 +223,8 @@ struct t_config_option *config_look_separator_horizontal = NULL;
|
|||||||
struct t_config_option *config_look_separator_vertical = NULL;
|
struct t_config_option *config_look_separator_vertical = NULL;
|
||||||
struct t_config_option *config_look_tab_whitespace_char = NULL;
|
struct t_config_option *config_look_tab_whitespace_char = NULL;
|
||||||
struct t_config_option *config_look_tab_width = NULL;
|
struct t_config_option *config_look_tab_width = NULL;
|
||||||
|
struct t_config_option *config_look_theme = NULL;
|
||||||
|
struct t_config_option *config_look_theme_backup = NULL;
|
||||||
struct t_config_option *config_look_time_format = NULL;
|
struct t_config_option *config_look_time_format = NULL;
|
||||||
struct t_config_option *config_look_whitespace_char = NULL;
|
struct t_config_option *config_look_whitespace_char = NULL;
|
||||||
struct t_config_option *config_look_window_auto_zoom = NULL;
|
struct t_config_option *config_look_window_auto_zoom = NULL;
|
||||||
@@ -1381,7 +1384,7 @@ config_change_color (const void *pointer, void *data,
|
|||||||
(void) data;
|
(void) data;
|
||||||
(void) option;
|
(void) option;
|
||||||
|
|
||||||
if (gui_init_ok)
|
if (gui_init_ok && !theme_applying)
|
||||||
{
|
{
|
||||||
gui_color_init_weechat ();
|
gui_color_init_weechat ();
|
||||||
gui_window_ask_refresh (1);
|
gui_window_ask_refresh (1);
|
||||||
@@ -3450,7 +3453,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||||
config_look_buffer_time_format = config_file_new_option (
|
config_look_buffer_time_format = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"buffer_time_format", "string",
|
"buffer_time_format", "string|themable",
|
||||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||||
N_("time format for each line displayed in buffers (see man "
|
N_("time format for each line displayed in buffers (see man "
|
||||||
"strftime for date/time specifiers, extra specifiers are "
|
"strftime for date/time specifiers, extra specifiers are "
|
||||||
@@ -3474,7 +3477,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
config_look_buffer_time_same = config_file_new_option (
|
config_look_buffer_time_same = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"buffer_time_same", "string",
|
"buffer_time_same", "string|themable",
|
||||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||||
N_("time displayed for a message with same time as previous message: "
|
N_("time displayed for a message with same time as previous message: "
|
||||||
"use a space \" \" to hide time, another string to display this "
|
"use a space \" \" to hide time, another string to display this "
|
||||||
@@ -3641,7 +3644,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
config_look_day_change_message_1date = config_file_new_option (
|
config_look_day_change_message_1date = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"day_change_message_1date", "string",
|
"day_change_message_1date", "string|themable",
|
||||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||||
N_("message displayed when the day has changed, with one date "
|
N_("message displayed when the day has changed, with one date "
|
||||||
"displayed (for example at beginning of buffer) (see man "
|
"displayed (for example at beginning of buffer) (see man "
|
||||||
@@ -3654,7 +3657,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
config_look_day_change_message_2dates = config_file_new_option (
|
config_look_day_change_message_2dates = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"day_change_message_2dates", "string",
|
"day_change_message_2dates", "string|themable",
|
||||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||||
N_("message displayed when the day has changed, with two dates "
|
N_("message displayed when the day has changed, with two dates "
|
||||||
"displayed (between two messages); the second date specifiers "
|
"displayed (between two messages); the second date specifiers "
|
||||||
@@ -3971,7 +3974,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
config_look_item_time_format = config_file_new_option (
|
config_look_item_time_format = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"item_time_format", "string",
|
"item_time_format", "string|themable",
|
||||||
N_("time format for \"time\" bar item (see man strftime for "
|
N_("time format for \"time\" bar item (see man strftime for "
|
||||||
"date/time specifiers) (note: content is evaluated, so you can "
|
"date/time specifiers) (note: content is evaluated, so you can "
|
||||||
"use colors with format \"${color:xxx}\", see /help eval)"),
|
"use colors with format \"${color:xxx}\", see /help eval)"),
|
||||||
@@ -4026,7 +4029,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
config_look_nick_color_force = config_file_new_option (
|
config_look_nick_color_force = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"nick_color_force", "string",
|
"nick_color_force", "string|themable",
|
||||||
N_("force color for some nicks: hash computed with nickname "
|
N_("force color for some nicks: hash computed with nickname "
|
||||||
"to find color will not be used for these nicks (format is: "
|
"to find color will not be used for these nicks (format is: "
|
||||||
"\"nick1:color1;nick2:color2\"); look up for nicks is with "
|
"\"nick1:color1;nick2:color2\"); look up for nicks is with "
|
||||||
@@ -4118,7 +4121,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||||
config_look_prefix[GUI_CHAT_PREFIX_ERROR] = config_file_new_option (
|
config_look_prefix[GUI_CHAT_PREFIX_ERROR] = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"prefix_error", "string",
|
"prefix_error", "string|themable",
|
||||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||||
N_("prefix for error messages (note: content is evaluated, so you "
|
N_("prefix for error messages (note: content is evaluated, so you "
|
||||||
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
||||||
@@ -4128,7 +4131,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
config_look_prefix[GUI_CHAT_PREFIX_NETWORK] = config_file_new_option (
|
config_look_prefix[GUI_CHAT_PREFIX_NETWORK] = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"prefix_network", "string",
|
"prefix_network", "string|themable",
|
||||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||||
N_("prefix for network messages (note: content is evaluated, so you "
|
N_("prefix for network messages (note: content is evaluated, so you "
|
||||||
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
||||||
@@ -4138,7 +4141,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
config_look_prefix[GUI_CHAT_PREFIX_ACTION] = config_file_new_option (
|
config_look_prefix[GUI_CHAT_PREFIX_ACTION] = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"prefix_action", "string",
|
"prefix_action", "string|themable",
|
||||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||||
N_("prefix for action messages (note: content is evaluated, so you "
|
N_("prefix for action messages (note: content is evaluated, so you "
|
||||||
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
||||||
@@ -4148,7 +4151,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
config_look_prefix[GUI_CHAT_PREFIX_JOIN] = config_file_new_option (
|
config_look_prefix[GUI_CHAT_PREFIX_JOIN] = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"prefix_join", "string",
|
"prefix_join", "string|themable",
|
||||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||||
N_("prefix for join messages (note: content is evaluated, so you "
|
N_("prefix for join messages (note: content is evaluated, so you "
|
||||||
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
||||||
@@ -4158,7 +4161,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
config_look_prefix[GUI_CHAT_PREFIX_QUIT] = config_file_new_option (
|
config_look_prefix[GUI_CHAT_PREFIX_QUIT] = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"prefix_quit", "string",
|
"prefix_quit", "string|themable",
|
||||||
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
/* TRANSLATORS: string "${color:xxx}" must NOT be translated */
|
||||||
N_("prefix for quit messages (note: content is evaluated, so you "
|
N_("prefix for quit messages (note: content is evaluated, so you "
|
||||||
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
"can use colors with format \"${color:xxx}\", see /help eval)"),
|
||||||
@@ -4427,6 +4430,26 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL,
|
NULL, NULL, NULL,
|
||||||
&config_change_tab, NULL, NULL,
|
&config_change_tab, NULL, NULL,
|
||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
|
config_look_theme = config_file_new_option (
|
||||||
|
weechat_config_file, weechat_config_section_look,
|
||||||
|
"theme", "string",
|
||||||
|
N_("name of the last theme applied with command /theme "
|
||||||
|
"(set automatically, do not change manually); informational "
|
||||||
|
"only, the theme is not re-applied at startup"),
|
||||||
|
NULL, 0, 0, "", NULL, 0,
|
||||||
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||||
|
config_look_theme_backup = config_file_new_option (
|
||||||
|
weechat_config_file, weechat_config_section_look,
|
||||||
|
"theme_backup", "boolean",
|
||||||
|
N_("create a backup theme file with the current themable "
|
||||||
|
"options before applying a theme with command /theme; if "
|
||||||
|
"the backup file cannot be written, the apply is aborted "
|
||||||
|
"(no option is changed); the backup file is written to "
|
||||||
|
"directory \"themes\" inside the WeeChat configuration "
|
||||||
|
"directory and can be restored with the command: `/theme apply "
|
||||||
|
"backup-<timestamp>`"),
|
||||||
|
NULL, 0, 0, "on", NULL, 0,
|
||||||
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||||
config_look_time_format = config_file_new_option (
|
config_look_time_format = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_look,
|
weechat_config_file, weechat_config_section_look,
|
||||||
"time_format", "string",
|
"time_format", "string",
|
||||||
@@ -4647,7 +4670,7 @@ config_weechat_init_options (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
config_color_chat_nick_colors = config_file_new_option (
|
config_color_chat_nick_colors = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_color,
|
weechat_config_file, weechat_config_section_color,
|
||||||
"chat_nick_colors", "string",
|
"chat_nick_colors", "string|themable",
|
||||||
/* TRANSLATORS: please do not translate "lightred:blue" */
|
/* TRANSLATORS: please do not translate "lightred:blue" */
|
||||||
N_("text color for nicks (comma separated list of colors, "
|
N_("text color for nicks (comma separated list of colors, "
|
||||||
"background is allowed with format: \"fg:bg\", for example: "
|
"background is allowed with format: \"fg:bg\", for example: "
|
||||||
@@ -4918,7 +4941,7 @@ config_weechat_init_options (void)
|
|||||||
/* eval syntax highlighting colors (for "${raw_hl:xxx}" and "${hl:xxx}") */
|
/* eval syntax highlighting colors (for "${raw_hl:xxx}" and "${hl:xxx}") */
|
||||||
config_color_eval_syntax_colors = config_file_new_option (
|
config_color_eval_syntax_colors = config_file_new_option (
|
||||||
weechat_config_file, weechat_config_section_color,
|
weechat_config_file, weechat_config_section_color,
|
||||||
"eval_syntax_colors", "string",
|
"eval_syntax_colors", "string|themable",
|
||||||
/* TRANSLATORS: please do not translate "lightred:blue" */
|
/* TRANSLATORS: please do not translate "lightred:blue" */
|
||||||
N_("text color for syntax highlighting in evaluated strings, "
|
N_("text color for syntax highlighting in evaluated strings, "
|
||||||
"with \"${raw_hl:...}\" and \"${hl:...}\" (comma separated "
|
"with \"${raw_hl:...}\" and \"${hl:...}\" (comma separated "
|
||||||
|
|||||||
@@ -277,6 +277,8 @@ extern struct t_config_option *config_look_separator_horizontal;
|
|||||||
extern struct t_config_option *config_look_separator_vertical;
|
extern struct t_config_option *config_look_separator_vertical;
|
||||||
extern struct t_config_option *config_look_tab_whitespace_char;
|
extern struct t_config_option *config_look_tab_whitespace_char;
|
||||||
extern struct t_config_option *config_look_tab_width;
|
extern struct t_config_option *config_look_tab_width;
|
||||||
|
extern struct t_config_option *config_look_theme;
|
||||||
|
extern struct t_config_option *config_look_theme_backup;
|
||||||
extern struct t_config_option *config_look_time_format;
|
extern struct t_config_option *config_look_time_format;
|
||||||
extern struct t_config_option *config_look_whitespace_char;
|
extern struct t_config_option *config_look_whitespace_char;
|
||||||
extern struct t_config_option *config_look_window_auto_zoom;
|
extern struct t_config_option *config_look_window_auto_zoom;
|
||||||
|
|||||||
@@ -0,0 +1,141 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* This file is part of WeeChat, the extensible chat client.
|
||||||
|
*
|
||||||
|
* WeeChat is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* WeeChat is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Built-in theme registrations (core contribution only). */
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include "weechat.h"
|
||||||
|
#include "core-hashtable.h"
|
||||||
|
#include "core-theme.h"
|
||||||
|
#include "../plugins/weechat-plugin.h"
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Core overrides for the "light" theme: option values tuned for a
|
||||||
|
* light-background terminal. Order is by full option name to keep diffs
|
||||||
|
* stable; the list ends with a NULL sentinel.
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct t_theme_builtin_entry
|
||||||
|
{
|
||||||
|
const char *option;
|
||||||
|
const char *value;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct t_theme_builtin_entry theme_builtin_light_core[] =
|
||||||
|
{
|
||||||
|
{ "weechat.bar.status.color_bg", "254" },
|
||||||
|
{ "weechat.bar.status.color_bg_inactive", "default" },
|
||||||
|
{ "weechat.bar.title.color_bg", "254" },
|
||||||
|
{ "weechat.bar.title.color_bg_inactive", "default" },
|
||||||
|
{ "weechat.color.bar_more", "magenta" },
|
||||||
|
{ "weechat.color.chat_buffer", "default" },
|
||||||
|
{ "weechat.color.chat_channel", "default" },
|
||||||
|
{ "weechat.color.chat_nick", "cyan" },
|
||||||
|
{ "weechat.color.chat_nick_colors",
|
||||||
|
"red,green,brown,blue,magenta,cyan,lightred,lightblue,lightmagenta,"
|
||||||
|
"20,28,52,57,58,61,63,88,94,128,166,202" },
|
||||||
|
{ "weechat.color.chat_nick_self", "default" },
|
||||||
|
{ "weechat.color.chat_prefix_action", "default" },
|
||||||
|
{ "weechat.color.chat_prefix_error", "94" },
|
||||||
|
{ "weechat.color.chat_prefix_join", "green" },
|
||||||
|
{ "weechat.color.chat_prefix_more", "magenta" },
|
||||||
|
{ "weechat.color.chat_prefix_quit", "red" },
|
||||||
|
{ "weechat.color.chat_prefix_suffix", "251" },
|
||||||
|
{ "weechat.color.chat_server", "94" },
|
||||||
|
{ "weechat.color.chat_text_found_bg", "magenta" },
|
||||||
|
{ "weechat.color.chat_time_delimiters", "94" },
|
||||||
|
{ "weechat.color.eval_syntax_colors",
|
||||||
|
"green,red,blue,magenta,94,cyan" },
|
||||||
|
{ "weechat.color.input_actions", "28" },
|
||||||
|
{ "weechat.color.item_away", "brown" },
|
||||||
|
{ "weechat.color.separator", "251" },
|
||||||
|
{ "weechat.color.status_count_msg", "94" },
|
||||||
|
{ "weechat.color.status_data_highlight", "93" },
|
||||||
|
{ "weechat.color.status_data_msg", "94" },
|
||||||
|
{ "weechat.color.status_data_private", "green" },
|
||||||
|
{ "weechat.color.status_more", "94" },
|
||||||
|
{ "weechat.color.status_mouse", "green" },
|
||||||
|
{ "weechat.color.status_name", "default" },
|
||||||
|
{ "weechat.color.status_name_insecure", "202" },
|
||||||
|
{ "weechat.color.status_name_tls", "default" },
|
||||||
|
{ "weechat.color.status_number", "28" },
|
||||||
|
{ NULL, NULL },
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Build a hashtable of overrides from a NULL-terminated table and
|
||||||
|
* register it under the given theme name, with an optional description.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
theme_builtin_register_entries (const char *name,
|
||||||
|
const char *description,
|
||||||
|
const struct t_theme_builtin_entry *entries)
|
||||||
|
{
|
||||||
|
struct t_hashtable *overrides;
|
||||||
|
struct t_theme *theme;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (!name || !entries)
|
||||||
|
return;
|
||||||
|
|
||||||
|
overrides = hashtable_new (32,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
NULL, NULL);
|
||||||
|
if (!overrides)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (i = 0; entries[i].option; i++)
|
||||||
|
hashtable_set (overrides, entries[i].option, entries[i].value);
|
||||||
|
|
||||||
|
theme = theme_register (NULL, NULL, name, overrides);
|
||||||
|
if (theme && description)
|
||||||
|
{
|
||||||
|
free (theme->description);
|
||||||
|
theme->description = strdup (description);
|
||||||
|
}
|
||||||
|
|
||||||
|
hashtable_free (overrides);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Register all built-in themes contributed by core. Called once from
|
||||||
|
* weechat_init; plugins/scripts add their own contributions later via
|
||||||
|
* weechat_theme_register.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
theme_builtin_init (void)
|
||||||
|
{
|
||||||
|
theme_builtin_register_entries (
|
||||||
|
"light",
|
||||||
|
_("WeeChat default theme for light-background terminals"),
|
||||||
|
theme_builtin_light_core);
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,92 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* This file is part of WeeChat, the extensible chat client.
|
||||||
|
*
|
||||||
|
* WeeChat is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* WeeChat is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef WEECHAT_THEME_H
|
||||||
|
#define WEECHAT_THEME_H
|
||||||
|
|
||||||
|
struct t_hashtable;
|
||||||
|
struct t_arraylist;
|
||||||
|
struct t_weechat_plugin;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* A contribution is one (owner, overrides) pair attached to a theme.
|
||||||
|
* "owner" is identified by a (plugin, script) pair:
|
||||||
|
* - plugin == NULL && script == NULL => core
|
||||||
|
* - plugin != NULL && script == NULL => plugin (e.g. irc, fset)
|
||||||
|
* - plugin != NULL && script != NULL => individual script under that
|
||||||
|
* script-language plugin
|
||||||
|
*/
|
||||||
|
struct t_theme_contribution
|
||||||
|
{
|
||||||
|
struct t_weechat_plugin *plugin;
|
||||||
|
const void *script;
|
||||||
|
struct t_hashtable *overrides; /* full_option_name -> value */
|
||||||
|
struct t_theme_contribution *prev_contribution;
|
||||||
|
struct t_theme_contribution *next_contribution;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct t_theme
|
||||||
|
{
|
||||||
|
char *name; /* "light", "solarized", ... */
|
||||||
|
char *description; /* free-form text */
|
||||||
|
char *date; /* "YYYY-MM-DD HH:MM:SS" */
|
||||||
|
char *weechat_version; /* version at registration time */
|
||||||
|
struct t_theme_contribution *contributions;
|
||||||
|
struct t_theme_contribution *last_contribution;
|
||||||
|
struct t_theme *prev_theme;
|
||||||
|
struct t_theme *next_theme;
|
||||||
|
};
|
||||||
|
|
||||||
|
extern struct t_theme *themes;
|
||||||
|
extern struct t_theme *last_theme;
|
||||||
|
extern int theme_applying; /* gate for config_change_color */
|
||||||
|
|
||||||
|
extern struct t_theme *theme_search (const char *name);
|
||||||
|
extern struct t_theme *theme_register (struct t_weechat_plugin *plugin,
|
||||||
|
const void *script,
|
||||||
|
const char *name,
|
||||||
|
struct t_hashtable *overrides);
|
||||||
|
extern int theme_overrides_count (struct t_theme *theme);
|
||||||
|
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);
|
||||||
|
extern int theme_rename (const char *old_name, const char *new_name);
|
||||||
|
extern int theme_delete (const char *name);
|
||||||
|
extern char *theme_make_backup (void);
|
||||||
|
extern char *theme_user_file_path (const char *name);
|
||||||
|
extern struct t_theme *theme_file_parse (const char *path);
|
||||||
|
extern void theme_free (struct t_theme *theme);
|
||||||
|
|
||||||
|
/* lifecycle: drop all contributions owned by a plugin or script */
|
||||||
|
extern void theme_unregister_plugin (struct t_weechat_plugin *plugin);
|
||||||
|
extern void theme_unregister_script (struct t_weechat_plugin *plugin,
|
||||||
|
const void *script);
|
||||||
|
|
||||||
|
extern void theme_init (void);
|
||||||
|
extern void theme_end (void);
|
||||||
|
|
||||||
|
/* implemented in core-theme-builtin.c */
|
||||||
|
extern void theme_builtin_init (void);
|
||||||
|
|
||||||
|
#endif /* WEECHAT_THEME_H */
|
||||||
@@ -143,8 +143,10 @@ struct t_url_constant url_auth[] =
|
|||||||
|
|
||||||
struct t_url_constant url_authtype[] =
|
struct t_url_constant url_authtype[] =
|
||||||
{
|
{
|
||||||
|
#if LIBCURL_VERSION_NUM < 0x081600 /* < 8.22.0 */
|
||||||
URL_DEF_CONST(_TLSAUTH, NONE),
|
URL_DEF_CONST(_TLSAUTH, NONE),
|
||||||
URL_DEF_CONST(_TLSAUTH, SRP),
|
URL_DEF_CONST(_TLSAUTH, SRP),
|
||||||
|
#endif
|
||||||
{ NULL, 0 },
|
{ NULL, 0 },
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -409,9 +411,11 @@ struct t_url_option url_options[] =
|
|||||||
URL_DEF_OPTION(PASSWORD, STRING, NULL),
|
URL_DEF_OPTION(PASSWORD, STRING, NULL),
|
||||||
URL_DEF_OPTION(PROXYUSERNAME, STRING, NULL),
|
URL_DEF_OPTION(PROXYUSERNAME, STRING, NULL),
|
||||||
URL_DEF_OPTION(PROXYPASSWORD, STRING, NULL),
|
URL_DEF_OPTION(PROXYPASSWORD, STRING, NULL),
|
||||||
|
#if LIBCURL_VERSION_NUM < 0x081600 /* < 8.22.0 */
|
||||||
URL_DEF_OPTION(TLSAUTH_TYPE, MASK, url_authtype),
|
URL_DEF_OPTION(TLSAUTH_TYPE, MASK, url_authtype),
|
||||||
URL_DEF_OPTION(TLSAUTH_USERNAME, STRING, NULL),
|
URL_DEF_OPTION(TLSAUTH_USERNAME, STRING, NULL),
|
||||||
URL_DEF_OPTION(TLSAUTH_PASSWORD, STRING, NULL),
|
URL_DEF_OPTION(TLSAUTH_PASSWORD, STRING, NULL),
|
||||||
|
#endif
|
||||||
URL_DEF_OPTION(SASL_AUTHZID, STRING, NULL),
|
URL_DEF_OPTION(SASL_AUTHZID, STRING, NULL),
|
||||||
|
|
||||||
URL_DEF_OPTION(SASL_IR, LONG, NULL),
|
URL_DEF_OPTION(SASL_IR, LONG, NULL),
|
||||||
@@ -626,9 +630,11 @@ struct t_url_option url_options[] =
|
|||||||
URL_DEF_OPTION(PROXY_SSL_OPTIONS, LONG, url_ssl_options),
|
URL_DEF_OPTION(PROXY_SSL_OPTIONS, LONG, url_ssl_options),
|
||||||
URL_DEF_OPTION(PROXY_SSL_VERIFYHOST, LONG, NULL),
|
URL_DEF_OPTION(PROXY_SSL_VERIFYHOST, LONG, NULL),
|
||||||
URL_DEF_OPTION(PROXY_SSL_VERIFYPEER, LONG, NULL),
|
URL_DEF_OPTION(PROXY_SSL_VERIFYPEER, LONG, NULL),
|
||||||
|
#if LIBCURL_VERSION_NUM < 0x081600 /* < 8.22.0 */
|
||||||
URL_DEF_OPTION(PROXY_TLSAUTH_PASSWORD, STRING, NULL),
|
URL_DEF_OPTION(PROXY_TLSAUTH_PASSWORD, STRING, NULL),
|
||||||
URL_DEF_OPTION(PROXY_TLSAUTH_TYPE, STRING, NULL),
|
URL_DEF_OPTION(PROXY_TLSAUTH_TYPE, STRING, NULL),
|
||||||
URL_DEF_OPTION(PROXY_TLSAUTH_USERNAME, STRING, NULL),
|
URL_DEF_OPTION(PROXY_TLSAUTH_USERNAME, STRING, NULL),
|
||||||
|
#endif
|
||||||
URL_DEF_OPTION(TLS13_CIPHERS, LIST, NULL),
|
URL_DEF_OPTION(TLS13_CIPHERS, LIST, NULL),
|
||||||
URL_DEF_OPTION(PROXY_TLS13_CIPHERS, LIST, NULL),
|
URL_DEF_OPTION(PROXY_TLS13_CIPHERS, LIST, NULL),
|
||||||
#if LIBCURL_VERSION_NUM >= 0x074700 /* 7.71.0 */
|
#if LIBCURL_VERSION_NUM >= 0x074700 /* 7.71.0 */
|
||||||
|
|||||||
+46
-15
@@ -75,6 +75,7 @@
|
|||||||
#include "core-secure-config.h"
|
#include "core-secure-config.h"
|
||||||
#include "core-signal.h"
|
#include "core-signal.h"
|
||||||
#include "core-string.h"
|
#include "core-string.h"
|
||||||
|
#include "core-theme.h"
|
||||||
#include "core-upgrade.h"
|
#include "core-upgrade.h"
|
||||||
#include "core-url.h"
|
#include "core-url.h"
|
||||||
#include "core-utf8.h"
|
#include "core-utf8.h"
|
||||||
@@ -134,10 +135,13 @@ int weechat_auto_load_scripts = 1; /* auto-load scripts */
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Display WeeChat startup message.
|
* Display WeeChat startup message.
|
||||||
|
*
|
||||||
|
* If "term_theme_light" is set, a notice about the automatic "light" theme is
|
||||||
|
* displayed on first start.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
void
|
void
|
||||||
weechat_startup_message (void)
|
weechat_startup_message (int term_theme_light)
|
||||||
{
|
{
|
||||||
if (weechat_headless)
|
if (weechat_headless)
|
||||||
{
|
{
|
||||||
@@ -182,22 +186,34 @@ weechat_startup_message (void)
|
|||||||
if (weechat_first_start)
|
if (weechat_first_start)
|
||||||
{
|
{
|
||||||
/* message on first run (when weechat.conf is created) */
|
/* message on first run (when weechat.conf is created) */
|
||||||
gui_chat_printf (NULL, "");
|
gui_chat_printf (NULL, _("Welcome to WeeChat!"));
|
||||||
gui_chat_printf (
|
gui_chat_printf (
|
||||||
NULL,
|
NULL,
|
||||||
_("Welcome to WeeChat!\n"
|
_("If you are discovering WeeChat, it is recommended to "
|
||||||
"\n"
|
"read at least the quickstart guide, and the user's guide if "
|
||||||
"If you are discovering WeeChat, it is recommended to read at "
|
"you have some time; they explain main WeeChat concepts."));
|
||||||
"least the quickstart guide, and the user's guide if you have "
|
gui_chat_printf (
|
||||||
"some time; they explain main WeeChat concepts.\n"
|
NULL,
|
||||||
"All WeeChat docs are available at: https://weechat.org/doc/\n"
|
_("All WeeChat docs are available at: %s"),
|
||||||
"\n"
|
WEECHAT_WEBSITE_DOC);
|
||||||
"Moreover, there is inline help with /help on all commands and "
|
gui_chat_printf (
|
||||||
"options (use Tab key to complete the name).\n"
|
NULL,
|
||||||
"The command /fset can help to customize WeeChat.\n"
|
_("Moreover, there is inline help with /help on all commands and "
|
||||||
"\n"
|
"options (use Tab key to complete the name)."));
|
||||||
"You can add and connect to an IRC server with /server and "
|
gui_chat_printf (
|
||||||
|
NULL,
|
||||||
|
_("The command /fset can help to customize WeeChat."));
|
||||||
|
gui_chat_printf (
|
||||||
|
NULL,
|
||||||
|
_("You can add and connect to an IRC server with /server and "
|
||||||
"/connect commands (see /help server)."));
|
"/connect commands (see /help server)."));
|
||||||
|
if (term_theme_light)
|
||||||
|
{
|
||||||
|
gui_chat_printf (
|
||||||
|
NULL,
|
||||||
|
_("The \"light\" theme will be automatically applied. "
|
||||||
|
"Use /theme reset to switch back to the default dark theme."));
|
||||||
|
}
|
||||||
gui_chat_printf (NULL, "");
|
gui_chat_printf (NULL, "");
|
||||||
gui_chat_printf (NULL, "---");
|
gui_chat_printf (NULL, "---");
|
||||||
gui_chat_printf (NULL, "");
|
gui_chat_printf (NULL, "");
|
||||||
@@ -360,6 +376,8 @@ weechat_init_gettext (void)
|
|||||||
void
|
void
|
||||||
weechat_init (int argc, char *argv[], void (*gui_init_cb)(void))
|
weechat_init (int argc, char *argv[], void (*gui_init_cb)(void))
|
||||||
{
|
{
|
||||||
|
int term_theme_light; /* 1 if a light terminal detected */
|
||||||
|
|
||||||
weechat_first_start_time = time (NULL); /* initialize start time */
|
weechat_first_start_time = time (NULL); /* initialize start time */
|
||||||
gettimeofday (&weechat_current_start_timeval, NULL);
|
gettimeofday (&weechat_current_start_timeval, NULL);
|
||||||
|
|
||||||
@@ -368,6 +386,9 @@ weechat_init (int argc, char *argv[], void (*gui_init_cb)(void))
|
|||||||
* weechat_current_start_timeval.tv_usec)
|
* weechat_current_start_timeval.tv_usec)
|
||||||
^ getpid ());
|
^ getpid ());
|
||||||
|
|
||||||
|
/* detect the terminal theme, before initializing the GUI */
|
||||||
|
term_theme_light = gui_term_theme_is_light ();
|
||||||
|
|
||||||
weeurl_init (); /* initialize URL */
|
weeurl_init (); /* initialize URL */
|
||||||
string_init (); /* initialize string */
|
string_init (); /* initialize string */
|
||||||
signal_init (); /* initialize signals */
|
signal_init (); /* initialize signals */
|
||||||
@@ -384,6 +405,8 @@ weechat_init (int argc, char *argv[], void (*gui_init_cb)(void))
|
|||||||
weechat_shutdown (EXIT_FAILURE, 0);
|
weechat_shutdown (EXIT_FAILURE, 0);
|
||||||
if (!secure_config_init ()) /* init secured data options (sec.*)*/
|
if (!secure_config_init ()) /* init secured data options (sec.*)*/
|
||||||
weechat_shutdown (EXIT_FAILURE, 0);
|
weechat_shutdown (EXIT_FAILURE, 0);
|
||||||
|
theme_init (); /* initialize theme registry */
|
||||||
|
theme_builtin_init (); /* register built-in themes */
|
||||||
if (!config_weechat_init ()) /* init WeeChat options (weechat.*) */
|
if (!config_weechat_init ()) /* init WeeChat options (weechat.*) */
|
||||||
weechat_shutdown (EXIT_FAILURE, 0);
|
weechat_shutdown (EXIT_FAILURE, 0);
|
||||||
args_parse (argc, argv); /* parse command line args */
|
args_parse (argc, argv); /* parse command line args */
|
||||||
@@ -405,7 +428,7 @@ weechat_init (int argc, char *argv[], void (*gui_init_cb)(void))
|
|||||||
weechat_upgrading = 0;
|
weechat_upgrading = 0;
|
||||||
}
|
}
|
||||||
if (!weechat_doc_gen)
|
if (!weechat_doc_gen)
|
||||||
weechat_startup_message (); /* display WeeChat startup message */
|
weechat_startup_message (term_theme_light); /* startup message */
|
||||||
gui_chat_print_lines_waiting_buffer (NULL); /* display lines waiting */
|
gui_chat_print_lines_waiting_buffer (NULL); /* display lines waiting */
|
||||||
weechat_term_check (); /* warning about wrong $TERM */
|
weechat_term_check (); /* warning about wrong $TERM */
|
||||||
weechat_locale_check (); /* warning about wrong locale */
|
weechat_locale_check (); /* warning about wrong locale */
|
||||||
@@ -423,6 +446,13 @@ weechat_init (int argc, char *argv[], void (*gui_init_cb)(void))
|
|||||||
weechat_doc_gen_ok = doc_generate (weechat_doc_gen_path);
|
weechat_doc_gen_ok = doc_generate (weechat_doc_gen_path);
|
||||||
weechat_quit = 1;
|
weechat_quit = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (weechat_first_start && isatty (STDOUT_FILENO) && !weechat_headless && !weechat_doc_gen)
|
||||||
|
{
|
||||||
|
/* switch to "light" theme if terminal background was detected as "light" */
|
||||||
|
if (term_theme_light)
|
||||||
|
theme_apply ("light");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -449,6 +479,7 @@ weechat_end (void (*gui_end_cb)(int clean_exit))
|
|||||||
unhook_all (); /* remove all hooks */
|
unhook_all (); /* remove all hooks */
|
||||||
hdata_end (); /* end hdata */
|
hdata_end (); /* end hdata */
|
||||||
secure_end (); /* end secured data */
|
secure_end (); /* end secured data */
|
||||||
|
theme_end (); /* end theme registry */
|
||||||
string_end (); /* end string */
|
string_end (); /* end string */
|
||||||
weeurl_end ();
|
weeurl_end ();
|
||||||
weechat_shutdown (-1, 0); /* end other things */
|
weechat_shutdown (-1, 0); /* end other things */
|
||||||
|
|||||||
@@ -55,6 +55,7 @@
|
|||||||
|
|
||||||
#define WEECHAT_COPYRIGHT_DATE "(C) 2003-2026"
|
#define WEECHAT_COPYRIGHT_DATE "(C) 2003-2026"
|
||||||
#define WEECHAT_WEBSITE "https://weechat.org/"
|
#define WEECHAT_WEBSITE "https://weechat.org/"
|
||||||
|
#define WEECHAT_WEBSITE_DOC "https://weechat.org/doc/"
|
||||||
#define WEECHAT_WEBSITE_DOWNLOAD "https://weechat.org/download/"
|
#define WEECHAT_WEBSITE_DOWNLOAD "https://weechat.org/download/"
|
||||||
#define WEECHAT_AUTHOR_NAME "Sébastien Helleu"
|
#define WEECHAT_AUTHOR_NAME "Sébastien Helleu"
|
||||||
#define WEECHAT_AUTHOR_EMAIL "flashcode@flashtux.org"
|
#define WEECHAT_AUTHOR_EMAIL "flashcode@flashtux.org"
|
||||||
|
|||||||
@@ -25,6 +25,14 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <fcntl.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <sys/select.h>
|
||||||
|
#include <sys/time.h>
|
||||||
|
#include <termios.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
#ifndef WEECHAT_HEADLESS
|
#ifndef WEECHAT_HEADLESS
|
||||||
#ifdef HAVE_NCURSESW_CURSES_H
|
#ifdef HAVE_NCURSESW_CURSES_H
|
||||||
#ifdef __sun
|
#ifdef __sun
|
||||||
@@ -37,6 +45,8 @@
|
|||||||
#endif /* HAVE_NCURSESW_CURSES_H */
|
#endif /* HAVE_NCURSESW_CURSES_H */
|
||||||
#endif /* WEECHAT_HEADLESS */
|
#endif /* WEECHAT_HEADLESS */
|
||||||
|
|
||||||
|
#include "../../core/weechat.h"
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set "eat_newline_glitch" variable.
|
* Set "eat_newline_glitch" variable.
|
||||||
@@ -56,3 +66,139 @@ gui_term_set_eat_newline_glitch (int value)
|
|||||||
(void) value;
|
(void) value;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Auto-detects the terminal background as "light" or "dark".
|
||||||
|
*
|
||||||
|
* Best-effort, in order:
|
||||||
|
*
|
||||||
|
* 1. Environment variable COLORFGBG (set by rxvt, urxvt, Konsole,
|
||||||
|
* ...): "fg;bg" or "fg;default;bg"; the last ';'-separated
|
||||||
|
* component is the bg ANSI color index. 0-6 + 8 are dark,
|
||||||
|
* 7 + 9-15 are light.
|
||||||
|
*
|
||||||
|
* 2. OSC 11 escape query on /dev/tty: write "\033]11;?\033\\",
|
||||||
|
* wait up to 100 ms for a reply of the form
|
||||||
|
* "...rgb:RRRR/GGGG/BBBB..." (each component is 1-4 hex digits
|
||||||
|
* depending on the terminal). Classify the answer by Rec. 601
|
||||||
|
* luminance computed on the high nibble of each component
|
||||||
|
* (resolution is plenty for a light/dark binary decision and
|
||||||
|
* avoids width-normalization headaches).
|
||||||
|
*
|
||||||
|
* /dev/tty is used rather than stdin/stdout so a pipe redirection
|
||||||
|
* does not defeat detection. The select() timeout caps how long a
|
||||||
|
* silent terminal can stall startup. Headless mode and any I/O error
|
||||||
|
* short-circuit to the safe default 0 (dark), which is also returned
|
||||||
|
* when both probes are inconclusive.
|
||||||
|
*
|
||||||
|
* MUST be called before curses init: it briefly puts the tty in raw
|
||||||
|
* mode and reads/writes escape sequences directly.
|
||||||
|
*
|
||||||
|
* Returns 1 if a light background is detected, otherwise 0 (0 is the
|
||||||
|
* preferred value when detection is unsure).
|
||||||
|
*/
|
||||||
|
|
||||||
|
int
|
||||||
|
gui_term_theme_is_light (void)
|
||||||
|
{
|
||||||
|
const char *colorfgbg, *p;
|
||||||
|
char *endptr;
|
||||||
|
long bg;
|
||||||
|
int fd, n, i, len;
|
||||||
|
struct termios old_attr, new_attr;
|
||||||
|
fd_set rfds;
|
||||||
|
struct timeval tv;
|
||||||
|
char buf[256], *q, *qend;
|
||||||
|
unsigned long comp_high[3], luminance;
|
||||||
|
|
||||||
|
if (weechat_headless)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
/* 1. COLORFGBG */
|
||||||
|
colorfgbg = getenv ("COLORFGBG");
|
||||||
|
if (colorfgbg && colorfgbg[0])
|
||||||
|
{
|
||||||
|
p = strrchr (colorfgbg, ';');
|
||||||
|
if (p)
|
||||||
|
{
|
||||||
|
bg = strtol (p + 1, &endptr, 10);
|
||||||
|
if (endptr != p + 1 && *endptr == '\0')
|
||||||
|
{
|
||||||
|
if (bg == 7 || (bg >= 9 && bg <= 15))
|
||||||
|
return 1;
|
||||||
|
if ((bg >= 0 && bg <= 6) || bg == 8)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 2. OSC 11 query on the controlling terminal */
|
||||||
|
fd = open ("/dev/tty", O_RDWR | O_NOCTTY);
|
||||||
|
if (fd < 0)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (tcgetattr (fd, &old_attr) != 0)
|
||||||
|
{
|
||||||
|
close (fd);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
new_attr = old_attr;
|
||||||
|
new_attr.c_lflag &= (tcflag_t) ~(ICANON | ECHO);
|
||||||
|
new_attr.c_cc[VMIN] = 0;
|
||||||
|
new_attr.c_cc[VTIME] = 0;
|
||||||
|
if (tcsetattr (fd, TCSANOW, &new_attr) != 0)
|
||||||
|
{
|
||||||
|
close (fd);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
n = -1;
|
||||||
|
if (write (fd, "\033]11;?\033\\", 8) == 8)
|
||||||
|
{
|
||||||
|
FD_ZERO (&rfds);
|
||||||
|
FD_SET (fd, &rfds);
|
||||||
|
tv.tv_sec = 0;
|
||||||
|
tv.tv_usec = 100000; /* 100 ms cap on terminals that won't reply */
|
||||||
|
if (select (fd + 1, &rfds, NULL, NULL, &tv) > 0)
|
||||||
|
n = read (fd, buf, sizeof (buf) - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
tcsetattr (fd, TCSANOW, &old_attr);
|
||||||
|
close (fd);
|
||||||
|
|
||||||
|
if (n <= 0)
|
||||||
|
return 0;
|
||||||
|
buf[n] = '\0';
|
||||||
|
|
||||||
|
q = strstr (buf, "rgb:");
|
||||||
|
if (!q)
|
||||||
|
return 0;
|
||||||
|
q += 4;
|
||||||
|
|
||||||
|
for (i = 0; i < 3; i++)
|
||||||
|
{
|
||||||
|
qend = q;
|
||||||
|
while ((*qend >= '0' && *qend <= '9')
|
||||||
|
|| (*qend >= 'a' && *qend <= 'f')
|
||||||
|
|| (*qend >= 'A' && *qend <= 'F'))
|
||||||
|
qend++;
|
||||||
|
len = (int)(qend - q);
|
||||||
|
if (len < 1 || len > 4)
|
||||||
|
return 0;
|
||||||
|
/* high nibble of this component: width-independent brightness */
|
||||||
|
comp_high[i] = strtoul (q, NULL, 16) >> ((len - 1) * 4);
|
||||||
|
q = qend;
|
||||||
|
if (i < 2)
|
||||||
|
{
|
||||||
|
if (*q != '/')
|
||||||
|
return 0;
|
||||||
|
q++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Rec. 601 with coefficients summing to 1000; max = 15 * 1000 */
|
||||||
|
luminance = (299UL * comp_high[0]
|
||||||
|
+ 587UL * comp_high[1]
|
||||||
|
+ 114UL * comp_high[2]);
|
||||||
|
return (luminance > 7500) ? 1 : 0;
|
||||||
|
}
|
||||||
|
|||||||
@@ -3775,6 +3775,7 @@ gui_buffer_close (struct t_gui_buffer *buffer)
|
|||||||
|
|
||||||
gui_hotlist_remove_buffer (buffer, 1);
|
gui_hotlist_remove_buffer (buffer, 1);
|
||||||
free (buffer->hotlist_removed);
|
free (buffer->hotlist_removed);
|
||||||
|
buffer->hotlist_removed = NULL;
|
||||||
if (gui_hotlist_initial_buffer == buffer)
|
if (gui_hotlist_initial_buffer == buffer)
|
||||||
gui_hotlist_initial_buffer = NULL;
|
gui_hotlist_initial_buffer = NULL;
|
||||||
|
|
||||||
@@ -3793,55 +3794,85 @@ gui_buffer_close (struct t_gui_buffer *buffer)
|
|||||||
/* free all lines */
|
/* free all lines */
|
||||||
gui_line_free_all (buffer);
|
gui_line_free_all (buffer);
|
||||||
free (buffer->own_lines);
|
free (buffer->own_lines);
|
||||||
|
buffer->own_lines = NULL;
|
||||||
free (buffer->mixed_lines);
|
free (buffer->mixed_lines);
|
||||||
|
buffer->mixed_lines = NULL;
|
||||||
|
|
||||||
/* free some data */
|
/* free some data */
|
||||||
gui_buffer_undo_free_all (buffer);
|
gui_buffer_undo_free_all (buffer);
|
||||||
gui_history_buffer_free (buffer);
|
gui_history_buffer_free (buffer);
|
||||||
gui_completion_free (buffer->completion);
|
gui_completion_free (buffer->completion);
|
||||||
|
buffer->completion = NULL;
|
||||||
gui_nicklist_remove_all (buffer);
|
gui_nicklist_remove_all (buffer);
|
||||||
gui_nicklist_remove_group (buffer, buffer->nicklist_root);
|
gui_nicklist_remove_group (buffer, buffer->nicklist_root);
|
||||||
|
buffer->nicklist_root = NULL;
|
||||||
hashtable_free (buffer->hotlist_max_level_nicks);
|
hashtable_free (buffer->hotlist_max_level_nicks);
|
||||||
|
buffer->hotlist_max_level_nicks = NULL;
|
||||||
gui_key_free_all (-1, &buffer->keys, &buffer->last_key,
|
gui_key_free_all (-1, &buffer->keys, &buffer->last_key,
|
||||||
&buffer->keys_count, 0);
|
&buffer->keys_count, 0);
|
||||||
gui_buffer_local_var_remove_all (buffer);
|
gui_buffer_local_var_remove_all (buffer);
|
||||||
hashtable_free (buffer->local_variables);
|
hashtable_free (buffer->local_variables);
|
||||||
|
buffer->local_variables = NULL;
|
||||||
free (buffer->plugin_name_for_upgrade);
|
free (buffer->plugin_name_for_upgrade);
|
||||||
|
buffer->plugin_name_for_upgrade = NULL;
|
||||||
free (buffer->name);
|
free (buffer->name);
|
||||||
|
buffer->name = NULL;
|
||||||
free (buffer->full_name);
|
free (buffer->full_name);
|
||||||
|
buffer->full_name = NULL;
|
||||||
free (buffer->old_full_name);
|
free (buffer->old_full_name);
|
||||||
|
buffer->old_full_name = NULL;
|
||||||
free (buffer->short_name);
|
free (buffer->short_name);
|
||||||
|
buffer->short_name = NULL;
|
||||||
free (buffer->title);
|
free (buffer->title);
|
||||||
|
buffer->title = NULL;
|
||||||
free (buffer->modes);
|
free (buffer->modes);
|
||||||
|
buffer->modes = NULL;
|
||||||
free (buffer->input_prompt);
|
free (buffer->input_prompt);
|
||||||
|
buffer->input_prompt = NULL;
|
||||||
free (buffer->input_buffer);
|
free (buffer->input_buffer);
|
||||||
|
buffer->input_buffer = NULL;
|
||||||
free (buffer->input_undo_snap);
|
free (buffer->input_undo_snap);
|
||||||
|
buffer->input_undo_snap = NULL;
|
||||||
free (buffer->text_search_input);
|
free (buffer->text_search_input);
|
||||||
|
buffer->text_search_input = NULL;
|
||||||
if (buffer->text_search_regex_compiled)
|
if (buffer->text_search_regex_compiled)
|
||||||
{
|
{
|
||||||
regfree (buffer->text_search_regex_compiled);
|
regfree (buffer->text_search_regex_compiled);
|
||||||
free (buffer->text_search_regex_compiled);
|
free (buffer->text_search_regex_compiled);
|
||||||
|
buffer->text_search_regex_compiled = NULL;
|
||||||
}
|
}
|
||||||
free (buffer->highlight_words);
|
free (buffer->highlight_words);
|
||||||
|
buffer->highlight_words = NULL;
|
||||||
free (buffer->highlight_disable_regex);
|
free (buffer->highlight_disable_regex);
|
||||||
|
buffer->highlight_disable_regex = NULL;
|
||||||
if (buffer->highlight_disable_regex_compiled)
|
if (buffer->highlight_disable_regex_compiled)
|
||||||
{
|
{
|
||||||
regfree (buffer->highlight_disable_regex_compiled);
|
regfree (buffer->highlight_disable_regex_compiled);
|
||||||
free (buffer->highlight_disable_regex_compiled);
|
free (buffer->highlight_disable_regex_compiled);
|
||||||
|
buffer->highlight_disable_regex_compiled = NULL;
|
||||||
}
|
}
|
||||||
free (buffer->highlight_regex);
|
free (buffer->highlight_regex);
|
||||||
|
buffer->highlight_regex = NULL;
|
||||||
if (buffer->highlight_regex_compiled)
|
if (buffer->highlight_regex_compiled)
|
||||||
{
|
{
|
||||||
regfree (buffer->highlight_regex_compiled);
|
regfree (buffer->highlight_regex_compiled);
|
||||||
free (buffer->highlight_regex_compiled);
|
free (buffer->highlight_regex_compiled);
|
||||||
|
buffer->highlight_regex_compiled = NULL;
|
||||||
}
|
}
|
||||||
free (buffer->highlight_tags_restrict);
|
free (buffer->highlight_tags_restrict);
|
||||||
|
buffer->highlight_tags_restrict = NULL;
|
||||||
string_free_split_tags (buffer->highlight_tags_restrict_array);
|
string_free_split_tags (buffer->highlight_tags_restrict_array);
|
||||||
|
buffer->highlight_tags_restrict_array = NULL;
|
||||||
free (buffer->highlight_tags);
|
free (buffer->highlight_tags);
|
||||||
|
buffer->highlight_tags = NULL;
|
||||||
string_free_split_tags (buffer->highlight_tags_array);
|
string_free_split_tags (buffer->highlight_tags_array);
|
||||||
|
buffer->highlight_tags_array = NULL;
|
||||||
free (buffer->input_callback_data);
|
free (buffer->input_callback_data);
|
||||||
|
buffer->input_callback_data = NULL;
|
||||||
free (buffer->close_callback_data);
|
free (buffer->close_callback_data);
|
||||||
|
buffer->close_callback_data = NULL;
|
||||||
free (buffer->nickcmp_callback_data);
|
free (buffer->nickcmp_callback_data);
|
||||||
|
buffer->nickcmp_callback_data = NULL;
|
||||||
|
|
||||||
/* remove buffer from buffers list */
|
/* remove buffer from buffers list */
|
||||||
if (buffer->prev_buffer)
|
if (buffer->prev_buffer)
|
||||||
|
|||||||
@@ -31,5 +31,6 @@ extern void gui_main_end (int clean_exit);
|
|||||||
|
|
||||||
/* terminal functions (GUI dependent) */
|
/* terminal functions (GUI dependent) */
|
||||||
extern void gui_term_set_eat_newline_glitch (int value);
|
extern void gui_term_set_eat_newline_glitch (int value);
|
||||||
|
extern int gui_term_theme_is_light (void);
|
||||||
|
|
||||||
#endif /* WEECHAT_GUI_MAIN_H */
|
#endif /* WEECHAT_GUI_MAIN_H */
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ add_library(buflist MODULE
|
|||||||
buflist-config.c buflist-config.h
|
buflist-config.c buflist-config.h
|
||||||
buflist-info.c buflist-info.h
|
buflist-info.c buflist-info.h
|
||||||
buflist-mouse.c buflist-mouse.h
|
buflist-mouse.c buflist-mouse.h
|
||||||
|
buflist-theme.c buflist-theme.h
|
||||||
)
|
)
|
||||||
set_target_properties(buflist PROPERTIES PREFIX "")
|
set_target_properties(buflist PROPERTIES PREFIX "")
|
||||||
|
|
||||||
|
|||||||
@@ -645,7 +645,7 @@ buflist_config_init (void)
|
|||||||
{
|
{
|
||||||
buflist_config_format_buffer = weechat_config_new_option (
|
buflist_config_format_buffer = weechat_config_new_option (
|
||||||
buflist_config_file, buflist_config_section_format,
|
buflist_config_file, buflist_config_section_format,
|
||||||
"buffer", "string",
|
"buffer", "string|themable",
|
||||||
N_("format of each line with a buffer "
|
N_("format of each line with a buffer "
|
||||||
"(note: content is evaluated, see /help buflist); "
|
"(note: content is evaluated, see /help buflist); "
|
||||||
"example: standard format for bar item \"buflist\" and only the "
|
"example: standard format for bar item \"buflist\" and only the "
|
||||||
@@ -663,7 +663,7 @@ buflist_config_init (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
buflist_config_format_buffer_current = weechat_config_new_option (
|
buflist_config_format_buffer_current = weechat_config_new_option (
|
||||||
buflist_config_file, buflist_config_section_format,
|
buflist_config_file, buflist_config_section_format,
|
||||||
"buffer_current", "string",
|
"buffer_current", "string|themable",
|
||||||
N_("format for the line with current buffer "
|
N_("format for the line with current buffer "
|
||||||
"(note: content is evaluated, see /help buflist)"),
|
"(note: content is evaluated, see /help buflist)"),
|
||||||
NULL, 0, 0, "${color:,17}${format_buffer}", NULL, 0,
|
NULL, 0, 0, "${color:,17}${format_buffer}", NULL, 0,
|
||||||
@@ -672,7 +672,7 @@ buflist_config_init (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
buflist_config_format_hotlist = weechat_config_new_option (
|
buflist_config_format_hotlist = weechat_config_new_option (
|
||||||
buflist_config_file, buflist_config_section_format,
|
buflist_config_file, buflist_config_section_format,
|
||||||
"hotlist", "string",
|
"hotlist", "string|themable",
|
||||||
N_("format for hotlist "
|
N_("format for hotlist "
|
||||||
"(note: content is evaluated, see /help buflist)"),
|
"(note: content is evaluated, see /help buflist)"),
|
||||||
NULL, 0, 0,
|
NULL, 0, 0,
|
||||||
@@ -683,7 +683,7 @@ buflist_config_init (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
buflist_config_format_hotlist_level[3] = weechat_config_new_option (
|
buflist_config_format_hotlist_level[3] = weechat_config_new_option (
|
||||||
buflist_config_file, buflist_config_section_format,
|
buflist_config_file, buflist_config_section_format,
|
||||||
"hotlist_highlight", "string",
|
"hotlist_highlight", "string|themable",
|
||||||
N_("format for a buffer with hotlist level \"highlight\" "
|
N_("format for a buffer with hotlist level \"highlight\" "
|
||||||
"(note: content is evaluated, see /help buflist)"),
|
"(note: content is evaluated, see /help buflist)"),
|
||||||
NULL, 0, 0, "${color:magenta}", NULL, 0,
|
NULL, 0, 0, "${color:magenta}", NULL, 0,
|
||||||
@@ -692,7 +692,7 @@ buflist_config_init (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
buflist_config_format_hotlist_level[0] = weechat_config_new_option (
|
buflist_config_format_hotlist_level[0] = weechat_config_new_option (
|
||||||
buflist_config_file, buflist_config_section_format,
|
buflist_config_file, buflist_config_section_format,
|
||||||
"hotlist_low", "string",
|
"hotlist_low", "string|themable",
|
||||||
N_("format for a buffer with hotlist level \"low\" "
|
N_("format for a buffer with hotlist level \"low\" "
|
||||||
"(note: content is evaluated, see /help buflist)"),
|
"(note: content is evaluated, see /help buflist)"),
|
||||||
NULL, 0, 0, "${color:white}", NULL, 0,
|
NULL, 0, 0, "${color:white}", NULL, 0,
|
||||||
@@ -701,7 +701,7 @@ buflist_config_init (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
buflist_config_format_hotlist_level[1] = weechat_config_new_option (
|
buflist_config_format_hotlist_level[1] = weechat_config_new_option (
|
||||||
buflist_config_file, buflist_config_section_format,
|
buflist_config_file, buflist_config_section_format,
|
||||||
"hotlist_message", "string",
|
"hotlist_message", "string|themable",
|
||||||
N_("format for a buffer with hotlist level \"message\" "
|
N_("format for a buffer with hotlist level \"message\" "
|
||||||
"(note: content is evaluated, see /help buflist)"),
|
"(note: content is evaluated, see /help buflist)"),
|
||||||
NULL, 0, 0, "${color:brown}", NULL, 0,
|
NULL, 0, 0, "${color:brown}", NULL, 0,
|
||||||
@@ -710,7 +710,7 @@ buflist_config_init (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
buflist_config_format_hotlist_level_none = weechat_config_new_option (
|
buflist_config_format_hotlist_level_none = weechat_config_new_option (
|
||||||
buflist_config_file, buflist_config_section_format,
|
buflist_config_file, buflist_config_section_format,
|
||||||
"hotlist_none", "string",
|
"hotlist_none", "string|themable",
|
||||||
N_("format for a buffer not in hotlist "
|
N_("format for a buffer not in hotlist "
|
||||||
"(note: content is evaluated, see /help buflist)"),
|
"(note: content is evaluated, see /help buflist)"),
|
||||||
NULL, 0, 0, "${color:default}", NULL, 0,
|
NULL, 0, 0, "${color:default}", NULL, 0,
|
||||||
@@ -719,7 +719,7 @@ buflist_config_init (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
buflist_config_format_hotlist_level[2] = weechat_config_new_option (
|
buflist_config_format_hotlist_level[2] = weechat_config_new_option (
|
||||||
buflist_config_file, buflist_config_section_format,
|
buflist_config_file, buflist_config_section_format,
|
||||||
"hotlist_private", "string",
|
"hotlist_private", "string|themable",
|
||||||
N_("format for a buffer with hotlist level \"private\" "
|
N_("format for a buffer with hotlist level \"private\" "
|
||||||
"(note: content is evaluated, see /help buflist)"),
|
"(note: content is evaluated, see /help buflist)"),
|
||||||
NULL, 0, 0, "${color:green}", NULL, 0,
|
NULL, 0, 0, "${color:green}", NULL, 0,
|
||||||
@@ -728,7 +728,7 @@ buflist_config_init (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
buflist_config_format_hotlist_separator = weechat_config_new_option (
|
buflist_config_format_hotlist_separator = weechat_config_new_option (
|
||||||
buflist_config_file, buflist_config_section_format,
|
buflist_config_file, buflist_config_section_format,
|
||||||
"hotlist_separator", "string",
|
"hotlist_separator", "string|themable",
|
||||||
N_("separator for counts in hotlist "
|
N_("separator for counts in hotlist "
|
||||||
"(note: content is evaluated, see /help buflist)"),
|
"(note: content is evaluated, see /help buflist)"),
|
||||||
NULL, 0, 0, "${color:default},", NULL, 0,
|
NULL, 0, 0, "${color:default},", NULL, 0,
|
||||||
@@ -737,7 +737,7 @@ buflist_config_init (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
buflist_config_format_indent = weechat_config_new_option (
|
buflist_config_format_indent = weechat_config_new_option (
|
||||||
buflist_config_file, buflist_config_section_format,
|
buflist_config_file, buflist_config_section_format,
|
||||||
"indent", "string",
|
"indent", "string|themable",
|
||||||
N_("string displayed to indent channel, private and list buffers "
|
N_("string displayed to indent channel, private and list buffers "
|
||||||
"(note: content is evaluated, see /help buflist)"),
|
"(note: content is evaluated, see /help buflist)"),
|
||||||
NULL, 0, 0, " ", NULL, 0,
|
NULL, 0, 0, " ", NULL, 0,
|
||||||
@@ -746,7 +746,7 @@ buflist_config_init (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
buflist_config_format_lag = weechat_config_new_option (
|
buflist_config_format_lag = weechat_config_new_option (
|
||||||
buflist_config_file, buflist_config_section_format,
|
buflist_config_file, buflist_config_section_format,
|
||||||
"lag", "string",
|
"lag", "string|themable",
|
||||||
N_("format for lag on an IRC server buffer "
|
N_("format for lag on an IRC server buffer "
|
||||||
"(note: content is evaluated, see /help buflist)"),
|
"(note: content is evaluated, see /help buflist)"),
|
||||||
NULL, 0, 0,
|
NULL, 0, 0,
|
||||||
@@ -757,7 +757,7 @@ buflist_config_init (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
buflist_config_format_name = weechat_config_new_option (
|
buflist_config_format_name = weechat_config_new_option (
|
||||||
buflist_config_file, buflist_config_section_format,
|
buflist_config_file, buflist_config_section_format,
|
||||||
"name", "string",
|
"name", "string|themable",
|
||||||
N_("format for buffer name "
|
N_("format for buffer name "
|
||||||
"(note: content is evaluated, see /help buflist)"),
|
"(note: content is evaluated, see /help buflist)"),
|
||||||
NULL, 0, 0, "${name}", NULL, 0,
|
NULL, 0, 0, "${name}", NULL, 0,
|
||||||
@@ -766,7 +766,7 @@ buflist_config_init (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
buflist_config_format_nick_prefix = weechat_config_new_option (
|
buflist_config_format_nick_prefix = weechat_config_new_option (
|
||||||
buflist_config_file, buflist_config_section_format,
|
buflist_config_file, buflist_config_section_format,
|
||||||
"nick_prefix", "string",
|
"nick_prefix", "string|themable",
|
||||||
N_("format for nick prefix on a channel "
|
N_("format for nick prefix on a channel "
|
||||||
"(note: content is evaluated, see /help buflist)"),
|
"(note: content is evaluated, see /help buflist)"),
|
||||||
NULL, 0, 0, "${color_nick_prefix}${nick_prefix}", NULL, 0,
|
NULL, 0, 0, "${color_nick_prefix}${nick_prefix}", NULL, 0,
|
||||||
@@ -775,7 +775,7 @@ buflist_config_init (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
buflist_config_format_number = weechat_config_new_option (
|
buflist_config_format_number = weechat_config_new_option (
|
||||||
buflist_config_file, buflist_config_section_format,
|
buflist_config_file, buflist_config_section_format,
|
||||||
"number", "string",
|
"number", "string|themable",
|
||||||
N_("format for buffer number, ${number} is the indented number "
|
N_("format for buffer number, ${number} is the indented number "
|
||||||
"(note: content is evaluated, see /help buflist)"),
|
"(note: content is evaluated, see /help buflist)"),
|
||||||
NULL, 0, 0,
|
NULL, 0, 0,
|
||||||
@@ -786,7 +786,7 @@ buflist_config_init (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
buflist_config_format_tls_version = weechat_config_new_option (
|
buflist_config_format_tls_version = weechat_config_new_option (
|
||||||
buflist_config_file, buflist_config_section_format,
|
buflist_config_file, buflist_config_section_format,
|
||||||
"tls_version", "string",
|
"tls_version", "string|themable",
|
||||||
N_("format for TLS version on an IRC server buffer "
|
N_("format for TLS version on an IRC server buffer "
|
||||||
"(note: content is evaluated, see /help buflist)"),
|
"(note: content is evaluated, see /help buflist)"),
|
||||||
NULL, 0, 0,
|
NULL, 0, 0,
|
||||||
|
|||||||
@@ -0,0 +1,93 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* This file is part of WeeChat, the extensible chat client.
|
||||||
|
*
|
||||||
|
* WeeChat is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* WeeChat is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* buflist contribution to built-in themes. */
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#include "../weechat-plugin.h"
|
||||||
|
#include "buflist.h"
|
||||||
|
#include "buflist-theme.h"
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* buflist contribution to the "light" theme: format strings tuned for
|
||||||
|
* a light-background terminal. Each row is { option_full_name, value };
|
||||||
|
* the table is NULL-terminated.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const char *buflist_theme_light[][2] =
|
||||||
|
{
|
||||||
|
{ "buflist.format.buffer_current",
|
||||||
|
"${color:,117}${format_buffer}" },
|
||||||
|
{ "buflist.format.hotlist_low",
|
||||||
|
"${color:default}" },
|
||||||
|
{ "buflist.format.hotlist_message",
|
||||||
|
"${color:94}" },
|
||||||
|
{ "buflist.format.lag",
|
||||||
|
" ${color:green}[${color:94}${lag}${color:green}]" },
|
||||||
|
{ "buflist.format.number",
|
||||||
|
"${color:28}${number}${if:${number_displayed}?.: }" },
|
||||||
|
{ NULL, NULL },
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Register buflist's contribution to one theme from a NULL-terminated
|
||||||
|
* table of {option, value} rows.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
buflist_theme_register (const char *name, const char *entries[][2])
|
||||||
|
{
|
||||||
|
struct t_hashtable *overrides;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (!name || !entries)
|
||||||
|
return;
|
||||||
|
|
||||||
|
overrides = weechat_hashtable_new (32,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
NULL, NULL);
|
||||||
|
if (!overrides)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (i = 0; entries[i][0]; i++)
|
||||||
|
weechat_hashtable_set (overrides, entries[i][0], entries[i][1]);
|
||||||
|
|
||||||
|
weechat_theme_register (name, overrides);
|
||||||
|
|
||||||
|
weechat_hashtable_free (overrides);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Register all built-in theme contributions from buflist.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
buflist_theme_init (void)
|
||||||
|
{
|
||||||
|
buflist_theme_register ("light", buflist_theme_light);
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* This file is part of WeeChat, the extensible chat client.
|
||||||
|
*
|
||||||
|
* WeeChat is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* WeeChat is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef WEECHAT_PLUGIN_BUFLIST_THEME_H
|
||||||
|
#define WEECHAT_PLUGIN_BUFLIST_THEME_H
|
||||||
|
|
||||||
|
extern void buflist_theme_init (void);
|
||||||
|
|
||||||
|
#endif /* WEECHAT_PLUGIN_BUFLIST_THEME_H */
|
||||||
@@ -34,6 +34,7 @@
|
|||||||
#include "buflist-config.h"
|
#include "buflist-config.h"
|
||||||
#include "buflist-info.h"
|
#include "buflist-info.h"
|
||||||
#include "buflist-mouse.h"
|
#include "buflist-mouse.h"
|
||||||
|
#include "buflist-theme.h"
|
||||||
|
|
||||||
|
|
||||||
WEECHAT_PLUGIN_NAME(BUFLIST_PLUGIN_NAME);
|
WEECHAT_PLUGIN_NAME(BUFLIST_PLUGIN_NAME);
|
||||||
@@ -455,6 +456,8 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
|
|||||||
|
|
||||||
buflist_config_read ();
|
buflist_config_read ();
|
||||||
|
|
||||||
|
buflist_theme_init ();
|
||||||
|
|
||||||
if (!buflist_bar_item_init ())
|
if (!buflist_bar_item_init ())
|
||||||
return WEECHAT_RC_ERROR;
|
return WEECHAT_RC_ERROR;
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ add_library(exec MODULE
|
|||||||
exec-command.c exec-command.h
|
exec-command.c exec-command.h
|
||||||
exec-completion.c exec-completion.h
|
exec-completion.c exec-completion.h
|
||||||
exec-config.c exec-config.h
|
exec-config.c exec-config.h
|
||||||
|
exec-theme.c exec-theme.h
|
||||||
)
|
)
|
||||||
set_target_properties(exec PROPERTIES PREFIX "")
|
set_target_properties(exec PROPERTIES PREFIX "")
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,85 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* This file is part of WeeChat, the extensible chat client.
|
||||||
|
*
|
||||||
|
* WeeChat is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* WeeChat is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* exec contribution to built-in themes. */
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#include "../weechat-plugin.h"
|
||||||
|
#include "exec.h"
|
||||||
|
#include "exec-theme.h"
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* exec contribution to the "light" theme: option values tuned for a
|
||||||
|
* light-background terminal. Each row is { option_full_name, value };
|
||||||
|
* the table is NULL-terminated.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const char *exec_theme_light[][2] =
|
||||||
|
{
|
||||||
|
{ "exec.color.flag_finished", "red" },
|
||||||
|
{ "exec.color.flag_running", "green" },
|
||||||
|
{ NULL, NULL },
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Register exec's contribution to one theme from a NULL-terminated
|
||||||
|
* table of {option, value} rows.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
exec_theme_register (const char *name, const char *entries[][2])
|
||||||
|
{
|
||||||
|
struct t_hashtable *overrides;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (!name || !entries)
|
||||||
|
return;
|
||||||
|
|
||||||
|
overrides = weechat_hashtable_new (32,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
NULL, NULL);
|
||||||
|
if (!overrides)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (i = 0; entries[i][0]; i++)
|
||||||
|
weechat_hashtable_set (overrides, entries[i][0], entries[i][1]);
|
||||||
|
|
||||||
|
weechat_theme_register (name, overrides);
|
||||||
|
|
||||||
|
weechat_hashtable_free (overrides);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Register all built-in theme contributions from exec.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
exec_theme_init (void)
|
||||||
|
{
|
||||||
|
exec_theme_register ("light", exec_theme_light);
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* This file is part of WeeChat, the extensible chat client.
|
||||||
|
*
|
||||||
|
* WeeChat is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* WeeChat is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef WEECHAT_PLUGIN_EXEC_THEME_H
|
||||||
|
#define WEECHAT_PLUGIN_EXEC_THEME_H
|
||||||
|
|
||||||
|
extern void exec_theme_init (void);
|
||||||
|
|
||||||
|
#endif /* WEECHAT_PLUGIN_EXEC_THEME_H */
|
||||||
@@ -32,6 +32,7 @@
|
|||||||
#include "exec-command.h"
|
#include "exec-command.h"
|
||||||
#include "exec-completion.h"
|
#include "exec-completion.h"
|
||||||
#include "exec-config.h"
|
#include "exec-config.h"
|
||||||
|
#include "exec-theme.h"
|
||||||
|
|
||||||
|
|
||||||
WEECHAT_PLUGIN_NAME(EXEC_PLUGIN_NAME);
|
WEECHAT_PLUGIN_NAME(EXEC_PLUGIN_NAME);
|
||||||
@@ -741,6 +742,8 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
|
|||||||
|
|
||||||
exec_config_read ();
|
exec_config_read ();
|
||||||
|
|
||||||
|
exec_theme_init ();
|
||||||
|
|
||||||
/* hook some signals */
|
/* hook some signals */
|
||||||
weechat_hook_signal ("debug_dump", &exec_debug_dump_cb, NULL, NULL);
|
weechat_hook_signal ("debug_dump", &exec_debug_dump_cb, NULL, NULL);
|
||||||
|
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ add_library(fset MODULE
|
|||||||
fset-info.c fset-info.h
|
fset-info.c fset-info.h
|
||||||
fset-mouse.c fset-mouse.h
|
fset-mouse.c fset-mouse.h
|
||||||
fset-option.c fset-option.h
|
fset-option.c fset-option.h
|
||||||
|
fset-theme.c fset-theme.h
|
||||||
)
|
)
|
||||||
set_target_properties(fset PROPERTIES PREFIX "")
|
set_target_properties(fset PROPERTIES PREFIX "")
|
||||||
|
|
||||||
|
|||||||
@@ -699,7 +699,9 @@ fset_command_init (void)
|
|||||||
N_("> `xxx`: show only options with \"xxx\" in name"),
|
N_("> `xxx`: show only options with \"xxx\" in name"),
|
||||||
N_("> `f:xxx`: show only configuration file \"xxx\""),
|
N_("> `f:xxx`: show only configuration file \"xxx\""),
|
||||||
N_("> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum "
|
N_("> `t:xxx`: show only type \"xxx\" (bool/int/str/col/enum "
|
||||||
"or boolean/integer/string/color/enum)"),
|
"or boolean/integer/string/color/enum); the special value "
|
||||||
|
"\"themable\" can be used to show all options that can be "
|
||||||
|
"used in themes, regardless of type"),
|
||||||
N_("> `d`: show only changed options"),
|
N_("> `d`: show only changed options"),
|
||||||
N_("> `d:xxx`: show only changed options with \"xxx\" in "
|
N_("> `d:xxx`: show only changed options with \"xxx\" in "
|
||||||
"name"),
|
"name"),
|
||||||
|
|||||||
@@ -572,7 +572,7 @@ fset_config_init (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
fset_config_format_option[1] = weechat_config_new_option (
|
fset_config_format_option[1] = weechat_config_new_option (
|
||||||
fset_config_file, fset_config_section_format,
|
fset_config_file, fset_config_section_format,
|
||||||
"option2", "string",
|
"option2", "string|themable",
|
||||||
N_("second format of each line, used when option "
|
N_("second format of each line, used when option "
|
||||||
"fset.look.format_number is set to 2 "
|
"fset.look.format_number is set to 2 "
|
||||||
"(note: content is evaluated, see /help fset); "
|
"(note: content is evaluated, see /help fset); "
|
||||||
|
|||||||
@@ -335,6 +335,10 @@ fset_option_match_filter (struct t_fset_option *fset_option, const char *filter)
|
|||||||
}
|
}
|
||||||
else if (strncmp (filter, "t:", 2) == 0)
|
else if (strncmp (filter, "t:", 2) == 0)
|
||||||
{
|
{
|
||||||
|
/* virtual cross-type value: match themable flag (any option type) */
|
||||||
|
if (weechat_strcasecmp (filter + 2, "themable") == 0)
|
||||||
|
return (fset_option->themable) ? 1 : 0;
|
||||||
|
|
||||||
/* filter by type */
|
/* filter by type */
|
||||||
return (
|
return (
|
||||||
(weechat_strcasecmp (
|
(weechat_strcasecmp (
|
||||||
@@ -426,7 +430,7 @@ fset_option_set_values (struct t_fset_option *fset_option,
|
|||||||
const char **ptr_string_values;
|
const char **ptr_string_values;
|
||||||
void *ptr_default_value, *ptr_value;
|
void *ptr_default_value, *ptr_value;
|
||||||
struct t_config_option *ptr_parent_option;
|
struct t_config_option *ptr_parent_option;
|
||||||
int *ptr_type, *ptr_min, *ptr_max;
|
int *ptr_type, *ptr_themable, *ptr_min, *ptr_max;
|
||||||
char str_value[64], str_allowed_values[4096];
|
char str_value[64], str_allowed_values[4096];
|
||||||
|
|
||||||
/* file */
|
/* file */
|
||||||
@@ -466,6 +470,10 @@ fset_option_set_values (struct t_fset_option *fset_option,
|
|||||||
ptr_type = weechat_config_option_get_pointer (option, "type");
|
ptr_type = weechat_config_option_get_pointer (option, "type");
|
||||||
fset_option->type = *ptr_type;
|
fset_option->type = *ptr_type;
|
||||||
|
|
||||||
|
/* themable */
|
||||||
|
ptr_themable = weechat_config_option_get_pointer (option, "themable");
|
||||||
|
fset_option->themable = (ptr_themable) ? *ptr_themable : 0;
|
||||||
|
|
||||||
/* default value */
|
/* default value */
|
||||||
free (fset_option->default_value);
|
free (fset_option->default_value);
|
||||||
fset_option->default_value = NULL;
|
fset_option->default_value = NULL;
|
||||||
@@ -784,6 +792,7 @@ fset_option_alloc (struct t_config_option *option)
|
|||||||
new_fset_option->name = NULL;
|
new_fset_option->name = NULL;
|
||||||
new_fset_option->parent_name = NULL;
|
new_fset_option->parent_name = NULL;
|
||||||
new_fset_option->type = 0;
|
new_fset_option->type = 0;
|
||||||
|
new_fset_option->themable = 0;
|
||||||
new_fset_option->default_value = NULL;
|
new_fset_option->default_value = NULL;
|
||||||
new_fset_option->value = NULL;
|
new_fset_option->value = NULL;
|
||||||
new_fset_option->parent_value = NULL;
|
new_fset_option->parent_value = NULL;
|
||||||
@@ -1691,6 +1700,7 @@ fset_option_hdata_option_cb (const void *pointer, void *data,
|
|||||||
WEECHAT_HDATA_VAR(struct t_fset_option, name, STRING, 0, NULL, NULL);
|
WEECHAT_HDATA_VAR(struct t_fset_option, name, STRING, 0, NULL, NULL);
|
||||||
WEECHAT_HDATA_VAR(struct t_fset_option, parent_name, STRING, 0, NULL, NULL);
|
WEECHAT_HDATA_VAR(struct t_fset_option, parent_name, STRING, 0, NULL, NULL);
|
||||||
WEECHAT_HDATA_VAR(struct t_fset_option, type, INTEGER, 0, NULL, NULL);
|
WEECHAT_HDATA_VAR(struct t_fset_option, type, INTEGER, 0, NULL, NULL);
|
||||||
|
WEECHAT_HDATA_VAR(struct t_fset_option, themable, INTEGER, 0, NULL, NULL);
|
||||||
WEECHAT_HDATA_VAR(struct t_fset_option, default_value, STRING, 0, NULL, NULL);
|
WEECHAT_HDATA_VAR(struct t_fset_option, default_value, STRING, 0, NULL, NULL);
|
||||||
WEECHAT_HDATA_VAR(struct t_fset_option, value, STRING, 0, NULL, NULL);
|
WEECHAT_HDATA_VAR(struct t_fset_option, value, STRING, 0, NULL, NULL);
|
||||||
WEECHAT_HDATA_VAR(struct t_fset_option, parent_value, STRING, 0, NULL, NULL);
|
WEECHAT_HDATA_VAR(struct t_fset_option, parent_value, STRING, 0, NULL, NULL);
|
||||||
@@ -1740,6 +1750,8 @@ fset_option_add_to_infolist (struct t_infolist *infolist,
|
|||||||
return 0;
|
return 0;
|
||||||
if (!weechat_infolist_new_var_string (ptr_item, "type_en", fset_option_type_string[fset_option->type]))
|
if (!weechat_infolist_new_var_string (ptr_item, "type_en", fset_option_type_string[fset_option->type]))
|
||||||
return 0;
|
return 0;
|
||||||
|
if (!weechat_infolist_new_var_integer (ptr_item, "themable", fset_option->themable))
|
||||||
|
return 0;
|
||||||
if (!weechat_infolist_new_var_string (ptr_item, "default_value", fset_option->default_value))
|
if (!weechat_infolist_new_var_string (ptr_item, "default_value", fset_option->default_value))
|
||||||
return 0;
|
return 0;
|
||||||
if (!weechat_infolist_new_var_string (ptr_item, "value", fset_option->value))
|
if (!weechat_infolist_new_var_string (ptr_item, "value", fset_option->value))
|
||||||
@@ -1793,6 +1805,7 @@ fset_option_print_log (void)
|
|||||||
weechat_log_printf (" type. . . . . . . . . : %d ('%s')",
|
weechat_log_printf (" type. . . . . . . . . : %d ('%s')",
|
||||||
ptr_fset_option->type,
|
ptr_fset_option->type,
|
||||||
fset_option_type_string[ptr_fset_option->type]);
|
fset_option_type_string[ptr_fset_option->type]);
|
||||||
|
weechat_log_printf (" themable. . . . . . . : %d", ptr_fset_option->themable);
|
||||||
weechat_log_printf (" default_value . . . . : '%s'", ptr_fset_option->default_value);
|
weechat_log_printf (" default_value . . . . : '%s'", ptr_fset_option->default_value);
|
||||||
weechat_log_printf (" value . . . . . . . . : '%s'", ptr_fset_option->value);
|
weechat_log_printf (" value . . . . . . . . : '%s'", ptr_fset_option->value);
|
||||||
weechat_log_printf (" parent_value. . . . . : '%s'", ptr_fset_option->parent_value);
|
weechat_log_printf (" parent_value. . . . . : '%s'", ptr_fset_option->parent_value);
|
||||||
|
|||||||
@@ -46,6 +46,7 @@ struct t_fset_option
|
|||||||
char *name; /* option full name: file.sect.opt */
|
char *name; /* option full name: file.sect.opt */
|
||||||
char *parent_name; /* parent option name */
|
char *parent_name; /* parent option name */
|
||||||
enum t_fset_option_type type; /* option type */
|
enum t_fset_option_type type; /* option type */
|
||||||
|
int themable; /* 1 if option is themable */
|
||||||
char *default_value; /* option default value */
|
char *default_value; /* option default value */
|
||||||
char *value; /* option value */
|
char *value; /* option value */
|
||||||
char *parent_value; /* parent option value */
|
char *parent_value; /* parent option value */
|
||||||
|
|||||||
@@ -0,0 +1,130 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* This file is part of WeeChat, the extensible chat client.
|
||||||
|
*
|
||||||
|
* WeeChat is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* WeeChat is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* fset contribution to built-in themes. */
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#include "../weechat-plugin.h"
|
||||||
|
#include "fset.h"
|
||||||
|
#include "fset-theme.h"
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* fset contribution to the "light" theme: option values tuned for a
|
||||||
|
* light-background terminal. Each row is { option_full_name, value };
|
||||||
|
* the table is NULL-terminated.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const char *fset_theme_light[][2] =
|
||||||
|
{
|
||||||
|
{ "fset.color.allowed_values_selected", "default" },
|
||||||
|
{ "fset.color.color_name", "darkgray" },
|
||||||
|
{ "fset.color.color_name_selected", "darkgray" },
|
||||||
|
{ "fset.color.default_value_selected", "default" },
|
||||||
|
{ "fset.color.description_selected", "242" },
|
||||||
|
{ "fset.color.file_changed", "94" },
|
||||||
|
{ "fset.color.file_changed_selected", "94" },
|
||||||
|
{ "fset.color.file_selected", "default" },
|
||||||
|
{ "fset.color.help_default_value", "default" },
|
||||||
|
{ "fset.color.help_name", "default" },
|
||||||
|
{ "fset.color.index", "24" },
|
||||||
|
{ "fset.color.index_selected", "24" },
|
||||||
|
{ "fset.color.line_marked_bg1", "193" },
|
||||||
|
{ "fset.color.line_marked_bg2", "193" },
|
||||||
|
{ "fset.color.line_selected_bg1", "117" },
|
||||||
|
{ "fset.color.line_selected_bg2", "117" },
|
||||||
|
{ "fset.color.marked", "94" },
|
||||||
|
{ "fset.color.marked_selected", "94" },
|
||||||
|
{ "fset.color.max_selected", "default" },
|
||||||
|
{ "fset.color.min_selected", "default" },
|
||||||
|
{ "fset.color.name_changed", "red" },
|
||||||
|
{ "fset.color.name_changed_selected", "red" },
|
||||||
|
{ "fset.color.name_selected", "default" },
|
||||||
|
{ "fset.color.option_changed", "94" },
|
||||||
|
{ "fset.color.option_changed_selected", "94" },
|
||||||
|
{ "fset.color.option_selected", "default" },
|
||||||
|
{ "fset.color.parent_name_selected", "default" },
|
||||||
|
{ "fset.color.parent_value", "24" },
|
||||||
|
{ "fset.color.parent_value_selected", "24" },
|
||||||
|
{ "fset.color.quotes_changed_selected", "default" },
|
||||||
|
{ "fset.color.section_changed", "94" },
|
||||||
|
{ "fset.color.section_changed_selected", "94" },
|
||||||
|
{ "fset.color.section_selected", "default" },
|
||||||
|
{ "fset.color.string_values_selected", "default" },
|
||||||
|
{ "fset.color.title_count_options", "30" },
|
||||||
|
{ "fset.color.title_current_option", "30" },
|
||||||
|
{ "fset.color.title_filter", "18" },
|
||||||
|
{ "fset.color.title_marked_options", "94" },
|
||||||
|
{ "fset.color.title_sort", "darkgray" },
|
||||||
|
{ "fset.color.type", "58" },
|
||||||
|
{ "fset.color.type_selected", "58" },
|
||||||
|
{ "fset.color.unmarked_selected", "default" },
|
||||||
|
{ "fset.color.value", "20" },
|
||||||
|
{ "fset.color.value_changed", "red" },
|
||||||
|
{ "fset.color.value_changed_selected", "red" },
|
||||||
|
{ "fset.color.value_selected", "20" },
|
||||||
|
{ "fset.color.value_undef_selected", "magenta" },
|
||||||
|
{ NULL, NULL },
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Register fset's contribution to one theme from a NULL-terminated
|
||||||
|
* table of {option, value} rows.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
fset_theme_register (const char *name, const char *entries[][2])
|
||||||
|
{
|
||||||
|
struct t_hashtable *overrides;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (!name || !entries)
|
||||||
|
return;
|
||||||
|
|
||||||
|
overrides = weechat_hashtable_new (32,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
NULL, NULL);
|
||||||
|
if (!overrides)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (i = 0; entries[i][0]; i++)
|
||||||
|
weechat_hashtable_set (overrides, entries[i][0], entries[i][1]);
|
||||||
|
|
||||||
|
weechat_theme_register (name, overrides);
|
||||||
|
|
||||||
|
weechat_hashtable_free (overrides);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Register all built-in theme contributions from fset.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
fset_theme_init (void)
|
||||||
|
{
|
||||||
|
fset_theme_register ("light", fset_theme_light);
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* This file is part of WeeChat, the extensible chat client.
|
||||||
|
*
|
||||||
|
* WeeChat is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* WeeChat is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef WEECHAT_PLUGIN_FSET_THEME_H
|
||||||
|
#define WEECHAT_PLUGIN_FSET_THEME_H
|
||||||
|
|
||||||
|
extern void fset_theme_init (void);
|
||||||
|
|
||||||
|
#endif /* WEECHAT_PLUGIN_FSET_THEME_H */
|
||||||
@@ -35,6 +35,7 @@
|
|||||||
#include "fset-info.h"
|
#include "fset-info.h"
|
||||||
#include "fset-mouse.h"
|
#include "fset-mouse.h"
|
||||||
#include "fset-option.h"
|
#include "fset-option.h"
|
||||||
|
#include "fset-theme.h"
|
||||||
|
|
||||||
|
|
||||||
WEECHAT_PLUGIN_NAME(FSET_PLUGIN_NAME);
|
WEECHAT_PLUGIN_NAME(FSET_PLUGIN_NAME);
|
||||||
@@ -126,6 +127,8 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
|
|||||||
|
|
||||||
fset_config_read ();
|
fset_config_read ();
|
||||||
|
|
||||||
|
fset_theme_init ();
|
||||||
|
|
||||||
if (!fset_bar_item_init ())
|
if (!fset_bar_item_init ())
|
||||||
return WEECHAT_RC_ERROR;
|
return WEECHAT_RC_ERROR;
|
||||||
|
|
||||||
|
|||||||
@@ -2003,6 +2003,32 @@ weechat_guile_api_config_unset_plugin (SCM option)
|
|||||||
API_RETURN_INT(rc);
|
API_RETURN_INT(rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SCM
|
||||||
|
weechat_guile_api_theme_register (SCM name, SCM overrides)
|
||||||
|
{
|
||||||
|
struct t_hashtable *c_overrides;
|
||||||
|
const char *result;
|
||||||
|
SCM return_value;
|
||||||
|
|
||||||
|
API_INIT_FUNC(1, "theme_register", API_RETURN_EMPTY);
|
||||||
|
if (!scm_is_string (name) || !scm_list_p (overrides))
|
||||||
|
API_WRONG_ARGS(API_RETURN_EMPTY);
|
||||||
|
|
||||||
|
c_overrides = weechat_guile_alist_to_hashtable (overrides,
|
||||||
|
WEECHAT_SCRIPT_HASHTABLE_DEFAULT_SIZE,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING);
|
||||||
|
|
||||||
|
result = API_PTR2STR(plugin_script_api_theme_register (
|
||||||
|
weechat_guile_plugin,
|
||||||
|
guile_current_script,
|
||||||
|
API_SCM_TO_STRING(name), c_overrides));
|
||||||
|
|
||||||
|
weechat_hashtable_free (c_overrides);
|
||||||
|
|
||||||
|
API_RETURN_STRING(result);
|
||||||
|
}
|
||||||
|
|
||||||
SCM
|
SCM
|
||||||
weechat_guile_api_key_bind (SCM context, SCM keys)
|
weechat_guile_api_key_bind (SCM context, SCM keys)
|
||||||
{
|
{
|
||||||
@@ -2096,7 +2122,7 @@ weechat_guile_api_print_date_tags (SCM buffer, SCM date, SCM tags, SCM message)
|
|||||||
plugin_script_api_printf_date_tags (weechat_guile_plugin,
|
plugin_script_api_printf_date_tags (weechat_guile_plugin,
|
||||||
guile_current_script,
|
guile_current_script,
|
||||||
API_STR2PTR(API_SCM_TO_STRING(buffer)),
|
API_STR2PTR(API_SCM_TO_STRING(buffer)),
|
||||||
(time_t)scm_to_long (date),
|
(time_t)scm_to_long_long (date),
|
||||||
API_SCM_TO_STRING(tags),
|
API_SCM_TO_STRING(tags),
|
||||||
"%s", API_SCM_TO_STRING(message));
|
"%s", API_SCM_TO_STRING(message));
|
||||||
|
|
||||||
@@ -2117,7 +2143,7 @@ weechat_guile_api_print_datetime_tags (SCM buffer, SCM date, SCM date_usec,
|
|||||||
weechat_guile_plugin,
|
weechat_guile_plugin,
|
||||||
guile_current_script,
|
guile_current_script,
|
||||||
API_STR2PTR(API_SCM_TO_STRING(buffer)),
|
API_STR2PTR(API_SCM_TO_STRING(buffer)),
|
||||||
(time_t)scm_to_long (date),
|
(time_t)scm_to_long_long (date),
|
||||||
scm_to_int (date_usec),
|
scm_to_int (date_usec),
|
||||||
API_SCM_TO_STRING(tags),
|
API_SCM_TO_STRING(tags),
|
||||||
"%s", API_SCM_TO_STRING(message));
|
"%s", API_SCM_TO_STRING(message));
|
||||||
@@ -2156,7 +2182,7 @@ weechat_guile_api_print_y_date_tags (SCM buffer, SCM y, SCM date, SCM tags,
|
|||||||
guile_current_script,
|
guile_current_script,
|
||||||
API_STR2PTR(API_SCM_TO_STRING(buffer)),
|
API_STR2PTR(API_SCM_TO_STRING(buffer)),
|
||||||
scm_to_int (y),
|
scm_to_int (y),
|
||||||
(time_t)scm_to_long (date),
|
(time_t)scm_to_long_long (date),
|
||||||
API_SCM_TO_STRING(tags),
|
API_SCM_TO_STRING(tags),
|
||||||
"%s", API_SCM_TO_STRING(message));
|
"%s", API_SCM_TO_STRING(message));
|
||||||
|
|
||||||
@@ -2178,7 +2204,7 @@ weechat_guile_api_print_y_datetime_tags (SCM buffer, SCM y, SCM date,
|
|||||||
guile_current_script,
|
guile_current_script,
|
||||||
API_STR2PTR(API_SCM_TO_STRING(buffer)),
|
API_STR2PTR(API_SCM_TO_STRING(buffer)),
|
||||||
scm_to_int (y),
|
scm_to_int (y),
|
||||||
(time_t)scm_to_long (date),
|
(time_t)scm_to_long_long (date),
|
||||||
scm_to_int (date_usec),
|
scm_to_int (date_usec),
|
||||||
API_SCM_TO_STRING(tags),
|
API_SCM_TO_STRING(tags),
|
||||||
"%s", API_SCM_TO_STRING(message));
|
"%s", API_SCM_TO_STRING(message));
|
||||||
@@ -4748,7 +4774,7 @@ weechat_guile_api_infolist_new_var_time (SCM item, SCM name, SCM value)
|
|||||||
|
|
||||||
result = API_PTR2STR(weechat_infolist_new_var_time (API_STR2PTR(API_SCM_TO_STRING(item)),
|
result = API_PTR2STR(weechat_infolist_new_var_time (API_STR2PTR(API_SCM_TO_STRING(item)),
|
||||||
API_SCM_TO_STRING(name),
|
API_SCM_TO_STRING(name),
|
||||||
(time_t)scm_to_long (value)));
|
(time_t)scm_to_long_long (value)));
|
||||||
|
|
||||||
API_RETURN_STRING(result);
|
API_RETURN_STRING(result);
|
||||||
}
|
}
|
||||||
@@ -5537,6 +5563,7 @@ weechat_guile_api_module_init (void *data)
|
|||||||
API_DEF_FUNC(config_set_plugin, 2);
|
API_DEF_FUNC(config_set_plugin, 2);
|
||||||
API_DEF_FUNC(config_set_desc_plugin, 2);
|
API_DEF_FUNC(config_set_desc_plugin, 2);
|
||||||
API_DEF_FUNC(config_unset_plugin, 1);
|
API_DEF_FUNC(config_unset_plugin, 1);
|
||||||
|
API_DEF_FUNC(theme_register, 2);
|
||||||
API_DEF_FUNC(key_bind, 2);
|
API_DEF_FUNC(key_bind, 2);
|
||||||
API_DEF_FUNC(key_unbind, 2);
|
API_DEF_FUNC(key_unbind, 2);
|
||||||
API_DEF_FUNC(prefix, 1);
|
API_DEF_FUNC(prefix, 1);
|
||||||
|
|||||||
@@ -48,6 +48,7 @@ add_library(irc MODULE
|
|||||||
irc-sasl.c irc-sasl.h
|
irc-sasl.c irc-sasl.h
|
||||||
irc-server.c irc-server.h
|
irc-server.c irc-server.h
|
||||||
irc-tag.c irc-tag.h
|
irc-tag.c irc-tag.h
|
||||||
|
irc-theme.c irc-theme.h
|
||||||
irc-typing.c irc-typing.h
|
irc-typing.c irc-typing.h
|
||||||
irc-upgrade.c irc-upgrade.h
|
irc-upgrade.c irc-upgrade.h
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -3957,7 +3957,7 @@ irc_config_init (void)
|
|||||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||||
irc_config_color_mirc_remap = weechat_config_new_option (
|
irc_config_color_mirc_remap = weechat_config_new_option (
|
||||||
irc_config_file, irc_config_section_color,
|
irc_config_file, irc_config_section_color,
|
||||||
"mirc_remap", "string",
|
"mirc_remap", "string|themable",
|
||||||
/* TRANSLATORS: please do not translate the list of WeeChat color names at the end of string */
|
/* TRANSLATORS: please do not translate the list of WeeChat color names at the end of string */
|
||||||
N_("remap mirc colors in messages using a hashtable (used only "
|
N_("remap mirc colors in messages using a hashtable (used only "
|
||||||
"for standard colors, not RGB colors): keys are \"fg,bg\" as "
|
"for standard colors, not RGB colors): keys are \"fg,bg\" as "
|
||||||
@@ -3975,7 +3975,7 @@ irc_config_init (void)
|
|||||||
NULL, NULL, NULL);
|
NULL, NULL, NULL);
|
||||||
irc_config_color_nick_prefixes = weechat_config_new_option (
|
irc_config_color_nick_prefixes = weechat_config_new_option (
|
||||||
irc_config_file, irc_config_section_color,
|
irc_config_file, irc_config_section_color,
|
||||||
"nick_prefixes", "string",
|
"nick_prefixes", "string|themable",
|
||||||
N_("color for nick prefixes using mode char (o=op, h=halfop, "
|
N_("color for nick prefixes using mode char (o=op, h=halfop, "
|
||||||
"v=voice, ..), format is: \"o:color1;h:color2;v:color3\" (if a "
|
"v=voice, ..), format is: \"o:color1;h:color2;v:color3\" (if a "
|
||||||
"mode is not found, WeeChat will try with next modes received "
|
"mode is not found, WeeChat will try with next modes received "
|
||||||
@@ -4006,7 +4006,7 @@ irc_config_init (void)
|
|||||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||||
irc_config_color_term_remap = weechat_config_new_option (
|
irc_config_color_term_remap = weechat_config_new_option (
|
||||||
irc_config_file, irc_config_section_color,
|
irc_config_file, irc_config_section_color,
|
||||||
"term_remap", "string",
|
"term_remap", "string|themable",
|
||||||
N_("remap terminal color numbers in messages using a hashtable "
|
N_("remap terminal color numbers in messages using a hashtable "
|
||||||
"(used only for RGB colors as hexadecimal, which are first "
|
"(used only for RGB colors as hexadecimal, which are first "
|
||||||
"translated to terminal color numbers): keys are \"fg,bg\" as "
|
"translated to terminal color numbers): keys are \"fg,bg\" as "
|
||||||
|
|||||||
@@ -4710,7 +4710,7 @@ IRC_PROTOCOL_CALLBACK(317)
|
|||||||
min = ((idle_time % (60 * 60 * 24)) % (60 * 60)) / 60;
|
min = ((idle_time % (60 * 60 * 24)) % (60 * 60)) / 60;
|
||||||
sec = ((idle_time % (60 * 60 * 24)) % (60 * 60)) % 60;
|
sec = ((idle_time % (60 * 60 * 24)) % (60 * 60)) % 60;
|
||||||
|
|
||||||
datetime = (time_t)(atol (ctxt->params[3]));
|
datetime = (time_t)(atoll (ctxt->params[3]));
|
||||||
|
|
||||||
ptr_buffer = irc_msgbuffer_get_target_buffer (ctxt->server, ctxt->params[1],
|
ptr_buffer = irc_msgbuffer_get_target_buffer (ctxt->server, ctxt->params[1],
|
||||||
ctxt->command, "whois", NULL);
|
ctxt->command, "whois", NULL);
|
||||||
@@ -5066,7 +5066,7 @@ IRC_PROTOCOL_CALLBACK(329)
|
|||||||
|
|
||||||
ptr_channel = irc_channel_search (ctxt->server, ctxt->params[1]);
|
ptr_channel = irc_channel_search (ctxt->server, ctxt->params[1]);
|
||||||
|
|
||||||
datetime = (time_t)(atol (ctxt->params[2]));
|
datetime = (time_t)(atoll (ctxt->params[2]));
|
||||||
|
|
||||||
if (ptr_channel)
|
if (ptr_channel)
|
||||||
{
|
{
|
||||||
@@ -5290,8 +5290,7 @@ IRC_PROTOCOL_CALLBACK(333)
|
|||||||
ptr_channel = irc_channel_search (ctxt->server, ctxt->params[1]);
|
ptr_channel = irc_channel_search (ctxt->server, ctxt->params[1]);
|
||||||
ptr_nick = (ptr_channel) ?
|
ptr_nick = (ptr_channel) ?
|
||||||
irc_nick_search (ctxt->server, ptr_channel, topic_nick) : NULL;
|
irc_nick_search (ctxt->server, ptr_channel, topic_nick) : NULL;
|
||||||
datetime = (ctxt->num_params > 3) ?
|
datetime = (time_t)(atoll ((ctxt->num_params > 3) ? ctxt->params[3] : ctxt->params[2]));
|
||||||
(time_t)(atol (ctxt->params[3])) : (time_t)(atol (ctxt->params[2]));
|
|
||||||
|
|
||||||
if (!topic_nick && (datetime == 0))
|
if (!topic_nick && (datetime == 0))
|
||||||
return WEECHAT_RC_OK;
|
return WEECHAT_RC_OK;
|
||||||
@@ -5598,7 +5597,7 @@ IRC_PROTOCOL_CALLBACK(346)
|
|||||||
irc_message_get_address_from_host (ctxt->params[3]));
|
irc_message_get_address_from_host (ctxt->params[3]));
|
||||||
if (ctxt->num_params >= 5)
|
if (ctxt->num_params >= 5)
|
||||||
{
|
{
|
||||||
datetime = (time_t)(atol (ctxt->params[4]));
|
datetime = (time_t)(atoll (ctxt->params[4]));
|
||||||
if (ptr_modelist)
|
if (ptr_modelist)
|
||||||
irc_modelist_item_new (ptr_modelist, ctxt->params[2], ctxt->params[3], datetime);
|
irc_modelist_item_new (ptr_modelist, ctxt->params[2], ctxt->params[3], datetime);
|
||||||
weechat_printf_datetime_tags (
|
weechat_printf_datetime_tags (
|
||||||
@@ -5777,7 +5776,7 @@ IRC_PROTOCOL_CALLBACK(348)
|
|||||||
irc_message_get_address_from_host (ctxt->params[3]));
|
irc_message_get_address_from_host (ctxt->params[3]));
|
||||||
if (ctxt->num_params >= 5)
|
if (ctxt->num_params >= 5)
|
||||||
{
|
{
|
||||||
datetime = (time_t)(atol (ctxt->params[4]));
|
datetime = (time_t)(atoll (ctxt->params[4]));
|
||||||
if (ptr_modelist)
|
if (ptr_modelist)
|
||||||
irc_modelist_item_new (ptr_modelist, ctxt->params[2], ctxt->params[3], datetime);
|
irc_modelist_item_new (ptr_modelist, ctxt->params[2], ctxt->params[3], datetime);
|
||||||
weechat_printf_datetime_tags (
|
weechat_printf_datetime_tags (
|
||||||
@@ -6807,7 +6806,7 @@ IRC_PROTOCOL_CALLBACK(367)
|
|||||||
irc_message_get_address_from_host (ctxt->params[3]));
|
irc_message_get_address_from_host (ctxt->params[3]));
|
||||||
if (ctxt->num_params >= 5)
|
if (ctxt->num_params >= 5)
|
||||||
{
|
{
|
||||||
datetime = (time_t)(atol (ctxt->params[4]));
|
datetime = (time_t)(atoll (ctxt->params[4]));
|
||||||
if (ptr_modelist)
|
if (ptr_modelist)
|
||||||
{
|
{
|
||||||
irc_modelist_item_new (ptr_modelist, ctxt->params[2], ctxt->params[3],
|
irc_modelist_item_new (ptr_modelist, ctxt->params[2], ctxt->params[3],
|
||||||
@@ -7382,7 +7381,7 @@ IRC_PROTOCOL_CALLBACK(728)
|
|||||||
irc_message_get_address_from_host (ctxt->params[4]));
|
irc_message_get_address_from_host (ctxt->params[4]));
|
||||||
if (ctxt->num_params >= 6)
|
if (ctxt->num_params >= 6)
|
||||||
{
|
{
|
||||||
datetime = (time_t)(atol (ctxt->params[5]));
|
datetime = (time_t)(atoll (ctxt->params[5]));
|
||||||
if (ptr_modelist)
|
if (ptr_modelist)
|
||||||
{
|
{
|
||||||
irc_modelist_item_new (ptr_modelist, ctxt->params[3], ctxt->params[4],
|
irc_modelist_item_new (ptr_modelist, ctxt->params[3], ctxt->params[4],
|
||||||
|
|||||||
@@ -0,0 +1,93 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* This file is part of WeeChat, the extensible chat client.
|
||||||
|
*
|
||||||
|
* WeeChat is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* WeeChat is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* IRC plugin contribution to built-in themes. */
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#include "../weechat-plugin.h"
|
||||||
|
#include "irc.h"
|
||||||
|
#include "irc-theme.h"
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* IRC contribution to the "light" theme: option values tuned for a
|
||||||
|
* light-background terminal. Each row is { option_full_name, value };
|
||||||
|
* the table is NULL-terminated.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const char *irc_theme_light[][2] =
|
||||||
|
{
|
||||||
|
{ "irc.color.input_nick", "cyan" },
|
||||||
|
{ "irc.color.item_lag_finished", "94" },
|
||||||
|
{ "irc.color.item_tls_version_deprecated", "202" },
|
||||||
|
{ "irc.color.list_buffer_line_selected", "default" },
|
||||||
|
{ "irc.color.message_chghost", "94" },
|
||||||
|
{ "irc.color.message_setname", "94" },
|
||||||
|
{ "irc.color.nick_prefixes",
|
||||||
|
"y:red;q:red;a:cyan;o:green;h:magenta;v:94;*:blue" },
|
||||||
|
{ "irc.color.topic_new", "28" },
|
||||||
|
{ "irc.color.topic_old", "darkgray" },
|
||||||
|
{ NULL, NULL },
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Register IRC's contribution to one theme from a NULL-terminated
|
||||||
|
* table of {option, value} rows.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
irc_theme_register (const char *name, const char *entries[][2])
|
||||||
|
{
|
||||||
|
struct t_hashtable *overrides;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (!name || !entries)
|
||||||
|
return;
|
||||||
|
|
||||||
|
overrides = weechat_hashtable_new (32,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
NULL, NULL);
|
||||||
|
if (!overrides)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (i = 0; entries[i][0]; i++)
|
||||||
|
weechat_hashtable_set (overrides, entries[i][0], entries[i][1]);
|
||||||
|
|
||||||
|
weechat_theme_register (name, overrides);
|
||||||
|
|
||||||
|
weechat_hashtable_free (overrides);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Register all built-in theme contributions from IRC.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
irc_theme_init (void)
|
||||||
|
{
|
||||||
|
irc_theme_register ("light", irc_theme_light);
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* This file is part of WeeChat, the extensible chat client.
|
||||||
|
*
|
||||||
|
* WeeChat is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* WeeChat is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef WEECHAT_PLUGIN_IRC_THEME_H
|
||||||
|
#define WEECHAT_PLUGIN_IRC_THEME_H
|
||||||
|
|
||||||
|
extern void irc_theme_init (void);
|
||||||
|
|
||||||
|
#endif /* WEECHAT_PLUGIN_IRC_THEME_H */
|
||||||
@@ -47,6 +47,7 @@
|
|||||||
#include "irc-redirect.h"
|
#include "irc-redirect.h"
|
||||||
#include "irc-server.h"
|
#include "irc-server.h"
|
||||||
#include "irc-tag.h"
|
#include "irc-tag.h"
|
||||||
|
#include "irc-theme.h"
|
||||||
#include "irc-typing.h"
|
#include "irc-typing.h"
|
||||||
#include "irc-upgrade.h"
|
#include "irc-upgrade.h"
|
||||||
|
|
||||||
@@ -217,6 +218,8 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
|
|||||||
|
|
||||||
irc_config_read ();
|
irc_config_read ();
|
||||||
|
|
||||||
|
irc_theme_init ();
|
||||||
|
|
||||||
irc_list_init ();
|
irc_list_init ();
|
||||||
|
|
||||||
irc_raw_init ();
|
irc_raw_init ();
|
||||||
|
|||||||
@@ -1898,6 +1898,31 @@ API_FUNC(config_unset_plugin)
|
|||||||
API_RETURN_INT(rc);
|
API_RETURN_INT(rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
API_FUNC(theme_register)
|
||||||
|
{
|
||||||
|
struct t_hashtable *hashtable;
|
||||||
|
const char *result;
|
||||||
|
|
||||||
|
API_INIT_FUNC(1, "theme_register", "sh", API_RETURN_EMPTY);
|
||||||
|
|
||||||
|
v8::String::Utf8Value name(args[0]);
|
||||||
|
hashtable = weechat_js_object_to_hashtable (
|
||||||
|
args[1]->ToObject(),
|
||||||
|
WEECHAT_SCRIPT_HASHTABLE_DEFAULT_SIZE,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING);
|
||||||
|
|
||||||
|
result = API_PTR2STR(plugin_script_api_theme_register (
|
||||||
|
weechat_js_plugin,
|
||||||
|
js_current_script,
|
||||||
|
*name, hashtable));
|
||||||
|
|
||||||
|
if (hashtable)
|
||||||
|
weechat_hashtable_free (hashtable);
|
||||||
|
|
||||||
|
API_RETURN_STRING(result);
|
||||||
|
}
|
||||||
|
|
||||||
API_FUNC(key_bind)
|
API_FUNC(key_bind)
|
||||||
{
|
{
|
||||||
struct t_hashtable *hashtable;
|
struct t_hashtable *hashtable;
|
||||||
@@ -5465,6 +5490,7 @@ WeechatJsV8::loadLibs()
|
|||||||
API_DEF_FUNC(config_set_plugin);
|
API_DEF_FUNC(config_set_plugin);
|
||||||
API_DEF_FUNC(config_set_desc_plugin);
|
API_DEF_FUNC(config_set_desc_plugin);
|
||||||
API_DEF_FUNC(config_unset_plugin);
|
API_DEF_FUNC(config_unset_plugin);
|
||||||
|
API_DEF_FUNC(theme_register);
|
||||||
API_DEF_FUNC(key_bind);
|
API_DEF_FUNC(key_bind);
|
||||||
API_DEF_FUNC(key_unbind);
|
API_DEF_FUNC(key_unbind);
|
||||||
API_DEF_FUNC(prefix);
|
API_DEF_FUNC(prefix);
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ add_library(logger MODULE
|
|||||||
logger-config.c logger-config.h
|
logger-config.c logger-config.h
|
||||||
logger-info.c logger-info.h
|
logger-info.c logger-info.h
|
||||||
logger-tail.c logger-tail.h
|
logger-tail.c logger-tail.h
|
||||||
|
logger-theme.c logger-theme.h
|
||||||
)
|
)
|
||||||
set_target_properties(logger PROPERTIES PREFIX "")
|
set_target_properties(logger PROPERTIES PREFIX "")
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,85 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* This file is part of WeeChat, the extensible chat client.
|
||||||
|
*
|
||||||
|
* WeeChat is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* WeeChat is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* logger contribution to built-in themes. */
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#include "../weechat-plugin.h"
|
||||||
|
#include "logger.h"
|
||||||
|
#include "logger-theme.h"
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* logger contribution to the "light" theme: option values tuned for a
|
||||||
|
* light-background terminal. Each row is { option_full_name, value };
|
||||||
|
* the table is NULL-terminated.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const char *logger_theme_light[][2] =
|
||||||
|
{
|
||||||
|
{ "logger.color.backlog_end", "darkgray" },
|
||||||
|
{ "logger.color.backlog_line", "darkgray" },
|
||||||
|
{ NULL, NULL },
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Register logger's contribution to one theme from a NULL-terminated
|
||||||
|
* table of {option, value} rows.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
logger_theme_register (const char *name, const char *entries[][2])
|
||||||
|
{
|
||||||
|
struct t_hashtable *overrides;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (!name || !entries)
|
||||||
|
return;
|
||||||
|
|
||||||
|
overrides = weechat_hashtable_new (32,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
NULL, NULL);
|
||||||
|
if (!overrides)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (i = 0; entries[i][0]; i++)
|
||||||
|
weechat_hashtable_set (overrides, entries[i][0], entries[i][1]);
|
||||||
|
|
||||||
|
weechat_theme_register (name, overrides);
|
||||||
|
|
||||||
|
weechat_hashtable_free (overrides);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Register all built-in theme contributions from logger.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
logger_theme_init (void)
|
||||||
|
{
|
||||||
|
logger_theme_register ("light", logger_theme_light);
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* This file is part of WeeChat, the extensible chat client.
|
||||||
|
*
|
||||||
|
* WeeChat is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* WeeChat is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef WEECHAT_PLUGIN_LOGGER_THEME_H
|
||||||
|
#define WEECHAT_PLUGIN_LOGGER_THEME_H
|
||||||
|
|
||||||
|
extern void logger_theme_init (void);
|
||||||
|
|
||||||
|
#endif /* WEECHAT_PLUGIN_LOGGER_THEME_H */
|
||||||
@@ -36,6 +36,7 @@
|
|||||||
#include "logger-command.h"
|
#include "logger-command.h"
|
||||||
#include "logger-config.h"
|
#include "logger-config.h"
|
||||||
#include "logger-info.h"
|
#include "logger-info.h"
|
||||||
|
#include "logger-theme.h"
|
||||||
|
|
||||||
|
|
||||||
WEECHAT_PLUGIN_NAME(LOGGER_PLUGIN_NAME);
|
WEECHAT_PLUGIN_NAME(LOGGER_PLUGIN_NAME);
|
||||||
@@ -785,6 +786,8 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
|
|||||||
|
|
||||||
logger_config_read ();
|
logger_config_read ();
|
||||||
|
|
||||||
|
logger_theme_init ();
|
||||||
|
|
||||||
logger_command_init ();
|
logger_command_init ();
|
||||||
|
|
||||||
logger_buffer_start_all (1);
|
logger_buffer_start_all (1);
|
||||||
|
|||||||
@@ -2081,6 +2081,32 @@ API_FUNC(config_unset_plugin)
|
|||||||
API_RETURN_INT(rc);
|
API_RETURN_INT(rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
API_FUNC(theme_register)
|
||||||
|
{
|
||||||
|
const char *name;
|
||||||
|
struct t_hashtable *hashtable;
|
||||||
|
const char *result;
|
||||||
|
|
||||||
|
API_INIT_FUNC(1, "theme_register", API_RETURN_EMPTY);
|
||||||
|
if (lua_gettop (L) < 2)
|
||||||
|
API_WRONG_ARGS(API_RETURN_EMPTY);
|
||||||
|
|
||||||
|
name = lua_tostring (L, -2);
|
||||||
|
hashtable = weechat_lua_tohashtable (L, -1,
|
||||||
|
WEECHAT_SCRIPT_HASHTABLE_DEFAULT_SIZE,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING);
|
||||||
|
|
||||||
|
result = API_PTR2STR(plugin_script_api_theme_register (
|
||||||
|
weechat_lua_plugin,
|
||||||
|
lua_current_script,
|
||||||
|
name, hashtable));
|
||||||
|
|
||||||
|
weechat_hashtable_free (hashtable);
|
||||||
|
|
||||||
|
API_RETURN_STRING(result);
|
||||||
|
}
|
||||||
|
|
||||||
API_FUNC(key_bind)
|
API_FUNC(key_bind)
|
||||||
{
|
{
|
||||||
const char *context;
|
const char *context;
|
||||||
@@ -2173,7 +2199,7 @@ API_FUNC(print)
|
|||||||
API_FUNC(print_date_tags)
|
API_FUNC(print_date_tags)
|
||||||
{
|
{
|
||||||
const char *buffer, *tags, *message;
|
const char *buffer, *tags, *message;
|
||||||
long date;
|
long long date;
|
||||||
|
|
||||||
API_INIT_FUNC(1, "print_date_tags", API_RETURN_ERROR);
|
API_INIT_FUNC(1, "print_date_tags", API_RETURN_ERROR);
|
||||||
if (lua_gettop (L) < 4)
|
if (lua_gettop (L) < 4)
|
||||||
@@ -2197,7 +2223,7 @@ API_FUNC(print_date_tags)
|
|||||||
API_FUNC(print_datetime_tags)
|
API_FUNC(print_datetime_tags)
|
||||||
{
|
{
|
||||||
const char *buffer, *tags, *message;
|
const char *buffer, *tags, *message;
|
||||||
long date;
|
long long date;
|
||||||
int date_usec;
|
int date_usec;
|
||||||
|
|
||||||
API_INIT_FUNC(1, "print_datetime_tags", API_RETURN_ERROR);
|
API_INIT_FUNC(1, "print_datetime_tags", API_RETURN_ERROR);
|
||||||
@@ -2247,7 +2273,7 @@ API_FUNC(print_y_date_tags)
|
|||||||
{
|
{
|
||||||
const char *buffer, *tags, *message;
|
const char *buffer, *tags, *message;
|
||||||
int y;
|
int y;
|
||||||
long date;
|
long long date;
|
||||||
|
|
||||||
API_INIT_FUNC(1, "print_y_date_tags", API_RETURN_ERROR);
|
API_INIT_FUNC(1, "print_y_date_tags", API_RETURN_ERROR);
|
||||||
if (lua_gettop (L) < 5)
|
if (lua_gettop (L) < 5)
|
||||||
@@ -2274,7 +2300,7 @@ API_FUNC(print_y_datetime_tags)
|
|||||||
{
|
{
|
||||||
const char *buffer, *tags, *message;
|
const char *buffer, *tags, *message;
|
||||||
int y, date_usec;
|
int y, date_usec;
|
||||||
long date;
|
long long date;
|
||||||
|
|
||||||
API_INIT_FUNC(1, "print_y_datetime_tags", API_RETURN_ERROR);
|
API_INIT_FUNC(1, "print_y_datetime_tags", API_RETURN_ERROR);
|
||||||
if (lua_gettop (L) < 6)
|
if (lua_gettop (L) < 6)
|
||||||
@@ -5008,7 +5034,7 @@ API_FUNC(infolist_new_var_time)
|
|||||||
{
|
{
|
||||||
const char *item, *name;
|
const char *item, *name;
|
||||||
const char *result;
|
const char *result;
|
||||||
long value;
|
long long value;
|
||||||
|
|
||||||
API_INIT_FUNC(1, "infolist_new_var_time", API_RETURN_EMPTY);
|
API_INIT_FUNC(1, "infolist_new_var_time", API_RETURN_EMPTY);
|
||||||
if (lua_gettop (L) < 3)
|
if (lua_gettop (L) < 3)
|
||||||
@@ -5849,6 +5875,7 @@ const struct luaL_Reg weechat_lua_api_funcs[] = {
|
|||||||
API_DEF_FUNC(config_set_plugin),
|
API_DEF_FUNC(config_set_plugin),
|
||||||
API_DEF_FUNC(config_set_desc_plugin),
|
API_DEF_FUNC(config_set_desc_plugin),
|
||||||
API_DEF_FUNC(config_unset_plugin),
|
API_DEF_FUNC(config_unset_plugin),
|
||||||
|
API_DEF_FUNC(theme_register),
|
||||||
API_DEF_FUNC(key_bind),
|
API_DEF_FUNC(key_bind),
|
||||||
API_DEF_FUNC(key_unbind),
|
API_DEF_FUNC(key_unbind),
|
||||||
API_DEF_FUNC(prefix),
|
API_DEF_FUNC(prefix),
|
||||||
|
|||||||
@@ -2000,6 +2000,33 @@ API_FUNC(config_unset_plugin)
|
|||||||
API_RETURN_INT(rc);
|
API_RETURN_INT(rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
API_FUNC(theme_register)
|
||||||
|
{
|
||||||
|
char *name;
|
||||||
|
struct t_hashtable *hashtable;
|
||||||
|
const char *result;
|
||||||
|
dXSARGS;
|
||||||
|
|
||||||
|
API_INIT_FUNC(1, "theme_register", API_RETURN_EMPTY);
|
||||||
|
if (items < 2)
|
||||||
|
API_WRONG_ARGS(API_RETURN_EMPTY);
|
||||||
|
|
||||||
|
name = SvPV_nolen (ST (0));
|
||||||
|
hashtable = weechat_perl_hash_to_hashtable (ST (1),
|
||||||
|
WEECHAT_SCRIPT_HASHTABLE_DEFAULT_SIZE,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING);
|
||||||
|
|
||||||
|
result = API_PTR2STR(plugin_script_api_theme_register (
|
||||||
|
weechat_perl_plugin,
|
||||||
|
perl_current_script,
|
||||||
|
name, hashtable));
|
||||||
|
|
||||||
|
weechat_hashtable_free (hashtable);
|
||||||
|
|
||||||
|
API_RETURN_STRING(result);
|
||||||
|
}
|
||||||
|
|
||||||
API_FUNC(key_bind)
|
API_FUNC(key_bind)
|
||||||
{
|
{
|
||||||
char *context;
|
char *context;
|
||||||
@@ -2106,7 +2133,7 @@ API_FUNC(print_date_tags)
|
|||||||
plugin_script_api_printf_date_tags (weechat_perl_plugin,
|
plugin_script_api_printf_date_tags (weechat_perl_plugin,
|
||||||
perl_current_script,
|
perl_current_script,
|
||||||
API_STR2PTR(buffer),
|
API_STR2PTR(buffer),
|
||||||
(time_t)(SvIV (ST (1))), /* date */
|
(time_t)(SvNV (ST (1))), /* date */
|
||||||
tags,
|
tags,
|
||||||
"%s", message);
|
"%s", message);
|
||||||
|
|
||||||
@@ -2129,7 +2156,7 @@ API_FUNC(print_datetime_tags)
|
|||||||
plugin_script_api_printf_datetime_tags (weechat_perl_plugin,
|
plugin_script_api_printf_datetime_tags (weechat_perl_plugin,
|
||||||
perl_current_script,
|
perl_current_script,
|
||||||
API_STR2PTR(buffer),
|
API_STR2PTR(buffer),
|
||||||
(time_t)(SvIV (ST (1))), /* date */
|
(time_t)(SvNV (ST (1))), /* date */
|
||||||
SvIV (ST (2)), /* date_usec */
|
SvIV (ST (2)), /* date_usec */
|
||||||
tags,
|
tags,
|
||||||
"%s", message);
|
"%s", message);
|
||||||
@@ -2175,7 +2202,7 @@ API_FUNC(print_y_date_tags)
|
|||||||
perl_current_script,
|
perl_current_script,
|
||||||
API_STR2PTR(buffer),
|
API_STR2PTR(buffer),
|
||||||
SvIV (ST (1)), /* y */
|
SvIV (ST (1)), /* y */
|
||||||
(time_t)(SvIV (ST (2))), /* date */
|
(time_t)(SvNV (ST (2))), /* date */
|
||||||
tags,
|
tags,
|
||||||
"%s", message);
|
"%s", message);
|
||||||
|
|
||||||
@@ -2199,7 +2226,7 @@ API_FUNC(print_y_datetime_tags)
|
|||||||
perl_current_script,
|
perl_current_script,
|
||||||
API_STR2PTR(buffer),
|
API_STR2PTR(buffer),
|
||||||
SvIV (ST (1)), /* y */
|
SvIV (ST (1)), /* y */
|
||||||
(time_t)(SvIV (ST (2))), /* date */
|
(time_t)(SvNV (ST (2))), /* date */
|
||||||
SvIV (ST (3)), /* date_usec */
|
SvIV (ST (3)), /* date_usec */
|
||||||
tags,
|
tags,
|
||||||
"%s", message);
|
"%s", message);
|
||||||
@@ -4940,7 +4967,7 @@ API_FUNC(infolist_new_var_time)
|
|||||||
|
|
||||||
result = API_PTR2STR(weechat_infolist_new_var_time (API_STR2PTR(item),
|
result = API_PTR2STR(weechat_infolist_new_var_time (API_STR2PTR(item),
|
||||||
name,
|
name,
|
||||||
(time_t)(SvIV (ST (2))))); /* value */
|
(time_t)(SvNV (ST (2))))); /* value */
|
||||||
|
|
||||||
API_RETURN_STRING(result);
|
API_RETURN_STRING(result);
|
||||||
}
|
}
|
||||||
@@ -5801,6 +5828,7 @@ weechat_perl_api_init (pTHX)
|
|||||||
API_DEF_FUNC(config_set_plugin);
|
API_DEF_FUNC(config_set_plugin);
|
||||||
API_DEF_FUNC(config_set_desc_plugin);
|
API_DEF_FUNC(config_set_desc_plugin);
|
||||||
API_DEF_FUNC(config_unset_plugin);
|
API_DEF_FUNC(config_unset_plugin);
|
||||||
|
API_DEF_FUNC(theme_register);
|
||||||
API_DEF_FUNC(key_bind);
|
API_DEF_FUNC(key_bind);
|
||||||
API_DEF_FUNC(key_unbind);
|
API_DEF_FUNC(key_unbind);
|
||||||
API_DEF_FUNC(prefix);
|
API_DEF_FUNC(prefix);
|
||||||
|
|||||||
@@ -2175,6 +2175,35 @@ API_FUNC(config_unset_plugin)
|
|||||||
API_RETURN_INT(result);
|
API_RETURN_INT(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
API_FUNC(theme_register)
|
||||||
|
{
|
||||||
|
zend_string *z_name;
|
||||||
|
zval *z_overrides;
|
||||||
|
char *name;
|
||||||
|
struct t_hashtable *overrides;
|
||||||
|
const char *result;
|
||||||
|
|
||||||
|
API_INIT_FUNC(1, "theme_register", API_RETURN_EMPTY);
|
||||||
|
if (zend_parse_parameters (ZEND_NUM_ARGS(), "Sa", &z_name,
|
||||||
|
&z_overrides) == FAILURE)
|
||||||
|
API_WRONG_ARGS(API_RETURN_EMPTY);
|
||||||
|
|
||||||
|
name = ZSTR_VAL(z_name);
|
||||||
|
overrides = weechat_php_array_to_hashtable (z_overrides,
|
||||||
|
WEECHAT_SCRIPT_HASHTABLE_DEFAULT_SIZE,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING);
|
||||||
|
|
||||||
|
result = API_PTR2STR(plugin_script_api_theme_register (
|
||||||
|
weechat_php_plugin,
|
||||||
|
php_current_script,
|
||||||
|
(const char *)name, overrides));
|
||||||
|
|
||||||
|
weechat_hashtable_free (overrides);
|
||||||
|
|
||||||
|
API_RETURN_STRING(result);
|
||||||
|
}
|
||||||
|
|
||||||
API_FUNC(key_bind)
|
API_FUNC(key_bind)
|
||||||
{
|
{
|
||||||
zend_string *z_context;
|
zend_string *z_context;
|
||||||
|
|||||||
@@ -132,6 +132,7 @@ PHP_FUNCTION(weechat_config_is_set_plugin);
|
|||||||
PHP_FUNCTION(weechat_config_set_plugin);
|
PHP_FUNCTION(weechat_config_set_plugin);
|
||||||
PHP_FUNCTION(weechat_config_set_desc_plugin);
|
PHP_FUNCTION(weechat_config_set_desc_plugin);
|
||||||
PHP_FUNCTION(weechat_config_unset_plugin);
|
PHP_FUNCTION(weechat_config_unset_plugin);
|
||||||
|
PHP_FUNCTION(weechat_theme_register);
|
||||||
PHP_FUNCTION(weechat_key_bind);
|
PHP_FUNCTION(weechat_key_bind);
|
||||||
PHP_FUNCTION(weechat_key_unbind);
|
PHP_FUNCTION(weechat_key_unbind);
|
||||||
PHP_FUNCTION(weechat_prefix);
|
PHP_FUNCTION(weechat_prefix);
|
||||||
|
|||||||
@@ -190,6 +190,7 @@ const zend_function_entry weechat_functions[] = {
|
|||||||
PHP_FE(weechat_config_set_plugin, arginfo_weechat_config_set_plugin)
|
PHP_FE(weechat_config_set_plugin, arginfo_weechat_config_set_plugin)
|
||||||
PHP_FE(weechat_config_set_desc_plugin, arginfo_weechat_config_set_desc_plugin)
|
PHP_FE(weechat_config_set_desc_plugin, arginfo_weechat_config_set_desc_plugin)
|
||||||
PHP_FE(weechat_config_unset_plugin, arginfo_weechat_config_unset_plugin)
|
PHP_FE(weechat_config_unset_plugin, arginfo_weechat_config_unset_plugin)
|
||||||
|
PHP_FE(weechat_theme_register, arginfo_weechat_theme_register)
|
||||||
PHP_FE(weechat_key_bind, arginfo_weechat_key_bind)
|
PHP_FE(weechat_key_bind, arginfo_weechat_key_bind)
|
||||||
PHP_FE(weechat_key_unbind, arginfo_weechat_key_unbind)
|
PHP_FE(weechat_key_unbind, arginfo_weechat_key_unbind)
|
||||||
PHP_FE(weechat_prefix, arginfo_weechat_prefix)
|
PHP_FE(weechat_prefix, arginfo_weechat_prefix)
|
||||||
|
|||||||
@@ -233,6 +233,11 @@ ZEND_END_ARG_INFO()
|
|||||||
|
|
||||||
#define arginfo_weechat_config_unset_plugin arginfo_weechat_charset_set
|
#define arginfo_weechat_config_unset_plugin arginfo_weechat_charset_set
|
||||||
|
|
||||||
|
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_weechat_theme_register, 0, 2, IS_STRING, 0)
|
||||||
|
ZEND_ARG_TYPE_INFO(0, p0, IS_STRING, 0)
|
||||||
|
ZEND_ARG_TYPE_INFO(0, p1, IS_ARRAY, 0)
|
||||||
|
ZEND_END_ARG_INFO()
|
||||||
|
|
||||||
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_weechat_key_bind, 0, 2, IS_LONG, 0)
|
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_weechat_key_bind, 0, 2, IS_LONG, 0)
|
||||||
ZEND_ARG_TYPE_INFO(0, p0, IS_STRING, 0)
|
ZEND_ARG_TYPE_INFO(0, p0, IS_STRING, 0)
|
||||||
ZEND_ARG_TYPE_INFO(0, p1, IS_ARRAY, 0)
|
ZEND_ARG_TYPE_INFO(0, p1, IS_ARRAY, 0)
|
||||||
|
|||||||
@@ -194,6 +194,8 @@ ZEND_END_ARG_INFO()
|
|||||||
|
|
||||||
#define arginfo_weechat_config_unset_plugin arginfo_weechat_plugin_get_name
|
#define arginfo_weechat_config_unset_plugin arginfo_weechat_plugin_get_name
|
||||||
|
|
||||||
|
#define arginfo_weechat_theme_register arginfo_weechat_iconv_to_internal
|
||||||
|
|
||||||
#define arginfo_weechat_key_bind arginfo_weechat_iconv_to_internal
|
#define arginfo_weechat_key_bind arginfo_weechat_iconv_to_internal
|
||||||
|
|
||||||
#define arginfo_weechat_key_unbind arginfo_weechat_iconv_to_internal
|
#define arginfo_weechat_key_unbind arginfo_weechat_iconv_to_internal
|
||||||
|
|||||||
@@ -1042,7 +1042,7 @@ plugin_api_info_uptime_current_cb (const void *pointer, void *data,
|
|||||||
(void) info_name;
|
(void) info_name;
|
||||||
|
|
||||||
return plugin_api_info_build_uptime (
|
return plugin_api_info_build_uptime (
|
||||||
(time_t)weechat_current_start_timeval.tv_sec,
|
weechat_current_start_timeval.tv_sec,
|
||||||
arguments);
|
arguments);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1568,6 +1568,28 @@ plugin_script_api_config_unset_plugin (struct t_weechat_plugin *weechat_plugin,
|
|||||||
return return_code;
|
return return_code;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Register theme overrides on behalf of a script.
|
||||||
|
*
|
||||||
|
* Forwards to weechat_plugin->theme_register with the script pointer
|
||||||
|
* as the owner, so the contribution can be auto-purged when the
|
||||||
|
* script unloads (see plugin_script_remove_themes).
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct t_theme *
|
||||||
|
plugin_script_api_theme_register (struct t_weechat_plugin *weechat_plugin,
|
||||||
|
struct t_plugin_script *script,
|
||||||
|
const char *name,
|
||||||
|
struct t_hashtable *overrides)
|
||||||
|
{
|
||||||
|
if (!script)
|
||||||
|
return NULL;
|
||||||
|
return (weechat_plugin->theme_register) (weechat_plugin,
|
||||||
|
script,
|
||||||
|
name,
|
||||||
|
overrides);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create an upgrade file.
|
* Create an upgrade file.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -438,6 +438,10 @@ extern void plugin_script_api_config_set_desc_plugin (struct t_weechat_plugin *w
|
|||||||
extern int plugin_script_api_config_unset_plugin (struct t_weechat_plugin *weechat_plugin,
|
extern int plugin_script_api_config_unset_plugin (struct t_weechat_plugin *weechat_plugin,
|
||||||
struct t_plugin_script *script,
|
struct t_plugin_script *script,
|
||||||
const char *option);
|
const char *option);
|
||||||
|
extern struct t_theme *plugin_script_api_theme_register (struct t_weechat_plugin *weechat_plugin,
|
||||||
|
struct t_plugin_script *script,
|
||||||
|
const char *name,
|
||||||
|
struct t_hashtable *overrides);
|
||||||
extern struct t_upgrade_file *plugin_script_api_upgrade_new (struct t_weechat_plugin *weechat_plugin,
|
extern struct t_upgrade_file *plugin_script_api_upgrade_new (struct t_weechat_plugin *weechat_plugin,
|
||||||
struct t_plugin_script *script,
|
struct t_plugin_script *script,
|
||||||
const char *filename,
|
const char *filename,
|
||||||
|
|||||||
@@ -1080,6 +1080,18 @@ plugin_script_free (struct t_plugin_script *script)
|
|||||||
free (script);
|
free (script);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Remove all theme contributions registered by this script.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
plugin_script_remove_themes (struct t_weechat_plugin *weechat_plugin,
|
||||||
|
struct t_plugin_script *script)
|
||||||
|
{
|
||||||
|
weechat_theme_unregister_script (script);
|
||||||
|
(void) weechat_plugin; /* used implicitly via the macro */
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Remove a script from list of scripts.
|
* Remove a script from list of scripts.
|
||||||
*/
|
*/
|
||||||
@@ -1101,6 +1113,8 @@ plugin_script_remove (struct t_weechat_plugin *weechat_plugin,
|
|||||||
|
|
||||||
plugin_script_remove_configs (weechat_plugin, script);
|
plugin_script_remove_configs (weechat_plugin, script);
|
||||||
|
|
||||||
|
plugin_script_remove_themes (weechat_plugin, script);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* remove again all hooks created by this script (just in case new hooks
|
* remove again all hooks created by this script (just in case new hooks
|
||||||
* were created by the calls above)
|
* were created by the calls above)
|
||||||
|
|||||||
@@ -50,6 +50,7 @@
|
|||||||
#include "../core/core-log.h"
|
#include "../core/core-log.h"
|
||||||
#include "../core/core-network.h"
|
#include "../core/core-network.h"
|
||||||
#include "../core/core-string.h"
|
#include "../core/core-string.h"
|
||||||
|
#include "../core/core-theme.h"
|
||||||
#include "../core/core-upgrade-file.h"
|
#include "../core/core-upgrade-file.h"
|
||||||
#include "../core/core-utf8.h"
|
#include "../core/core-utf8.h"
|
||||||
#include "../core/core-util.h"
|
#include "../core/core-util.h"
|
||||||
@@ -799,6 +800,9 @@ plugin_load (const char *filename, int init_plugin, int argc, char **argv)
|
|||||||
new_plugin->config_set_desc_plugin = &plugin_api_config_set_desc_plugin;
|
new_plugin->config_set_desc_plugin = &plugin_api_config_set_desc_plugin;
|
||||||
new_plugin->config_unset_plugin = &plugin_api_config_unset_plugin;
|
new_plugin->config_unset_plugin = &plugin_api_config_unset_plugin;
|
||||||
|
|
||||||
|
new_plugin->theme_register = &theme_register;
|
||||||
|
new_plugin->theme_unregister_script = &theme_unregister_script;
|
||||||
|
|
||||||
new_plugin->key_bind = &gui_key_bind_plugin;
|
new_plugin->key_bind = &gui_key_bind_plugin;
|
||||||
new_plugin->key_unbind = &gui_key_unbind_plugin;
|
new_plugin->key_unbind = &gui_key_unbind_plugin;
|
||||||
|
|
||||||
@@ -1214,6 +1218,9 @@ plugin_remove (struct t_weechat_plugin *plugin)
|
|||||||
/* remove all configuration files */
|
/* remove all configuration files */
|
||||||
config_file_free_all_plugin (plugin);
|
config_file_free_all_plugin (plugin);
|
||||||
|
|
||||||
|
/* remove all theme contributions registered by this plugin */
|
||||||
|
theme_unregister_plugin (plugin);
|
||||||
|
|
||||||
/* remove all hooks */
|
/* remove all hooks */
|
||||||
unhook_all_plugin (plugin, NULL);
|
unhook_all_plugin (plugin, NULL);
|
||||||
|
|
||||||
|
|||||||
@@ -2001,6 +2001,34 @@ API_FUNC(config_unset_plugin)
|
|||||||
API_RETURN_INT(rc);
|
API_RETURN_INT(rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
API_FUNC(theme_register)
|
||||||
|
{
|
||||||
|
char *name;
|
||||||
|
PyObject *dict;
|
||||||
|
struct t_hashtable *hashtable;
|
||||||
|
const char *result;
|
||||||
|
|
||||||
|
API_INIT_FUNC(1, "theme_register", API_RETURN_EMPTY);
|
||||||
|
name = NULL;
|
||||||
|
dict = NULL;
|
||||||
|
if (!PyArg_ParseTuple (args, "sO", &name, &dict))
|
||||||
|
API_WRONG_ARGS(API_RETURN_EMPTY);
|
||||||
|
|
||||||
|
hashtable = weechat_python_dict_to_hashtable (dict,
|
||||||
|
WEECHAT_SCRIPT_HASHTABLE_DEFAULT_SIZE,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING);
|
||||||
|
|
||||||
|
result = API_PTR2STR(plugin_script_api_theme_register (
|
||||||
|
weechat_python_plugin,
|
||||||
|
python_current_script,
|
||||||
|
name, hashtable));
|
||||||
|
|
||||||
|
weechat_hashtable_free (hashtable);
|
||||||
|
|
||||||
|
API_RETURN_STRING(result);
|
||||||
|
}
|
||||||
|
|
||||||
API_FUNC(key_bind)
|
API_FUNC(key_bind)
|
||||||
{
|
{
|
||||||
char *context;
|
char *context;
|
||||||
@@ -2093,14 +2121,14 @@ API_FUNC(prnt)
|
|||||||
API_FUNC(prnt_date_tags)
|
API_FUNC(prnt_date_tags)
|
||||||
{
|
{
|
||||||
char *buffer, *tags, *message;
|
char *buffer, *tags, *message;
|
||||||
long date;
|
long long date;
|
||||||
|
|
||||||
API_INIT_FUNC(1, "prnt_date_tags", API_RETURN_ERROR);
|
API_INIT_FUNC(1, "prnt_date_tags", API_RETURN_ERROR);
|
||||||
buffer = NULL;
|
buffer = NULL;
|
||||||
date = 0;
|
date = 0;
|
||||||
tags = NULL;
|
tags = NULL;
|
||||||
message = NULL;
|
message = NULL;
|
||||||
if (!PyArg_ParseTuple (args, "slss", &buffer, &date, &tags, &message))
|
if (!PyArg_ParseTuple (args, "sLss", &buffer, &date, &tags, &message))
|
||||||
API_WRONG_ARGS(API_RETURN_ERROR);
|
API_WRONG_ARGS(API_RETURN_ERROR);
|
||||||
|
|
||||||
plugin_script_api_printf_date_tags (weechat_python_plugin,
|
plugin_script_api_printf_date_tags (weechat_python_plugin,
|
||||||
@@ -2116,7 +2144,7 @@ API_FUNC(prnt_date_tags)
|
|||||||
API_FUNC(prnt_datetime_tags)
|
API_FUNC(prnt_datetime_tags)
|
||||||
{
|
{
|
||||||
char *buffer, *tags, *message;
|
char *buffer, *tags, *message;
|
||||||
long date;
|
long long date;
|
||||||
int date_usec;
|
int date_usec;
|
||||||
|
|
||||||
API_INIT_FUNC(1, "prnt_datetime_tags", API_RETURN_ERROR);
|
API_INIT_FUNC(1, "prnt_datetime_tags", API_RETURN_ERROR);
|
||||||
@@ -2125,7 +2153,7 @@ API_FUNC(prnt_datetime_tags)
|
|||||||
date_usec = 0;
|
date_usec = 0;
|
||||||
tags = NULL;
|
tags = NULL;
|
||||||
message = NULL;
|
message = NULL;
|
||||||
if (!PyArg_ParseTuple (args, "sliss", &buffer, &date, &date_usec, &tags,
|
if (!PyArg_ParseTuple (args, "sLiss", &buffer, &date, &date_usec, &tags,
|
||||||
&message))
|
&message))
|
||||||
API_WRONG_ARGS(API_RETURN_ERROR);
|
API_WRONG_ARGS(API_RETURN_ERROR);
|
||||||
|
|
||||||
@@ -2165,7 +2193,7 @@ API_FUNC(prnt_y_date_tags)
|
|||||||
{
|
{
|
||||||
char *buffer, *tags, *message;
|
char *buffer, *tags, *message;
|
||||||
int y;
|
int y;
|
||||||
long date;
|
long long date;
|
||||||
|
|
||||||
API_INIT_FUNC(1, "prnt_y_date_tags", API_RETURN_ERROR);
|
API_INIT_FUNC(1, "prnt_y_date_tags", API_RETURN_ERROR);
|
||||||
buffer = NULL;
|
buffer = NULL;
|
||||||
@@ -2173,7 +2201,7 @@ API_FUNC(prnt_y_date_tags)
|
|||||||
date = 0;
|
date = 0;
|
||||||
tags = NULL;
|
tags = NULL;
|
||||||
message = NULL;
|
message = NULL;
|
||||||
if (!PyArg_ParseTuple (args, "silss", &buffer, &y, &date, &tags, &message))
|
if (!PyArg_ParseTuple (args, "siLss", &buffer, &y, &date, &tags, &message))
|
||||||
API_WRONG_ARGS(API_RETURN_ERROR);
|
API_WRONG_ARGS(API_RETURN_ERROR);
|
||||||
|
|
||||||
plugin_script_api_printf_y_date_tags (weechat_python_plugin,
|
plugin_script_api_printf_y_date_tags (weechat_python_plugin,
|
||||||
@@ -2191,7 +2219,7 @@ API_FUNC(prnt_y_datetime_tags)
|
|||||||
{
|
{
|
||||||
char *buffer, *tags, *message;
|
char *buffer, *tags, *message;
|
||||||
int y;
|
int y;
|
||||||
long date;
|
long long date;
|
||||||
int date_usec;
|
int date_usec;
|
||||||
|
|
||||||
API_INIT_FUNC(1, "prnt_y_datetime_tags", API_RETURN_ERROR);
|
API_INIT_FUNC(1, "prnt_y_datetime_tags", API_RETURN_ERROR);
|
||||||
@@ -2201,7 +2229,7 @@ API_FUNC(prnt_y_datetime_tags)
|
|||||||
date_usec = 0;
|
date_usec = 0;
|
||||||
tags = NULL;
|
tags = NULL;
|
||||||
message = NULL;
|
message = NULL;
|
||||||
if (!PyArg_ParseTuple (args, "siliss", &buffer, &y, &date, &date_usec,
|
if (!PyArg_ParseTuple (args, "siLiss", &buffer, &y, &date, &date_usec,
|
||||||
&tags, &message))
|
&tags, &message))
|
||||||
API_WRONG_ARGS(API_RETURN_ERROR);
|
API_WRONG_ARGS(API_RETURN_ERROR);
|
||||||
|
|
||||||
@@ -4904,13 +4932,13 @@ API_FUNC(infolist_new_var_time)
|
|||||||
{
|
{
|
||||||
char *item, *name;
|
char *item, *name;
|
||||||
const char *result;
|
const char *result;
|
||||||
long value;
|
long long value;
|
||||||
|
|
||||||
API_INIT_FUNC(1, "infolist_new_var_time", API_RETURN_EMPTY);
|
API_INIT_FUNC(1, "infolist_new_var_time", API_RETURN_EMPTY);
|
||||||
item = NULL;
|
item = NULL;
|
||||||
name = NULL;
|
name = NULL;
|
||||||
value = 0;
|
value = 0;
|
||||||
if (!PyArg_ParseTuple (args, "ssl", &item, &name, &value))
|
if (!PyArg_ParseTuple (args, "ssL", &item, &name, &value))
|
||||||
API_WRONG_ARGS(API_RETURN_EMPTY);
|
API_WRONG_ARGS(API_RETURN_EMPTY);
|
||||||
|
|
||||||
result = API_PTR2STR(weechat_infolist_new_var_time (API_STR2PTR(item),
|
result = API_PTR2STR(weechat_infolist_new_var_time (API_STR2PTR(item),
|
||||||
@@ -5727,6 +5755,7 @@ PyMethodDef weechat_python_funcs[] =
|
|||||||
API_DEF_FUNC(config_set_plugin),
|
API_DEF_FUNC(config_set_plugin),
|
||||||
API_DEF_FUNC(config_set_desc_plugin),
|
API_DEF_FUNC(config_set_desc_plugin),
|
||||||
API_DEF_FUNC(config_unset_plugin),
|
API_DEF_FUNC(config_unset_plugin),
|
||||||
|
API_DEF_FUNC(theme_register),
|
||||||
API_DEF_FUNC(key_bind),
|
API_DEF_FUNC(key_bind),
|
||||||
API_DEF_FUNC(key_unbind),
|
API_DEF_FUNC(key_unbind),
|
||||||
API_DEF_FUNC(prefix),
|
API_DEF_FUNC(prefix),
|
||||||
|
|||||||
@@ -635,7 +635,7 @@ def config_new_option(config_file: str, section: str, name: str, type: str, desc
|
|||||||
"", "",
|
"", "",
|
||||||
"", "")
|
"", "")
|
||||||
|
|
||||||
option_str = weechat.config_new_option(config_file, section, "option_str", "string",
|
option_str = weechat.config_new_option(config_file, section, "option_str", "string|themable",
|
||||||
"My option, type string",
|
"My option, type string",
|
||||||
"", 0, 0, "test", "test", 1,
|
"", 0, 0, "test", "test", 1,
|
||||||
"option_str_check_value_cb", "",
|
"option_str_check_value_cb", "",
|
||||||
@@ -1143,6 +1143,19 @@ def config_unset_plugin(option_name: str) -> int:
|
|||||||
...
|
...
|
||||||
|
|
||||||
|
|
||||||
|
def theme_register(name: str, overrides: Dict[str, str]) -> str:
|
||||||
|
"""`theme_register in WeeChat plugin API reference <https://weechat.org/doc/weechat/api/#_theme_register>`_
|
||||||
|
::
|
||||||
|
|
||||||
|
# example
|
||||||
|
weechat.theme_register("light", {
|
||||||
|
"irc.color.input_nick": "cyan",
|
||||||
|
"irc.color.topic_old": "darkgray",
|
||||||
|
})
|
||||||
|
"""
|
||||||
|
...
|
||||||
|
|
||||||
|
|
||||||
def key_bind(context: str, keys: Dict[str, str]) -> int:
|
def key_bind(context: str, keys: Dict[str, str]) -> int:
|
||||||
"""`key_bind in WeeChat plugin API reference <https://weechat.org/doc/weechat/api/#_key_bind>`_
|
"""`key_bind in WeeChat plugin API reference <https://weechat.org/doc/weechat/api/#_key_bind>`_
|
||||||
::
|
::
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ set(RELAY_SRC
|
|||||||
relay-raw.c relay-raw.h
|
relay-raw.c relay-raw.h
|
||||||
relay-remote.c relay-remote.h
|
relay-remote.c relay-remote.h
|
||||||
relay-server.c relay-server.h
|
relay-server.c relay-server.h
|
||||||
|
relay-theme.c relay-theme.h
|
||||||
relay-upgrade.c relay-upgrade.h
|
relay-upgrade.c relay-upgrade.h
|
||||||
relay-websocket.c relay-websocket.h
|
relay-websocket.c relay-websocket.h
|
||||||
# irc relay
|
# irc relay
|
||||||
|
|||||||
@@ -1934,7 +1934,7 @@ relay_config_init (void)
|
|||||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||||
relay_config_api_remote_input_cmd_local = weechat_config_new_option (
|
relay_config_api_remote_input_cmd_local = weechat_config_new_option (
|
||||||
relay_config_file, relay_config_section_api,
|
relay_config_file, relay_config_section_api,
|
||||||
"remote_input_cmd_local", "string",
|
"remote_input_cmd_local", "string|themable",
|
||||||
N_("text displayed after user input when the command would be "
|
N_("text displayed after user input when the command would be "
|
||||||
"executed locally (NOT sent to the remote WeeChat) "
|
"executed locally (NOT sent to the remote WeeChat) "
|
||||||
"(note: content is evaluated, see /help eval)"),
|
"(note: content is evaluated, see /help eval)"),
|
||||||
@@ -1942,7 +1942,7 @@ relay_config_init (void)
|
|||||||
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||||
relay_config_api_remote_input_cmd_remote = weechat_config_new_option (
|
relay_config_api_remote_input_cmd_remote = weechat_config_new_option (
|
||||||
relay_config_file, relay_config_section_api,
|
relay_config_file, relay_config_section_api,
|
||||||
"remote_input_cmd_remote", "string",
|
"remote_input_cmd_remote", "string|themable",
|
||||||
N_("text displayed after user input when the command would be "
|
N_("text displayed after user input when the command would be "
|
||||||
"executed on the remote WeeChat (NOT executed locally) "
|
"executed on the remote WeeChat (NOT executed locally) "
|
||||||
"(note: content is evaluated, see /help eval)"),
|
"(note: content is evaluated, see /help eval)"),
|
||||||
|
|||||||
@@ -0,0 +1,88 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* This file is part of WeeChat, the extensible chat client.
|
||||||
|
*
|
||||||
|
* WeeChat is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* WeeChat is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* relay contribution to built-in themes. */
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include "config.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stddef.h>
|
||||||
|
|
||||||
|
#include "../weechat-plugin.h"
|
||||||
|
#include "relay.h"
|
||||||
|
#include "relay-theme.h"
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* relay contribution to the "light" theme: option values tuned for a
|
||||||
|
* light-background terminal. Each row is { option_full_name, value };
|
||||||
|
* the table is NULL-terminated.
|
||||||
|
*/
|
||||||
|
|
||||||
|
const char *relay_theme_light[][2] =
|
||||||
|
{
|
||||||
|
{ "relay.color.status_auth_failed", "magenta" },
|
||||||
|
{ "relay.color.status_authenticating", "202" },
|
||||||
|
{ "relay.color.status_connecting", "default" },
|
||||||
|
{ "relay.color.status_disconnected", "red" },
|
||||||
|
{ "relay.color.text_selected", "default" },
|
||||||
|
{ NULL, NULL },
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Register relay's contribution to one theme from a NULL-terminated
|
||||||
|
* table of {option, value} rows.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
relay_theme_register (const char *name, const char *entries[][2])
|
||||||
|
{
|
||||||
|
struct t_hashtable *overrides;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (!name || !entries)
|
||||||
|
return;
|
||||||
|
|
||||||
|
overrides = weechat_hashtable_new (32,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
NULL, NULL);
|
||||||
|
if (!overrides)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (i = 0; entries[i][0]; i++)
|
||||||
|
weechat_hashtable_set (overrides, entries[i][0], entries[i][1]);
|
||||||
|
|
||||||
|
weechat_theme_register (name, overrides);
|
||||||
|
|
||||||
|
weechat_hashtable_free (overrides);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Register all built-in theme contributions from relay.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void
|
||||||
|
relay_theme_init (void)
|
||||||
|
{
|
||||||
|
relay_theme_register ("light", relay_theme_light);
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
/*
|
||||||
|
* SPDX-FileCopyrightText: 2026 Sébastien Helleu <flashcode@flashtux.org>
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* This file is part of WeeChat, the extensible chat client.
|
||||||
|
*
|
||||||
|
* WeeChat is free software; you can redistribute it and/or modify
|
||||||
|
* it under the terms of the GNU General Public License as published by
|
||||||
|
* the Free Software Foundation; either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* WeeChat is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with WeeChat. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef WEECHAT_PLUGIN_RELAY_THEME_H
|
||||||
|
#define WEECHAT_PLUGIN_RELAY_THEME_H
|
||||||
|
|
||||||
|
extern void relay_theme_init (void);
|
||||||
|
|
||||||
|
#endif /* WEECHAT_PLUGIN_RELAY_THEME_H */
|
||||||
@@ -650,7 +650,7 @@ relay_websocket_decode_frame (const unsigned char *buffer,
|
|||||||
size_t size_decompressed;
|
size_t size_decompressed;
|
||||||
char *payload_decompressed;
|
char *payload_decompressed;
|
||||||
struct t_relay_websocket_frame *frames2, *ptr_frame;
|
struct t_relay_websocket_frame *frames2, *ptr_frame;
|
||||||
int size, masked_frame, mask[4];
|
int size, compressed, masked_frame, mask[4];
|
||||||
|
|
||||||
if (!buffer || !frames || !num_frames)
|
if (!buffer || !frames || !num_frames)
|
||||||
return 0;
|
return 0;
|
||||||
@@ -671,6 +671,9 @@ relay_websocket_decode_frame (const unsigned char *buffer,
|
|||||||
|
|
||||||
opcode = buffer[index_buffer] & 15;
|
opcode = buffer[index_buffer] & 15;
|
||||||
|
|
||||||
|
/* RSV1 indicates whether this message is compressed */
|
||||||
|
compressed = (buffer[index_buffer] & 64) ? 1 : 0;
|
||||||
|
|
||||||
/* check if frame is masked */
|
/* check if frame is masked */
|
||||||
masked_frame = (buffer[index_buffer + 1] & 128) ? 1 : 0;
|
masked_frame = (buffer[index_buffer + 1] & 128) ? 1 : 0;
|
||||||
|
|
||||||
@@ -777,9 +780,9 @@ relay_websocket_decode_frame (const unsigned char *buffer,
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* decompress data if frame is not empty and if "permessage-deflate"
|
* decompress data if frame is not empty and if "permessage-deflate"
|
||||||
* is enabled
|
* is enabled and the message is compressed
|
||||||
*/
|
*/
|
||||||
if ((length_frame > 0) && ws_deflate && ws_deflate->enabled)
|
if ((length_frame > 0) && ws_deflate && ws_deflate->enabled && compressed)
|
||||||
{
|
{
|
||||||
if (!ws_deflate->strm_inflate)
|
if (!ws_deflate->strm_inflate)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -38,6 +38,7 @@
|
|||||||
#include "relay-raw.h"
|
#include "relay-raw.h"
|
||||||
#include "relay-remote.h"
|
#include "relay-remote.h"
|
||||||
#include "relay-server.h"
|
#include "relay-server.h"
|
||||||
|
#include "relay-theme.h"
|
||||||
#include "relay-upgrade.h"
|
#include "relay-upgrade.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -376,6 +377,8 @@ weechat_plugin_init (struct t_weechat_plugin *plugin, int argc, char *argv[])
|
|||||||
|
|
||||||
relay_config_read ();
|
relay_config_read ();
|
||||||
|
|
||||||
|
relay_theme_init ();
|
||||||
|
|
||||||
relay_network_init ();
|
relay_network_init ();
|
||||||
|
|
||||||
relay_command_init ();
|
relay_command_init ();
|
||||||
|
|||||||
@@ -2478,6 +2478,36 @@ weechat_ruby_api_config_unset_plugin (VALUE class, VALUE option)
|
|||||||
API_RETURN_INT(rc);
|
API_RETURN_INT(rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static VALUE
|
||||||
|
weechat_ruby_api_theme_register (VALUE class, VALUE name, VALUE overrides)
|
||||||
|
{
|
||||||
|
char *c_name;
|
||||||
|
struct t_hashtable *c_overrides;
|
||||||
|
const char *result;
|
||||||
|
|
||||||
|
API_INIT_FUNC(1, "theme_register", API_RETURN_EMPTY);
|
||||||
|
if (NIL_P (name) || NIL_P (overrides))
|
||||||
|
API_WRONG_ARGS(API_RETURN_EMPTY);
|
||||||
|
|
||||||
|
Check_Type (name, T_STRING);
|
||||||
|
Check_Type (overrides, T_HASH);
|
||||||
|
|
||||||
|
c_name = StringValuePtr (name);
|
||||||
|
c_overrides = weechat_ruby_hash_to_hashtable (overrides,
|
||||||
|
WEECHAT_SCRIPT_HASHTABLE_DEFAULT_SIZE,
|
||||||
|
WEECHAT_HASHTABLE_STRING,
|
||||||
|
WEECHAT_HASHTABLE_STRING);
|
||||||
|
|
||||||
|
result = API_PTR2STR(plugin_script_api_theme_register (
|
||||||
|
weechat_ruby_plugin,
|
||||||
|
ruby_current_script,
|
||||||
|
c_name, c_overrides));
|
||||||
|
|
||||||
|
weechat_hashtable_free (c_overrides);
|
||||||
|
|
||||||
|
API_RETURN_STRING(result);
|
||||||
|
}
|
||||||
|
|
||||||
static VALUE
|
static VALUE
|
||||||
weechat_ruby_api_key_bind (VALUE class, VALUE context, VALUE keys)
|
weechat_ruby_api_key_bind (VALUE class, VALUE context, VALUE keys)
|
||||||
{
|
{
|
||||||
@@ -2604,7 +2634,7 @@ weechat_ruby_api_print_date_tags (VALUE class, VALUE buffer, VALUE date,
|
|||||||
Check_Type (message, T_STRING);
|
Check_Type (message, T_STRING);
|
||||||
|
|
||||||
c_buffer = StringValuePtr (buffer);
|
c_buffer = StringValuePtr (buffer);
|
||||||
c_date = NUM2ULONG (date);
|
c_date = NUM2ULL (date);
|
||||||
c_tags = StringValuePtr (tags);
|
c_tags = StringValuePtr (tags);
|
||||||
c_message = StringValuePtr (message);
|
c_message = StringValuePtr (message);
|
||||||
|
|
||||||
@@ -2639,7 +2669,7 @@ weechat_ruby_api_print_datetime_tags (VALUE class, VALUE buffer, VALUE date,
|
|||||||
Check_Type (message, T_STRING);
|
Check_Type (message, T_STRING);
|
||||||
|
|
||||||
c_buffer = StringValuePtr (buffer);
|
c_buffer = StringValuePtr (buffer);
|
||||||
c_date = NUM2ULONG (date);
|
c_date = NUM2ULL (date);
|
||||||
c_date_usec = NUM2INT (date_usec);
|
c_date_usec = NUM2INT (date_usec);
|
||||||
c_tags = StringValuePtr (tags);
|
c_tags = StringValuePtr (tags);
|
||||||
c_message = StringValuePtr (message);
|
c_message = StringValuePtr (message);
|
||||||
@@ -2703,7 +2733,7 @@ weechat_ruby_api_print_y_date_tags (VALUE class, VALUE buffer, VALUE y,
|
|||||||
|
|
||||||
c_buffer = StringValuePtr (buffer);
|
c_buffer = StringValuePtr (buffer);
|
||||||
c_y = NUM2INT (y);
|
c_y = NUM2INT (y);
|
||||||
c_date = NUM2ULONG (date);
|
c_date = NUM2ULL (date);
|
||||||
c_tags = StringValuePtr (tags);
|
c_tags = StringValuePtr (tags);
|
||||||
c_message = StringValuePtr (message);
|
c_message = StringValuePtr (message);
|
||||||
|
|
||||||
@@ -2741,7 +2771,7 @@ weechat_ruby_api_print_y_datetime_tags (VALUE class, VALUE buffer, VALUE y,
|
|||||||
|
|
||||||
c_buffer = StringValuePtr (buffer);
|
c_buffer = StringValuePtr (buffer);
|
||||||
c_y = NUM2INT (y);
|
c_y = NUM2INT (y);
|
||||||
c_date = NUM2ULONG (date);
|
c_date = NUM2ULL (date);
|
||||||
c_date_usec = NUM2INT (date_usec);
|
c_date_usec = NUM2INT (date_usec);
|
||||||
c_tags = StringValuePtr (tags);
|
c_tags = StringValuePtr (tags);
|
||||||
c_message = StringValuePtr (message);
|
c_message = StringValuePtr (message);
|
||||||
@@ -6040,7 +6070,7 @@ weechat_ruby_api_infolist_new_var_time (VALUE class, VALUE item,
|
|||||||
|
|
||||||
c_item = StringValuePtr (item);
|
c_item = StringValuePtr (item);
|
||||||
c_name = StringValuePtr (name);
|
c_name = StringValuePtr (name);
|
||||||
c_value = NUM2ULONG (value);
|
c_value = NUM2ULL (value);
|
||||||
|
|
||||||
result = API_PTR2STR(weechat_infolist_new_var_time (API_STR2PTR(c_item),
|
result = API_PTR2STR(weechat_infolist_new_var_time (API_STR2PTR(c_item),
|
||||||
c_name,
|
c_name,
|
||||||
@@ -7078,6 +7108,7 @@ weechat_ruby_api_init (VALUE ruby_mWeechat)
|
|||||||
API_DEF_FUNC(config_set_plugin, 2);
|
API_DEF_FUNC(config_set_plugin, 2);
|
||||||
API_DEF_FUNC(config_set_desc_plugin, 2);
|
API_DEF_FUNC(config_set_desc_plugin, 2);
|
||||||
API_DEF_FUNC(config_unset_plugin, 1);
|
API_DEF_FUNC(config_unset_plugin, 1);
|
||||||
|
API_DEF_FUNC(theme_register, 2);
|
||||||
API_DEF_FUNC(key_bind, 2);
|
API_DEF_FUNC(key_bind, 2);
|
||||||
API_DEF_FUNC(key_unbind, 2);
|
API_DEF_FUNC(key_unbind, 2);
|
||||||
API_DEF_FUNC(prefix, 1);
|
API_DEF_FUNC(prefix, 1);
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ add_library(script MODULE
|
|||||||
script-info.c script-info.h
|
script-info.c script-info.h
|
||||||
script-mouse.c script-mouse.h
|
script-mouse.c script-mouse.h
|
||||||
script-repo.c script-repo.h
|
script-repo.c script-repo.h
|
||||||
|
script-theme.c script-theme.h
|
||||||
)
|
)
|
||||||
set_target_properties(script PROPERTIES PREFIX "")
|
set_target_properties(script PROPERTIES PREFIX "")
|
||||||
|
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user