Estou há muito tempo usando um miniscript chamado lonew
para isso. Ele deve ser curto para "lastof or new"
. lastof
é outro script meu, que tenta encontrar uma janela visível que corresponda a um determinado comando que foi acessado mais recentemente.
Ambos os scripts estão abaixo:
(eles podem usar alguma refatoração, mas fazem o trabalho)
lonew:
#!/bin/bash
CMD="$1"; shift; ARGS="$@"
lastof $CMD || { echo $CMD $ARGS; $CMD $ARGS & }
disown
lastof:
#!/usr/bin/env ruby
#open-last
#List all windows and sort them by the time they were last accessed
require 'shellwords'
XTIME="_NET_WM_USER_TIME"
QARGV=ARGV.map {|arg| Shellwords.escape(arg)}
ids=IO.popen "xdotool search --onlyvisible #{QARGV.join(" ")}"
max_time_id=nil
max_time=nil
ids.each_line do |id|
id.chomp!
puts "id=#{id}"
time='xprop -id #{id} #{XTIME}'.split('=')[1].to_i
max_time||=time
max_time_id||=id
if time > max_time
max_time=time
max_time_id=id
end
end
exit(1) unless max_time_id
puts "Switching to ID: #{max_time_id}"
exit system("xdotool windowactivate #{max_time_id}")
__END__