Skip to content
This repository

Repo to store some personal irssi scripts

Octocat-spinner-32 act_hide act_hide/act_hide: initial commit of an improved version of hide.pl f… April 22, 2011
Octocat-spinner-32 auto-server Merge branch 'richoH-dev', remote-tracking branch 'origin/richoH-dev' February 03, 2012
Octocat-spinner-32 bnotify Add a hacked up version of fnotify that beeps as well as printing October 15, 2011
Octocat-spinner-32 colour-popup some stuff with colour popups August 04, 2010
Octocat-spinner-32 feature-tests Another flagrant abuse of version control because I'm too lazy to stash. December 02, 2011
Octocat-spinner-32 fixery fixerying grep, trying ot introduce colouring of matches. Some initia… February 03, 2012
Octocat-spinner-32 flood-detect Another flagrant abuse of version control because I'm too lazy to stash. December 02, 2011
Octocat-spinner-32 goodnicks Added goodnicks from richoH/richos-irssi July 18, 2011
Octocat-spinner-32 growl-notify Another flagrant abuse of version control because I'm too lazy to stash. December 02, 2011
Octocat-spinner-32 history-search TODO: repro & fix bug indicated in comment. November 25, 2011
Octocat-spinner-32 ido-mode ido-mode/ido_switcher: added use warnings; May 25, 2011
Octocat-spinner-32 joinforward try to keep track of forwarded channels (#foo -> ##foo) and /j takes … January 18, 2011
Octocat-spinner-32 longify Another flagrant abuse of version control because I'm too lazy to stash. December 02, 2011
Octocat-spinner-32 masshilight added masshilight on requset form bikcmp - modified original to suppo… August 21, 2010
Octocat-spinner-32 modules added a 'overlay' loadable module that's hopefully going to do osme d… February 19, 2011
Octocat-spinner-32 molly-guard renamed foreach-guard to molly-guard and added a bunch of extra todo … December 02, 2011
Octocat-spinner-32 no-key-modes A custom expando like $M that doesnt show channel key August 26, 2010
Octocat-spinner-32 patches add patches for removing totally, or reducing to 1ms, the Irssi::time… July 08, 2011
Octocat-spinner-32 prompt_info oops, escape the var in the documentation. Promise self to actually t… August 06, 2012
Octocat-spinner-32 quit-notify fixes bug in notifyquit uberprompt autoload July 24, 2011
Octocat-spinner-32 random added a bunch of feature_test stuff that I've forgotten to add. Nothing October 11, 2011
Octocat-spinner-32 sb-position sb_position: oops, switch back to default sbar view December 02, 2010
Octocat-spinner-32 scriptinfo added scriptinfo template stub, but with some naming stuff pasted in … February 20, 2012
Octocat-spinner-32 scrolled-reminder Bah. more fixing of script_is_loaded. April 01, 2011
Octocat-spinner-32 tab_stop tab_stop: added tab_stop, a bit of a rework of an old script to repla… May 24, 2011
Octocat-spinner-32 testing vim-mode/tests.pl: Add first real tests: h l 0 ^ $ <Space> <BS> f t. March 05, 2011
Octocat-spinner-32 throttled-autojoin added a not-quite-functional channel autojoin throttling script September 26, 2010
Octocat-spinner-32 tinyurl-tabcomplete shortening support for protocols other than http(s) July 14, 2011
Octocat-spinner-32 undo undo: updates to kill-ring, implementing most of the basic functional… April 18, 2011
Octocat-spinner-32 url_hilight url_hilight: added a warning about unfinishedness, and make it at lea… November 05, 2010
Octocat-spinner-32 vim-mode clean up a bit of the content/style of doc patch by rking. April 28, 2012
Octocat-spinner-32 .gitignore updated a whole bunch of README files. April 18, 2011
Octocat-spinner-32 Makefile start of Makefile to automate generation of README.pod docs for each … April 22, 2011
Octocat-spinner-32 README.md If these links don't work I'm going to move to the country and live i… September 23, 2011
Octocat-spinner-32 changed_update.pl brought in changes in readme and deployment stuff from branch where i… May 05, 2011
Octocat-spinner-32 readme_generator.pl vim-mode/vim_mode: FINAL doc update for now. Or Else. April 22, 2011
README.md

Shabble's Irssi Scripts

This repository contains a collection of scripts and things I have written or adapted from others to improve my (and maybe your!) Irssi using experience.

What's In Here

I never thought I'd end up writing so many scripts, so rather than give them each their own repository as might be sensible, they're all stuffed in here.

The following is a brief list of the interesting scripts, and why you might want to use them.

  • auto-server/ -- provides a /join+ command which allows you to join channels on servers to which you're not currently connected, as long as you've got everything set up correctly in your /channels and /networks config.

  • history-search/ -- an improved version of @coekie's original history_search, it behaves a lot more like the standard Readline incremental search over your recent command history.

  • ido-mode/ -- A window switching mode best described as "The bastard lovechild of Emacs ido-mode and window_switcher.pl". It supports flexible matching of channel names, filtering by active windows, servers, and more. See the script comments for details.

  • feature-tests/ has a bunch of different little scripts written to test certain aspects of Irssi behaviour. None of them are likely to be particularly useful unless you're looking for simple examples of various things on which to build. Some of the ones which might actually be useful are:

    • key_test.pl - decodes and prints keyboard inputs from the gui key pressed signal. Useful for checking what keycode a particular combo generates.

    • template.pl - A basic outline of a script to use as a starting point for others.

    • pipes.pl A barebones template for a script which uses forking and pipes to handle async tasks in the background without hanging Irssi.

  • modules/ contains a few half-baked attempts at loadable modules for Irssi, none of which do very much at the moment. They might be useful as templates for your own modules, however.

  • no-key-modes/ provides an additional expando $M_nopass which you can add to your theme to provide channel modes, but without showing the channel key. This is probably less useful since someone pointed me at /set chanmode_expando_strip which has much the same effect.

  • patches/ contains a few patches for the irssi source, probably out of date by now, which do various things. The easiest way to figure out what is to read them, unless I get bored and document them sometime.

  • prompt_info/ was the original "How can I put dynamic status crap into my prompt string" script. This has since been superceded by the far nicer uberprompt.pl which also lives in that dir. Many of my other scripts require uberprompt as a way to provide part of their user interface.

  • sb-position/ gives you an additional status bar item which indicates approximately how far you are scrolled in a given window buffer, in terms of pages and percentage. It is configurable as the comments in the script explain.

  • scrolled-reminder/ is a script that tries to prevent one of the more common accidental IRC screwups -- replying to a conversation that happened hours ago because you didn't notice you were scrolled up in the history buffer. If you try to send a message whilst scrolled, it'll warn you and check you really want to first.

  • quit-notify/ is based on a script by vague@#irssi/Freenode. It is most useful when you are ignoring joins/parts/quits from a channel, and hence don't realise when the person you are responding to has left. If they have (or if you prefix your message with a nonexistent nick), the script will ask you to confirm that you want to send the message, much like scrolled_reminder.

  • undo/ contains 2 scripts, undo.pl and kill-ring.pl. See their header for further documentation.

    Still undergoing heavy development, and not really ready for public usage.

  • testing/ is a Perl framework external to Irssi (ie: not a script) that will ultimately allow you to write unit tests for your scripts, and run them in a real irssi instance, and check that they behave correctly.

    Still undergoing heavy development, and not really ready for public usage.

  • throttled-autojoin/ doesn't work. It's meant to allow people with huuuuuuge numbers of autojoin channels and servers to connect slowly, so as not to time themselves out when reconnecting. Mostly dead.

  • tinyurl-tabcomplete/ is a script which lets you hit tab following anything that looks like a URL to replace it with a tinyurl'd version. Handy if you regularly paste Google-maps links or other massive horrible links.

  • url_hilight/ I can't remember what this one does. Suggestions & ideas welcome.

  • vim-mode/ The most exciting (and by far the largest) script here. Gives vim-addicted users a way to use most of their finger-memory in Irssi. Still under active development, features and bug-requests welcome. Also supported in #irssi_vim on Freenode.

Documentation

If you are here looking for my Irssi scripting documentation, please note that it has been moved to https://github.com/shabble/irssi-docs/wiki

Other Things

Many of my scripts require uberprompt as a dependency. Those that do will say so in the comments at the top of the file, and will probably refuse to load without it.

Reminders for myself

Not for public consumption. This section contains text known to the State of California to cause madness, rabies, or reproductive harm.

Todo Lists

I should really put these into the issue tracker instead. That can be a reminder. I'll go create an issue for it Right Now!

Script ideas

  • override /set to provide list manipulation options, something like /set {-append, -remove} $param $value. Bit like a general purpose version of hide.pl

  • Finish work on foreach-guard

  • Finish (Well, start) something in colour-popup to make an actual popup

  • Revisit some of the cracked-out ideas for colour/format overlays

  • Go back and clean up irssi-vim like I promised to everyone ages and ages ago. Also do the features thing.

  • Actually fix all the issues people have dilligently reported.

Other things

  • Go do something useful regarding the IrssiX:: namespace and add some useful general features.

    • Window and transient-split handling

    • Higher-level abstraction for key-interception

    • Overlays?

    • Format helper functions like the ones listed in the Guide.

  • Refactor just about everything to use the above.

  • Do something productive again on the 256colour fork/patches

  • Ditto @leonerd's fixterms key binding support

  • Try to get someone to look at my patches & bug reports.

Documentation Wiki

You know, that one.

  • Fix the stupid ToC generator internal anchor names problem.

  • Add more examples, always more examples.

Deployment Process

  • Commit messages should be prefixed with something approximating the name of the script or directory to make it obvious what thing is being worked on.

  • ./readme_generator.pl <dir> [<dirs] to generate README files for each script that has POD in it. Use --overwrite from time to time to clean things out.

  • ./changed_update.pl <script_name> changes the %IRSSI{changed} timestamp to the current time, which is something I always forget to do.

  • Think about bumping the internal version number if it's a big change.

  • Commit!

Something went wrong with that request. Please try again.