くそいのつくった
wmctrl生だとWindows7でいうWin+数字的なことができないので作った
% client フォーカス切り替えのタイトル なかったときの起動コマンド
みたいな雰囲気でつかう
Win+矢印的なのもほしいけど、wmctrlでフォーカスあたってるウィンドウを取得できるか怪しいのでできるか謎
ていうかwmctrlのコード直接いじったほうがいいように思います
server
require 'drb' class Window attr_accessor :id def initialize(id, g, key) @id = id @x,@y,@w,@h = g[0],g[1],g[2],g[3] @key = key end end class WindowGroup < Array def initialize super @focus = 0 end def focus_next @focus = (@focus + 1) % size `wmctrl -i -a #{self[@focus].id}` end end class WmctrlCtrl def initialize @groups = {} end def next_or_run(key, cmd) update(key) g = @groups[key] if g.empty? `sh -c "#{cmd}" &` else g.focus_next end end def update(key) group = @groups[key] || @groups[key] = WindowGroup.new group.clear `wmctrl -lG`.split("\n").each do |m| mm = m.split(' ') next unless mm[6..mm.size].join(' ') =~ /#{key}/ group << Window.new(mm[0], mm[2..5], key) end end end DRb.start_service("druby://127.0.0.1:5656", WmctrlCtrl.new) DRb.thread.join
client
#! /usr/bin/ruby require 'drb' ctrl = DRbObject.new_with_uri('druby://127.0.0.1:5656').next_or_run(ARGV[0], ARGV[1])