diff -r eff7327bcabe -r 1e57279b82b1 Tips_And_Tricks.mdwn --- /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` 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 < 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 +