= WeeChat корисничко упутство
:author: Sébastien Helleu
:email: flashcode@flashtux.org
:lang: sr
:toc: left
:toclevels: 4
:toc-title: Садржај
:sectnums:
:sectnumlevels: 3
:docinfo1:

Превод:

* Иван Пешић (<ivan.pesic@gmail.com>), 2021.


Ово упутство описује WeeChat чет клијент и део је програма WeeChat.

Последња верзија овог документа може да се нађе на следећој страници: https://weechat.org/doc


[[introduction]]
== Увод

WeeChat (Wee Enhanced Environment for Chat) је бесплатни чет клијент, једноставан и брз, дизајниран за многе оперативне системе.

[[features]]
=== Могућности

Основне могућности програма су:

* подржавање разне протоколе (углавном IRC)
* разни начини повезивања са сервером (преко SSL, IPv6, прокси)
* мали је, брз и не оптерећује систем
* прилагођавање и проширивање помоћу додатака и скрипти
* сагласност са IRC RFC документима https://tools.ietf.org/html/rfc1459[1459], https://tools.ietf.org/html/rfc2810[2810], https://tools.ietf.org/html/rfc2811[2811], https://tools.ietf.org/html/rfc2812[2812] и https://tools.ietf.org/html/rfc2813[2813]
* IRC прокси и релеј за удаљене интерфејсе
* подржавање различитих платформи (GNU/Linux, *BSD, macOS, Windows и остале)
* 100% GPL, слободан софтвер

WeeChat почетна страница се налази на адреси: https://weechat.org/

[[prerequisites]]
=== Потребно је да имате

Да бисте инсталирали програм WeeChat, потребно је да поседујете:

* инсталиран GNU/Linux систем (са алатима компајлера за пакет изворних фајлова), или компатибилни оперативни систем
* _root_ привилегије (да се програм WeeChat инсталира у системски директоријум)
* неке библиотеке (погледајте <<dependencies,зависности>>)

[[install]]
== Инсталација

[[binary_packages]]
=== Бинарни пакети

Бинарни пакети су доступни за многе дистрибуције, укључујући:

* Arch Linux: `pacman -S weechat`
* Cygwin (Windows): изаберите WeeChat пакете у setup.exe
* Debian/Ubuntu (или било која Debian компатибилна дистрибуција): `apt-get install weechat-curses weechat-plugins` +
За најновије верзије и ноћне изградње: https://weechat.org/download/debian
* Fedora Core: `dnf install weechat`
* Gentoo: `emerge weechat`
* Mandriva/RedHat (или било која RPM компатибилна дистрибуција): `rpm -i /путања//до/weechat-x.y.z-1.i386.rpm`
* openSUSE: `zypper in weechat`
* Sourcemage: `cast weechat`

Још неки пакети вам могу бити од користи, као што је weechat-plugins.

За остале дистрибуције, молимо вас да погледајте своје упутство у вези начина за инсталирање.

[[source_package]]
=== Пакет са изворним кодом

Програм WeeChat може да се компајлира са CMake или са autotools (CMake је препоручени начин).

[NOTE]
На macOS можете да употребите https://brew.sh/[Homebrew]: `brew install weechat` (за помоћ: `brew info weechat`).

[[dependencies]]
==== Зависности

Следећа табела приказује листу пакета који су *неопходни* за успешно компајлирање програма WeeChat:

[width="100%", cols="5,^3,.^15", options="header"]
|===
| Пакет ^(1)^            | Верзија       | Служи за
| C компајлер
  (gcc, clang, ...)      |               | Изградњу.
| cmake                  | ≥ 3.0         | Изградњу (може да се користи и autotools, али се препоручује CMake).
| pkg-config             |               | Детекција инсталираних библиотека.
| libncursesw5-dev ^(2)^ |               | Ncurses интерфејс.
| libcurl4-gnutls-dev    |               | URL пренос.
| zlib1g-dev             |               | Компресија пакета у релеј додатку (weechat протокол), скрипт додатку.
| libgcrypt20-dev        |               | Обезбеђени подаци, IRC SASL аутентификација.
| libgnutls28-dev        | ≥ 2.2.0 ^(3)^ | SSL веза са IRC сервером, подршка за SSL у релеј додатку, IRC SASL аутентификација (ECDSA-NIST256P-CHALLENGE).
|===

[NOTE]
^(1)^ Име долази из Debian GNU/Linux дистрибуције, верзије и имена пакета могу да се разликују у различитим дистрибуцијама и верзијама. +
^(2)^ Препоручује се компајлирање са libncurses**w**5-dev (битно је *w*). Програм WeeChat може да се компајлира са libncurses5-dev, али се то *НЕ* препоручује: можете имати багове код приказа широких карактера. +
^(3)^ GnuTLS ≥ 3.0.21 је неопходан за IRC SASL аутентификацију механизмом ECDSA-NIST256P-CHALLENGE.

Следећа табела приказује листу пакета који нису обавезни за компајлирање програма WeeChat:

[width="100%", cols="5,^3,.^15", options="header"]
|===
| Пакет                  | Верзија  | Служи за
| C++ компајлер          |          | Изградњу и покретање тестова, JavaScript додатак.
| gettext                |          | Интернационализацију (превод порука; основни језик је енглески).
| ca-certificates        |          | Сертификате за SSL везе.
| libaspell-dev
  ∥ libenchant-dev       |          | Spell додатак.
| python3-dev ^(1)^      |          | Python додатак.
| libperl-dev            |          | Perl додатак.
| ruby2.5, ruby2.5-dev   | ≥ 1.9.1  | Ruby додатак.
| liblua5.3-dev          |          | Lua додатак.
| tcl-dev                | ≥ 8.5    | Tcl додатак.
| guile-2.0-dev          | ≥ 2.0    | Guile (scheme) додатак.
| libv8-dev              | ≤ 3.24.3 | JavaScript додатак.
| php-dev, libphp-embed  | ≥ 7.0    | PHP додатак.
| libxml2-dev            |          | PHP додатак.
| libargon2-0-dev        |          | PHP додатак (ако је PHP ≥ 7.2).
| libsodium-dev          |          | PHP додатак (ако је PHP ≥ 7.2).
| asciidoctor            | ≥ 1.5.4  | Изградњу man странице и документације.
| libcpputest-dev        | ≥ 3.4    | Изградњу и покретање тестова.
|===

[NOTE]
^(1)^ Подразумевано се користи Python 3.x. Ако укључите опцију `+ENABLE_PYTHON2+` (погледајте испод), препоручује се само верзија 2.7 језика Python.

Ако користите дистрибуцију базирану на Debian/Ubuntu и ако имате неке „deb-src” изворне ставке у фајлу _/etc/apt/sources.list_, можете инсталирати све зависности командом:

----
# apt-get build-dep weechat
----

[[compile_with_cmake]]
==== Компајлирање са CMake

* Инсталација у системске директоријуме (неопходне су _root_ привилегије):

----
$ mkdir build
$ cd build
$ cmake ..
$ make
$ sudo make install
----

* Инсталација у директоријум по жељи (на пример, у ваш почетни):

----
$ mkdir build
$ cd build
$ cmake .. -DCMAKE_INSTALL_PREFIX=/путања/до/директоријума
$ make
$ make install
----

Можете да користите опције за CMake, у формату: `-DОПЦИЈА=ВРЕДНОСТ`.

Листа често коришћених опција:

[width="100%", cols="3m,3,3m,10", options="header"]
|===
| Опција | Вредности | Подразумевана вредност | Опис

| CMAKE_BUILD_TYPE | `Debug`, `Release`, `RelWithDebInfo`, `MinSizeRel` | |
  Тип изградње: `Debug` (или `RelWithDebInfo`) се препоручује ако покрећете
  развојну верзију програма WeeChat.

| CMAKE_INSTALL_PREFIX | директоријум | /usr/local |
  Директоријум у који ће се инсталирати програм WeeChat.

| WEECHAT_HOME | директоријум | (празан стринг) |
  Подразумевани почетни директоријум када се извршава програм WeeChat. +
  Са празном вредности (подразумевано), подразумевано се користе XDG директоријуми.
  Ако није празна, за све фајлове се користи један директоријум.
  Вредност такође може да буде и 4 директоријума раздвојена са две тачке, у следећем редоследу:
  config, data, cache, runtime.

| ENABLE_ALIAS | `ON`, `OFF` | ON |
  Компајлира <<alias_plugin,Alias додатак>>.

| ENABLE_BUFLIST | `ON`, `OFF` | ON |
  Компајлира <<buflist_plugin,Buflist додатак>>.

| ENABLE_CHARSET | `ON`, `OFF` | ON |
  Компајлира <<charset_plugin,Charset додатак>>.

| ENABLE_MAN | `ON`, `OFF` | OFF |
  Изграђује man страницу.

| ENABLE_DOC | `ON`, `OFF` | OFF |
  Изграђује HTML документацију.

| ENABLE_ENCHANT | `ON`, `OFF` | OFF |
  Компајлира <<spell_plugin,Spell додатак>> са Enchant.

| ENABLE_EXEC | `ON`, `OFF` | ON |
  Компајлира <<exec_plugin,Exec додатак>>.

| ENABLE_FIFO | `ON`, `OFF` | ON |
  Компајлира <<fifo_plugin,Fifo додатак>>.

| ENABLE_FSET | `ON`, `OFF` | ON |
  Компајлира <<fset_plugin,Fset додатак>>.

| ENABLE_GUILE | `ON`, `OFF` | ON |
  Компајлира <<scripts_plugins,Guile додатак>> (Scheme).

| ENABLE_IRC | `ON`, `OFF` | ON |
  Компајлира <<irc_plugin,IRC додатак>>.

| ENABLE_JAVASCRIPT | `ON`, `OFF` | OFF |
  Компајлира <<scripts_plugins,JavaScript додатак>>.

| ENABLE_LARGEFILE | `ON`, `OFF` | ON |
  Подршка за велике фајлове.

| ENABLE_LOGGER | `ON`, `OFF` | ON |
  Компајлира <<logger_plugin,Logger додатак>>.

| ENABLE_LUA | `ON`, `OFF` | ON |
  Компајлира <<scripts_plugins,Lua додатак>>.

| ENABLE_NCURSES | `ON`, `OFF` | ON |
  Компајлира Ncurses интерфејс.

| ENABLE_NLS | `ON`, `OFF` | ON |
  Укључује NLS (преводе).

| ENABLE_PERL | `ON`, `OFF` | ON |
  Компајлира <<scripts_plugins,Perl додатак>>.

| ENABLE_PHP | `ON`, `OFF` | ON |
  Компајлира <<scripts_plugins,PHP додатак>>.

| ENABLE_PYTHON | `ON`, `OFF` | ON |
  Компајлира <<scripts_plugins,Python додатак>>.

| ENABLE_PYTHON2 | `ON`, `OFF` | OFF |
  Компајлира <<scripts_plugins,Python додатак>> користећи Python 2 уместо Python 3.

| ENABLE_RELAY | `ON`, `OFF` | ON |
  Компајлира <<relay_plugin,Relay додатак>>.

| ENABLE_RUBY | `ON`, `OFF` | ON |
  Компајлира <<scripts_plugins,Ruby додатак>>.

| ENABLE_SCRIPT | `ON`, `OFF` | ON |
  Компајлира <<scripts_plugins,Script додатак>>.

| ENABLE_SCRIPTS | `ON`, `OFF` | ON |
  Компајлира <<scripts_plugins,script додатке>> (Python, Perl, Ruby, Lua, Tcl,
  Guile, JavaScript, PHP).

| ENABLE_SPELL | `ON`, `OFF` | ON |
  Компајлира <<spell_plugin,Spell додатак>>.

| ENABLE_TCL | `ON`, `OFF` | ON |
  Компајлира <<scripts_plugins,Tcl додатак>>.

| ENABLE_TRIGGER | `ON`, `OFF` | ON |
  Компајлира <<trigger_plugin,Trigger додатак>>.

| ENABLE_TYPING | `ON`, `OFF` | ON |
  Компајлира <<typing_plugin,Typing додатак>>.

| ENABLE_XFER | `ON`, `OFF` | ON |
  Компајлира <<xfer_plugin,Xfer додатак>>.

| ENABLE_TESTS | `ON`, `OFF` | OFF |
  Компајлира тестове.

| ENABLE_CODE_COVERAGE | `ON`, `OFF` | OFF |
  Компајлира са опцијама за покривеност кода. +
  Ова опција би требало да се се користи само за тестирање, да се измери покривеност теста.
|===

Остале команде могу да се прикажу следећом командом:

----
$ cmake -LA
----

или са Curses интерфејсом:

----
$ ccmake ..
----

[[compile_with_autotools]]
==== Компајлирање са autotools

[WARNING]
За изградњу програма WeeChat званично се подржава само CMake. Требало би користите autotools само ако ни сте у могућности да користите CMake. +
Изградња са autotools захтева више зависности и спорија је у односу на изградњу са CMake.

* Инсталација у системске директоријуме (неопходне су _root_ привилегије):

----
$ ./autogen.sh
$ mkdir build
$ cd build
$ ../configure
$ make
$ sudo make install
----

* Инсталација у директоријум по жељи (на пример, у ваш почетни):

----
$ ./autogen.sh
$ mkdir build
$ cd build
$ ../configure --prefix=/путања/до/директоријума
$ make
$ make install
----

За скрипту _configure_ могу да се користе опције које се приказују следећом командом:

----
$ ./configure --help
----

[[run_tests]]
==== Покретање тестова

За компајлирање тестова су *неопходни* следећи пакети:

* libcpputest-dev
* C++ компајлер

Када се компајлира програм WeeChat (са CMake), тестови морају да се укључе:

----
$ cmake .. -DENABLE_TESTS=ON
----

Након компајлирања могу да се покрену из директоријума у који је изграђен програм (са CMake):

----
$ ctest -V
----

[[git_sources]]
=== Git извори

Упозорење: git извори су за напредне кориснике: можда се неће компајлирати или програм неће бити стабилан. Упозорили смо вас!

Да бисте преузели git изворе, извршите следећу команду:

----
$ git clone https://github.com/weechat/weechat.git
----

Затим следите инструкције за <<source_package,пакет са изворима>>).

[[report_crashes]]
=== Извештавање о рушењу програма

Ако вам се програм руши, или ако желите да известите о евентуалном будућем краху програма WeeChat, потребно је да:

* Програм компајлирате са:
** дибаг инфо (или да инсталирате бинарни пакет са дибаг инфо),
** чистач адресе (није обавезан).
* Укључите _core_ фајлове на свом систему.
* Инсталирате gdb.

[[build_debug]]
==== Изградња са дибаг опцијама

Ако компајлирате са CMake:

----
$ cmake .. -DCMAKE_BUILD_TYPE=Debug
----

[[build_debug_address_sanitizer]]
==== Изградња са дибаг опцијама и чистачем адресе

Можете и да укључите чистач адресе, помоћу кога се програм WeeChat тренутно руши чим дође до неког проблема:

----
$ cmake .. -DCMAKE_BUILD_TYPE=Debug -DCMAKE_C_FLAGS=-fsanitize=address -DCMAKE_CXX_FLAGS=-fsanitize=address -DCMAKE_EXE_LINKER_FLAGS=-fsanitize=address
----

[WARNING]
Чистач адресе би требало да укључите само ако покушавате да откријете узрок краха, то се не препоручује за програм који се нормално користи.

Затим када се компајлира и инсталира, програм WeeChat морате покренути на следећи начин:

----
$ ASAN_OPTIONS="detect_odr_violation=0 log_path=asan.log" weechat
----

У случају краха, дневник се налази у фајлу `asan.log`.

[[core_files]]
==== Core фајлови

Да бисте укључили _core_ фајлове, употребите опцију <<option_weechat.startup.sys_rlimit,weechat.startup.sys_rlimit>>:

----
/set weechat.startup.sys_rlimit "core:-1"
----

У верзијама програма WeeChat ≤ 0.3.8, или ако желите да укључите core фајлове и пре него што се програм WeeChat покрене, употребите команду `ulimit`.

На пример, на Linux систему са _bash_ командним окружењем, додајте следећу линију у свој `~/.bashrc`:

----
ulimit -c unlimited
----

Или поставите макс величину:

----
ulimit -c 200000
----

[[gdb_backtrace]]
==== Добијање дневника са gdb

Када се програм WeeChat сруши, ваш систем ће креирате _core_ фајл или _core.12345_ (_12345_ је id процеса) ако је <<core_files,опција укључена>>. Овај фајл се креира у директоријуму из којег сте покренули програм WeeChat (то *није* директоријум у који је програм WeeChat инсталиран!).

[NOTE]
На неким системима као што је Archlinux, core извештаји могу бити у неком другом директоријуму као што је _/var/lib/systemd/coredump_ и морате да употребите команду `coredumpctl` да их прочитате. +
За више информација, погледајте следећу ики страницу: https://wiki.archlinux.org/index.php/Core_dump

На пример, ако је _weechat_ инсталиран у _/usr/bin/_ а _core_ фајл се налази у _/home/user/_, онда покрените gdb следећом командом:

----
gdb /usr/bin/weechat /home/user/core
----

Затим у gdb, употребите команду `bt full` којом се приказује дневник. Видећете нешто слично овоме:

----
(gdb) set logging file /tmp/crash.txt
(gdb) set logging on
Copying output to /tmp/crash.txt.
(gdb) bt full
#0  0x00007f9dfb04a465 in raise () from /lib/libc.so.6
#1  0x00007f9dfb04b8e6 in abort () from /lib/libc.so.6
#2  0x0000000000437f66 in weechat_shutdown (return_code=1, crash=1)
    at /some_path/src/core/weechat.c:351
#3  <signal handler called>
#4  0x000000000044cb24 in hook_process_timer_cb (arg_hook_process=0x254eb90,
    remaining_calls=<value optimized out>) at /some_path/src/core/wee-hook.c:1364
        hook_process = 0x254eb90
        status = <value optimized out>
#5  0x000000000044cc7d in hook_timer_exec ()
    at /some_path/src/core/wee-hook.c:1025
        tv_time = {tv_sec = 1272693881, tv_usec = 212665}
        ptr_hook = 0x2811f40
        next_hook = 0x0
#6  0x000000000041b5b0 in gui_main_loop ()
    at /some_path/src/gui/curses/gui-curses-main.c:319
        hook_fd_keyboard = 0x173b600
        tv_timeout = {tv_sec = 0, tv_usec = 0}
        read_fds = {fds_bits = {0 <repeats 16 times>}}
        write_fds = {fds_bits = {0 <repeats 16 times>}}
        except_fds = {fds_bits = {0 <repeats 16 times>}}
        max_fd = <value optimized out>
----

Овај дневник морате пријавити програмерима, и навести која акција је изазвала овај крах.

Хвала вам на помоћи!

[[debug_running_weechat]]
==== Дибаг програма WeeChat који се извршава

Ако желите да вршите дибаг програма WeeChat који се извршава (на пример, ако изгледа да је програм WeeChat блокиран), можете употребите gdb са id процеса (замените _12345_ са PID weechat процеса):

----
gdb /usr/bin/weechat 12345
----

Затим, као и у случају краха, употребите команду `bt full`:

----
(gdb) bt full
----

[[upgrade]]
=== Ажурирање

Ако се објави нова стабилна верзија програма WeeChat, онда је време да пређете на ту верзију.

Најпре морате инсталирати нову верзију програма WeeChat, или менаџером пакета, или тако што ћете га сами компајлирати, тако да су `weechat` бинарни фајл и све потребни фајлови на истим путањама. +
Ово може да се уради и док се програм WeeChat извршава.

[[upgrade_command]]
==== Команда upgrade

Програм WeeChat у месту може да поново покрене нови бинарни фајл, употребом команде <<command_weechat_upgrade,/upgrade>>: садржаји бафера и не-SSL везе се задржавају. +
SSL везе се раскидају током ажурирања и аутоматски се поново успостављају након завршетка процеса ажурирања (тренутно са GnuTLS није могуће поновно учитавање SSL сесија).

Команда такође може да се употреби и када морате поново да покренете машину, на пример, да бисте ажурирали кернел или да преместите свој WeeChat на другу машину:

----
/upgrade -quit
----

Ово чува тренутно стање у `*.upgrade` фајлове. Након тога можете или да поново покренете машину, или да комплетне WeeChat директоријуме (config, data, cache) преместите на неку другу машину и касније покренете програм WeeChat следећом командом:

----
$ weechat --upgrade
----

[[restart_after_upgrade]]
==== Поновно покретање након ажурирања

[[restart_release_notes]]
===== Напомене о издању

Након ажурирања, *снажно се препоручује* да прочитате https://weechat.org/files/releasenotes/ReleaseNotes-devel.html[напомене о издању] које садржи важне информације о променама које прекидају раније понашање програма, као и ручне акције које су због тога можда неопходне.

Морате прочитати све напомене о издању издате између ваше старе (без ње) и ваше нове верзије (укључујући и њу). +
На пример, ако пређете са верзије 3.0 на 3.2, морате да прочитате напомене о издању за верзије 3.1 и 3.2.

[[restart_configuration_upgrade]]
===== Ажурирање конфигурације

Програм WeeChat врши аутоматско ажурирање конфигурационих фајлова (`*.conf`):

* нове опције се без најаве додају са својим подразумеваним вредностима
* застареле опције се аутоматски одбацују и програм WeeChat приказује упозорење које садржи вредност прочитану из фајла.

Пример упозорења када се опција уклања:

----
=!= Упозорење: /home/user/.config/weechat/sec.conf, линија 15: непозната опција за одељак "crypt": passphrase_file = ""
----

Ово значи да је опција `sec.crypt.passphrase_file` уклоњена и да је њена вредност била постављена на празан стринг, што је и подразумевана вредност у претходној верзији (у овом случају нема потребе за ручном акцијом).

[[usage]]
== Употреба

[[running_weechat]]
=== Покретање програма WeeChat

Ако желите да покренете програм WeeChat, задајте следећу команду:

----
$ weechat
----

Када по први пут покренете програм WeeChat, у директоријуму _~/.config/weechat_ се креирају подразумевани конфигурациони фајлови са подразумеваним опцијама и вредностима (погледајте <<files_and_directories,Фајлови и директоријуми>>).

[[command_line_options]]
==== Опције командне линије

include::includes/cmdline_options.sr.adoc[tag=standard]

[[extra_debug_options]]
==== Додатне дибаг опције

[WARNING]
Ове опције служе само за дибаг, *НЕ КОРИСТИТЕ ИХ ЗА ПРОГРАМ КОЈИ СЕ НОРМАЛНО КОРИСТИ!*

include::includes/cmdline_options.sr.adoc[tag=debug]

[[environment_variables]]
=== Променљиве окружења

У случају да су дефинисане, програм WeeChat користи неке променљиве окружења:

[width="100%", cols="1m,6", options="header"]
|===
| Име                  | Опис
| WEECHAT_HOME         | WeeChat почетни директоријум (са конфигурационим фајловима, логовима, скриптама, итд.). Исто понашање као <<compile_with_cmake,CMake опција>> `WEECHAT_HOME`.
| WEECHAT_PASSPHRASE   | Тајна реченица која се користи за дешифровање обезбеђених података.
| WEECHAT_EXTRA_LIBDIR | Додатни директоријум из кога се учитавају додаци (из „plugins” директоријума на овој путањи).
|===

[[files_and_directories]]
=== Фајлови и директоријуми

[[xdg_directories]]
==== XDG директоријуми

WeeChat подразумевано користи XDG директоријуме (сагласно са https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html[XDG Base Directory Specification]). +
Један почетни директоријум за све фајлове може да се форсира CMake опцијом `WEECHAT_HOME`, променљивом окружења `WEECHAT_HOME` или опцијом командне линије `-d` / `--dir`.

Када се не форсира један WeeChat почетни директоријум, користе се XDG директоријуми и постављају се овако:

[width="100%", cols="1,2m,5", options="header"]
|===
| Директоријум | Подразумевана вредност   | Вредност у случају потребе
| config       | $XDG_CONFIG_HOME/weechat | `$HOME/.config/weechat` ако `$XDG_CONFIG_HOME` није дефинисана или је празна.
| data         | $XDG_DATA_HOME/weechat   | `$HOME/.local/share/weechat` ако `$XDG_DATA_HOME` није дефинисана или је празна.
| cache        | $XDG_CACHE_HOME/weechat  | `$HOME/.cache/weechat` ако `$XDG_CACHE_HOME` није дефинисана или је празна.
| runtime      | $XDG_RUNTIME_DIR/weechat | Исто као _cache_ директоријум ако `$XDG_RUNTIME_DIR` није дефинисана или је празна.
|===

Конфигурациони фајлови фајлови се креирају са подразумеваним вредностима онда када по први пут покренете програм WeeChat.

[[weechat_directories]]
==== WeeChat директоријуми

Ово су директоријуми програма WeeChat:

[width="100%", cols="1m,3", options="header"]
|===
| Путања ^(1)^            | Опис
| ~/.config/weechat/      | WeeChat конфигурациони фајлови: `*.conf`, сертификати, итд.
| ~/.local/share/weechat/ | WeeChat фајлови података: логови, скрипте, подаци скрипти, xfer фајлови, итд.
|    logs/                | Лог фајлови (по један за сваки бафер).
|    python/              | Python скрипте.
|       autoload/         | Python скрипте које аутоматски учитавају при покретању ^(2)^.
|    perl/                | Perl скрипте.
|       autoload/         | Perl скрипте које се аутоматски учитавају при покретању ^(2)^.
|    ruby/                | Ruby скрипте.
|       autoload/         | Ruby скрипте које се аутоматски учитавају при покретању ^(2)^.
|    lua/                 | Lua скрипте.
|       autoload/         | Lua скрипте које се аутоматски учитавају при покретању ^(2)^.
|    tcl/                 | Tcl скрипте.
|       autoload/         | Tcl скрипте које се аутоматски учитавају при покретању ^(2)^.
|    guile/               | Guile скрипте.
|       autoload/         | Guile скрипте које се аутоматски учитавају при покретању ^(2)^.
|    javascript/          | JavaScript скрипте.
|       autoload/         | JavaScript скрипте које се аутоматски учитавају при покретању ^(2)^.
|    php/                 | PHP скрипте.
|       autoload/         | PHP скрипте које се аутоматски учитавају при покретању ^(2)^.
| ~/.cache/weechat/       | WeeChat кеш фајлови: кеш скрипти.
| /run/user/1000/weechat/ | WeeChat фајлови за време извршавања: FIFO пајп, Relay UNIX сокети.
|===

[NOTE]
^(1)^ XDG директоријуми могу да буду различити зависно од ваших вредности променљивих окружења `XDG_*`. +
^(2)^ Овај директоријум најчешће садржи само симболички линк на скрипте у родитељском директоријуму.

[[weechat_files]]
==== WeeChat фајлови

Ово су фајлови који се налазе у почетном директоријуму програма WeeChat:

[width="100%", cols="1m,3,6", options="header"]
|===
| Фајл            | Опис                                        | Осетљиви подаци
| weechat.conf    | Главни WeeChat конфигурациони фајл          | Могуће (пример: листа канала у сачуваном распореду бафера).
| sec.conf        | Конфигурациони фајл са обезбеђеним подацима | *Да, врло осетљиви*: овај фајл никада не сме да се дели са било ким.
| plugins.conf    | Конфигурациони фајл додатака                | Могуће, зависно од додатака/скрипти.
| alias.conf      | Конфигурациони фајл за _алијас_ додатак     | Могуће, зависно од алијаса.
| buflist.conf    | Конфигурациони фајл за _buflist_ додатак    | Не.
| charset.conf    | Конфигурациони фајл за _charset_ додатак    | Не.
| exec.conf       | Конфигурациони фајл за _exec_ додатак       | Не.
| fifo.conf       | Конфигурациони фајл за _fifo_ додатак       | Не.
| fset.conf       | Конфигурациони фајл за _fset_ додатак       | Не.
| guile.conf      | Конфигурациони фајл за _guile_ додатак      | Не.
| irc.conf        | Конфигурациони фајл за _irc_ додатак        | *Да*: може да садржи лозинке за сервере, nickserv и канале (ако се не чувају у `sec.conf`).
| javascript.conf | Конфигурациони фајл за _javascript_ додатак | Не.
| logger.conf     | Конфигурациони фајл за _logger_ додатак     | Не.
| lua.conf        | Конфигурациони фајл за _lua_ додатак        | Не.
| perl.conf       | Конфигурациони фајл за _perl_ додатак       | Не.
| php.conf        | Конфигурациони фајл за _php_ додатак        | Не.
| python.conf     | Конфигурациони фајл за _python_ додатак     | Не.
| relay.conf      | Конфигурациони фајл за _релеј_ додатак      | *Да*: може да садржи лозинку за релеј и TOTP тајну (ако се не чувају у `sec.conf`), дозвољене IP адресе/вебсокет порекла и отворене портове.
| ruby.conf       | Конфигурациони фајл за _ruby_ додатак       | Не.
| script.conf     | Конфигурациони фајл за _script_ додатак     | Не.
| tcl.conf        | Конфигурациони фајл за _tcl_ додатак        | Не.
| spell.conf      | Конфигурациони фајл за _spell_ додатак      | Не.
| trigger.conf    | Конфигурациони фајл за _окидач_ додатак     | Могуће, зависно од окидача.
| typing.conf     | Конфигурациони фајл за _typing_ додатак     | Не.
| xfer.conf       | Конфигурациони фајл за _xfer_ додатак       | Не.
| weechat.log     | WeeChat лог фајл                            | Не.
|===

[IMPORTANT]
*Не препоручује се* ручно уређивање конфигурационих фајлова јер програм WeeChat може да их упише у било које време (на пример приликом команде <<command_weechat_quit,/quit>>) и јер након сваке измене морате да извршите команду <<command_weechat_reload,/reload>> (уз ризик губитка осталих измена које још увек нисте сачували командом <<command_weechat_save,/save>>). +
Можете да употребљавате команду <<command_weechat_set,/set>>, која врши проверу вредности и тренутно примењује измене.

[[screen_layout]]
=== Распоред екрана

Пример терминала са програмом WeeChat:

....
 ▼ трака „buflist”   ▼ трака „title”
┌─────────────────────────────────────────────────────────────────────────────────────────┐
│1.libera │Добро дошли на #test, ово је тест канал                                        │
│  weechat│12:52:27   --> | Flashy (flashcode@weechat.org) је приступио у #test   │@Flashy│
│2.  #test│12:52:27    -- | Надимци #test: [@Flashy @joe +weebot peter]           │@joe   │
│3.  #abc │12:52:27    -- | Канал #test: 4 надимка (2 опа, 1 глас, 1 обичан)      │+weebot│
│4.  #def │12:52:27    -- | Канал је креиран у Уто Јан 27 06:30:17 2009           │peter  │
│5.  #ghi │12:54:15 peter | hey!                                                  │       │
│         │12:55:01  @joe | hello                                                 │       │
│         │                                                                       │       │
│         │                                                                       │       │
│         │                                                                       │       │
│         │                                                                       │       │
│         │                                                                       │       │
│         │                                                                       │       │
│         │                                                                       │       │
│         │                                                                       │       │
│         │                                                                       │       │
│         │                                                                       │       │
│         │                                                                       │       │
│         │                                                                       │       │
│         │                                                                       │       │
│         │                                                                       │       │
│         │[12:55] [5] [irc/libera] 2:#test(+n){4}* [H: 3:#abc(2,5), 5]                   │
│         │[@Flashy(i)] hi peter!█                                                        │
└─────────────────────────────────────────────────────────────────────────────────────────┘
            ▲ траке „status” и „input”                             трака „nicklist” ▲
....

Екран је подразумевано подељен на следеће области:

* простор за разговор (чет) (средина екрана) са линијама разговора и за сваку линију:
** време
** префикс (испред „|”)
** порука (након „|”)
* траке око простора за разговор, подразумеване траке су:
** _buflist_ трака, са леве стране
** _title_ (насловна) трака, изнад простора за разговор
** _status_ (статусна) трака, испод простора за разговор
** _input_ (унос) трака, испод статусне траке
** _nicklist_ (листа надимака) трака, са десне стране

_buflist_ трака садржи следеће подразумеване ставке:

[width="100%", cols="^3,^3,9", options="header"]
|===
| Ставка  | Пример      | Опис
| buflist | `1.weechat` | Листа бафера.
|===

_title_ трака садржи следеће подразумеване ставке:

[width="100%", cols="^3,^3,9", options="header"]
|===
| Ставка       | Пример               | Опис
| buffer_title | `Добродошли у #test` | Наслов бафера.
|===

_status_ трака садржи следеће подразумеване ставке:

[width="100%", cols="^3,^3,9", options="header"]
|===
| Ставка                | Пример                | Опис
| time                  | `[12:55]`             | Време.
| buffer_last_number    | `[5]`                 | Број последњег бафера у листи.
| buffer_plugin         | `[irc/libera]`        | Додатак текућег бафера (irc додатак може да дода име IRC сервера који бафер користи).
| buffer_number         | `2`                   | Број текућег бафера.
| buffer_name           | `#test`               | Име текућег бафера.
| buffer_modes          | `+n`                  | Режими IRC канала.
| buffer_nicklist_count | `{4}`                 | Број надимака у листи надимака.
| buffer_zoom           | !                     | `!` значи да је спојени бафер зумиран (само он се приказује), празна вредност значи да се приказују сви спојени бафери.
| buffer_filter         | `+*+`                 | Индикатор филтрирања: `+*+` значи да су неке линије филтриране (скривене), празна вредност значи да се приказују све линије.
| scroll                | `-ЈОШ(50)-`           | Скрол индикатор, са бројем линија испод последње приказане линије.
| lag                   | `[Кашњење: 2.5]`      | Индикатор кашњења, у секундама (скривен је ако је кашњење мало).
| hotlist               | `[H: 3:#abc(2,5), 5]` | Листа бафера који имају активност (непрочитане поруке) (у примеру, 2 истицања и 5 непрочитаних порука на _#abc_, једна непрочитана порука у баферу #5).
| completion            | `abc(2) def(5)`       | Листа речи за довршавање, са бројем могућих довршавања за сваку реч.
|===

_input_ трака садржи следеће подразумеване ставке:

[width="100%", cols="^3,^3,9", options="header"]
|===
| Ставка       | Пример                                           | Опис
| input_prompt | `[@Flashy(i)]`                                   | Одзив за унос, за irc: надимак и режими (режим „+i” значи невидљив на серверу libera).
| away         | `(одсутан)`                                      | Индикатор одсутности.
| input_search | `[Претрага (~ str,msg)]`                         | Индикатор претраге („`~`”: не прави се разлика у величини слова, „`==`”: прави се разлика у величини слова, „`str`”: стринг претраге, „`regex`”: претрага по регуларном изразу, „`msg`”: претрага у порукама, „`pre`”: претрага у префиксима, „`pre\|msg`”: претрага и у префиксима и у порукама).
| input_paste  | `[Да налепим 7 линија? [ctrl-Y] Да [ctrl-N] Не]` | Питање за корисника пре налељпивања линија.
| input_text   | `hi peter!`                                      | Текст уноса.
|===

_nicklist_ трака садржи следеће подразумеване ставке:

[width="100%", cols="^3,^3,9", options="header"]
|===
| Ставка          | Пример    | Опис
| buffer_nicklist | `@Flashy` | Листа надимака на текућем баферу.
|===

Остале доступне ставке (подразумевано се не користе у тракама):

[width="100%", cols="^3,^3,9", options="header"]
|===
| Ставка                       | Пример                   | Опис
| buffer_count                 | `10`                     | Укупан број отворених бафера.
| buffer_last_number           | `10`                     | Број најновијег бафера (може да се разликује од `buffer_count` ако је опција <<option_weechat.look.buffer_auto_renumber,weechat.look.buffer_auto_renumber>> `off`).
| buffer_nicklist_count_all    | `4`                      | Број видљивих група и надимака у листи надимака.
| buffer_nicklist_count_groups | `0`                      | Број видљивих група у листи надимака.
| buffer_short_name            | `#test`                  | Кратко име текућег бафера.
| buflist2                     | `1.weechat`              | Листа бафера, друга ставка траке (погледајте опцију <<option_buflist.look.use_items,buflist.look.use_items>>).
| buflist3                     | `1.weechat`              | Листа бафера, трећа ставка траке (погледајте опцију <<option_buflist.look.use_items,buflist.look.use_items>>).
| fset                         | `+buflist.look.sort: …+` | Помоћ у вези тренутно изабране опције у fset баферу.
| irc_channel                  | `#test`                  | Име тренутног IRC канала.
| irc_host                     | `+user@host.com+`        | Име тренутног IRC хоста.
| irc_nick                     | `+Flashy+`               | Тренутни IRC надимак.
| irc_nick_host                | `+Flashy!user@host.com+` | Тренутни IRC надимак и име хоста.
| irc_nick_modes               | `i`                      | IRC режими са ваш надимак.
| irc_nick_prefix              | `@`                      | IRC префикс надимка на каналу.
| mouse_status                 | `M`                      | Статус миша (празно ако је миш искључен).
| spell_dict                   | `fr,en`                  | Речници за проверу правописа који се користе у текућем баферу.
| spell_suggest                | `print,prone,prune`      | Правописни предлози за реч под курсором (у случају да је погрешно исписана).
| tls_version                  | `TLS1.3`                 | TLS верзија која се користи за текући IRC сервер.
| window_number                | `2`                      | Број текућег прозора.
|===

Сваки аспект распореда може да се прилагоди одговарајућом <<command_line,командом>>: <<command_weechat_bar,`/bar`>> за прилагођавање трака, <<command_weechat_buffer,/buffer>> и <<command_weechat_window,`/window`>> за прилагођавање <<buffers_and_windows,бафера и прозора>> и <<command_weechat_layot,/layout>> за именовање, чување и враћање распореда екрана и придруживања прозора са баферима.

[[command_line]]
=== Командна линија

WeeChat командна линија (на дну прозора) вам омогућава извршавање команди или слање текста у бафер.

[[command_line_syntax]]
==== Синтакса

Команде почињу карактером „/”, након кога следи име команде. На пример, ако желите да видите листу свих опција:

----
/set
----

Текст који се шаље у бафер је било који текст који не почиње карактером „/”. На пример, ако у текући бафер желите да пошаљете текст _здраво_:

----
здраво
----

Међутим, можете да почнете са карактером „/” ако додате још један. На пример, ако у текући бафер желите да пошаљете текст `/set`:

----
//set
----

[[command_line_colors]]
==== Кодови боја

За неке додатке као што је IRC, можете да користите кодове боја и атрибуте, као што следи (притисните kbd:[Ctrl+c] па слово које следи, са необавезном вредности):

[width="100%", cols="1,2", options="header"]
|===
| Тастер                 | Опис
| kbd:[Ctrl+c], kbd:[b]  | Подебљани текст
| kbd:[Ctrl+c], kbd:[c],
  kbd:[xx]               | Текст у боји `xx` (погледајте листу боја испод).
| kbd:[Ctrl+c], kbd:[c],
  kbd:[xx], kbd:[,],
  kbd:[yy]               | Текст у боји `xx` и позадина у `yy` (погледајте листу боја испод).
| kbd:[Ctrl+c], kbd:[i]  | Текст у курзиву.
| kbd:[Ctrl+c], kbd:[o]  | Искључивање боје и атрибута.
| kbd:[Ctrl+c], kbd:[v]  | Обрнути видео (боје текста и позадине се замењују једна са другом).
| kbd:[Ctrl+c], kbd:[_]  | Подвучени текст.
|===

[NOTE]
Исти кôд (без броја за kbd:[Ctrl+c], kbd:[c]) може да се употреби за заустављање атрибута.

Кодови боја за kbd:[Ctrl+c], kbd:[c] су:

include::includes/autogen_user_irc_colors.sr.adoc[tag=irc_colors]

[NOTE]
Да бисте у свом терминалу видели све доступне боје, можете да у програму WeeChat извршите `/color` па затим kbd:[Alt+c], или да у терминалу покренете следећу команду: `weechat --colors`.

Пример: приказати „здраво Елена!” са „здраво” у светлоплавој боји подебљано и „Елена” у светлоцрвеној боји, подвучено:

----
^Cc12^Cbздраво ^Cb^Cc04^C_Елена^C_^Cc!
----

Тастери:

kbd:[Ctrl+c] kbd:[c] kbd:[1] kbd:[2] kbd:[Ctrl+c] kbd:[b] +
kbd:[h] kbd:[e] kbd:[l] kbd:[l] kbd:[o] kbd:[Space] +
kbd:[Ctrl+c] kbd:[b] kbd:[Ctrl+c] kbd:[c] kbd:[0] kbd:[4] kbd:[Ctrl+c] kbd:[pass:[_]] +
kbd:[A] kbd:[l] kbd:[i] kbd:[c] kbd:[e] +
kbd:[Ctrl+c] kbd:[pass:[_]] kbd:[Ctrl+c] kbd:[c] +
kbd:[!]

[NOTE]
У irc додатку можете да ремапирате ове боје употребом опције <<option_irc.color.mirc_remap,irc.color.mirc_remap>>.

[[colors]]
=== Боје

За приказ текста у тракама и простору за чет, програм WeeChat може да користи до 32767 парова боја (ваш терминал мора да подржава 256 боја како могле да се користе у програму WeeChat).

Сагласно са вредности променљиве окружења _TERM_, можете имати следећа ограничења за боје у програму WeeChat:

[width="75%", cols="8,>3,>3", options="header"]
|===
| $TERM                                  | Боја   | Парова
| "rxvt-unicode", "xterm", ...           |     88 | 32767
| "rxvt-256color", "xterm-256color", ... |    256 | 32767
| "screen"                               |      8 |    64
| "screen-256color"                      |    256 | 32767
| "tmux"                                 |      8 |    64
| "tmux-256color"                        |    256 | 32767
|===

Ако желите да прикажете ограничења за своје окружење, покрените `weechat --colors`, или извршите команду `/color` у програму WeeChat.

Неке од препоручених вредности за _TERM_ ако желите 256 боја:

* под screen: _screen-256color_
* под tmux: _screen-256color_ или _tmux-256color_
* ван screen/tmux: _xterm-256color_, _rxvt-256color_, _putty-256color_, ...

[NOTE]
Можда ће бити потребно да инсталирате пакет „ncurses-term” како бисте могли да у _TERM_ променљивој користите ове вредности.

Ако користите screen, можете да додате следећу линију у свој _~/.screenrc_:

----
term screen-256color
----

Ако је вредност ваше _TERM_ променљиве погрешна, а програм WeeChat се већ извршава, можете да је промените помоћу следеће две команде:

----
/set env TERM screen-256color
/upgrade
----

[[colors_basic]]
==== Основне боје

Основне боје у програму WeeChat су:

[width="75%", cols="1m,4", options="header"]
|===
| Име          | Боја
| default      | Подразумевана боја терминала (провидна за позадину)
| black        | Црна
| darkgray     | Тамносива
| red          | Тамноцрвена
| lightred     | Светлоцрвена
| green        | Тамнозелена
| lightgreen   | Светлозелена
| brown        | Браон
| yellow       | Жута
| blue         | Тамноплава
| lightblue    | Светлоплава
| magenta      | Тамномагента
| lightmagenta | Светломагента
| cyan         | Тамноцијан
| lightcyan    | Светлоцијан
| gray         | Сива
| white        | Бела
|===

[[colors_extended]]
==== Проширене боје

Програм WeeChat динамички алоцира парове боја када се боје употребе на екрану (за приказ бафера и трака).

Уз основне боје, можете да користите и број боје између 1 и границе вашег терминала.

Употребите команду `/color` да видите текуће боје и ограничења. Са kbd:[Alt+c] можете привремено да се пребаците на боје терминала како бисте изабрали боју.

На пример, ако желите да се време у баферу приказује у наранџастој боји, извршите:

----
/set weechat.color.chat_time 214
----

Или ако желите тамну тамнозелену позадину за статусну линију:

----
/set weechat.bar.status.color_bg 22
----

[[colors_aliases]]
==== Алијаси

Алијасе боја можете додати командом `/color alias`, па затим користити тај алијас у било којој опцији за боје.

На пример:

----
/color alias 214 orange
/set weechat.color.chat_delimiters orange
----

[[colors_attributes]]
==== Атрибути

За боје можете да користите и неке атрибуте. Испред имена или броја боје можете додати један или више атрибута:

* `+*+`: подебљани текст
* `+!+`: обрнути видео
* `+/+`: курзив
* `+_+`: подвучен текст
* `+|+`: задржавање атрибута: када се мења боја, подебљано/обрнуто/курзив/подвучено се не ресетује

На пример, ако желите да ваш надимак исписује у белој боји, подвучено, извршите:

----
/set weechat.color.chat_nick_self _white
----

Или ако желите да се у статусној траци време исписује у наранџастој боји, подебљано:

----
/set weechat.color.status_time *_214
----

Ако атрибуте желите да користите са подразумеваном бојом терминала (-1), морате да употребите број већи од последње боје терминала, на пример, максималну боју у програму WeeChat: 99999.

Пример подебљаног текста са бојом предњег плана терминала:

----
/set weechat.color.status_time *99999
----

[[buffers_and_windows]]
=== Бафери и прозори

_бафер_ се састоји из броја, имена, приказаних линија (и још неких података).

Примери бафера:

* бафер језгра (креира га програм WeeChat током покретања, не може да се затвори)
* irc сервер (приказује поруке од сервера)
* irc канал
* irc приватне поруке

_прозор_ је површина екрана која приказује бафер. Свој екран можете да изделите на више прозора (примери су <<window_split_examples,испод>>, погледајте <<command_weechat_window,/window команду>> за више детаља).

Сваки прозор приказује један бафер. Бафер може да буде скривен (не приказује се у прозору) или да се приказује у једном или у више прозора.

Распореди екрана и придруживање бафера прозорима могу да се <<command_weechat_layout,сачувају и обнове>>.

[[window_split_examples]]
==== Примери

Пример хоризонталне поделе (`/window splith`):

....
                               ▼ прозор #2 (бафер #4)
┌─────────────────────────────────────────────────────────────────────────────────────┐
│1.libera │Welcome to #def                                                            │
│  weechat│12:55:12     Max | hi                                              │@Flashy│
│2.  #test│12:55:20 @Flashy | hi Max!                                         │Max    │
│3.  #abc │                                                                   │       │
│4.  #def │                                                                   │       │
│5.  #ghi │                                                                   │       │
│         │                                                                   │       │
│         │                                                                   │       │
│         │                                                                   │       │
│         │[12:55] [5] [irc/libera] 4:#def(+n){2}                                     │
│         │[@Flashy]                                                                  │
│         │───────────────────────────────────────────────────────────────────────────│
│         │Welcome to #abc                                                            │
│         │12:54:15 peter | hey!                                              │@Flashy│
│         │12:55:01  @joe | hello                                             │@joe   │
│         │                                                                   │+weebot│
│         │                                                                   │peter  │
│         │                                                                   │       │
│         │                                                                   │       │
│         │                                                                   │       │
│         │                                                                   │       │
│         │[12:55] [5] [irc/libera] 3:#abc(+n){4}                                     │
│         │[@Flashy] hi peter!█                                                       │
└─────────────────────────────────────────────────────────────────────────────────────┘
                               ▲ прозор #1 (бафер #3)
....

Пример вертикалне поделе(`/window splitv`):

....
┌─────────────────────────────────────────────────────────────────────────────────────┐
│1.libera │Welcome to #abc                      │Welcome to #def                      │
│  weechat│12:54:15 peter | hey!        │@Flashy│12:55:12     Max | hi        │@Flashy│
│2.  #test│12:55:01  @joe | hello       │@joe   │12:55:20 @Flashy | hi Max!   │Max    │
│3.  #abc │                             │+weebot│                             │       │
│4.  #def │                             │peter  │                             │       │
│5.  #ghi │                             │       │                             │       │
│         │                             │       │                             │       │
│         │                             │       │                             │       │
│         │                             │       │                             │       │
│         │                             │       │                             │       │
│         │                             │       │                             │       │
│         │                             │       │                             │       │
│         │                             │       │                             │       │
│         │                             │       │                             │       │
│         │                             │       │                             │       │
│         │                             │       │                             │       │
│         │                             │       │                             │       │
│         │                             │       │                             │       │
│         │                             │       │                             │       │
│         │                             │       │                             │       │
│         │[12:55] [5] [irc/libera] 3:#abc(+n)  │[12:55] [5] [irc/libera] 4:#def(+n)  │
│         │[@Flashy] hi peter!█                 │[@Flashy]                            │
└─────────────────────────────────────────────────────────────────────────────────────┘
                 ▲ прозор #1 (бафер #3)                ▲ прозор #2 (бафер #4)
....

Пример вертикалне + хоризонталне поделе:

....
                                                       ▼ прозор #3 (бафер #5)
┌─────────────────────────────────────────────────────────────────────────────────────┐
│1.libera │Welcome to #abc                      │Welcome to #ghi                      │
│  weechat│12:54:15 peter | hey!        │@Flashy│12:55:42 @Flashy | hi        │@Flashy│
│2.  #test│12:55:01  @joe | hello       │@joe   │12:55:56    alex | hi Flashy │alex   │
│3.  #abc │                             │+weebot│                             │       │
│4.  #def │                             │peter  │                             │       │
│5.  #ghi │                             │       │                             │       │
│         │                             │       │                             │       │
│         │                             │       │                             │       │
│         │                             │       │                             │       │
│         │                             │       │[12:55] [5] [irc/libera] 5:#ghi(+n)  │
│         │                             │       │[@Flashy]                            │
│         │                             │       │─────────────────────────────────────│
│         │                             │       │Welcome to #def                      │
│         │                             │       │12:55:12     Max | hi        │@Flashy│
│         │                             │       │12:55:20 @Flashy | hi Max!   │Max    │
│         │                             │       │                             │       │
│         │                             │       │                             │       │
│         │                             │       │                             │       │
│         │                             │       │                             │       │
│         │                             │       │                             │       │
│         │[12:55] [5] [irc/libera] 3:#abc(+n)  │[12:55] [5] [irc/libera] 4:#def(+n)  │
│         │[@Flashy] hi peter!█                 │[@Flashy]                            │
└─────────────────────────────────────────────────────────────────────────────────────┘
                 ▲ прозор #1 (бафер #3)                ▲ прозор #2 (бафер #4)
....

[[buffers]]
=== Бафери

[[lines_format]]
==== Формат линија

Линије које се приказују у форматираним баферима имају следећа поља:

[width="100%", cols="2,2,10", options="header"]
|===
| Поље                | Приказано          | Опис
| date/time (порука)  | Да                 | Датум/време поруке (може бити у прошлости).
| date/time (испис)   | Не                 | Датум/време када WeeChat испише поруку.
| prefix              | Да                 | Префикс поруке, обично је надимак.
| message             | Да                 | Сама порука.
| displayed           | Не                 | Логичка: истинито ако је линија приказана, неистинито ако је линија филтрирана командом <<command_weechat_filter,/filter>>.
| highlight           | Не                 | Логичка: истинито ако линија има истицање, у супротном неистинито.
| tags                | Са `/debug tags`   | Ознаке придружене линији (погледајте <<lines_tags,ознаке линија>>).
|===

Приказ линија може да се прилагоди многим опцијама изгледа (_pass:[weechat.look.*]_) и опцијама боја (_pass:[weechat.color.chat_*]_).

[[lines_tags]]
==== Ознаке линија

Програм WeeChat користи у разне сврхе ознаке у линијама:

* истицање
* ниво обавештавања
* логовање
* употреба команде <<command_weechat_filter,/filter>>

Ознаке могу да се прикажу командом `/debug tags` (иста команда их и сакрива).

Често коришћене ознаке (листа није потпуна):

[width="100%", cols="1m,4", options="header"]
|===
| Ознака           | Опис
| no_filter        | Линија не може да буде филтрирана.
| no_highlight     | У линији није могуће истицање.
| no_log           | Линија се не уписује у лог фајл.
| log0 … log9      | Ниво лога за линију (погледајте `/help logger`).
| notify_none      | Линија не сме да се дода у врућу листу. ^(1)^
| notify_message   | Линија је корисничка порука. ^(1)^
| notify_private   | Линија је приватна порука. ^(1)^
| notify_highlight | Линија је порука са истицањем. ^(1)^
| self_msg         | Порука од вас.
| nick_xxx         | Порука је од надимка „xxx”.
| prefix_nick_ccc  | Префикс је надимак у боји „ccc”.
| host_xxx         | Корисничко име и хост у поруци.
| irc_xxx          | IRC порука „xxx” (може бити команда или троцифрени број).
| irc_numeric      | IRC нумеричка порука.
| irc_error        | Грешка од IRC сервера.
| irc_action       | Акција од надимка (команда `/me`).
| irc_ctcp         | CTCP порука.
| irc_ctcp_reply   | Одговор на CTCP поруку.
| irc_smart_filter | IRC порука која може да се филтрира „паметним филтером”.
| away_info        | Порука са информацији о одсутности.
|===

[NOTE]
^(1)^ Када није присутна ниједна „notify_xxx” ознака, подразумевани ниво је „low”. Ако је присутна ознака „notify_xxx”, стварни ниво обавештавања може бити различит, на пример ако се за надимак користи максимални ниво вруће листе, ниво обавештавања може бити нижи него што је наведен у ознаци.

[[local_variables]]
==== Локалне променљиве

У свим баферима можете да дефинишете локалне променљиве.

Локална променљива има:

* име (стринг)
* вредност (стринг, може бити и празан)

Локалне променљиве може да поставља програм WeeChat, додаци, скрипте, или ручно, командном линијом у баферу.

На пример, ако желите да додате локалну променљиву „completion_default_template”:

----
/buffer setvar completion_default_template %(my_completion)
----

Ако желите да видите све локалне променљиве у текућем баферу:

----
/buffer listvar
----

Ако желите да уклоните локалну променљиву „completion_default_template”:

----
/buffer delvar completion_default_template
----

Програм WeeChat и његови додаци подразумевано интерпретирају следеће променљиве:

[width="100%", cols="^2m,2,5", options="header"]
|===
| Име | Вредност | Опис

| away |
  било који стринг |
  Порука о одсутности на серверу, поставља је irc додатак.

| channel |
  било који стринг |
  Име канала, постављају је irc/xfer додаци и дибаг бафер релеј/окидач додатака.

| charset_modifier |
  било који стринг |
  Модификатор скупа карактера за серверски бафер, поставља је irc додатак.

| completion_default_template |
  било који стринг |
  Подразумевани шаблон за довршавање у баферу, премошћава опцију
  `weechat.completion.default_template`.

| filter |
  било који стринг |
  Филтер дефинисан за неке бафере, као што су `/fset`, `/server raw` (irc) и `/script`.

| host |
  било који стринг |
  Име вашег хоста (ако је познато), поставља је irc додатак.

| lag |
  било који стринг |
  Кашњење у комуникацији са сервером, поставља је irc додатак.

| name |
  било који стринг |
  Име бафера (пазите, ово није пуно име и није довољно за идентификацију
  или претрагу бафера).

| nick |
  било који стринг |
  Ваш надимак, постављају је irc и xfer додаци.

| no_log |
  `1` (или неки непразни стринг) |
  Ако је постављена, logger додатак уопште не логује овај бафер.

| plugin |
  било који стринг |
  Име додатка који је креирао бафер (`core` за WeeChat бафере).

| script_close_cb |
  било који стринг |
  Функција повратног позива за затварање бафера коју је дефинисала скрипта.

| script_close_cb_data |
  било који стринг |
  Подаци за функцију повратног позива затварања бафера коју је дефинисала скрипта.

| script_input_cb |
  било који стринг |
  Функција повратног позива за унос у бафер коју је дефинисала скрипта.

| script_input_cb_data |
  било који стринг |
  Подаци за функцију повратног позива за унос у бафер коју је дефинисала скрипта.

| script_name |
  било који стринг |
  Име скрипте која је креирала бафер.

| server |
  било који стринг |
  Име сервера, поставља је irc додатак и дибаг бафер релеј/окидач додатака.

| spell_suggest |
  било који стринг |
  Неисправно написана реч и предлози (формат: „неисправна:предлози”), поставља
  је spell додатак.

| trigger_filter |
  било који стринг |
  Филтер окидача, поставља је окидач додатак.

| type |
  било који стринг, на пример:
  `channel`,
  `debug`,
  `exec`,
  `option`,
  `private`,
  `relay`,
  `script`,
  `server`,
  `user`,
  `xfer` |
  Тип бафера, поставља је програм WeeChat и многи додаци.

|===

[NOTE]
Спољни додаци и скрипте могу да дефинишу и користе остале локалне променљиве.

[[bars]]
=== Траке

_трака_ је површина уз разговор која може да садржи било коју врсту текста.

Опције траке могу да се поставе опцијама `weechat.bar.име.опција` где је `име` име траке, а `опција` опција за ту траку.

Листа опција траке:

[width="100%", cols="2m,2,10", options="header"]
|===
| Опција | Вредности | Опис

| type | `root`, `window` |
  Трака типа `root` се приказује тачно једном на екрану, ван свих прозора.
  Тип подразумеване траке _buflist_ је `root`. +
  Трака са типом `window` се приказује у сваком прозору, на пример ако поделите
  једном екран (са `/window splith` или `/window splitv`), имаћете
  једну траку у сваком прозору. Подразумеване траке _title_, _status_,
  _input_ и _nicklist_ су типа `window`.

| position | `top`, `bottom`, `left`, `right` |
  Позиција траке: изнад/испод разговора, са леве/десне стране.

| priority | цео број ≥ 0 |
  Приоритет за приказ траке: ово се користи за ређање трака на екрану када
  више трака имају исти тип и исту позицију. +
  Траке се приказују од ивице екрана према центру. Виши приоритет значи да
  ће се трака приказивати на почетку, дакле, ближе ивици. +
  Пример: _input_ трака има приоритет 1000, тако да се приказује испред _status_
  траке, која има приоритет 500.

| size | цео број ≥ 0 |
  Величина траке: број колона за позицију left/right, број линија за
  позицију top/bottom. Величина `0` значи аутоматски, тако да ће се
  величина израчунати у зависности од садржаја који се приказује у траци.

| size_max | цео број ≥ 0 |
  Максимална величина траке, `0` = нема ограничења (ова опција се користи
  само ако је `size` = `0`).

| color_bg | боја |
  Подразумевана боја позадине траке.

| color_fg | боја |
  Подразумевана боја текста у траци.

| color_delim | боја |
  Боја граничника у траци.

| hidden | `on`, `off` |
  Када је ова опција `on`, трака је скривена. +
  Напомена: уместо да мењате ову опцију, боље је да користите команду `/bar`,
  на пример: `/bar toggle nicklist` (погледајте команду <<command_weechat_bar,/bar>>).

| separator | `on`, `off` |
  Када је ова опција `on`, између ове траке и осталих (или разговора) се
  приказује граничник (линија).

| items | стринг |
  Листа _items_ (погледајте <<bar_items,ставке>> за више информација).

| filling_left_right | `+horizontal+`, `+vertical+`, `+columns_horizontal+`, `+columns_vertical+` |
  Тип испуне за траку која има позицију `left` или `right` (погледајте
  <<bar_filling,испуну>> за више информација).

| filling_top_bottom | `+horizontal+`, `+vertical+`, `+columns_horizontal+`, `+columns_vertical+` |
  Тип испуне за траку која има позицију `top` или `bottom` (погледајте
  <<bar_filling,испуну>> за више информација).

| conditions | стринг |
  Услови под којима се трака приказује (погледајте <<bar_conditions,услове>> за
  више информација).
|===

[[bar_items]]
==== Ставке

Опција _items_ је стринг са листом ставки траке, раздвојених запетом (ставке су на екрану раздвојене размаком) или `+++` (спојене ставке).

Листа ставки траке се приказује командом `/bar listitems`.

Испред или након имена ставке можете да употребите карактере (који нису слова или цифре, `+-+` или `+_+`). Они ће се приказивати испред/иза ставке у боји граничника која је дефинисана за траку (опција _color_delim_).

Пример за траку са ставкама „[time],buffer_number+:+buffer_plugin+.+buffer_name”:

....
┌───────────────────────────────────────────────────────────────────────────┐
│[12:55] 3:irc/libera.#weechat                                              │
└───────────────────────────────────────────────────────────────────────────┘
....

Ако желите да форсирате бафер у којем ће се приказивати ставка траке, употребите посебну синтаксу: „@бафер:ставка” (где је „бафер” пуно име бафера, а „ставка” је име ставке траке).

Ово је корисно у кореним (root) тракама код приказа ставке за неки одређени бафер који се не приказује у текућем прозору (или се чак уопште не приказује).

Пример: листа надимака за bitlbee у кореној траци (ако се трака зове _bitlist_ а bitlbee сервер се зове _bitlbee_):

----
/set weechat.bar.bitlist.items "@irc.bitlbee.&bitlbee:buffer_nicklist"
----

[[bar_filling]]
==== Испуна

Постоји четири врсте испуне:

* `+horizontal+`: ставке се приказују хоризонтално, с лева у десно. Ако у ставкама постоје преломи линија, за раздвајање линија се користи размак.
* `+vertical+`: ставке се приказују од врха ка дну. Ако у ставкама постоје преломи линија, за раздвајање линија се користи прелом линија.
* `+columns_horizontal+`: ставке се приказују по колонама, уз лево поравнат текст. Прва ставка је горе лево, друга у истој линији, са њене десне стране.
* `+columns_vertical+`: ставке се приказују по колонама, уз лево поравнат текст. Прва ставка је горе лево, друга ставка је једну линију испод.

Подразумеване траке _title_, _status_ и _input_ имају _horizontal_ испуну, а подразумевана трака _nicklist_ има _vertical_ испуну.

Неки примери испуне за траку _nicklist_:

....
┌───────────────────────────────────────────────────────────────────────┐
│Добродошли на #test, ово је тест канал                                 │
│12:54:15 peter | hey!                                         │@carl   │
│12:55:01  +Max | hello                                        │@jessika│
│                                                              │@maddy  │
│                                                              │%Diego  │
│                                                              │%Melody │
│                                                              │+Max    │
│                                                              │ celia  │
│                                                              │ Eva    │
│                                                              │ freddy │
│                                                              │ Harold^│
│                                                              │ henry4 │
│                                                              │ jimmy17│
│                                                              │ jodie ▼│
│[12:55] [6] [irc/libera] 3:#test(+n){24}                               │
│[@carl] █                                                              │
└───────────────────────────────────────────────────────────────────────┘
                                     filling_left_right = vertical ▲

┌───────────────────────────────────────────────────────────────────────┐
│Добродошли на #test, ово је тест канал                                 │
│12:54:15 peter | hey!                                │@carl     lee    │
│12:55:01  +Max | hello                               │@jessika  louise │
│                                                     │@maddy    mario  │
│                                                     │%Diego    mark   │
│                                                     │%Melody   peter  │
│                                                     │+Max      Rachel │
│                                                     │ celia    richard│
│                                                     │ Eva      sheryl │
│                                                     │ freddy   Vince  │
│                                                     │ Harold^  warren │
│                                                     │ henry4   zack   │
│                                                     │ jimmy17         │
│                                                     │ jodie           │
│[12:55] [6] [irc/libera] 3:#test(+n){24}                               │
│[@carl] █                                                              │
└───────────────────────────────────────────────────────────────────────┘
                             filling_left_right = columns_vertical ▲

┌───────────────────────────────────────────────────────────────────────┐
│@carl    %Diego    celia    Harold^  jodie    mario    Rachel   Vince  │
│@jessika %Melody   Eva      henry4   lee      mark     richard  warren │
│@maddy   +Max      freddy   jimmy17  louise   peter    sheryl   zack   │
│───────────────────────────────────────────────────────────────────────│
│                                                                       │
        filling_top_bottom = columns_vertical ▲

┌───────────────────────────────────────────────────────────────────────┐
│@carl    @jessika @maddy   %Diego   %Melody  +Max      celia    Eva    │
│ freddy   Harold^  henry4   jimmy17  jodie    lee      louise   mario  │
│ mark     peter    Rachel   richard  sheryl   Vince    warren   zack   │
│───────────────────────────────────────────────────────────────────────│
│                                                                       │
      filling_top_bottom = columns_horizontal ▲
....

[[bar_conditions]]
==== Услови

Опција _conditions_ је стринг који се израчунава како би се одредило да ли трака сме да се прикаже или не.

Стринг може да буде:

* _active_: прозор мора бити активан
* _inactive_: прозор мора бити неактиван
* _nicklist_: бафер који се приказује у прозору мора имати листу надимака
* израз: израчунава се као логичка вредност (погледајте команду <<command_weechat_eval,/eval>>)

У изразу су доступне следеће променљиве:

* `+${active}+`: истинито ако је прозор активан
* `+${inactive}+`: истинито ако је прозор неактиван
* `+${nicklist}+`: истинито ако бафер приказан у прозору има листу надимака

Доступни су следећи показивачи:

* `+${window}+`: прозор за који се израчунава услов
* `+${buffer}+`: бафер прозора за који се израчунава услов

Пример за приказ nicklist траке у свим баферима са листом надимака, само ако је ширина терминала > 100:

----
/set weechat.bar.nicklist.conditions "${nicklist} && ${info:term_width} > 100"
----

Исти услов, само што се листа надимака увек приказује у баферу _&bitlbee_ (чак и ако је терминал мали):

----
/set weechat.bar.nicklist.conditions "${nicklist} && (${info:term_width} > 100 || ${buffer.full_name} == irc.bitlbee.&bitlbee)"
----

[[bare_display]]
=== Огољени приказ

Да бисте једноставно кликнули на дугачке URL адресе и бирали текст (користећи миша), можете употребити посебан приказ који се зове „огољени приказ”.

Огољени приказ има следеће особине:

* Приказује само садржај текућег бафера: нема ни подељених прозора ни трака (нема наслова, листе надимака, статуса, уноса, ...).
* Подршка за миш програма WeeChat је искључена (ако је била укључена): миш можете да користите на исти начин као у терминалу, да кликћете на URL адресе и вршите избор текста.
* Ncurses се не користи, тако да се URL адресе не секу на крају линије.

Подразумевани тастер којим се укључује огољени приказ је kbd:[Alt+l] (`L`), и истим тастером се напушта (или као што је подразумевано, било шта што мења унос ће изазвати напуштање огољеног приказа, погледајте опцију <<option_weechat.look.bare_display_exit_on_input,weechat.look.bare_display_exit_on_input>>).

Формат приказа времена може да се прилагоди опцијом <<option_weechat.look.bare_display_time_format,weechat.look.bare_display_time_format>>.

Огољени приказ може да се укључи на неко одређено време командом <<command_weechat_window,/window>>.

Ако програм WeeChat изгледа на следећи начин:

....
┌──────────────────────────────────────────────────────────────────────────────────────┐
│1.libera │Добродошли на #abc                                                          │
│  weechat│12:52:27   --> | Flashy (flashcode@weechat.org) је приступио у #abc │@Flashy│
│2.  #test│12:52:27    -- | Надимци #abc: [@Flashy @joe +weebot peter]         │@joe   │
│3.  #abc │12:52:27    -- | Канал #abc: 4 надимка (2 опа, 1 глас, 1 обични)    │+weebot│
│4.  #def │12:52:27    -- | Канал је креиран у Уто Јан 27 06:30:17 2009        │peter  │
│5.  #ghi │12:54:15 peter | hey!                                               │       │
│         │12:55:01  @joe | peter: hook_process: https://weechat.org/files/do  │       │
│         │               | c/devel/weechat_plugin_api.en.html#_weechat_hook_  │       │
│         │               | process                                            │       │
│         │                                                                    │       │
│         │                                                                    │       │
│         │                                                                    │       │
│         │                                                                    │       │
│         │                                                                    │       │
│         │                                                                    │       │
│         │                                                                    │       │
│         │                                                                    │       │
│         │                                                                    │       │
│         │                                                                    │       │
│         │                                                                    │       │
│         │                                                                    │       │
│         │[12:55] [5] [irc/libera] 3:#abc(+n){4}                                      │
│         │[@Flashy(i)] hi peter!█                                                     │
└──────────────────────────────────────────────────────────────────────────────────────┘
....

Екран у огољеном приказу ће изгледати овако:

....
┌───────────────────────────────────────────────────────────────────────────────────────┐
│                                                                                       │
│                                                                                       │
│                                                                                       │
│                                                                                       │
│                                                                                       │
│                                                                                       │
│                                                                                       │
│                                                                                       │
│                                                                                       │
│                                                                                       │
│                                                                                       │
│                                                                                       │
│                                                                                       │
│                                                                                       │
│                                                                                       │
│                                                                                       │
│12:52 --> Flashy (flashcode@weechat.org) је приступио у #abc                           │
│12:52 -- Надимци #abc: [@Flashy @joe +weebot peter]                                    │
│12:52 -- Канал #abc: 4 надимка (2 опа, 1 глас, 1 обичан)                               │
│12:52 -- Канал је креиран у Уто Јан 27 06:30:17 2009                                   │
│12:54 <peter> hey!                                                                     │
│12:55 <@joe> peter: hook_process: https://weechat.org/files/doc/devel/weechat_plugin_ap│
│i.en.html#_weechat_hook_process                                                        │
└───────────────────────────────────────────────────────────────────────────────────────┘
....

Тако да у свом терминалу без проблема можете кликнути на URL адресу од надимка _joe_ (наравно, ово претпоставља да ваш терминал подржава кликове на URL адресе).

[[notify_levels]]
=== Нивои обавештавања

[[setup_notify_levels]]
==== Постављање нивоа обавештавања

У порукама које се приказују у баферима може постојати четири нивоа, од нижег ка вишем:

* _low_: важност поруке је мала (на пример, irc join/part/quit порука)
* _message_: порука од корисника
* _private_: порука у приватном баферу
* _highlight_: порука са истицањем

Сваки бафер поседује ниво обавештавања који се користи за одлуку које поруке се додају на врућу листу бафера.

Подразумевани ниво обавештавања може да се постави опцијом <<option_weechat.look.buffer_notify_default,weechat.look.buffer_notify_default>>, подразумевана вредност је _all_.

[width="75%", cols="2m,7", options="header"]
|===
| Ниво обавештавања | Ниво порука које се додају на врућу листу
| none              | (ниједна)
| highlight         | _highlight_ + _private_
| message           | _highlight_ + _private_ + _message_
| all               | _highlight_ + _private_ + _message_ + _low_
|===

Ниво обавештавања може да се дефинише за скуп бафера, на пример за све бафере irc сервера „libera”:

----
/set weechat.notify.irc.libera message
----

Постављање нивоа обавештавања _highlight_ само на каналу „#weechat”:

----
/set weechat.notify.irc.libera.#weechat highlight
----

Ниво обавештавања за бафер може да се постави командом `/buffer`:

----
/buffer notify highlight
----

[[max_hotlist_level_nicks]]
==== Максимални ниво вруће листе за надимке

За неке надимке је могуће постављање максималног нивоа вруће листе, по баферу или по групи бафера (као што су IRC сервери).

Особина бафера „hotlist_max_level_nicks” може да се постави на листу надимака, а за сваки надимак у листи максимални ниво вруће листе који се окида. Могући су следећи нивои:

* -1: за надимак нема измене вруће листе
* 0: ниски приоритет (као што су join/part поруке)
* 1: порука
* 2: приватна порука
* 3: истицање (у суштини је бескорисно, јер је за све поруке већ подразумевани максимум)

На пример, ако желите да искључите истицања од „joe” и „mike” у текућем баферу:

----
/buffer set hotlist_max_level_nicks_add joe:2,mike:2
----

[NOTE]
Особина бафера „hotlist_max_level_nicks” се не чува у конфигурацији. +
Лако можете да је сачувате скриптом _buffer_autoset.py_: инсталирате је командом `+/script install buffer_autoset.py+`, а помоћ добијате са `+/help buffer_autoset+`.

[[highlights]]
=== Истицања

[[highlights_words]]
==== Додавање речи које се истичу

Програм WeeChat подразумевано истиче поруке од осталих корисника које садрже у себи ваш надимак, тако да истицање зависи од бафера (ваш надимак не мора да буде исти у свим баферима).

Остале речи моожете да додате опцијом <<option_weechat.look.highlight,weechat.look.highlight>>, на пример ако желите да се истиче ваш надимак и „реч1”, „реч2”, као и све речи које почињу са „test”:

----
/set weechat.look.highlight реч1,реч2,test*
----

Ако вам је потребно одређеније правило за реч, можете да употребите регуларне изразе опцијом <<option_weechat.look.highlight_regex,weechat.look.highlight_regex>>, на пример да истакнете речи „flashcode”, „flashcöde” и „flashy”:

----
/set weechat.look.highlight_regex flashc[oö]de|flashy
----

Граничници око речи које се истичу могу да се прилагоде опцијом <<option_weechat.look.word_chars_highlight,weechat.look.word_chars_highlight>>.

[[highlights_tags]]
==== Додавање ознака истицању

Приказане линије могу да садрже „ознаке” које пружају неке информације о пореклу само поруке. +
Ознаке можете приказати командом `/debug tags` (иста команда их и сакрива).

Опцијом <<option_weechat.look.highlight_tags,weechat.look.highlight_tags>> можете да додате одређене ознаке истицању. Ознаке се раздвајају запетама и више ознака можете да раздвојите са `+++` чиме наводите логичко „и” међу њима.

На пример, ако желите да се истичу све поруке од надимка „FlashCode” и сва обавештења од надимака који почињу са „toto”:

----
/set weechat.look.highlight_tags "nick_flashcode,irc_notice+nick_toto*"
----

[[highlights_regex_buffer]]
==== Постављање посебних истицања у баферу

Истицање помоћу регуларног израза можете да форсирате особином бафера „highlight_regex”.

На пример, да форсирате истицање свих порука у текућем баферу:

----
/buffer set highlight_regex .*
----

[NOTE]
Особина бафера „highlight_regex” се не чува у конфигурацији. +
Лако можете да је сачувате скриптом _buffer_autoset.py_: инсталирате је командом `+/script install buffer_autoset.py+`, а помоћ добијате са `+/help buffer_autoset+`.

[[key_bindings]]
=== Подразумеване тастерске пречице

[[key_bindings_command_line]]
==== Тастери за командну линију

[width="100%", cols="^.^3,.^8,.^5", options="header"]
|===
| Тастер          | Опис | Команда
| kbd:[←] +
  kbd:[Ctrl+b]    | Одлазак на претходни карактер у командној линији. | `+/input move_previous_char+`
| kbd:[→] +
  kbd:[Ctrl+f]    | Одлазак на наредни карактер у командној линији. | `+/input move_next_char+`
| kbd:[Ctrl+←] +
  kbd:[Alt+b]     | Одлазак на претходну реч у командној линији. | `+/input move_previous_word+`
| kbd:[Ctrl+→] +
  kbd:[Alt+f]     | Одлазак на наредну реч у командној линији. | `+/input move_next_word+`
| kbd:[Home] +
  kbd:[Ctrl+a]    | Одлазак на почетак командне линије. | `+/input move_beginning_of_line+`
| kbd:[End] +
  kbd:[Ctrl+e]    | Одлазак на крај командне линије. | `+/input move_end_of_line+`
| kbd:[Ctrl+c],
  kbd:[b]         | Уметање кода за подебљани текст. | `+/input insert \x02+`
| kbd:[Ctrl+c],
  kbd:[c]         | Уметање кода за обојени текст. | `+/input insert \x03+`
| kbd:[Ctrl+c],
  kbd:[i]         | Уметање кода за текст у курзиву. | `+/input insert \x1D+`
| kbd:[Ctrl+c],
  kbd:[o]         | Уметање кода за ресет боје. | `+/input insert \x0F+`
| kbd:[Ctrl+c],
  kbd:[v]         | Уметање кода за обрнуту боју. | `+/input insert \x16+`
| kbd:[Ctrl+c],
  kbd:[_]         | Уметање кода за подвучени текст. | `+/input insert \x1F+`
| kbd:[Del] +
  kbd:[Ctrl+d]    | Брисање наредног карактера у командној линији. | `+/input delete_next_char+`
| kbd:[Backsp.] +
  kbd:[Ctrl+h]    | Брисање претходног карактера у командној линији. | `+/input delete_previous_char+`
| kbd:[Ctrl+k]    | Брисање од курсора до краја командне линије (обрисани стринг се копира у интерни клипборд). | `+/input delete_end_of_line+`
| kbd:[Ctrl+r]    | Претрага на текст у историји бафера (погледајте <<key_bindings_search_context,тастери у „search”>>). | `+/input search_text_here+`
| kbd:[Ctrl+t]    | Транспозиција карактера. | `/input transpose_chars`
| kbd:[Ctrl+u]    | Брисање од курсора до почетка командне линије (обрисани стринг се копира у интерни клипборд). | `+/input delete_beginning_of_line+`
| kbd:[Ctrl+w]    | Брисање претходне речи командне линије (обрисани стринг се копира у интерни клипборд). | `+/input delete_previous_word+`
| kbd:[Ctrl+y]    | Налепљивање садржаја интерног клипборда. | `+/input clipboard_paste+`
| kbd:[Ctrl+_]    | Поништавање последње акције у командној линији. | `+/input undo+`
| kbd:[Alt+_]     | Враћање последње поништене акције у командној линији. | `+/input redo+`
| kbd:[Tab]       | Довршавање команде или надимка (kbd:[Tab] поново: проналажење наредног довршавања). | `+/input complete_next+`
| kbd:[Shift+Tab] | Без довршавања: обављање парцијалног довршавања, са довршавањем на чекању: довршавање са претходно пронађеним појмом. | `+/input complete_previous+`
| kbd:[Enter] +
  kbd:[Ctrl+j] +
  kbd:[Ctrl+m]    | Извршавање команде или слање поруке (у режиму претраге: заустављање претраге). | `+/input return+`
| kbd:[Alt+Enter] | Умеће прелом реда. | `+/input insert \n+`
| kbd:[↑]         | Позив претходне команде/поруке (у режиму претраге: претрага навише). | `+/input history_previous+`
| kbd:[↓]         | Позив наредне команде/поруке (у режиму претраге: претрага наниже). | `+/input history_next+`
| kbd:[Ctrl+↑]    | Позив претходне команде/поруке у глобалној историји (заједничкој за све бафере). | `+/input history_global_previous+`
| kbd:[Ctrl+↓]    | Позив наредне команде/поруке у глобалној историји (заједничкој за све бафере). | `+/input history_global_next+`
| kbd:[Alt+d]     | Брисање наредне речи у командној линији (обрисани стринг се копира у интерни клипборд). | `+/input delete_next_word+`
| kbd:[Alt+k]     | Хвата тастер и умеће његов кôд (и комадну везану за њега, ако постоји таква пречица) у командну линију. | `+/input grab_key_command+`
| kbd:[Alt+r]     | Брише комплетну командну линију. | `+/input delete_line+`
| kbd:[Alt+s]     | Пребацује стање активности модула за проверу правописа. | `+/mute spell toggle+`
|===

[[key_bindings_buffers_windows]]
==== Тастери за бафере / прозоре

[width="100%", cols="^.^3,.^8,.^5", options="header"]
|===
| Тастер             | Опис | Команда
| kbd:[Ctrl+l] (`L`) | Поново исцртава цео прозор. | `+/window refresh+`
| kbd:[Ctrl+s],
  kbd:[Ctrl+u]       | Поставља маркер непрочитано за све бафере. | `+/input set_unread+`
| kbd:[Ctrl+x]       | Пребацује текући бафер ако су бафери прикачени са истим бројем. | `+/input switch_active_buffer+`
| kbd:[Alt+x]        | Зум на спојени бафер (kbd:[Alt+x] поново: приказује све спојене бафере). | `+/input zoom_merged_buffer+`
| kbd:[PgUp]         | Скролује навише једну страну у историји бафера. | `+/window page_up+`
| kbd:[PgDn]         | Скролује наниже једну страну у историји бафера. | `+/window page_down+`
| kbd:[Alt+PgUp]     | Скролује навише неколико линија у историји бафера. | `+/window scroll_up+`
| kbd:[Alt+PgDn]     | Скролује наниже неколико линија у историји бафера. | `+/window scroll_down+`
| kbd:[Alt+Home]     | Скролује на врх бафера. | `+/window scroll_top+`
| kbd:[Alt+End]      | Скролује на дно бафера. | `+/window scroll_bottom+`
| kbd:[F1] +
  kbd:[Ctrl+F1]      | Скролује навише једну страну листе бафера. | `+/bar scroll buflist * -100%+`
| kbd:[F2] +
  kbd:[Ctrl+F2]      | Скролује наниже једну страну листе бафера. | `+/bar scroll buflist * +100%+`
| kbd:[Alt+F1]       | Скок на почетак листе бафера. | `+/bar scroll buflist * b+`
| kbd:[Alt+F2]       | Скок на крај листе бафера. | `+/bar scroll buflist * e+`
| kbd:[Alt+←] +
  kbd:[Alt+↑] +
  kbd:[Ctrl+p] +
  kbd:[F5]           | Пребацивање на претходни бафер. | `+/buffer -1+`
| kbd:[Alt+→] +
  kbd:[Alt+↓] +
  kbd:[Ctrl+n] +
  kbd:[F6]           | Пребацивање на наредни бафер. | `+/buffer +1+`
| kbd:[F7]           | Пребацивање на претходни прозор. | `+/window -1+`
| kbd:[F8]           | Пребацивање на наредни прозор. | `+/window +1+`
| kbd:[F9]           | Скролује наслов бафера у лево. | `+/bar scroll title * -30%+`
| kbd:[F10]          | Скролује наслов бафера у десно. | `+/bar scroll title * +30%+`
| kbd:[F11] +
  kbd:[Ctrl+F11]     | Скролује једну страну навише у листи надимака. | `+/bar scroll nicklist * -100%+`
| kbd:[F12] +
  kbd:[Ctrl+F12]     | Скролује једну страну наниже у листи надимака. | `+/bar scroll nicklist * +100%+`
| kbd:[Alt+F11]      | Скок на почетак листе надимака. | `+/bar scroll nicklist * b+`
| kbd:[Alt+F12]      | Скок на крај листе надимака. | `+/bar scroll nicklist * e+`
| kbd:[Alt+a]        | Пребацивање на следећи бафер у коме има активности (са приоритетом: истицање, порука, остало). | `+/input jump_smart+`
| kbd:[Alt+Shift+B]  | Пребацивање активности листе бафера. | `+/buflist toggle+`
| kbd:[Alt+h],
  kbd:[Alt+c]        | Брисање вруће листе (обавештења о активности у баферима). | `+/input hotlist_clear+`
| kbd:[Alt+h],
  kbd:[Alt+m]        | Уклањање текућег бафера из вруће листе. | `+/input hotlist_remove_buffer+`
| kbd:[Alt+h],
  kbd:[Alt+r]        | Враћање најновије вруће листе уклоњене из текућег бафера. | `+/input hotlist_restore_buffer+`
| kbd:[Alt+h],
  kbd:[Alt+Shift+R]  | Враћање најновије вруће листе уклоњене из свих бафера. | `+/input hotlist_restore_all+`
| kbd:[Alt+j],
  kbd:[Alt+f]        | Пребацивање на први бафер. | `+/buffer -+`
| kbd:[Alt+j],
  kbd:[Alt+l] (`L`)  | Пребацивање на последњи бафер. | `+/buffer ++`
| kbd:[Alt+j],
  kbd:[Alt+r]        | Пребацивање на сирови IRC бафер. | `+/server raw+`
| kbd:[Alt+j],
  kbd:[Alt+s]        | пребацивање на бафер IRC сервера. | `+/server jump+`
| kbd:[Alt+0...9]    | Пребацивање на бафер према броју (0 = 10). | `+/buffer *N+`
| kbd:[Alt+j],
  kbd:[01...99]      | Пребацивање на бафер према броју. | `+/buffer *NN+`
| kbd:[Alt+l] (`L`)  | Пребацивање активности огољеног приказа. | `+/window bare+`
| kbd:[Alt+m]        | Пребацивање активности миша. | `+/mouse toggle+`
| kbd:[Alt+n]        | Скроловање до наредног истицања. | `+/window scroll_next_highlight+`
| kbd:[Alt+Shift+N]  | Пребацивање видљивости траке листе надимака. | `+/bar toggle nicklist+`
| kbd:[Alt+p]        | Скроловање на претходно истицање. | `+/window scroll_previous_highlight+`
| kbd:[Alt+u]        | Скроловање на прву непрочитану линију у баферу. | `+/window scroll_unread+`
| kbd:[Alt+w],
  kbd:[Alt+↑]        | Прелаз на прозор изнад. | `+/window up+`
| kbd:[Alt+w],
  kbd:[Alt+↓]        | Прелаз на прозор испод. | `+/window down+`
| kbd:[Alt+w],
  kbd:[Alt+←]        | Прелаз на прозор са леве стране. | `+/window left+`
| kbd:[Alt+w],
  kbd:[Alt+→]        | Прелаз на прозор са десне стране. | `+/window right+`
| kbd:[Alt+w],
  kbd:[Alt+b]        | Уједначавање величине свих прозора. | `+/window balance+`
| kbd:[Alt+w],
  kbd:[Alt+s]        | Замена бафера два прозора. | `+/window swap+`
| kbd:[Alt+z]        | Зум на текући прозор (kbd:[Alt+z] поново: враћање почетног стања прозора, пре зумирања). | `+/window zoom+`
| kbd:[Alt+<]        | Прелаз на претходни бафер у листи посећених бафера. | `+/input jump_previously_visited_buffer+`
| kbd:[Alt+>]        | Прелаз на наредни бафер у листи посећених бафера. | `+/input jump_next_visited_buffer+`
| kbd:[Alt+/]        | Прелаз на последње приказани бафер. | `+/input jump_last_buffer_displayed+`
| kbd:[Alt+=]        | Пребацивање активности филтера. | `+/filter toggle+`
| kbd:[Alt+-]        | Пребацивање активности филтера у текућем баферу. | `+/filter toggle @+`
|===

[[key_bindings_search_context]]
==== Тастери за „search” контекст

Следећи тастери се користе у „search” контексту (када се притисне kbd:[Ctrl+r] за претрагу текста у баферу).

[width="100%", cols="^.^3,.^8,.^5", options="header"]
|===
| Тастер         | Опис | Команда
| kbd:[Ctrl+r]   | Пребацивање типа претраге: стринг (подраз.), регуларни израз. | `+/input search_switch_regex+`
| kbd:[Alt+c]    | Пребацивање разликовања величине слова у претраци. | `+/input search_switch_case+`
| kbd:[Tab]      | Пребацивање претраге у: порукама (подраз.), префиксима, префиксима + порукама. | `+/input search_switch_where+`
| kbd:[↑]        | Претрага претходне линије. | `+/input search_previous+`
| kbd:[↓]        | Претрага наредне линије. | `+/input search_next+`
| kbd:[Enter] +
  kbd:[Ctrl+j] +
  kbd:[Ctrl+m]   | Заустављање претраге на текућој позицији. | `+/input search_stop_here+`
| kbd:[Ctrl+q]   | Заустављање претраге и скроловање на дно бафера. | `+/input search_stop+`
|===

[[key_bindings_cursor_context]]
==== Тастери за „cursor” контекст

Ови тастери се користе у „cursor” контексту (слободно померање курсора по екрану).

[width="100%", cols="^.^3,^.^2,.^7,.^7", options="header"]
|===
| Тастер         | Површина       | Опис | Команда
| kbd:[↑]        | -              | Помера курсор једну линију навише. | `+/cursor move up+`
| kbd:[↓]        | -              | Помера курсор једну линију наниже. | `+/cursor move down+`
| kbd:[←]        | -              | Помера курсор једну колони у лево. | `+/cursor move left+`
| kbd:[→]        | -              | Помера курсор једну колону у десно. | `+/cursor move right+`
| kbd:[Alt+↑]    | -              | Помера курсор једну површину навише. | `+/cursor move area_up+`
| kbd:[Alt+↓]    | -              | Помера курсор једну површину наниже. | `+/cursor move area_down+`
| kbd:[Alt+←]    | -              | Помера курсор једну површину у лево. | `+/cursor move area_left+`
| kbd:[Alt+→]    | -              | Помера курсор једну површину у десно. | `+/cursor move area_right+`
| kbd:[m]        | чет            | Цитирање поруке. | `+hsignal:chat_quote_message;/cursor stop+`
| kbd:[q]        | чет            | Цитирање префикса + поруке. | `+hsignal:chat_quote_prefix_message;/cursor stop+`
| kbd:[Q]        | чет            | Quote time + prefix + message. | `+hsignal:chat_quote_time_prefix_message;/cursor stop+`
| kbd:[b]        | листа надимака | Забрањује надимак. | `+/window ${_window_number};/ban ${nick}+`
| kbd:[k]        | листа надимака | Избацује надимак. | `+/window ${_window_number};/kick ${nick}+`
| kbd:[K]        | листа надимака | Избацује и забрањује надимак. | `+/window ${_window_number};/kickban ${nick}+`
| kbd:[q]        | листа надимака | Отвара упит са надимком. | `+/window ${_window_number};/query ${nick};/cursor stop+`
| kbd:[w]        | листа надимака | Извршава whois над надимком. | `+/window ${_window_number};/whois ${nick}+`
| kbd:[Enter] +
  kbd:[Ctrl+j] +
  kbd:[Ctrl+m]   | -        | Зауставља режим померања курсора | `/cursor stop`
|===

[[key_bindings_mouse_context]]
==== Тастери за „mouse” контекст

Ови тастери се користе у „mouse” контексту, то јест када се јаве догађаји миша.

[width="100%", cols="^.^3,^.^3,^.^3,.^8,.^8", options="header"]
|===
| Тастер/Точкић ^(1)^ | Гестикулација      | Површина                | Опис | Команда
| ◾◽◽                | -            | чет                | Пребацивање на прозор. | `+/window ${_window_number}+`
| ◾◽◽                | лево         | чет                | Пребацивање на претходни бафер. | `+/window ${_window_number};/buffer +1+`
| ◾◽◽                | десно        | чет                | Пребацивање на наредни бафер. | `+/window ${_window_number};/buffer +1+`
| ◾◽◽                | лево (дуго)  | чет                | Пребацивање на први бафер. | `+/window ${_window_number};/buffer 1+`
| ◾◽◽                | десно (дуго) | чет                | Пребацивање на последњи бафер. | `+/window ${_window_number};/input jump_last_buffer+`
| kbd:[▲]            | -            | чет                | Скролује навише неколико линија у историји бафера. | `+/window scroll_up -window ${_window_number}+`
| kbd:[▼]            | -            | чет                | Скролује наниже неколико линија у историји бафера. | `+/window scroll_down -window ${_window_number}+`
| kbd:[Ctrl+▲]       | -            | чет                | Скролује хоризонтално у лево. | `+/window scroll_horiz -window ${_window_number} -10%+`
| kbd:[Ctrl+▼]       | -            | чет                | Скролује хоризонтално у десно. | `+/window scroll_horiz -window ${_window_number} +10%+`
| kbd:[▲]            | -            | чет: fset бафер   | Помера за пет линија навише у fset баферу. | `+/fset -up 5+`
| kbd:[▼]            | -            | чет: fset бафер   | Помера за пет линија наниже у fset баферу. | `+/fset -down 5+`
| ◾◽◽                | -            | чет: fset бафер   | Бира линију у fset баферу. | `+/window ${_window_number};/fset -go ${_chat_line_y}+`
| ◽◽◾                | -            | чет: fset бафер   | Пребацује логичку вредност (on/off) или уређује вредност опције. | `+hsignal:fset_mouse+`
| ◽◽◾                | лево         | чет: fset бафер   | Умањује вредност за цео број/боју, поставља/надовезује вредност за остале типове. | `+hsignal:fset_mouse+`
| ◽◽◾                | десно        | чет: fset бафер   | Увећава вредност за цео број/боју, поставља/надовезује вредност за остале типове. | `+hsignal:fset_mouse+`
| ◽◽◾                | горе / доле  | чет: fset бафер   | Маркира/уклања маркер са више опција. | `+hsignal:fset_mouse+`
| kbd:[▲]            | -            | чет: script бафер | Помера за пет линија навише у script баферу. | `+/script up 5+`
| kbd:[▼]            | -            | чет: script бафер | Помера за пет линија наниже у script баферу. | `+/script down 5+`
| ◾◽◽                | -            | chat: script бафер | Бира линију у script баферу. | `+/script go ${_chat_line_y}+`
| ◽◽◾                | -            | chat: script бафер | Инсталира/уклања скрипту. | `+/script go ${_chat_line_y};/script installremove -q ${script_name_with_extension}+`
| ◾◽◽                | горе / лево  | листа бафера       | Помера бафер на нижи број. | Signal `+buflist_mouse+`.
| ◾◽◽                | доле / десно | листа бафера       | Помера бафер на виши број. | Signal `+buflist_mouse+`.
| ◾◽◽                | -            | листа бафера       | Пребацивање на бафер (претходно посећени багер ако је бафер текући). | Signal `+buflist_mouse+`.
| ◽◽◾                | -            | листа бафера       | Пребацивање на наредни посећени бафер ако је бафер текући. | Signal `+buflist_mouse+`.
| kbd:[Ctrl+▲]       | -            | листа бафера       | Пребацивање на претходни бафер. | Signal `+buflist_mouse+`.
| kbd:[Ctrl+▼]       | -            | листа бафера        | Пребацивање на наредни бафер. | Signal `+buflist_mouse+`.
| ◾◽◽                | горе         | листа надимака      | Скроловање једне стране навише у листи надимака. | `+/bar scroll nicklist ${_window_number} -100%+`
| ◾◽◽                | доле         | листа надимака      | Скроловање једне стране наниже у листи надимака. | `+/bar scroll nicklist ${_window_number} +100%+`
| ◾◽◽                | горе (дуго)  | листа надимака      | Скок на почетак листе надимака. | `+/bar scroll nicklist ${_window_number} b+`
| ◾◽◽                | доле (дуго)  | листа надимака      | Скок на крај листе надимака. | `+/bar scroll nicklist ${_window_number} e+`
| ◾◽◽                | -            | листа надимака      | Отварање упита са надимком. | `+/window ${_window_number};/query ${nick}+`
| ◽◽◾                | -            | листа надимака      | Извршавање whois над надимком. | `+/window ${_window_number};/whois ${nick}+`
| ◾◽◽                | лево         | листа надимака      | Избацивање надимка. | `+/window ${_window_number};/kick ${nick}+`
| ◾◽◽                | лево (дуго)  | листа надимака      | Избацивање и забрана надимка. | `+/window ${_window_number};/kickban ${nick}+`
| ◽◽◾                | лево         | листа надимака      | Забрана надимка. | `+/window ${_window_number};/ban ${nick}+`
| ◽◽◾                | -            | унос                | Хвата догађај миша и умеће његов кôд у командну линију. | `+/input grab_mouse_area+`
| kbd:[▲]            | -            | било која трака     | Скролује траку за -20%. | `+/bar scroll ${_bar_name} ${_window_number} -20%+`
| kbd:[▼]            | -            | било која трака     | Скролује траку за +20%. | `+/bar scroll ${_bar_name} ${_window_number} +20%+`
| ◽◾◽                | -            | било где            | Започиње режим померања курсора на овој тачки. | `+/cursor go ${_x},${_y}+`
|===

[NOTE]
^(1)^ kbd:[▲] и kbd:[▼] значе точкић навише и наниже.

[[key_bindings_fset_buffer]]
==== Тастери за fset бафер

Ови тастери и акције се користе у fset баферу (погледајте<<fset_plugin,Fset додатак>>).

[width="100%", cols="^.^3,^.^2,.^8,.^5", options="header"]
|===
| Тастер             | Акција ^(1)^ | Опис | Команда
| kbd:[↑]            |              | Помера једну линију навише. | `+/fset -up+`
| kbd:[↓]            |              | Помера једну линију наниже. | `+/fset -down+`
| kbd:[PgUp]         |              | Помера једну страну навише. | `+/window page_up+`
| kbd:[PgDn]         |              | Помера једну страну наниже. | `+/window page_down+`
| kbd:[Alt+Home]     | `pass:[<<]`  | Скок на прву линију. | `+/fset -go 0+`
| kbd:[Alt+End]      | `pass:[>>]`  | Скок на последњу линију. | `+/fset -go end+`
| kbd:[F11]          | `pass:[<]`   | Скролује хоризонтално у лево. | `+/fset -left+`
| kbd:[F12]          | `pass:[>]`   | Скролује хоризонтално у десно. | `+/fset -right+`
| kbd:[Alt+Space]    | `t`          | Пребацује стање логичке вредности. | `+/fset -toggle+`
| kbd:[Alt+-]        | `-`          | Одузима 1 од вредности за цео број/боју, поставља вредност за остале типове. | `+/fset -add -1+`
| kbd:[Alt++]        | `+`          | Додаје 1 на вредност за цео број/боју, надовезује вредност за остале типове. | `+/fset -add 1+`
| kbd:[Alt+f],
  kbd:[Alt+r]        | `r`          | Ресетује вредност. | `+/fset -reset+`
| kbd:[Alt+f],
  kbd:[Alt+u]        | `u`          | Поставља да је вредност празна. | `+/fset -unset+`
| kbd:[Alt+Enter]    | `s`          | Поставља вредност. | `+/fset -set+`
| kbd:[Alt+f],
  kbd:[Alt+n]        | `n`          | Поставља нову вредност. | `+/fset -setnew+`
| kbd:[Alt+f],
  kbd:[Alt+a]        | `a`          | Надовезује на вредност. | `+/fset -append+`
| kbd:[Alt+,]        | `,`          | Маркира/уклања маркирање са опције. | `+/fset -mark 1+`
| kbd:[Shift+↑]      |              | Помера једну линију навише и маркира/уклања маркирање са опције. | `+/fset -up; /fset -mark+`
| kbd:[Shift+↓]      |              | Маркира/уклања маркирање са опције и помера се једну линију наниже. | `+/fset -mark; /fset -down+`
|                    | `m:xxx`      | Маркира приказане опције које се подударају са филтером „xxx” (дозвољава се било који филтер над опцијом или вредности, погледајте <<command_fset_fset,fset команду>>). |
|                    | `u:xxx`      | Уклања маркирање са приказаних опција које се подударају са филтером „xxx” (дозвољава се било који филтер над опцијом или вредности, погледајте <<command_fset_fset,fset команду>>). |
| kbd:[Ctrl+l] (`L`) |              | Освежава опције и цео екран. | `+/fset -refresh+`
|                    | `$`          | Освежава опције (маркиране опције остају маркиране). |
|                    | `$$`         | Освежава опције (уклања се маркирање са свих опција). |
| kbd:[Alt+p]        |              | Пребацује стање опција описа додатка (`pass:[plugins.desc.*]`). | `+/mute /set fset.look.show_plugins_desc toggle+`
| kbd:[Alt+v]        |              | Пребацује стање видљивости траке помоћи. | `+/bar toggle fset+`
|                    | `s:x,y`      | Сортира опције по пољима x,y (погледајте опцију <<option_fset.look.sort,fset.look.sort>>). | `+/mute /set fset.look.sort x,y+`
|                    | `s:`         | Ресетује сортирање на подразумевану вредност (погледајте опцију <<option_fset.look.sort,fset.look.sort>>). | `+/mute /unset fset.look.sort+`
|                    | `w:xxx`      | Извози опције у фајл „xxx”. | `+/fset -export xxx+`
|                    | `w-:xxx`     | Извози опције у фајл „xxx” без помоћи. | `+/fset -export -nohelp xxx+`
|                    | `w+:xxx`     | Извози опције у фајл „xxx” заједно са помоћи. | `+/fset -export -help xxx+`
| kbd:[Ctrl+x]       | `x`          | Пребацује формат који се користи за приказ опција. | `+/fset -format+`
|                    | `q`          | Затвара fset бафер. | `+/buffer close+`
|===

[NOTE]
^(1)^ Акција мора да се унесе као унос у командну линију, након чега се притисне kbd:[Ентер].

[[key_bindings_script_buffer]]
==== Тастери за script бафер

Ови тастери и акције се користе у script баферу (погледајте <<scripts_plugins,Script додатак>>).

[width="100%", cols="^.^3,^.^2,.^8,.^5", options="header"]
|===
| Тастер             | Акција ^(1)^ | Опис | Команда
| kbd:[↑]            |              | Помера једну линију навише. | `+/script up+`
| kbd:[↓]            |              | Помера једну линију наниже. | `+/script down+`
| kbd:[PgUp]         |              | Помера једну страну навише. | `+/window page_up+`
| kbd:[PgDn]         |              | Помера једну страну наниже. | `+/window page_down+`
| kbd:[Alt+i]        | `i`          | Инсталира скрипту. | `+/script install+`
| kbd:[Alt+r]        | `r`          | Брише скрипту. | `+/script remove+`
| kbd:[Alt+l] (`L`)  | `l`          | Учитава скрипту. | `+/script load+`
| kbd:[Alt+u]        | `u`          | Уклања скрипту из меморије. | `+/script unload+`
| kbd:[Alt+Shift+A]  | `A`          | Аутоучитавање скрипте. | `+/script toggleautoload+`
| kbd:[Alt+h]        | `h`          | Задржава/отпушта скрипту. | `+/script hold+`
| kbd:[Alt+v]        | `v`          | Преглед скрипте. | `+/script show+`
|===

[NOTE]
^(1)^ Акција мора да се унесе као унос у командну линију, након чега се притисне kbd:[Ентер].

[[mouse]]
=== Подршка за миша

Програм WeeChat подржава кликове и гестикулације мишем. Ради са локалним терминалом, и удаљено преко ssh везе са или без screen/tmux.

[[mouse_enable]]
==== Укључивање миша

Ако при покретању програма желите да укључите миша:

----
/set weechat.look.mouse on
----

Ако тренутно желите да укључите миша, притисните kbd:[Alt+m] или извршите команду:

----
/mouse enable
----

Миш може привремено да се искључи, а то можете и да вежете за тастер. На пример тастер kbd:[Alt+%] да се на 10 секунди искључи миш:

----
/key bind meta-% /mouse toggle 10
----

[IMPORTANT]
Када се у програму WeeChat укључи миш, он хвата све догађаје миша, тако да се акције као што су копирање/налепљивање или кликови на URL адресе не шаљу терминалу. Употреба тастера kbd:[Shift] чини да се догађаји шаљу директно терминалу, као да је миш искључен (на неким терминалима као што је iTerm, морате уместо kbd:[Shift] да употребите kbd:[Alt]).

[NOTE]
Ако имате било какав проблем са мишем, молимо вас да погледате link:weechat_faq.sr.html#mouse[WeeChat ЧПП / Миш].

[[mouse_bind_events]]
==== Везивање догађаја миша за команде

Програм WeeChat је већ дефинисао подразумеване догађаје миша (погледајте <<key_bindings_mouse_context,тастере за „mouse” контекст>>).

Командом `/key`, уз употребу контекста „mouse”, можете да измените или да додате нова везивања тастера (у вези синтаксе, погледајте команду <<command_weechat_key,/key>>).

Име догађаја се састоји од модификатора (није обавезан), имена тастера/точкића и гестикулације (није обавезна). Различити елементи се раздвајају са `+-+`.

Листа модификатора:

[width="100%", cols="1m,4", options="header"]
|===
| Модификатор | Опис
| ctrl        | Тастер kbd:[Ctrl]
| alt         | Тастер kbd:[Alt]
| ctrl-alt    | Тастери kbd:[Ctrl] + kbd:[Alt]
|===

Листа тастера/точкића:

[width="100%", cols="1m,4", options="header"]
|===
| Тастер/точкић       | Опис
| button1             | Клик левим тастером
| button2             | Клик десним тастером
| button3             | Клик средњим тастером (често је то клик точкићем)
| button4 ... button9 | Клик на додатне тастере
| wheelup             | Точкић (навише)
| wheeldown           | Точкић (наниже)
|===

Листа гестикулација (само за тастере, не за точкић):

[width="100%", cols="1m,4", options="header"]
|===
| Гестикулација      | Растојање
| gesture-up         | 3 ... 19
| gesture-up-long    | ≥ 20
| gesture-down       | 3 ... 19
| gesture-down-long  | ≥ 20
| gesture-left       | 3 ... 39
| gesture-left-long  | ≥ 40
| gesture-right      | 3 ... 39
| gesture-right-long | ≥ 40
|===

Листа некомплетних догађаја (само за тастере, корисно је у додацима/скриптама):

[width="100%", cols="1m,4", options="header"]
|===
| Догађај    | Опис
| event-down | Тастер је притиснут, али још увек није отпуштен
| event-drag | Миш је померен док се тастер држао притиснут
|===

Примери догађаја:

* `button1`
* `ctrl-button1`
* `button1-gesture-right`
* `button1-event-down`
* `button1-event-drag`
* `alt-button2-gesture-down-long`
* `wheelup`
* `ctrl-alt-wheeldown`
* ...

[TIP]
Када се тастер везује у „mouse” контексту, могуће је подударање са више догађаја користећи `+*+` на почетку или крају имена, на пример `+button1-gesture-*+` ће да се подудари са било којом гестикулацијом која користи леви тастер миша.

[TIP]
Име догађаја можете сазнати командом `+/input grab_mouse+`, па извршавањем догађаја мишем. Ово ће да уметне име догађаја који сете извели у командну линију.

[[secured_data]]
=== Обезбеђени подаци

[[secured_data_storage]]
==== Чување

Програм WeeChat може да шифрује лозинке или приватне податке употребом обезбеђених података који се чувају у фајлу _sec.conf_.

Овај конфигурациони фајл се чита пре свих осталих, па се вредности из њега могу користити у разним опцијама програма WeeChat или опцијама додатака/скрипти.

Можете поставити тајну реченицу за шифровање података у фајлу _sec.conf_. То није обавезно, али се топло препоручује, јер ако то не учините подаци се у фајл уписују као чист текст.

----
/secure passphrase ово је моја тајна реченица
----

[[secured_data_passphrase_on_startup]]
===== Тајна реченица током покретања

Када је тајна реченица постављена, програм WeeChat ће од вас тражити да је унесете током покретања програма (али не и током `/upgrade`).

Ако користите менаџер лозинки, можете да покренете спољни програм из којег ће се прочитати лозинка, тако да не морате ручно да је уносите током покретања програма WeeChat. +
На пример, са password-store (команда `pass`):

----
/set sec.crypt.passphrase_command "/usr/bin/pass show weechat/passphrase"
----

Програм може тражити да откључате свој GPG кључ или да унесете другу тајну реченицу како би могао да прочита тајну. Програм WeeChat ће сачекати да команда заврши своје извршавање и прочитаће тајну реченицу са стандардног излаза (она мора бити у првој линији, без икаквих додатних карактера). +
Ако излаз не садржи тајну реченицу, или ако је она погрешна, програм WeeChat ће онда од вас тражити да је унесете.

[[secured_data_encryption]]
===== Шифрирање

Шифрирање података се ради у 3 корака:

. Извођење кључа из тајне реченица (уз необавезну со).
. Израчунавање хеша података који треба да се шифрирају.
. Шифрирање хеша + података (излаз је: со + шифрирани хеш/подаци).

[NOTE]
Блок режим шифре је _CFB_.

Резултат се као хексадецимални стринг поставља у фајл _sec.conf_, на пример:

----
[data]
__passphrase__ = on
libera = "53B1C86FCDA28FC122A95B0456ABD79B5AB74654F21C3D099A6CCA8173239EEA59533A1D83011251F96778AC3F5166A394"
----

[[secured_data_decryption]]
===== Дешифровање

Дешифровање података се ради у 3 корака:

. Извођење кључа употребом соли и тајне реченице.
. Дешифровање хеша + података.
. Провера да ли дешифровани хеш == хеш података.

[[secured_data_manage]]
==== Управљање обезбеђеним подацима

Да бисте додали обезбеђене податке, употребите `/secure set`, на пример лозинку за _libera_ IRC сервер:

----
/secure set libera мојалозинка
----

Да би се олакшао рад, обезбеђени подаци могу да се прикажу у посебном баферу (kbd:[Alt+v] у баферу да видите вредности), једноставно извршите:

----
/secure
----

Обезбеђени подаци могу да се користе у неким опцијама које садрже приватне податке као што су лозинке, употребом формата: „${sec.data.xxx}” где је „xxx” име обезбеђених података (постављених са `/secure set xxx ...`). +
За комплетну листу подржаних опција, погледајте `/help secure`.

Да бисте употребили _libera_ лозинку, на пример са <<irc_sasl_authentication,SASL аутентификацијом>>:

----
/set irc.server.libera.sasl_password "${sec.data.libera}"
----

[[commands_and_options]]
=== Команде и опције

[[weechat_commands]]
==== WeeChat команде

include::includes/autogen_user_commands.sr.adoc[tag=weechat_commands]

[[sec_options]]
==== Опције за обезбеђене податке

Одељци у фајлу _sec.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак  | Команда за контролу                | Опис
| crypt   | /set sec.crypt.*                   | Опције за шифровање.
| data    | <<command_weechat_secure,/secure>> | Обезбеђени подаци.
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=sec_options]

[[weechat_options]]
==== WeeChat опције

Одељци у фајлу _weechat.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак     | Команда за контролу                       | Опис
| debug      | <<command_weechat_debug,/debug set>>      +
               /set weechat.debug.*                      | Дибаг ниво, за језгро и додатке (у одељку је могуће додавање/уклањање опција).
| startup    | /set weechat.startup.*                    | Опције покретања програма.
| look       | /set weechat.look.*                       | Изглед и осећај.
| palette    | <<command_weechat_color,/color alias>>    +
               /set weechat.palette.*                    | Алијаси боја (у одељку је могуће додавање/уклањање опција).
| color      | /set weechat.color.*                      | Боје.
| completion | /set weechat.completion.*                 | Опције довршавања.
| history    | /set weechat.history.*                    | Опције историје (команди и бафера).
| proxy      | <<command_weechat_proxy,/proxy>>          +
               /set weechat.proxy.*                      | Прокси опције.
| network    | /set weechat.network.*                    | Мрежне/SSL опције.
| plugin     | /set weechat.plugin.*                     | Опције додатака.
| signal     | /set weechat.signal.*                     | Опције сигнала.
| bar        | <<command_weechat_bar,/bar>>              +
               /set weechat.bar.*                        | Опције трака.
| layout     | <<command_weechat_layout,/layout>>        | Распореди.
| notify     | <<command_weechat_buffer,/buffer notify>> | Нивои обавештавања за бафере (у одељку је могуће додавање/уклањање опција).
| filter     | <<command_weechat_filter,/filter>>        | Филтери.
| key        | <<command_weechat_key,/key>>              | Тастери у подразумеваном контексту.
| key_search | <<command_weechat_key,/key>>              | Тастери у search контексту.
| key_cursor | <<command_weechat_key,/key>>              | Тастери у cursor контексту.
| key_mouse  | <<command_weechat_key,/key>>              | Тастери у mouse конексту.
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=weechat_options]

[[plugins]]
== Додаци

Додатак је динамичка библиотека коју учитава програм WeeChat, написана на језику C и компајлирана. На GNU/Linux систему, фајл има „.so” екстензију, а „.dll” на систему Windows.

Додаци се аутоматски учитавају током покретања програма WeeChat, а могу да се учитавају или уклањају из меморије док се програм WeeChat извршава.

Важно је да се направи разлика између _додатка_ и _скрипте_: _додатак_ је бинарни фајл који се компајлира и учитава командом `/plugin`, док је _скрипта_ текст фајл који се учитава додатком као што је _python_ командом `/python`.

За учитавање/уклањање из меморије можете користити команду `/plugin`, или да прикажете листу свих учитаних додатака.

Када се додатак уклони из меморије, програм WeeChat уклања:

* бафере
* конфигурационе опције (опције се уписују у фајлове)
* све куке: команде, модификатори, процес, итд.
* инфо и инфолисте
* hdata
* ставке траке

Примери учитавања, уклањања из меморије или приказа листе додатака:

----
/plugin load irc
/plugin unload irc
/plugin list
----

Ово су подразумевани додаци:

[width="100%", cols="1,5", options="header"]
|===
| Додатак    | Опис
| alias      | Дефиниција алијаса за команде.
| buflist    | Ставка траке са листом бафера.
| charset    | Декодирање/кодирање у скуп карактера за бафере.
| exec       | Извршавање спољних команди из програма WeeChat.
| fifo       | FIFO пајп који се користи за удаљено слање команди програму WeeChat.
| fset       | Брзо постављање опција програма WeeChat и опција додатака.
| irc        | IRC чет протокол.
| logger     | Логовање бафера у фајлове.
| relay      | Релеј података преко мреже.
| script     | Управљач скриптама.
| python     | Python API .
| perl       | Perl API скриптовања.
| ruby       | Ruby API скриптовања.
| lua        | Lua API скриптовања.
| tcl        | Tcl API скриптовања.
| guile      | Guile (scheme) API скриптовања.
| javascript | JavaScript API скриптовања.
| php        | PHP API скриптовања.
| spell      | Провера правописа за командну линију.
| trigger    | Замена текста и извршавање команди приликом догађаја које окида програм WeeChat/додаци.
| typing     | Приказује кориснике који тренутно пишу поруке.
| xfer       | Пренос фајлова и директни разговор.
|===

За више информација о развоју додатака или скрипти (помоћу API), молимо вас да прочитате link:weechat_plugin_api.sr.html[WeeChat референтно упутство за API додатака] или link:weechat_scripting.sr.html[WeeChat водич за скриптовање].

[[alias_plugin]]
=== Алијас

Алијас додатак вам омогућава да креирате алијасе за команде (из програма WeeChat или осталих додатака).

Неки алијаси се подразумевано креирају, са именом исписаним великим словима (како би се разликовали од обичних команди); у програму WeeChat команде не разликују величину слова, тако да на пример, `/close` покреће алијас `/CLOSE`.

Листа подразумеваних алијаса:

include::includes/autogen_user_default_aliases.sr.adoc[tag=default_aliases]

[[alias_commands]]
==== Команде

include::includes/autogen_user_commands.sr.adoc[tag=alias_commands]

[[alias_options]]
==== Опције

Одељци у фајлу _alias.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак     | Команда за контролу            | Опис
| cmd        | <<command_alias_alias,/alias>> +
               /set alias.cmd.*               | Команде за алијасе.
| completion | <<command_alias_alias,/alias>> +
               /set alias.completion.*        | Довршавања за алијасе.
|===

[[buflist_plugin]]
=== Buflist

Buflist додатак приказује листу бафера у ставки траке која се зове „buflist” (такође су доступне још две ставке траке „buflist2” и „buflist3”). +
Подразумевана трака „buflist” са овом ставком се креира током покретања програма.

[[buflist_commands]]
==== Команде

include::includes/autogen_user_commands.sr.adoc[tag=buflist_commands]

[[buflist_options]]
==== Опције

Одељци у фајлу _buflist.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак  | Команда за контролу   | Опис
| format  | /set buflist.format.* | Формати који се користе за приказ листе бафера.
| look    | /set buflist.look.*   | Изглед и осећај.
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=buflist_options]

[[charset_plugin]]
=== Charset

Charset додатак вам омогућава да декодирате и кодирате податке употребом скупова карактера.

Постоји подразумевани скуп карактера за декодирање/кодирање, као и одређени скупови карактера за бафере (или групу бафера).

Овај додатак није обавезан, али се препоручује његова употреба: ако се не учита, програм WeeChat може да чита/пише само UTF-8 податке.

Програм WeeChat би требало аутоматски да учитава charset додатак. Да бисте били сигурни да је учитан, покушајте следеће:

----
/charset
----

Ако се команда не пронађе, онда учитајте додатак командом:

----
/plugin load charset
----

Ако додатак не може да се пронађе, онда би требало поново да компајлирате програм WeeChat са додацима и подршком за Charset.

Када се charset додатак покрене, он приказује скуп карактера терминала као и интерни скуп карактера. Скуп карактера терминала зависи од вашег локал подешавања, а интерно је UTF-8.

На пример:

....
charset: терминал: ISO-8859-15, интерно: UTF-8
....

[[charset_set]]
==== Постављање скупа карактера

Ако желите да поставите глобалне скупове карактера за кодирање и декодирање, употребите команду `/set`.

На пример:

----
/set charset.default.decode ISO-8859-15
/set charset.default.encode ISO-8859-15
----

Ако се не постави глобални скуп карактера за декодирање (на пример током првог учитавања Charset додатка), он ће се аутоматски поставити на скуп карактера који користи терминал (у случају да није UTF-8), или подразумевано на _ISO-8859-1_.

Подразумевана вредност за кодирање је празна, тако да се подразумевано шаље употребом интерног скупа карактера (UTF-8).

Ако желите да поставите скуп карактера IRC сервера, употребите команду `/charset` у серверском баферу. Ако наведете само скуп карактера, онда ће команда поставити вредности за декодирање и кодирање.

На пример:

----
/charset ISO-8859-15
----

Еквивалентно је са:

----
/charset decode ISO-8859-15
/charset encode ISO-8859-15
----

Ако желите да поставите скуп карактера за IRC канал (или приватни разговор), употребите исте команде као за сервер, али у баферу канала (или приватног разговора).

Ако желите да поставите скуп карактера за све канале/приватне разговоре на IRC серверу:

----
/set charset.encode.irc.libera ISO-8859-15
----

Да бисте видели све коришћене скупове карактера, извршите следећу команду:

----
/set charset.*
----

[[charset_troubleshooting]]
==== Решавање проблема

Ако имате било каквих проблема са скуповима карактера, молимо вас да погледате link:weechat_faq.sr.html#charset[WeeChat ЧПП / Скуп карактера].

[[charset_commands]]
==== Команде

include::includes/autogen_user_commands.sr.adoc[tag=charset_commands]

[[charset_options]]
==== Опције

Одељци у фајлу _charset.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак  | Команда за контролу                         | Опис
| default | /set charset.default.*                      | Подразумевани скуп карактера за декодирање/кодирање.
| decode  | <<command_charset_charset,/charset decode>> +
            /set charset.decode.*                       | Скуп карактера у који се декодира по баферу (у одељку је могуће додавање/уклањање опција).
| encode  | <<command_charset_charset,/charset encode>> +
            /set charset.encode.*                       | Скуп карактера у који се кодира, по баферу (у одељку је могуће додавање/уклањање опција).
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=charset_options]

[[exec_plugin]]
=== Exec

Команда `/exec` вам омогућава да извршите спољне команде из програма WeeChat и да локално прикажете њихов излаз, или да га пошаљете у бафер.

[[exec_commands]]
==== Команде

include::includes/autogen_user_commands.sr.adoc[tag=exec_commands]

[[exec_options]]
==== Опције

Одељци у фајлу _exec.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак  | Команда за контролу | Опис
| command | /set exec.command.* | Опције за команде.
| color   | /set exec.color.*   | Боје.
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=exec_options]

[[fifo_plugin]]
=== Fifo

Програм WeeChat можете даљински да контролишете слањем команди или текста у FIFO пајп (ако је укључена опција „fifo.file.enabled”, што је подразумевано).

FIFO пајп се налази у WeeChat директоријуму за време извршавања (runtime) и подразумевано се зове _weechat_fifo_12345_ (где је _12345_ id процеса програма WeeChat).

Синтакса за FIFO пајп команде/текст је једно од следећих:

....
  plugin.buffer *овде иде текст или команда
  *овде иде текст или команда
....

Неки примери:

* Измена надимка на IRC серверу libera на „newnick”:

----
$ echo 'irc.server.libera */nick newnick' >/run/user/1000/weechat/weechat_fifo_12345
----

* Слање поруке на #weechat IRC канал:

----
$ echo 'irc.libera.#weechat *hello!' >/run/user/1000/weechat/weechat_fifo_12345
----

* Слање поруке у текући бафер:

----
$ echo '*здраво!' >/run/user/1000/weechat/weechat_fifo_12345
----

* Слање две команде за уклањање из меморије/поновно учитавање Python скрипти (морате да их раздвојите са „\n”):

----
$ printf '%b' '*/python unload\n*/python autoload\n' >/run/user/1000/weechat/weechat_fifo_12345
----

[[fifo_commands]]
==== Команде

include::includes/autogen_user_commands.sr.adoc[tag=fifo_commands]

[[fifo_options]]
==== Опције

Одељци у фајлу _fifo.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак  | Команда за контролу | Опис
| file    | /set fifo.file.*    | Контрола FIFO пајпа.
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=fifo_options]

[[fset_plugin]]
=== Fset

Fast Set додатак приказује листу опција у баферу и помаже вам да постављате WeeChat опције и опције додатака.

[[fset_commands]]
==== Команде

include::includes/autogen_user_commands.sr.adoc[tag=fset_commands]

[[fset_options]]
==== Опције

Одељци у фајлу _fset.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак  | Команда за контролу | Опис
| color   | /set fset.color.*   | Боје.
| format  | /set fset.format.*  | Формати који се користе за приказ команди.
| look    | /set fset.look.*    | Изглед и осећај.
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=fset_options]

[[irc_plugin]]
=== IRC

IRC додатак је дизајниран за чет са другим људима преко IRC протокола.

Подржава више сервера и нуди све подржане IRC команде, укључујући DCC чет и пренос фајлова (преко xfer додатка, погледајте <<xfer_plugin,Xfer додатак>>).

[[irc_command_line_options]]
==== Опције командне линије

URL за један или више IRC сервера може да се зада на следећи начин:

----
irc[6][s]://[надимак[:лозинка]@]irc.пример.org[:порт][/канал][,канал[...]]
----

Пример за приступ каналима _#weechat_ и _#weechat-fr_ на серверу _irc.libera.chat_,подразумевани порт (6667), користећи надимак _alice_:

----
$ weechat irc://alice@irc.libera.chat/#weechat,#weechat-fr
----

[[irc_servers]]
==== Сервери

[[irc_servers_add]]
===== Додавање сервера

Подразумевано није дефинисан ниједан сервер. Командом <<command_irc_server,/server>>
можете додати произвољан број сервера.

На пример, да бисте се повезали на https://libera.chat/[libera.chat] са SSL (шифровани саобраћај):

----
/server add libera irc.libera.chat/6697 -ssl
----

Програму WeeChat можете наложити да се приликом покретања аутоматски повеже са овим сервером:

----
/set irc.server.libera.autoconnect on
----

За аутентификацију се препоручује употреба SASL (ако сервер подржава),
са лозинком сачуваном као обезбеђени податак (погледајте такође поглавље
о <<irc_sasl_authentication,SASL аутентификацији>>):

----
/set irc.server.libera.sasl_username "alice"
/secure set libera xxxxxxx
/set irc.server.libera.sasl_password "${sec.data.libera}"
----

Ако се SASL не подржава, можете да употребите команду која шаље поруку nickserv:

----
/set irc.server.libera.command "/msg nickserv identify ${sec.data.libera}"
----

[NOTE]
Ако пошаљете поруку сервису nickserv, постоји могућност да се аутентификујете након
приступања каналу, што може да представља проблем на неким каналима који захтевају
да се аутентификујете пре приступања. У овом случају, можете поставити кашњење за команду:
`/set irc.server.libera.command_delay 5`.

[[irc_servers_options]]
===== Опције сервера

Опције сервера се називају `irc.server.<сервер>.<опција>` где је `<сервер>` интерно
име сервера, а `<опција>` је име опције. +
У случају када опција сервера има специјалну вредност `null`, стварна вредност се
наслеђује из `irc.server_default.xxx`.

На пример, ако сте креирали _libera_ сервер са командама наведеним изнад, видећете
следећи списак када будете извршите команду `/fset libera`:

....
irc.server.libera.addresses             string   "irc.libera.chat/6697"
irc.server.libera.anti_flood_prio_high  integer  null -> 2
irc.server.libera.anti_flood_prio_low   integer  null -> 2
irc.server.libera.autoconnect           boolean  on
irc.server.libera.autojoin              string   null -> ""
irc.server.libera.autoreconnect         boolean  null -> on
irc.server.libera.autoreconnect_delay   integer  null -> 10
irc.server.libera.autorejoin            boolean  null -> off
irc.server.libera.autorejoin_delay      integer  null -> 30
irc.server.libera.away_check            integer  null -> 0
irc.server.libera.away_check_max_nicks  integer  null -> 25
irc.server.libera.capabilities          string   null -> "*"
irc.server.libera.charset_message       integer  null -> message
irc.server.libera.command               string   null -> ""
irc.server.libera.command_delay         integer  null -> 0
irc.server.libera.connection_timeout    integer  null -> 60
irc.server.libera.default_chantypes     string   null -> "#&"
irc.server.libera.ipv6                  boolean  null -> on
irc.server.libera.local_hostname        string   null -> ""
irc.server.libera.msg_kick              string   null -> ""
irc.server.libera.msg_part              string   null -> "WeeChat ${info:version}"
irc.server.libera.msg_quit              string   null -> "WeeChat ${info:version}"
irc.server.libera.nicks                 string   null -> "alice,alice1,alice2,alice3,alice4"
irc.server.libera.nicks_alternate       boolean  null -> on
irc.server.libera.notify                string   null -> ""
irc.server.libera.password              string   null -> ""
irc.server.libera.proxy                 string   null -> ""
irc.server.libera.realname              string   null -> ""
irc.server.libera.sasl_fail             integer  null -> reconnect
irc.server.libera.sasl_key              string   null -> ""
irc.server.libera.sasl_mechanism        integer  null -> plain
irc.server.libera.sasl_password         string   "${sec.data.libera}"
irc.server.libera.sasl_timeout          integer  null -> 15
irc.server.libera.sasl_username         string   "alice"
irc.server.libera.split_msg_max_length  integer  null -> 512
irc.server.libera.ssl                   boolean  on
irc.server.libera.ssl_cert              string   null -> ""
irc.server.libera.ssl_dhkey_size        integer  null -> 2048
irc.server.libera.ssl_fingerprint       string   null -> ""
irc.server.libera.ssl_password          string   null -> ""
irc.server.libera.ssl_priorities        string   null -> "NORMAL:-VERS-SSL3.0"
irc.server.libera.ssl_verify            boolean  null -> on
irc.server.libera.usermode              string   null -> ""
irc.server.libera.username              string   null -> "alice"
....

На пример, ако желите да се аутоматски повежете са свим серверима које сте дефинисали, без
потребе да то подешавате за сваки од њих посебно, можете да урадите следеће:

----
/set irc.server_default.autoconnect on
----

Па затим можете да ресетујете серверску опцију тако да користи подразумевану, наслеђену
вредност, која је сада `on` уместо подразумеване вредности `off`:

----
/unset irc.server.libera.autoconnect
----

[[irc_ssl_certificates]]
===== SSL сертификати

Када се са IRC серверима успоставља веза преко SSL, програм WeeChat подразумевано проверава да ли се вези потпуно верује.

Неке опције се користе за контролу SSL везе:

weechat.network.gnutls_ca_system::
    током покретања учитава подразумеване системске сертификате којима се верује

weechat.network.gnutls_ca_user::
    додатни фајл(ови) са ауторитетима сертификата

irc.server.xxx.ssl_cert::
    Фајл SSL сертификата који се користи за аутоматску идентификацију вашег надимка (на пример CertFP на oftc, погледајте испод)

irc.server.xxx.ssl_dhkey_size::
    величина кључа који се користи током Дифи-Хелман Размене Кључева (подразумевано је: 2048)

irc.server.xxx.ssl_verify::
    провера да се SSL вези потпуно верује (подразумевано је укључено)

[NOTE]
Опција „ssl_verify” је подразумевано укључена, тако да је верификација стриктна и може да не успе, чак и када је била OK у верзијама пре 0.3.1.

[[irc_connect_oftc_with_certificate]]
====== Први пример: повезивање на oftc и провера сертификата

* Увоз сертификата у командном окружењу:

----
$ mkdir -p ~/.config/weechat/ssl
$ wget -O ~/.config/weechat/ssl/CAs.pem https://www.spi-inc.org/ca/spi-cacert.crt
----

[NOTE]
`~/.config/weechat` морате да замените путањом до вашег WeeChat config директоријума који на пример, такође може да буде `~/.weechat`.

[NOTE]
Можете да надовежете више сертификата у фајл CAs.pem.

* У програму WeeChat, када је сервер „oftc” већ додат:

----
/connect oftc
----

[[irc_connect_oftc_with_certfp]]
====== Други пример: повезивање са oftc употребом CertFP

* Креирајте сертификат у командном окружењу:

----
$ mkdir -p ~/.config/weechat/ssl
$ cd ~/.config/weechat/ssl
$ openssl req -nodes -newkey rsa:2048 -keyout nick.pem -x509 -days 365 -out nick.pem
----

[NOTE]
`~/.config/weechat` морате да замените путањом до вашег WeeChat config директоријума који на пример, такође може да буде `~/.weechat`.

* У програму WeeChat, када је сервер „oftc” већ додат:

----
/set irc.server.oftc.ssl_cert "${weechat_config_dir}/ssl/nick.pem"
/connect oftc
/msg nickserv cert add
----

За више информација, погледајте https://www.oftc.net/NickServ/CertFP

[[irc_sasl_authentication]]
===== SASL аутентификација

Програм WeeChat подржава SASL аутентификацију, употребом различитих механизама:

* _plain_: лозинка у чистом тексту (подразумевано)
* _scram-sha-1_: SCRAM са SHA-1 digest алгоритмом
* _scram-sha-256_: SCRAM са SHA-256 digest алгоритмом
* _scram-sha-512_: SCRAM са SHA-512 digest алгоритмом
* _ecdsa-nist256p-challenge_: изазов са јавним/приватним кључем
* _external_: SSL сертификат са клијентске стране

Опције за сервере су следеће:

* _sasl_mechanism_: механизам који треба да се користи (погледајте изнад)
* _sasl_timeout_: тајмаут (у секундама) за аутентификацију
* _sasl_fail_: акција која треба да се изврши ако аутентификација не успе
* _sasl_username_: корисничко име (надимак)
* _sasl_password_: лозинка
* _sasl_key_: фајл са ECC приватним кључем (за механизам _ecdsa-nist256p-challenge_)

[[irc_sasl_ecdsa_nist256p_challenge]]
====== SASL ECDSA-NIST256P-CHALLENGE

Да бисте могли да се аутентификујете ECDSA-NIST256P-CHALLENGE механизмом, морате да генеришете приватни кључ (није потребна лозинка за успостављање везе).

Кључ можете да генеришете следећом командом:

----
$ openssl ecparam -genkey -name prime256v1 -out ~/.config/weechat/ecdsa.pem
----

[NOTE]
`~/.config/weechat` морате да замените путањом до вашег WeeChat config директоријума који на пример, такође може да буде `~/.weechat`.

Набавите јавни кључ (кодиран у base64) следећом командом:

----
$ openssl ec -noout -text -conv_form compressed -in ~/.config/weechat/ecdsa.pem | grep '^pub:' -A 3 | tail -n 3 | tr -d ' \n:' | xxd -r -p | base64
----

Повежите се са сервером, идентификујте се (на пример са „nickserv identify”) и поставите свој јавни кључ у налог, користећи nickserv (замените base64 вредност са вредношћу вашег јавног кључа):

----
/connect libera
/msg nickserv identify ваша_лозинка
/msg nickserv set pubkey Av8k1FOGetUDq7sPMBfufSIZ5c2I/QYWgiwHtNXkVe/q
----

Подесите SASL опције за сервер:

----
/set irc.server.libera.sasl_mechanism ecdsa-nist256p-challenge
/set irc.server.libera.sasl_username "ваш_надимак"
/set irc.server.libera.sasl_key "${weechat_config_dir}/ecdsa.pem"
----

Поново успоставите везу са сервером:

----
/reconnect libera
----

[[irc_servers_connection]]
===== Повезивање

Командом <<command_irc_connect,/connect>> можете да се повежете са сервером:

----
/connect libera
----

Ако желите да прекинете везу:

----
/disconnect libera
----

Или просто ово ако се налазите у било којем баферу који припада _libera_
серверу (сервер, канал, приватни разговор):

----
/disconnect
----

Када се у исто време повежете са неколико сервера, бафери сервера се подразумевано
спајају, па тастером kbd:[Ctrl+x] можете да се крећете између њих. +
Аутоматско спајање серверских бафера може да се искључи, тако да имате по један
бафер за сваки сервер:

----
/set irc.look.server_buffer independent
----

[[irc_tor_sasl]]
===== Повезивање преко TOR и SASL

Неки сервери подржавају и везе са TOR (https://www.torproject.org/), мрежом виртуелних тунела који омогућавају људима и групама да унапреде своју приватност и безбедност на Интернету.

Најпре морате да инсталирате TOR. За Debian (и изведене из њега):

----
$ sudo apt-get install tor
----

У програму WeeChat морате да додате socks5 прокси за TOR сервис (имехоста/IP и порт зависе од ваше TOR конфигурације):

----
/proxy add tor socks5 127.0.0.1 9050
----

Додајте сада нови сервер (замените име сервера „irc-tor” и адресу са важећим вредностима):

----
/server add irc-tor ово.је.адреса.onion
----

Поставите прокси за TOR:

----
/set irc.server.irc-tor.proxy "tor"
----

Поставите SASL аутентификацију са ECDSA-NIST256P-CHALLENGE (погледајте поглавље <<irc_sasl_ecdsa_nist256p_challenge,SASL ECDSA-NIST256P-CHALLENGE>> у вези генерисања приватног кључа):

----
/set irc.server.irc-tor.sasl_mechanism ecdsa-nist256p-challenge
/set irc.server.irc-tor.sasl_username "ваш_надимак"
/set irc.server.irc-tor.sasl_key "${weechat_config_dir}/ecdsa.pem"
----

И коначно, успоставите везу са сервером:

----
/connect irc-tor
----

[[irc_channels]]
==== Канали

Каналима приступате командом <<command_irc_join,/join>>:

----
/join #channel
----

Напуштање канала (уз остављање отвореног бафера):

----
/part [порука о напуштању]
----

Канали којима приступите се не чувају. Ако желите да им аутоматски приступите
када се повежете са сервером, морате поставити `autojoin` опцију за сервер:

----
/set irc.server.libera.autojoin "#weechat,#weechat-fr"
----

[NOTE]
Неке скрипте могу да помогну са аутоматским постављањем ове опције,
погледајте `/script search autojoin`.

Будите пажљиви, за раздвајање листе канала од кључева могу да се користе само размаци,
на пример, ако `#канал1` захтева кључ, а `#канал2` не захтева:

----
/set irc.server.libera.autojoin "#канал1,#канал2 кључ1"
----

Помоћ у вези формата потражите помоћу `/help irc.server.libera.autojoin`.

[[irc_private_messages]]
==== Приватне поруке

Командом <<command_irc_query,/query>> можете да шаљете приватне поруке и
она отвара посебан бафер:

----
/query здраво перо, како си?
----

Без аргумената, команда једноставно отвара бафер (или га активира ако је већ отворен):

----
/query пера
----

Ако желите да затворите приватни бафер, урадите то следћем командом у приватном баферу:

----
/close
----

[[irc_smart_filter_join_part_quit]]
==== Паметни филтер за join/part/quit поруке

За филтрирање join/part/quit порука када надимак на каналу ништа није рекао у последњих X минута, можете употребити паметни филтер.

Паметни филтер је подразумевано укључен, али морате да додате филтер који скрива линије у баферу, на пример:

----
/filter add irc_smart * irc_smart_filter *
----

Можете да креирате филтер само за један канал, или за канале који почињу на исто име (погледајте `/help filter`):

----
/filter add irc_smart_weechat irc.libera.#weechat irc_smart_filter *
/filter add irc_smart_weechats irc.libera.#weechat* irc_smart_filter *
----

Следећим опцијама можете да сакријете само join или part/quit поруке:

----
/set irc.look.smart_filter_join on
/set irc.look.smart_filter_quit on
----

Можете да поставите паузу (у минутима):

----
/set irc.look.smart_filter_delay 5
----

Ако надимак није ништа рекао у последњих 5 минута, његове join и/или part/quit поруке ће бити скривене на каналу.

[[irc_ctcp_replies]]
==== CTCP одговори

CTCP одговори могу да се прилагоде, или неки CTCP упити могу да се блокирају (да се не пошаље одговор).

На пример, ако желите да прилагодите одговор на CTCP „VERSION”, употребите следећу команду:

----
/set irc.ctcp.version "Користим WeeChat $version, одличан је!"
----

Ако желите да блокирате CTCP „VERSION” (да се не пошаље одговор на овај упит), онда поставите празан стринг:

----
/set irc.ctcp.version ""
----

Могу да се прилагоде чак и непознати CTCP, можете на пример да одговорите на CTCP „BLABLA”:

----
/set irc.ctcp.blabla "Ево мог одговора на CTCP BLABLA"
----

CTCP може да се прилагоди само за један сервер, употребом његовог интерног имена испред CTCP имена:

----
/set irc.ctcp.libera.version "WeeChat $version (за libera)"
----

Ако желите да вратите стандардни CTCP одговор, уклоните опцију:

----
/unset irc.ctcp.version
----

У стринговима је могућа употреба следећих кодова и они се аутоматски развијају када програм WeeChat одговара на CTCP:

[width="100%", cols="2l,4,8", options="header"]
|===
| Кôд          | Опис                                | Вредност/пример
| $clientinfo  | Листа подржаних CTCP                | `+ACTION DCC CLIENTINFO FINGER PING SOURCE TIME USERINFO VERSION+`
| $version     | Верзија програма WeeChat            | `+0.4.0-dev+`
| $versiongit  | WeeChat верзија + git верзија ^(1)^ | `+0.4.0-dev (git: v0.3.9-104-g7eb5cc4)+`
| $git         | Git верзија ^(1)^                   | `+v0.3.9-104-g7eb5cc4+`
| $compilation | Датум компајлирања програма WeeChat | `+Dec 16 2012+`
| $osinfo      | Инфо о ОС                           | `+Linux 2.6.32-5-amd64 / x86_64+`
| $site        | WeeChat вебсајт                     | `+https://weechat.org/+`
| $download    | WeeChat сајт, страна за преузимање  | `+https://weechat.org/download+`
| $time        | Текући датум/време                  | `+Sun, 16 Dec 2012 10:40:48 +0100+`
| $username    | Корисничко име на IRC серверу       | `+name+`
| $realname    | Реално име на IRC серверу           | `+John Doe+`
|===

[NOTE]
^(1)^ Git верзија је излаз команде `git describe`. Позната је само ако је програм WeeChat компајлиран унутар git репозиторијума и ако је git инсталиран.

Ако CTCP опције нису дефинисане (што је подразумевано), CTCP одговори су следећи:

[width="100%", cols="2,4,8", options="header"]
|===
| CTCP       | Формат одговора                        | Пример
| CLIENTINFO | `+$clientinfo+`                        | `+ACTION DCC CLIENTINFO FINGER PING SOURCE TIME USERINFO VERSION+`
| FINGER     | `+WeeChat $versiongit+`                | `+WeeChat 0.4.0-dev (git: v0.3.9-104-g7eb5cc4)+`
| SOURCE     | `+$download+`                          | `+https://weechat.org/download+`
| TIME       | `+$time+`                              | `+нед, 16 дец 2012 10:40:48 +0100+`
| USERINFO   | `+$username ($realname)+`              | `+име (Пера Перић)+`
| VERSION    | `+WeeChat $versiongit ($compilation)+` | `+WeeChat 0.4.0-dev (git: v0.3.9-104-g7eb5cc4) (Dec 16 2012)+`
|===

[[irc_target_buffer]]
==== Циљни бафер за IRC поруке

Могуће је прилагођавање циљног бафера за IRC поруке (бафер који се користи за приказ порука) опцијама `+irc.msgbuffer.*+`.

За неке IRC поруке (погледајте листу испод), можете да користите вредност:

current::
    текући бафер (ако је IRC бафер, или подразумевано у серверском баферу)

private::
    приватни бафер за надимак, или текући/серверски бафер ако се тај не пронађе (сагласно са опцијом _irc.look.msgbuffer_fallback_)

server::
    серверски бафер

weechat::
    Бафер „језгра” програма WeeChat

Када опција није постављена (подразумевано), програм WeeChat бира погодан бафер, обично је то серверски или бафер канала.

Непотпуна листа IRC порука или алијаса које можете да прилагодите:

[width="100%", cols="^2m,^3m,15", options="header"]
|===
| порука  | алијас        | опис
| error   |               | грешка
| invite  |               | позвани сте на канал
| join    |               | приступ
| kick    |               | избацивање
| kill    |               | убијање
| mode    |               | режим
| notice  |               | обавештење
| part    |               | одлазак
| quit    |               | напуштање
| topic   |               | тема
| wallops |               | wallops
|         | ctcp          | ctcp (послата или примљена, у privmsg или notice поруци)
| 221     |               | стринг режима корисника
| 275     | whois         | whois (безбедна веза)
| 301     | whois         | whois (одсутан)
| 303     |               | ison
| 305     | unaway        | вратио се
| 306     | away          | одсутан
| 307     | whois         | whois (регистровани надимак)
| 310     | whois         | whois (режим помоћи)
| 311     | whois         | whois (корисник)
| 312     | whois         | whois (сервер)
| 313     | whois         | whois (оператор)
| 314     | whowas        | whowas
| 315     | who           | who (крај)
| 317     | whois         | whois (неактиван)
| 318     | whois         | whois (крај)
| 319     | whois         | whois (канали)
| 320     | whois         | whois (идентификован корисник)
| 321     | list          | list (старт)
| 322     | list          | list (канал)
| 323     | list          | list (крај)
| 326     | whois         | whois (има oper privs)
| 327     | whois         | whois (хост)
| 328     |               | URL канала
| 329     |               | датум креирања канала
| 330     | whois         | whois (пријављен као)
| 331     |               | нема теме за канал
| 332     |               | тема канала
| 333     |               | инфо о теми
| 335     | whois         | whois (да ли је бот)
| 338     | whois         | whois (хост)
| 341     |               | позивница
| 343     | whois         | whois (је opered као)
| 344     | reop          | reop канала
| 345     | reop          | reop канала (крај)
| 346     | invitelist    | листа позваних
| 347     | invitelist    | листа позваних (крај)
| 348     | exceptionlist | листа изузетака
| 349     | exceptionlist | листа изузетака (крај)
| 351     |               | верзија сервера
| 352     | who           | who
| 353     | names         | листа корисника на каналу
| 366     | names         | крај /names листе
| 367     | banlist       | листа забрањених
| 368     | banlist       | крај листе забрањених
| 369     | whowas        | whowas (крај)
| 378     | whois         | whois (повезује се са)
| 379     | whois         | whois (употребом режима)
| 401     | whois         | нема таквог надимка/канала
| 402     | whois         | нема таквог сервера
| 432     |               | погрешан надимак
| 433     |               | надимак се већ користи
| 438     |               | нисте ауторизовани да промените надимак
| 671     | whois         | whois (безбедна веза)
| 728     | quietlist     | листа ућутканих
| 729     | quietlist     | крај листе ућутканих
| 732     | monitor       | листа надимака који се прате
| 733     | monitor       | листа надимака који се прате (крај)
| 901     |               | сада сте пријављени
|===

И остале нумеричке команде могу да се прилагоде.

Испред поруке може да стоји име сервера како би била специфична за одређени irc сервер (на пример: `libera.whois`).

Неки примери:

* Приказ резултата команде `/whois` у приватном баферу:

----
/set irc.msgbuffer.whois private
----

* Враћање подразумеваног бафера за whois (серверски бафер):

----
/unset irc.msgbuffer.whois
----

* Приказивање позивнице у текућем баферу, само за „libera” сервер:

----
/set irc.msgbuffer.libera.invite current
----

* Приказивање „303” (ison) поруке у баферу „језгра” програма WeeChat:

----
/set irc.msgbuffer.303 weechat
----

[[irc_commands]]
==== Команде

include::includes/autogen_user_commands.sr.adoc[tag=irc_commands]

[[irc_options]]
==== Опције

Одељци у фајлу _irc.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак         | Команда за контролу            | Опис
| look           | /set irc.look.*                | Изглед и осећај.
| color          | /set irc.color.*               | Боје.
| network        | /set irc.network.*             | Мрежне опције.
| msgbuffer      | /set irc.msgbuffer.*           | <<irc_target_buffer,Циљни бафер за IRC поруке>> (у одељку је могуће додавање/уклањање опција).
| ctcp           | /set irc.ctcp.*                | <<irc_ctcp_replies,CTCP одговори>> (у одељку је могуће додавање/уклањање опција).
| ignore         | <<command_irc_ignore,/ignore>> | Игнорисање људи.
| server_default | /set irc.server_default.*      | Подразумеване вредности за сервере (користе се када у серверу није дефинисана опција).
| server         | <<command_irc_server,/server>> +
                   /set irc.server.*              | Сервери.
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=irc_options]

[[logger_plugin]]
=== Logger

Logger додатак вам омогућава да чувате садржај бафера у фајлове, и нуди опције којима подешавате шта се и како чува.

[[logger_log_levels]]
==== Лог нивои

Логовање се врши са нивоом за сваки бафер. Подразумевани ниво је 9 (логују се све поруке које су приказане у баферу). Ниво можете да промените само за један бафер, или за групу бафера.

Могући нивои су од 0 до 9. Нула значи „ништа се не логује”, а 9 значи „логују се све поруке”.

Додаци користе различите нивое за приказане поруке. IRC додатак користи следеће нивое:

* ниво 1: порука од корисника (на каналу или приватна)
* ниво 2: измена надимка (вашег или неког другог)
* ниво 3: било која серверска порука (осим join/part/quit)
* ниво 4: join/part/quit серверска порука

Тако да ако за IRC канал поставите ниво 3, програм WeeChat ће логовати све поруке осим join/part/quit.

Неки примери:

* Постављање нивоа 3 за IRC канал #weechat:

----
/set logger.level.irc.libera.#weechat 3
----

* Постављање нивоа 3 за libera серверски бафер:

----
/set logger.level.irc.server.libera 3
----

* Постављање нивоа 3 за све канале на серверу libera:

----
/set logger.level.irc.libera 3
----

* Постављање нивоа 2 за све IRC бафере:

----
/set logger.level.irc 2
----

[[logger_filenames_masks]]
==== Маске имена фајлова

За сваки бафер можете да дефинишете маску имена фајла, па да употребите локалне променљиве бафера за изградњу имена фајла. Да бисте видели доступне локалне променљиве текућег бафера:

----
/buffer listvar
----

Masks will be matched on options in descending order of specificity on `logger.mask.$plugin.*`, with `logger.file.mask` as fallback option.

На пример, у баферу „irc.libera.#weechat”, програм WeeChat ће потражити маску са именом опције, по следећем редоследу:

----
logger.mask.irc.libera.#weechat
logger.mask.irc.libera
logger.mask.irc
logger.file.mask
----

Ово значи да можете имати маске које су специфичне за одређене IRC сервере („logger.mask.irc.libera”) или за додатак („logger.mask.irc”).

[[logger_files_by_date]]
===== Лог фајлови по датуму

Ако желите да се лог фајлови креирају по датуму, у маски можете да употребите спецификаторе датума/времена (за формате, погледајте `man strftime`), на пример:

----
/set logger.file.mask "%Y/%m/$plugin.$name.weechatlog"
----

Имаћете следеће фајлове:

....
~/.local/share/weechat
└── logs
    ├── 2010
    │   ├── 11
    │   │   ├── irc.server.libera.weechatlog
    │   │   └── irc.libera.#weechat.weechatlog
    │   └── 12
    │       ├── irc.server.libera.weechatlog
    │       └── irc.libera.#weechat.weechatlog
    ├── 2011
    │   ├── 01
    │   │   ├── irc.server.libera.weechatlog
    │   │   └── irc.libera.#weechat.weechatlog
    │   ├── 02
    ...
....

[[logger_irc_files_by_server_channel]]
===== IRC лог фајлови по серверу и каналу

Ако желите један директоријум по IRC серверу и један фајл по каналу у њему:

----
/set logger.mask.irc "irc/$server/$channel.weechatlog"
----

Имаћете следеће фајлове:

....
~/.local/share/weechat
└── logs
    └── irc
        ├── libera
        │   ├── libera.weechatlog
        │   ├── #weechat.weechatlog
        │   └── #mychan.weechatlog
        ├── oftc
        │   ├── oftc.weechatlog
        │   ├── #channel1.weechatlog
        │   └── #channel2.weechatlog
        ...
....

[[logger_commands]]
==== Команде

include::includes/autogen_user_commands.sr.adoc[tag=logger_commands]

[[logger_options]]
==== Опције

Одељци у фајлу _logger.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак  | Команда за контролу | Опис
| look    | /set logger.look.*  | Изглед и осећај.
| color   | /set logger.color.* | Боје.
| file    | /set logger.file.*  | Опције за лог фајлове.
| level   | /set logger.level.* | Лог ниво по баферу (у одељку је могуће додавање/уклањање опција).
| mask    | /set logger.mask.*  | Маска имена фајла по баферу (у одељку је могуће додавање/уклањање опција).
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=logger_options]

[[relay_plugin]]
=== Релеј

Релеј додатак се користи за релеј података преко мреже, употребом различитих протокола:

* _irc_: IRC прокси: користи се за дељење веза са IRC серверима са једним или више других клијената
* _weechat_: протокол који користе удаљени интерфејси за приказ и интеракцију са програмом WeeChat, на пример:
** Glowing Bear (HTML5): https://www.glowing-bear.org/
** QWeeChat (Qt): https://weechat.org/download
** WeeChat-Android (Android): https://github.com/ubergeek42/weechat-android
** weechat.el (Emacs): https://github.com/the-kenny/weechat.el
** WeeCloud (JavaScript): https://github.com/eirikb/weecloud

[[relay_password]]
==== Лозинка

Топло се препоручује постављање лозинке за релеј следећим командама:

----
/secure set relay мојалозинка
/set relay.network.password "${sec.data.relay}"
----

Ова лозинка се користи и за _irc_ и за _weechat_ протокол.

[[relay_totp]]
==== TOTP

TOTP (Time-based One-Time Password) може уз лозинку да се користи као секундарни фактор аутентификације за _weechat_ протокол.

Ово није обавезно, мада повећава ниво безбедности.

једнократне лозинке могу да се генеришу апликацијама, на пример:

* FreeOTP: https://play.google.com/store/apps/details?id=org.fedorahosted.freeotp[Android], https://itunes.apple.com/fr/app/freeotp-authenticator/id872559395[iOS] (https://freeotp.github.io/[вебсајт])
* Google Authenticator: https://play.google.com/store/apps/details?id=com.google.android.apps.authenticator2[Android], https://itunes.apple.com/fr/app/google-authenticator/id388497605[iOS]

TOTP тајна мора да се постави у програму WeeChat и у апликацији која се користи за генерисање једнократних лозинки.

То мора бити стринг кодиран у base32, само са словима и цифрама од 2 до 7, на пример:

----
/secure set relay_totp тајналозинкаbase32
/set relay.network.totp_secret "${sec.data.relay_totp}"
----

[[relay_ssl]]
==== SSL

SSL можете да користите креирањем сертификата и приватног кључа и употребом префикса „ssl.” у имену протокола.

Подразумевана путања до сертификата/кључа је дефинисана опцијом <<option_relay.network.ssl_cert_key,relay.network.ssl_cert_key>>.

Сертификат и приватни кључ можете да креирате следећим командама:

----
$ mkdir -p ~/.config/weechat/ssl
$ cd ~/.config/weechat/ssl
$ openssl req -nodes -newkey rsa:2048 -keyout relay.pem -x509 -days 365 -out relay.pem
----

[NOTE]
`~/.config/weechat` морате да замените путањом до вашег WeeChat config директоријума који на пример, такође може да буде `~/.weechat`.

Ако се програм WeeChat већ извршава, сертификат и приватни кључ можете поново да учитате командом:

----
/relay sslcertkey
----

[[relay_irc_proxy]]
==== IRC прокси

Релеј додатак може да се понаша као IRC прокси: симулираће IRC сервер, па можете да се повежете са програмом WeeChat помоћу било ког другог IRC клијента (укључујући и сам WeeChat).

Можете да дефинишете по један порт за сваки IRC сервер, или један генерички за све сервере.

Када се користи један порт за све сервере, клијент мора да пошаље интерно име сервера у IRC команди „PASS”, у следећем формату (погледајте пример испод):

----
PASS сервер:лозинка
----

Пример: IRC прокси са SSL за било који сервер (клијент ће изабрати):

----
/relay add ssl.irc 8000
----

Пример: IRC прокси без SSL само за сервер „libera”:

----
/relay add irc.libera 8000
----

Сада можете да успоставите везу на порту 8000 помоћу било ког IRC клијента употребом лозинке „мојалозинка” (или „libera:мојалозинка” ако у релеју није био наведен ниједан сервер).

На пример, ако као IRC клијент користите програм WeeChat, а сервер се зове „relay” и релеј лозинка је „secret”, можете да поставите лозинку следећим командама:

----
/secure set relay_libera libera:secret
/set irc.server.relay.password "${sec.data.relay_libera}"
----

[[relay_weechat_protocol]]
==== WeeChat протокол

Релеј додатак може да шаље податке удаљеном интерфејсу користећи WeeChat протокол.

Можете да се повежете употребом удаљеног интерфејса, погледајте листу <<relay_plugin,релеј додатак>>.

[IMPORTANT]
Сам програм WeeChat НЕ може да се повеже на други програм WeeChat преко овог протокола.

На пример:

----
/relay add weechat 9000
----

Сада можете да се повежете са удаљеног интерфејса преко порта 9000 користећи лозинку „мојалозинка”.

[[relay_websocket]]
==== ВебСокет

Релеј додатак подржава ВебСокет протокол (https://tools.ietf.org/html/rfc6455[RFC 6455]) за све протоколе.

ВебСокет руковање се аутоматски детектује и ако се у руковању пронађу одговарајућа заглавља и ако је порекло дозвољено (погледајте опцију <<option_relay.network.websocket_allowed_origins,relay.network.websocket_allowed_origins>>), сокет постаје спреман за WebSocket.

ВебСокет може да се отвори у HTML5 једном једином линијом JavaScript кода:

[source, js]
----
websocket = new WebSocket("ws://server.com:9000/weechat");
----

Порт (9000 у примеру) је порт који је дефинисан у Релеј додатку. URI увек мора да се завршава са „/weechat” (и за _irc_ и за _weechat_ протокол).

[[relay_unix_socket]]
==== UNIX доменски сокети

Ако у `/relay add` команди употребите опцију протокола „unix”, можете да ослушкујете било којим протоколом на UNIX доменском сокету на задатој путањи. На пример:

----
/relay add unix.weechat ${weechat_runtime_dir}/relay_socket
----

Ово омогућава да се клијенти повежу користећи weechat протокол на _/run/user/1000/weechat/relay_socket_. Врло је корисно за дозвољавање SSH прослеђивања релеј клијентима, када други портови не могу да се отворе.

Употребом OpenSSH:

----
$ ssh -L 9000:.weechat/relay_socket корисник@имехоста
----

Ово преусмерава локалне релеј клијенте који се повезују на порт 9000 на инстанцу програма WeeChat која се извршава на машини „имехоста”.

[[relay_commands]]
==== Команде

include::includes/autogen_user_commands.sr.adoc[tag=relay_commands]

[[relay_options]]
==== Опције

Одељци у фајлу _relay.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак  | Команда за контролу                | Опис
| look    | /set relay.look.*                  | Изглед и осећај.
| color   | /set relay.color.*                 | Боје.
| network | /set relay.network.*               | Мрежне опције.
| irc     | /set relay.irc.*                   | Опције специфичне за irc протокол (irc прокси).
| port    | <<command_relay_relay,/relay add>> +
            /set relay.port.*                  | Портови који се користе за релеј (irc и weechat протоколи) (у одељку је могуће додавање/уклањање опција).
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=relay_options]

[[scripts_plugins]]
=== Скрипте

Програм WeeChat нуди 8 додатака за скриптовање: Python, Perl, Ruby, Lua, Tcl, Guile (scheme), JavaScript и PHP. Ови додаци могу да учитају, изврше и уклоне из меморије скрипте за ове језике.

Још један додатак, под именом „script” је менаџер скрипти и користи се за учитавање/уклањање из меморије скрипти на било ком језику, и инсталацију/брисање скрипти WeeChat репозиторијума, које су видљиве на следећој URL адреси: https://weechat.org/scripts

За више информација о функцијама које постоје у API, молимо вас да прочитате link:weechat_plugin_api.sr.html[WeeChat водич за скриптовање].

[[script_commands]]
==== Script команде

include::includes/autogen_user_commands.sr.adoc[tag=script_commands]

[[python_commands]]
==== Python команде

include::includes/autogen_user_commands.sr.adoc[tag=python_commands]

[[perl_commands]]
==== Perl команде

include::includes/autogen_user_commands.sr.adoc[tag=perl_commands]

[[ruby_commands]]
==== Ruby команде

include::includes/autogen_user_commands.sr.adoc[tag=ruby_commands]

[[lua_commands]]
==== Lua команде

include::includes/autogen_user_commands.sr.adoc[tag=lua_commands]

[[tcl_commands]]
==== Tcl команде

include::includes/autogen_user_commands.sr.adoc[tag=tcl_commands]

[[guile_commands]]
==== Guile команде

include::includes/autogen_user_commands.sr.adoc[tag=guile_commands]

[[javascript_commands]]
==== JavaScript команде

include::includes/autogen_user_commands.sr.adoc[tag=javascript_commands]

[[php_commands]]
==== PHP команде

include::includes/autogen_user_commands.sr.adoc[tag=php_commands]

[[script_options]]
==== Script опције

Одељци у фајлу _script.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак  | Команда за контролу   | Опис
| look    | /set script.look.*    | Изглед и осећај.
| color   | /set script.color.*   | Боје.
| scripts | /set script.scripts.* | Опције за преузимање скрипти.
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=script_options]

[[python_options]]
==== Python опције

Одељци у фајлу _python.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак  | Команда за контролу | Опис
| look    | /set python.look.*  | Изглед и осећај.
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=python_options]

[[perl_options]]
==== Perl опције

Одељци у фајлу _perl.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак  | Команда за контролу | Опис
| look    | /set perl.look.*    | Изглед и осећај.
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=perl_options]

[[ruby_options]]
==== Ruby опције

Одељци у фајлу _ruby.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак  | Команда за контролу | Опис
| look    | /set ruby.look.*    | Изглед и осећај.
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=ruby_options]

[[lua_options]]
==== Lua опције

Одељци у фајлу _lua.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак  | Команда за контролу | Опис
| look    | /set lua.look.*     | Изглед и осећај.
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=lua_options]

[[tcl_options]]
==== Tcl опције

Одељци у фајлу _tcl.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак  | Команда за контролу | Опис
| look    | /set tcl.look.*     | Изглед и осећај.
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=tcl_options]

[[guile_options]]
==== Guile опције

Одељци у фајлу _guile.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак  | Команда за контролу | Опис
| look    | /set guile.look.*   | Изглед и осећај.
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=guile_options]

[[javascript_options]]
==== Javascript опције

Одељци у фајлу _javascript.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак  | Команда за контролу    | Опис
| look    | /set javascript.look.* | Изглед и осећај.
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=javascript_options]

[[php_options]]
==== PHP опције

Одељци у фајлу _php.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак  | Команда за контролу | Опис
| look    | /set php.look.*     | Изглед и осећај.
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=php_options]

[[spell_plugin]]
=== Spell

Spell додатак вам омогућава да проверите правопис у командној линији. У баферу можете да користите више језика.

Подразумевано је провера правописа искључена и стање активности може да се мења тастером kbd:[Alt+s].

[[spell_dictionaries]]
==== Речници

Пре него што будете могли да користите проверу правописа, морате да дефинишете речнике, или глобално, или посебно за бафере.

У исто време можете да користити више речника: програм WeeChat ће проверавати речи у свим речницима.

На пример, ако желите да користите енглески и француски:

----
/set spell.check.default_dict "en,fr"
----

Могуће је да у одређеном баферу користите различити речник, на пример, на немачком каналу:

----
/spell setdict de
----

Можете такође да наведете и речник за групу бафера, на пример енглески на свим каналима IRC сервера libera:

----
/set spell.dict.irc.libera en
----

За више информација, погледајте команду <<command_spell_spell,/spell>>.

[[spell_speller_options]]
==== Опције модула за проверу правописа

Опције модула за проверу правописа могу да се дефинишу додавањем опција у одељак „option” aspell конфигурације.

Име опције је aspell конфигурациона опција. Листа опција може да се пронађе у командном окружењу помоћу следеће команде:

----
$ aspell config
----

На пример, ако желите да укључите опцију „ignore-case”:

----
/set spell.option.ignore-case "true"
----

[[spell_suggestions]]
==== Предлози

Предлози се приказују у ставки траке под именом „spell_suggest”. Број предлога се поставља у опцији _spell.check.suggestions_.

Да бисте укључили предлоге морате поставити вредност опције _spell.check.suggestions_ на цео број ≥ 0 и да додате ставку траке „spell_suggest” у неку траку, као на пример у _status_.

Пример предлога са енглеским речником (`en`):

....
│[12:55] [6] [irc/libera] 3:#test(+n){4} [print,prone,prune]                      │
│[@Flashy] prinr █                                                                │
└─────────────────────────────────────────────────────────────────────────────────┘
....

Пример предлога са енглеским и француским речницима (`en,fr`):

....
│[12:55] [6] [irc/libera] 3:#test(+n){4} [print,prone,prune/prime,primer,primé]   │
│[@Flashy] prinr █                                                                │
└─────────────────────────────────────────────────────────────────────────────────┘
....

[[spell_commands]]
==== Команде

include::includes/autogen_user_commands.sr.adoc[tag=spell_commands]

[[spell_options]]
==== Опције

Одељци у фајлу _spell.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак     | Команда за контролу                    | Опис
| color      | /set spell.color.*                     | Боје.
| check      | /set spell.check.*                     | Опције за контролу провере правописа.
| dict       | <<command_spell_spell,/spell setdict>> +
               /set spell.dict.*                      | Речници који се користе у баферу (у одељку је могуће додавање/уклањање опција).
| look       | /set spell.look.*                      | Изглед и осећај.
| option     | /set spell.option.*                    | <<spell_speller_options,Опције модула проверу правописа>> (у одељку је могуће додавање/уклањање опција).
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=spell_options]

[[trigger_plugin]]
=== Окидач

Окидач је Швајцарски војни нож програма WeeChat: може да ухвати многе ствари (сигнал, модификатор, испис, итд.), измени садржај података, и изврши једну или више команди. Ако желите да спречите покретање окидача у неким околностима, можете употребити услов.

За коришћење окидача је неопходно познавање начина на који функционишу сигнали, модификатори, ... Стога је пожељно да прочитате link:weechat_plugin_api.sr.html#hooks[WeeChat референтни приручник API додатака / Куке].

[[trigger_default]]
==== Подразумевани окидачи

Програм WeeChat подразумевано креира 5 окидача који могу да се искључе, ажурирају или обришу:

* _beep_ окидач за обавештења
* четири остала окидача за скривање лозинки на екрану

Листа подразумеваних окидача:

[width="100%", cols="5m,3,22", options="header"]
|===
| Име | Кука | Опис

| beep | испис |
  Звучни сигнал у случају истакнуте/приватне поруке.

| cmd_pass | модификатор |
  Сакрива лозинку у командама:
  `pass:[/msg nickserv id\|identify\|set password\|ghost\|release\|regain\|recover]`,
  `pass:[/oper]`,
  `pass:[/quote pass]`,
  `pass:[/secure passphrase\|decrypt\|set]`.

| cmd_pass_register | модификатор |
  Сакрива лозинку у команди `pass:[/msg nickserv register]`.

| msg_auth | модификатор |
  Сакрива лозинку у IRC auth поруци која се приказује (порука која се прими од
  сервера након што корисник зада команду).

| server_pass | модификатор |
  Сакрива лозинку сервера у командама `/server` и `/connect`.
|===

[[trigger_anatomy]]
==== Анатомија окидача

Окидач има следеће опције (имена су `trigger.trigger.<име>.<опција>`):

[width="100%", cols="2m,3,10", options="header"]
|===
| Опција | Вредности | Опис

| enabled | `on`, `off` |
  Када је опција `off`, окидач је искључен и акције се више не изводе.

| hook | `+signal+`, `+hsignal+`, `+modifier+`, `+line+`, `+print+`, `+command+`,
  `+command_run+`, `+timer+`, `+config+`, `+focus+`, `+info+`, `+info_hashtable+` |
  Кука која се користи у окидачу. За више информација, погледајте
  link:weechat_plugin_api.sr.html#hooks[WeeChat референтни приручник API додатака / Куке].

| arguments | стринг |
  Аргументи за куку, зависе од врсте куке која се користи.

| conditions | стринг |
  Услови под којима се окидач извршава; они се израчунавају (погледајте команду
  <<command_weechat_eval,/eval>>).

| regex | стринг |
  Један или више POSIX проширених регуларних израза за измену примљених података у
  функцији повратног позива куке (и још понешто што додаје окидач додатак), погледајте
  <<trigger_regex,регуларни израз>>.

| command | стринг |
  Команда која треба да се изврши (више команди може да се раздвоји тачка запетама);
  стринг се израчунава (погледајте команду <<command_weechat_eval,/eval>>).

| return_code | `+ok+`, `+ok_eat+`, `+error+` |
  Повратни кôд функције повратног позива (подразумевани је `ok`, што би и требало
  да се користи у скоро свим окидачима, остале вредности се ретко користе).

| post_action | `none`, `disable`, `delete` |
  Акција која се врши над окидачем након његовог извршавања (подразумевано је `none`
  што би требало да се користи у скоро свим окидачима, остале вредности се ретко користе).
|===

На пример, подразумевани окидач _beep_ има следеће опције:

----
trigger.trigger.beep.enabled = on
trigger.trigger.beep.hook = print
trigger.trigger.beep.arguments = ""
trigger.trigger.beep.conditions = "${tg_displayed} && (${tg_highlight} || ${tg_msg_pv})"
trigger.trigger.beep.regex = ""
trigger.trigger.beep.command = "/print -beep"
trigger.trigger.beep.return_code = ok
trigger.trigger.beep.post_action = none
----

[[trigger_execution]]
==== Извршавање

Када се позове функција повратног позива окидача, извршавају се следеће акције, у наведеном редоследу, само ако су окидачи глобално укључени и ако је сам окидач укључен:

. провера услова окидача: ако је нетачан, завршава се
. замена текста у окидачу употребом регуларног израза (или више њих)
. извршавање команде (или више њих)
. излаз са повратним кодом (осим за куке _modifier_, _line_, _focus_, _info_ и _info_hashtable_)
. извршавање пост акције (ако није `none`).

[[trigger_hook_arguments]]
==== Аргументи куке

Аргументи куке зависе од употребљене куке. Раздвајају се са тачка запетама.

[width="100%", cols="2,6,7,2", options="header"]
|===
| Кука | Аргументи | Примери | Документација (API)

| signal |
  1. име сигнала (дозвољава се приоритет) (обавезан) +
  2. име сигнала (дозвољава се приоритет) +
  3. ... |
`+*,irc_in_privmsg+` +
`+*,irc_in_privmsg;*,irc_in_notice+` +
`+signal_sigwinch+` |
link:weechat_plugin_api.sr.html#_hook_signal[hook_signal]

| hsignal |
  1. име сигнала (дозвољава се приоритет) (обавезан) +
  2. име сигнала (дозвољава се приоритет) +
  3. ... |
`+nicklist_nick_added+` |
link:weechat_plugin_api.sr.html#_hook_hsignal[hook_hsignal]

| modifier |
  1. име модификатора (дозвољава се приоритет) (обавезан) +
  2. име мофидикатора (дозвољава се приоритет) +
  3. ... |
`+weechat_print+` +
`+5000\|input_text_display;5000\|history_add+` |
link:weechat_plugin_api.sr.html#_hook_modifier[hook_modifier]

| line |
  1. тип бафера +
  2. име бафера +
  3. ознаке |
`+formatted+` +
`+free+` +
`+*;irc.libera.*+` +
`+*;irc.libera.#weechat+` +
`+formatted;irc.libera.#weechat;irc_notice+` |
link:weechat_plugin_api.sr.html#_hook_line[hook_line]

| print |
  1. име бафера +
  2. ознаке +
  3. порука +
  4. уклањање боја (0/1) |
`+irc.libera.*+` +
`+irc.libera.#weechat+` +
`+irc.libera.#weechat;irc_notice+` +
`+*;;;1+` |
link:weechat_plugin_api.sr.html#_hook_print[hook_print]

| command |
  1. име команде (дозвољава се приоритет) (обавезан) +
  2. опис (израчунава се, погледајте команду <<command_weechat_eval,/eval>>) +
  3. аргументи (израчунава се, погледајте команду <<command_weechat_eval,/eval>>) +
  4. опис аргумената (израчунава се, погледајте команду <<command_weechat_eval,/eval>>) +
  5. довршавање (израчунава се, погледајте команду <<command_weechat_eval,/eval>>) |
`+test+` +
`+5000\|test+` +
`+test;test command;arg1 arg2;arg1: description 1${\n}arg2: description 2+` |
link:weechat_plugin_api.sr.html#_hook_command[hook_command]

| command_run |
  1. команда (дозвољава се приоритет) (обавезан) +
  2. команда (дозвољава се приоритет) +
  3. ... |
`+/cmd arguments+` |
link:weechat_plugin_api.sr.html#_hook_command_run[hook_command_run]

| timer |
  1. интервал у милисекундама (обавезан) +
  2. поравнање на секунду (подразумевано: 0) +
  3. макс број позива (подразумевано: 0, што значи „нема краја”) |
`+3600000+` +
`+60000;0;5+` |
link:weechat_plugin_api.sr.html#_hook_timer[hook_timer]

| config |
  1. име опције (дозвољава се приоритет) (обавезан) +
  2. име опције (дозвољава се приоритет) +
  3. ... |
`+weechat.look.*+` |
link:weechat_plugin_api.sr.html#_hook_config[hook_config]

| focus |
  1. име површине (дозвољава се приоритет) (обавезан) +
  2. име површине (дозвољава се приоритет) +
  3. ... |
`+buffer_nicklist+` |
link:weechat_plugin_api.sr.html#_hook_focus[hook_focus]

| info |
  1. инфо име (дозвољава се приоритет) (обавезан) +
  2. инфо име (дозвољава се приоритет) +
  3. ... |
`+my_info+` |
link:weechat_plugin_api.sr.html#_hook_info[hook_info]

| info_hashtable |
  1. инфо име (дозвољава се приоритет) (обавезан) +
  2. инфо име (дозвољава се приоритет) +
  3. ... |
  `+my_info+` |
  link:weechat_plugin_api.sr.html#_hook_info_hashtable[hook_info_hashtable]
|===

[[trigger_conditions]]
==== Услови

За наставак обраде окидача, или за заустављање свега, користе се услови.

Они се израчунавају и могућа је употреба података доступних у функцији повратног позива (погледајте <<trigger_callback_data,податке у функцијама повратних позива>> и команду <<command_weechat_eval,/eval>>).

Пример: подразумевани окидач _beep_ користи следећи услов како би се звучни сигнал огласио само за истицање или за приватну поруку:

----
${tg_displayed} && (${tg_highlight} || ${tg_msg_pv})
----

[[trigger_regex]]
==== Регуларни израз

Регуларни израз се користи за измену променљивих у хеш табели функције повратног позива.

Формат је следећи: „/регизраз/замена” или „/регизраз/замена/пром” (где је _пром_ променљива хеш табеле).

Ако _пром_ не постоји у хеш табели, она се аутоматски креира и има празну вредност. На овај начин могу да се креирају произвољне привремене променљиве.

Ако се _пром_ не наведе, користи се подразумевана променљива која зависи од типа употребљене куке:

[width="100%", cols="2,3,7", options="header"]
|===
| Кука           | Подраз. променљива | Дозвољено ажурирање ^(1)^
| signal         | tg_signal_data     |
| hsignal        |                    |
| modifier       | tg_string          | tg_string
| line           | message            | buffer, buffer_name, y, date, date_printed, str_time, tags, notify_level, highlight, prefix, message
| print          | tg_message         |
| command        | tg_argv_eol1       |
| command_run    | tg_command         |
| timer          | tg_remaining_calls |
| config         | tg_value           |
| focus          |                    |
| info           | tg_info            | tg_info
| info_hashtable |                    | све променљиве примљене у хеш табели
|===

[NOTE]
^(1)^ У окидачу је могуће ажурирање свих променљивих, али само ове променљиве утичу на вредност коју враћа окидач и коју користи програм WeeChat.

Више регуларних израза може да се раздвоји размаком, на пример: /регизраз1/замена1/пром1 /регизраз2/замена2/пром2".

Карактер „/” може да се замени било којим карактером (један или више идентичних карактера).

У „замена” могу да се користе групе подударања:

* `+${re:0}+` до `+${re:99}+`: `+${re:0}+` је комплетно подударање, `+${re:1}+` до `+${re:99}+` су ухваћене групе
* `+${re:+}+`: последње подударање (са највишим бројем)
* `+${hide:c,${re:N}}+`: подударање „N” са свим карактерима се замењује са „c” (пример: `+${hide:*,${re:2}}+` је група #2 у којој су сви карактери замењени са `+*+`).

Пример: користи подебљан текст за речи уоквирене са `+*+`:

----
/\*([^ ]+)\*/*${color:bold}${re:1}${color:-bold}*/
----

Пример: подразумевани окидач _server_pass_ користи следећи регуларни израз да сакрије лозинке у командама `/server` и `/connect` (карактери у лозинкама се замењују са `+*+`):

----
==^(/(server|connect) .*-(sasl_)?password=)([^ ]+)(.*)==${re:1}${hide:*,${re:4}}${re:5}
----

[NOTE]
У овом примеру се користи „==” као граничник јер у регуларном изразу постоји „/”.

[[trigger_command]]
==== Команда

Команда се извршава након замене текста регуларним изразом. Више команди може да се замени тачка запетама.

Она се израчунава (погледајте команду <<command_weechat_eval,/eval>>) и у команди може да се користи текст се замењен регуларним изразом.

Пример: подразумевани _beep_ окидач користи следећу команду да изда звучно упозорење (BEL):

----
/print -beep
----

[[trigger_callback_data]]
==== Подаци у функцијама повратног позива

Подаци који се приме у функцијама повратног позива се чувају у хеш табелама (показивачи и стрингови) и могу да се користе у следећим опцијама:

* _conditions_
* _regex_
* _command_

Садржај хеш табела зависи од врсте куке.

Згодан начин за приказ података у окидачу је да се отвори бафер за надгледање окидача, употребом следеће команде:

----
/trigger monitor
----

Све функције повратног позива у хеш табелу постављају следеће променљиве:

[width="100%", cols="3m,2,14", options="header"]
|===
| Променљива      | Тип    | Опис
| tg_trigger_name | стринг | Име окидача.
|===

[[trigger_data_signal]]
===== Signal

Функција повратног позива „signal” поставља следеће променљиве у хеш табелу:

[width="100%", cols="3m,2,14", options="header"]
|===
| Променљива     | Тип    | Опис
| tg_signal      | стринг | Име сигнала.
| tg_signal_data | стринг | Подаци послати сигналом.
|===

Ако сигнал садржи IRC поруку, порука се парсира и у хеш табелу се додају следећи подаци:

[width="100%", cols="3m,2,14", options="header"]
|===
| Променљива           | Тип       | Опис
| irc_server           | показивач | Показивач на IRC сервер (могу да се користе променљиве у hdata типа „irc_server”, као што је `+${irc_server.name}+`).
| irc_channel          | показивач | Показивач на IRC канал (могу да се користе променљиве у hdata типа „irc_channel”, као што је `+${irc_channel.name}+`).
| server               | стринг    | Име сервера (пример: „libera”).
| tags                 | стринг    | Ознаке у поруци (ретко се користе).
| message_without_tags | стринг    | Порука без ознака.
| nick                 | стринг    | Надимак.
| host                 | стринг    | Име хоста.
| command              | стринг    | IRC команда (пример: „PRIVMSG”, „NOTICE”, ...).
| channel              | стринг    | IRC канал.
| arguments            | стринг    | Аргументи команде (укључујући вредност _channel_).
| text                 | стринг    | Текст (на пример, корисникова порука).
| pos_command          | стринг    | Индекс _command_ у поруци („-1” ако се _command_ не пронађе).
| pos_arguments        | стринг    | Индекс _arguments_ у поруци („-1” ако се _arguments_ не пронађе).
| pos_channel          | стринг    | Индекс _channel_ у поруци („-1” ако се _channel_ не пронађе).
| pos_text             | стринг    | Индекс _text_ у поруци („-1” ако се _text_ не пронађе).
|===

Када су подаци показивач, за читање hdata особине може да се употреби променљива `+tg_signal_data+` на следећи начин (у овом примеру је то показивач на бафер):

----
${buffer[${tg_signal_data}].full_name}
----

[[trigger_data_hsignal]]
===== Hsignal

Функција повратног позива „hsignal” поставља следеће променљиве у хеш табелу:

[width="100%", cols="3m,2,14", options="header"]
|===
| Променљива | Тип    | Опис
| tg_signal  | стринг | Име сигнала
|===

Хеш табела садржи све кључеве/вредности из примљене хеш табеле (тип: стринг/стринг).

[[trigger_data_modifier]]
===== Modifier

Функција повратног позива „modifier” поставља следеће променљиве у хеш табелу:

[width="100%", cols="3m,2,14", options="header"]
|===
| Променљива        | Тип    | Опис
| tg_modifier       | стринг | Име модификатора.
| tg_modifier_data  | стринг | Подаци који су послати уз модификатор.
| tg_string         | стринг | Стринг који може да се модификује.
| tg_string_nocolor | стринг | Стринг без кодова боје.
|===

У случају _weechat_print_ модификатора, додају се променљиве коришћењем ознака порука (погледајте <<trigger_data_print,куку print>> испод), као и следеће променљиве:

[width="100%", cols="3m,2,14", options="header"]
|===
| Променљиве         | Тип       | Опис
| buffer             | показивач | Бафер у коме се порука исписује.
| tg_plugin          | стринг    | Додатак бафера у коме се порука исписује.
| tg_buffer          | стринг    | Пуно име бафера у коме се порука исписује.
| tg_prefix          | стринг    | Префикс поруке која се исписује.
| tg_prefix_nocolor  | стринг    | Префикс без кодова боје.
| tg_message         | стринг    | Порука која се исписује.
| tg_message_nocolor | стринг    | Порука без кодова боје.
|===

Ако модификатор садржи IRC поруку, порука се парсира и у хеш табелу се додаје још података (погледајте <<trigger_data_signal,куку signal>>).

[[trigger_data_line]]
===== Line

Функција повратног позива „line” поставља следеће променљиве у хеш табелу:

[width="100%", cols="3m,2,14", options="header"]
|===
| Променљива         | Тип       | Опис
| buffer             | показивач | Бафер.
| buffer_name        | стринг    | Име бафера.
| buffer_type        | стринг    | Тип бафера („formatted” или „free”).
| y                  | стринг    | Број линије за бафер са слободним садржајем (≥ 0), -1 за бафер са форматираним садржајем.
| date               | стринг    | Датум линије (временска ознака).
| date_printed       | стринг    | Датум када је линија била приказана (временска ознака).
| str_time           | стринг    | Датум за приказ. Може да садржи кодове боја.
| tags               | стринг    | Ознаке поруке (са запетом додатом на почетак/крај стринга).
| displayed          | стринг    | „1” ако се приказује, „0” ако је линија филтрирана.
| notify_level       | стринг    | „-1” = без обавештавања, „0” = низак ниво, „1” = порука, „2” = приватна порука, „3” = истицање
| highlight          | стринг    | „1” ако је истакнута, у супротном „0”.
| prefix             | стринг    | Префикс.
| tg_prefix_nocolor  | стринг    | Префикс без кодова боје.
| message            | стринг    | Порука.
| tg_message_nocolor | стринг    | Порука без кодова боје.
|===

Променљиве које се постављају употребом ознака у поруци:

[width="100%", cols="3m,2,14", options="header"]
|===
| Променљива         | Тип    | Опис
| tg_tags_count      | стринг | Број ознака у поруци.
| tg_tag_nick        | стринг | Надимак (из ознаке „nick_xxx”).
| tg_tag_prefix_nick | стринг | Боја надимка у префиксу (из ознаке „prefix_nick_ccc”).
| tg_tag_host        | стринг | Корисничко име и хост, формат: корисничкоиме@хост (из ознаке „host_xxx”).
| tg_tag_notify      | стринг | Ниво обавештавања (_none_, _message_, _private_, _highlight_).
| tg_notify          | стринг | Ниво обавештавања, ако се разликује од _none_.
| tg_msg_pv          | стринг | „1” за приватну поруку, у супротном „0”.
|===

[[trigger_data_print]]
===== Print

Функција повратног позива „print” поставља следеће променљиве у хеш табелу:

[width="100%", cols="3m,2,14", options="header"]
|===
| Променљива         | Тип       | Опис
| buffer             | показивач | Бафер.
| tg_date            | стринг    | Датум/време поруке (формат: `ГГГГ-ММ-ДД чч:мм:сс`).
| tg_displayed       | стринг    | „1” ако се приказује, „0” ако се линија филтрира.
| tg_highlight       | стринг    | „1” ако је истакнута, у супротном „0”.
| tg_prefix          | стринг    | Префикс.
| tg_prefix_nocolor  | стринг    | Префикс без кодова боја.
| tg_message         | стринг    | Порука.
| tg_message_nocolor | стринг    | Порука без кодова боја.
|===

Променљиве које се постављају употребом ознака у поруци:

[width="100%", cols="3m,2,14", options="header"]
|===
| Променљива         | Тип    | Опис
| tg_tags            | стринг | Ознаке поруке (са запетом додатом на почетак/крај стринга).
| tg_tags_count      | стринг | Број ознака у поруци.
| tg_tag_nick        | стринг | Надимак (из ознаке „nick_xxx”).
| tg_tag_prefix_nick | стринг | Боја надимка у префиксу (из ознаке „prefix_nick_ccc”).
| tg_tag_host        | стринг | Корисничко име и хост, формат: корисничкоиме@хост (из ознаке „host_xxx”).
| tg_tag_notify      | стринг | Ниво обавештавања (_none_, _message_, _private_, _highlight_).
| tg_notify          | стринг | Ниво обавештавања, ако се разликује од _none_.
| tg_msg_pv          | стринг | „1” за приватну поруку, у супротном „0”.
|===

[[trigger_data_command]]
===== Команда

Функција повратног позива „command” поставља следеће променљиве у хеш табелу:

[width="100%", cols="3m,2,14", options="header"]
|===
| Променљива     | Тип       | Опис
| buffer         | показивач | Бафер.
| tg_argc        | стринг    | Број аргумената (сама команда се броји као један аргумент).
| tg_argvN       | стринг    | Аргумент #N (`+tg_argv0+` је сама команда, остали су стварни аргументи команде).
| tg_argv_eolN   | стринг    | Од аргумента #N до краја аргумената (`+tg_argv_eol0+` укључује саму команду).
| tg_shell_argc  | стринг    | Број аргумента са поделом као што то ради командно окружење (сама команда се броји као један аргумент).
| tg_shell_argvN | стринг    | Аргумент #N са поделом као што то ради командно окружење (`+tg_shell_argv0+` је сама команда, остали су стварни аргументи команде).
|===

[[trigger_data_command_run]]
===== Command_run

Функција повратног позива „command_run” поставља следеће променљиве у хеш табелу:

[width="100%", cols="3m,2,14", options="header"]
|===
| Променљива | Тип       | Опис
| buffer     | показивач | Бафер.
| tg_command | стринг    | Команда која се извршава.
|===

[[trigger_data_timer]]
===== Timer

Функција повратног позива „timer” поставља следеће променљиве у хеш табелу:

[width="100%", cols="3m,2,14", options="header"]
|===
| Променљива         | Тип    | Опис
| tg_remaining_calls | стринг | Број преосталих позива.
| tg_date            | стринг | Текући датум/време (формат: `ГГГГ-ММ-ДД чч:мм:сс`).
|===

[[trigger_data_config]]
===== Config

Функција повратног позива „config” поставља следеће променљиве у хеш табелу:

[width="100%", cols="3m,2,14", options="header"]
|===
| Променљива | Тип    | Опис
| tg_option  | стринг | Опција.
| tg_value   | стринг | Вредност.
|===

[[trigger_data_focus]]
===== Focus

Функција повратног позива „focus” поставља следеће променљиве у хеш табелу:

[width="100%", cols="3m,2,14", options="header"]
|===
| Променљива | Тип       | Опис
| window     | показивач | Прозор.
| buffer     | показивач | Бафер.
|===

Хеш табела садржи све кључеве/вредности из примљене хеш табеле (тип: стринг/стринг).

[[trigger_data_info]]
===== Инфо

Функција повратног позива „info” поставља следеће променљиве у хеш табелу:

[width="100%", cols="3m,2,14", options="header"]
|===
| Променљива   | Тип    | Опис
| tg_info_name | стринг | Име инфо.
| tg_arguments | стринг | Аргументи.
| tg_info      | стринг | Празан стринг (инфо који ће се вратити).
|===

[[trigger_data_info_hashtable]]
===== Info_hashtable

Функција повратног позива „info_hashtable” поставља следеће променљиве у хеш табелу:

[width="100%", cols="3m,2,14", options="header"]
|===
| Променљива     | Тип    | Опис
| tg_info_name   | стринг | Име инфо.
|===

Хеш табела садржи све кључеве/вредности из примљене хеш табеле (тип: стринг/стринг).

[[trigger_examples]]
==== Примери

[[trigger_example_url_color]]
===== Боја за URL адресе

URL адресе се приказују зеленом бојом:

----
/trigger add url_color modifier weechat_print "${tg_notify}" "==[a-zA-Z0-9_]+://[^ ]+==${color:green}${re:0}${color:reset}=="
----

[NOTE]
Једноставни регизраз који се користи за детекцију URL адреса можда неће ухватити све URL адресе, али је бржи од комплексног регизраза.

[[trigger_example_auto_pong]]
===== Ауто pong на ping упите

Када неко у приватни бафер пошаље „ping”, овај окидач ће аутоматски одговорити са `pong`:

----
/trigger add pong print "" "${type} == private && ${tg_message} == ping" "" "pong"
----

[[trigger_example_responsive_layout]]
===== Респонзивни распоред

Следећи окидачи могу да се употребе за прилагођавање ствари онда када се промени величина терминала:

----
/trigger add resize_small signal signal_sigwinch "${info:term_width} < 100" "" "/bar hide nicklist"
/trigger add resize_big signal signal_sigwinch "${info:term_width} >= 100" "" "/bar show nicklist"
----

Окидачи хватају сигнал „signal_sigwinch”, који шаље програм WeeChat онда када прими сигнал SIGWINCH (тј. када се промени величина терминала).

Услов са `+${info:term_width}+` проверава ширину терминала (такође можете да употребите и `+${info:term_height}+` ако је потребно).

Када у примеру терминал постане мали, листа надимака се сакрива. А трака се враћа у случају да ширина постане већа или једнака 100 карактера.

[[trigger_example_config_save]]
===== Аутоматско чување конфигурације

Можете аутоматски сачувати конфигурационе фајлове (`+*.conf+`), на пример, на сваки сат:

----
/trigger add cfgsave timer 3600000;0;0 "" "" "/mute /save"
----

Аргументи timer куке су:

* _3600000_: 3600 * 1000 милисекунди, функција повратног позива се позива сваког сата
* _0_: поравнање на секунду (овде се не врши поравнање)
* _0_: макс број позива (0 = тајмер се никада не зауставља)

Команда `/mute /save` ће нечујно да сачува конфигурационе фајлове (ништа се не исписује у бафер језгра).

[[trigger_commands]]
==== Команде

include::includes/autogen_user_commands.sr.adoc[tag=trigger_commands]

[[trigger_options]]
==== Опције

Одељци у фајлу _trigger.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак  | Команда за контролу                      | Опис
| look    | /set trigger.look.*                      | Изглед и осећај.
| color   | /set trigger.color.*                     | Боје.
| trigger | <<command_trigger_trigger,/trigger add>> +
            <<command_trigger_trigger,/trigger set>> +
            /set trigger.trigger.*                   | Опције окидача.
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=trigger_options]

[[typing_plugin]]
=== Typing

Доатак typing се користи да обавести остале кориснике када куцате поруке, као и да
прикаже листу корисника који тренутно куцају поруке у баферу.

Користи га IRC додатак на баферима канала и на приватним баферима када је укључена
„message-tags” могућност (што можете да проверите командом <<command_irc_cap,/cap>>). +
Испод хаубе, користи се ознака клијент који куца, пратећи следећу спецификацију:
https://ircv3.net/specs/client-tags/typing.html.

[[typing_activation]]
==== Активација

Ова могућност је подразумевано искључена из разлога приватности. +
Ако желите да је користите, морате да укључите опцију и у typing и у irc додатку:

----
/set typing.look.enabled_nicks on
/set typing.look.enabled_self on
/set irc.look.typing_status_nicks on
/set irc.look.typing_status_self on
----

Обавештења о куцању се приказују на крају статусне линије.

Пример статусне линије са ставком "typing": "bob" куца поруку, а
"alice" је куцала порукку и направила паузу:

....
│[12:55] [6] [irc/libera] 3:#test(+n){4} [Typing: bob, (alice)]                   │
│[@Flashy] █                                                                      │
└─────────────────────────────────────────────────────────────────────────────────┘
....

[[typing_signals_sent]]
==== Сигнали који се шаљу

Када куцате поруку (не команду која поиње са `/`), typing додатак шаље сигнале
којима обавештава остале додатке (као што је IRC) да куцате, па онда ови додаци
могу осталим корисницима да шаљу обавешења о куцању.

Док куцате поруке, шаљу се следећи сигнали:

[width="100%",cols="1,1,5",options="header"]
|===
| Сигнал              | Аргументи         | Опис
| typing_self_typing  | Показивач: Бафер. | Куцате поруку.
| typing_self_paused  | Показивач: Бафер. | Направили сте паузу током куцања поруке.
| typing_self_cleared | Показивач: Бафер. | Обрисали сте командну линију и нисте послали поруку.
| typing_self_sent    | Показивач: Бафер. | Послали сте поруку у бафер.
|===

[[typing_signals_caught]]
==== Сигнали који се хватају

Typing додатак хвата неке сигнале које шаљу остали додаци (као што је IRC)
и ажурира интерне хеш табеле које се користе за чување стања куцања надимака
у баферу. Ове хеш табеле се користе за изградњу садржаја „typing” ставке
траке.

Typing додатак хвата следеће сигнале:

[width="100%",cols="1,4,3",options="header"]
|===
| Сигнал | Аргументи | Опис

| typing_set_nick |
  Стринг: показивач на бафер + ";" + стање (једнос од: "off", "typing", "paused",
  "cleared") + ";" + надимак. +
  Пример: "0x1234abcd;typing;alice". |
  Поставља стање куцања за надимак у баферу.

| typing_reset_buffer |
  Показивач: бафер. |
  Уклања стање куцања за све надимке у баферу.
|===

[[typing_options]]
==== Опције

Одељци у фајлу _typing.conf_:

[width="100%",cols="3m,6m,16",options="header"]
|===
| Одељак | Команда за контролу | Опис
| look   | /set typing.look.*  | Изглед и осећај.
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=typing_options]

[[xfer_plugin]]
=== Xfer

Xfer додатак вам омогућава:

* директни разговор (између два хоста, без сервера): на пример „DCC Chat” преко IRC додатка
* пренос фајлова, на пример „DCC” преко IRC додатка

[[xfer_commands]]
==== Команде

include::includes/autogen_user_commands.sr.adoc[tag=xfer_commands]

[[xfer_options]]
==== Опције

Одељци у фајлу _xfer.conf_:

[width="100%", cols="3m,6m,16", options="header"]
|===
| Одељак  | Команда за контролу | Опис
| look    | /set xfer.look.*    | Изглед и осећај.
| color   | /set xfer.color.*   | Боје.
| network | /set xfer.network.* | Мрежне опције.
| file    | /set xfer.file.*    | Опције за послате/примљене фајлове.
|===

Опције:

include::includes/autogen_user_options.sr.adoc[tag=xfer_options]

[[support]]
== Подршка

Пре него што потражите подршку, детаљно прочитајте документацију и ЧПП који се испоручују уз програм WeeChat.

За подршку преко IRC, на серверу _irc.libera.chat_:

* званични канали (са програмерима):
** _#weechat_ (енглески)
** _#weechat-fr_ (француски)
* незванични канали:
** _#weechat-de_ (немачки)
** _#weechat-fi_ (фински)

За остале начине подршке, погледајте: https://weechat.org/about/support
