Tips_And_Tricks.mdwn
changeset 1 1e57279b82b1
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Tips_And_Tricks.mdwn	Sun May 14 20:58:00 2017 +0300
@@ -0,0 +1,148 @@
+
+[[!toc]]
+
+# Multi-line messages
+
+You can send multi-line messages with the `/msay` command (see the [manpage][]
+for usage details).
+
+You can bind `/msay toggle` and/or `/msay toggle_verbatim` so that you can
+switch quickly to/from multi-line mode:
+
+    # Alt-m to switch to/from multi-line mode
+    bind M109 = msay toggle
+    # Alt-M to switch to/from _verbatim_ multi-line mode
+    bind M77 = msay toggle_verbatim
+
+With mcabber 0.10 you can try the module extsay if you're using the screen
+utility (see the [[Modules]] page).
+
+# Jump to a contact
+
+You can use `/roster search` to jump to a contact in your roster. You can even
+bind a key, for example if you talk very often with john.doe@jabber.foo, you can
+bind the F1 key:
+
+    bind 265 = roster search john.doe
+
+**Note:** this command only looks for the contact in the displayed buddy, so if you
+hide offline buddies it won't find a disconnected contact.
+
+You may want to create an alias for this command, if you use it a lot:
+
+    alias rsearch = roster search
+
+With the completion, you only need to type `/rs<tab>` now.
+
+# One history for multiple buddies
+
+(You'll need mcabber >=0.9.2 for that feature)  
+You're using jabber with several transports and you have some buddies who are
+using more than one chat protocol?  mcabber is able to share one history file
+between all of them.
+
+Let's say you have a contact abc@jabber.org and abc@icq.jabber.org. First of
+all, you have to merge both histories with `merge_history.py`, so that old data
+won't be lost.
+
+    $ cd ~/.mcabber/histo/
+    $ merge_history abc\@jabber.org abc\@icq.jabber.org > abc
+    $ mv abc abc\@jabber.org
+    $ rm abc\@icq.jabber.org
+
+Now you have to create a symlink(abc@icq.jabber.org -> abc@jabber.org):
+
+    $ ln -sf abc\@jabber.org abc\@icq.jabber.org
+
+After a restart, mcabber will load the history only once for both contacts. Both
+JIDs are sharing this history now. Commands relating to the chat buffer, such as
+`/buffer scroll_lock/purge/clean` on one buddy will change the buffer of the
+other buddy as well (because it's internally the same buffer).
+
+Of course it is possible to link more than two buddies to one history... :)
+
+# Indication of transported buddies availability
+
+Using FIFO feature and eventcmd script you can mark transported buddies with
+different color, when transport is not connected. In `mcabberrc`:
+
+    color roster clear
+    color roster *     *                green
+    color roster dn_?  *                brightblack
+    color roster *     *@icq.jabber.org red
+    color roster dn_?  *@icq.jabber.org red
+
+This will mark transported buddies as unavailable initially. Then in
+`eventcmd.sh`, when processing `STATUS` event ( `"$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
+
+This will change their color, when transport becomes available/unavailable.
+
+# Delayed actions (eg message for 'dnd' buddy)
+
+You can delay some action until buddy becomes available or some other event
+happens. Add to `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
+
+and create jobs dir:
+
+    $ mkdir ~/.mcabber/jobs/
+
+Then you can do something like this:
+
+    $ cat > ~/.mcabber/jobs/STATUS_O_buddy@jabber.org <<EOF
+    > say_to -q buddy@jabber.org Hi, this is a jobbed message
+    > say_to -q buddy@jabber.org Please, when you will have free time, do this and that.
+    > EOF
+
+That will not bother buddy while he is 'dnd', and you won't have to keep your
+message in mind.
+
+# Folding groups on start
+
+With a hooks feature you can fold infrequently used groups (eg transports and
+other services) on startup. In `mcabberrc`:
+
+    set hook-post-connect   = source ~/.mcabber/post-connect.rc
+    set hook-pre-disconnect = source ~/.mcabber/pre-disconnect.rc
+
+and in `~/.mcabber/post-connect.rc`:
+
+    group fold Transports
+    group fold Old
+
+# Auto-Away and Screen
+
+So, we all want an auto-away but love to keep mcabber ticking away in a screen
+session. By putting the following into your `~/.logout` (or `~/.bash_logout` if
+you use BASH), you should get what you are looking for:
+
+    # mcabber auto-away - probably a Linux only solution as we use /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
+