uk/Tips_And_Tricks.mdwn
author Myhailo Danylenko <isbear@isbear.org.ua>
Sun, 14 May 2017 20:58:00 +0300
changeset 1 1e57279b82b1
permissions -rw-r--r--
Add wiki content

[[!meta title="Поради й рецепти"]]

[[!toc]]

# Багаторядкові повідомлення

Ви можете надсилати багаторядкові повідомлення за допомогою команди `/msay`
(див. [man-сторінку][manpage]).

Ви можете призначити клавіші до `/msay toggle` та (чи) до `/msay
toggle_verbatim`, щоб мати змогу швидко перемикати багаторядковий режим:

    # Alt-m для перемикання в/із багаторядкового режиму
    bind M109 = msay toggle
    # Alt-M для перемикання в/із verbatim-багаторядкового режиму
    bind M77 = msay toggle_verbatim

# Швидкий перехід до контакту

Ви можете використовувати команду `/roster search` для переходу до визначеного
контакту у списку. Або навіть призначати для цього клавіші, наприклад, якщо ви
дуже багато розмовляєте із john.doe@jabber.foo, ви можете призначити F1:

    bind 265 = roster search john.doe

**Зауваження:** Ця команда шукає лише серед видимих контактів, отож якщо ви
ввімкнули приховування відсутніх у мережі контактів, вона може нічого не знайти,
якщо контакт поза мережею.

Або ви можете визначити скорочення для цієї команди, якщо ви часто її
використовуєте із різними параметрами:

    alias rsearch = roster search

Тепер, завдяки доповненню команд, вам треба набрати лише `/rs<tab>`.

# Одна бесіда із декількома контактами

(Для цього вам знадобиться версія MCabber не менша за 0.9.2)  
Ви використовуєте jabber з декількома транспортами, й маєте контакти, які
використовують декілька різних систем? MCabber може вести один журнал бесід для
них усіх.

Скажімо, у вас є контакти abc@jabber.org та abc@icq.jabber.org. Спочатку вам
треба об'єднати існуючі файли журналів за допомогою `merge_history.py`.

    $ cd ~/.mcabber/histo/
    $ merge_history abc\@jabber.org abc\@icq.jabber.org > abc
    $ mv abc abc\@jabber.org
    $ rm abc\@icq.jabber.org

Тепер треба створити символічне посилання
(`abc@icq.jabber.org -> abc@jabber.org`):

    $ ln -sf abc\@jabber.org abc\@icq.jabber.org

Після перезавантаження MCabber завантажить журнал бесіди лише один раз для двох
контактів. Обидва контакти будуть мати однакові буфери бесід. Команди, які
працюють із буфером бесіди, як то `/buffer scroll_lock/purge/clean`, виконані на
одному контакті, вплинуть й на буфер іншого, бо насправді це один і той же
буфер.

Таким чином можна зібрати до купи скільки завгодно контактів, не тільки два...
:)

# Показ доступності контактів із транспорту

За допомогою FIFO та скрипта обробки подій ви можете позначати контакти із
транспорту іншим кольором коли транспорт відключено. У `mcabberrc`:

    color roster clear
    color roster *     *                green
    color roster dn_?  *                brightblack
    color roster *     *@icq.jabber.org red
    color roster dn_?  *@icq.jabber.org red

Це позначить контакти як недоступні на початку. Тоді у `eventcmd.sh`, там де
обробляється подія `STATUS` (`"$1" = 'STATUS')

    if [ "$3" = 'icq.jabber.org' ]; then
            if [ "$2" = '_' ]; then
                    echo "color roster * *@icq.jabber.org red" > ~/.mcabber/fifo
                    echo "color roster dn_? *@icq.jabber.org red" > ~/.mcabber/fifo
            else
                    echo "color roster * *@icq.jabber.org white" > ~/.mcabber/fifo
                    echo "color roster dn_? *@icq.jabber.org brightblack" > ~/.mcabber/fifo
            fi
    fi

Цей код змінюватиме забарвлення контактів кожен раз, як транспорт змінюватиме
свій статус.

# Відкладені дії (наприклад, повідомлення для контакту у 'dnd')

Ви можете відкласти виконання якоїсь дії до тих пір, доки контакт не стане
готовим її прийняти (або доки не трапиться якась інша подія). Додайте до
`eventcmd.sh`:

    if [ -f ~/.mcabber/jobs/"$1_$2_$3" ]; then
            cat ~/.mcabber/jobs/"$1_$2_$3" > ~/.mcabber/fifo
            rm ~/.mcabber/jobs/"$1_$2_$3"
    fi

Та створіть директорію для відкладених завдань:

    $ mkdir ~/.mcabber/jobs/

Тепер ви можете робити речі на кшталт цієї:

    $ cat > ~/.mcabber/jobs/STATUS_O_buddy@jabber.org <<EOF
    > say_to -q buddy@jabber.org Привіт! Це автоматичне повідомлення.
    > say_to -q buddy@jabber.org Будь ласка, коли звільнишся, зроби те-то й те-то.
    > EOF

Отож ви не будете турбувати контакт, доки він перебуває у `dnd`, і в той же час
вам не треба тримати це повідомлення в голові.

# Згортання груп при старті

Використовуючи hook'и ви можете згортати рідко використовувані групи контактів
(наприклад, група транспортів та інших технічних контактів) при старті. У
`mcabberrc`:

    set hook-post-connect   = source ~/.mcabber/post-connect.rc
    set hook-pre-disconnect = source ~/.mcabber/pre-disconnect.rc

А в `~/.mcabber/post-connect.rc`:

    group fold Технічні
    group fold Старі

# Автоматична зміна статусу при від'єднанні screen

Якщо ви хочете встановлювати відповідний статус, коли ви закриваєте термінал з
screen, в якому запущений mcabber, додайте до вашого `~/.logout` (або
`~/.bash_logout`, якщо ви користуєтеся BASH):

    # mcabber auto-away - скоріше за все, працюватиме лише в Linux, бо використовується /proc
    if [ -p .mcabber/mcabber.fifo ]; then
      MCABBER_PID=$(pgrep -u $USER mcabber)
      if [ -n $MCABBER_PID ]; then
        MCABBER_STY=$(cat /proc/$MCABBER_PID/environ | tr '\0' '\n' | grep '^STY=' | cut -d'=' -f2)
    
        if [ -n $MCABBER_STY ]; then
          if [ -z "$(screen -list | grep $MCABBER_STY.*\(Attached\))" ]; then
            echo /status notavail > .mcabber/mcabber.fifo
          fi
        fi
      fi
    fi

[manpage]: http://www.lilotux.net/~mikael/mcabber/files/mcabber.1.html