(1) (1) (1) (3) (1) (1) (1) (1) (4) (3) (3) (3) (1) (1)
Ruby XMPP handler 18/05/08 20:11

What ?

I’m trying to make a little ruby wrapper around few XMPP/Jabber functionalities.

  1. handling xmpp:// URLs (add a contact, send a message, etc…) XEP-0147
  2. update status for all (or one) compliant clients (such as PSI )

Using Xmpp4R or even Jabber::Simple it should pretty straightforward…

A bit more tricky :

to have an handler for msn: URL able to pick the name of the gateway and make a good JID !

Why ?

  1. because psi can’t do that and it’s a pity. Plus, it’s really easy to do !
  2. to be able to script on that, for example to set status “Away” when you close your lid…
Ruby todo list manager 18/05/08 06:34
#!/usr/bin/env ruby
#
# todo : very simple TODO list manager
#
# How to install :
# paste this code in a file "todo"
# A chmod  x todo, a mv to you PATH could also be a good idea
#
# How to use :
# type todo -h to have help
# There you are, it's not so complicated ! ;-)
#
# WTFPL - Hamlet - 2008


# The file to keep the todo list, feel free to change !
FILE = ENV['HOME'] "/.todo.txt"
require 'fileutils'

# Grab the list
@todo_list = File.exist?(FILE) ? IO.readlines(FILE) : []

tt = @todo_list.dup

# Without arguments, print the list
if (ARGV.size == 0) then
	@todo_list.each_index{|index|
		puts index.to_s " - " @todo_list[index]
	}

# The help message
elsif (ARGV[0] == "-h" || ARGV[0] == "--help") 
	puts "\ntodo [-h | --help] [number ...] [anything ...]
if param empty, display current todo list
if first param ask for help, this
if first paramS are numbers, delete the coresponding lines
take all the remaining (if any) to make a new entry...\n"

# Or we proccess all the arguments
# first seeking integers, for lines to delete
# then, any kind of stuff to make a new entry !
else 
	finished = false
	todo_temp = []
	ARGV.each {|arg|
		if (!finished && (arg == arg.to_i.to_s)) then
			@todo_list[arg.to_i] = ''
		else  
			finished = true
			todo_temp << arg
		end
	}
	@todo_list << (todo_temp.join(' ') + "\n") if (todo_temp != [])
	@todo_list.compact!
end

# Rewrite the file, if needed...
File.open(FILE, 'w') {|file| file.write @todo_list } if tt != @todo_list

# Enjoy !
“Clever” completion 18/05/08 02:36

I was thinking..

It could be cool to be able, in Bash shell, to toggle a kind of “clever” completion, with features like that :

  1. completion before and after a command : pdf [TAB] => xpdf
  2. completion based on functionalities : jabber [TAB] => psi | gajim | etc...
  3. completion based on the following file’s type (from extension or MIME-type) : [TAB] toto.pdf => xpdf toto.pdf

Maybe completion is not really good for all of this.

  • The second is kind of implemented in Debian with their alternatives !
  • The third could be a little script (name ie. “open”) which will try to open the file with a software based on its type, with perhaps a menu for the user to choose his preferred one, why not with setting of preferences !
Update:
  • first one : dmenu -i does it ! I was using dmenu when first thinking about all that, and now I’ve RTFM