利用totalspaces2的ruby借口动态移动窗口

1080阅读 0评论2015-01-13 duoerlee
分类:其他UNIX

require 'totalspaces2'


def alfred_move_windows(appname)
    wx  = 0
    wxy = 0


    current_space = TotalSpaces2.current_space
    windowsall = TotalSpaces2.window_list


     if !windowsall.empty?
         no_current_windows = windowsall.select {
            |window| window[:space_number] != current_space
         }
         no_current_windows.each{|window| 
           wx = wx + 1          
           if window[:app_name].downcase =~/#{appname}/
              win_pra = (window[:frame].delete"\{\} ").split(',')
              xpos =  win_pra[0].to_i
              ypos =  win_pra[1].to_i 
              off  =  (1920 - xpos)
              TotalSpaces2.move_window(
                 window[:window_id],1920, ypos)
              TotalSpaces2.move_window_to_space(
                 window[:window_id], current_space)
              0.step(off,10){|n| TotalSpaces2.move_window(
                 window[:window_id],1920-n,ypos)
               } 


                 if wxy == 0
                    wxy = wx - 1
                 TotalSpaces2.set_front_window(no_current_windows[wxy][:window_id]) 
                    wxy = nil
                 end
                 sleep 0.3
            end
          }
     end
end


$LOAD_PATH << '.'
alfred_move_windows("{query}")


@@@@@@@@@@@@@@@@@@@@@@@@@@

#!/usr/bin/ruby
require 'totalspaces2'


current_spaces = TotalSpaces2.current_space
windows = TotalSpaces2.window_list
if current_spaces < 4
  dest_space = current_spaces + 1
else
  dest_space = 1
end


if !windows.empty?
    current_space_windows = windows.select {
    |window| window[:space_number] == current_spaces
   }
end


if current_space_windows[0]
      win_pra = (current_space_windows[0][:frame].delete"\{\} ").split(',')
      xpos =  win_pra[0].to_i
      ypos =  win_pra[1].to_i 
      off  =  (1920 - win_pra[0].to_i)
      0.step(off,8){|n| TotalSpaces2.move_window(
      current_space_windows[0][:window_id],xpos+n,ypos)
      }
      TotalSpaces2.move_window_to_space(
            current_space_windows[0][:window_id],dest_space)
if current_space_windows[1]
      TotalSpaces2.set_front_window(current_space_windows[1][:window_id])
end
      TotalSpaces2.move_window(
           current_space_windows[0][:window_id],xpos, ypos)
end   












上一篇:移动指定窗口到当前space
下一篇:移动窗口到当前space,有方向的(优化版本)