移动窗口到当前space,有方向的(优化版本)

700阅读 0评论2015-02-01 duoerlee
分类:LINUX

require 'totalspaces2'

def alfred_move_windows(appname)
    current_space = TotalSpaces2.current_space
    windowsall = TotalSpaces2.window_list

     if !windowsall.empty?
         no_current_windows = windowsall.select {
            |window| (window[:space_number] != current_space)&&window[:app_name].downcase =~/#{appname}/
         }
     end
         no_current_windows.each{|window| 
              win_pra = (window[:frame].delete"\{\} ").split(',')
              xpos    =  win_pra[0].to_i
              ypos    =  win_pra[1].to_i 
              width   =  win_pra[2].to_i
              off     =  1920  - xpos
              if window[:space_number] < current_space
                 TotalSpaces2.move_window(
                                       window[:window_id],-1920, ypos)
                 TotalSpaces2.move_window_to_space(
                                         window[:window_id], current_space)
                 TotalSpaces2.set_front_window(no_current_windows[0][:window_id]) 
                 0.step(1920,5){|n| TotalSpaces2.move_window(
                                      window[:window_id],-(1920-xpos)+n,ypos)
                                    } 
              else
                 TotalSpaces2.move_window(
                                  window[:window_id],1920, ypos)
                 TotalSpaces2.move_window_to_space(
                                  window[:window_id], current_space)
                 TotalSpaces2.set_front_window(no_current_windows[0][:window_id]) 
                 0.step(off,5){|n| TotalSpaces2.move_window(
                                        window[:window_id],1920-n,ypos)
                                    } 
              end
              sleep 0.2
          }
end
$LOAD_PATH << '.'
alfred_move_windows("{query}")

上一篇:利用totalspaces2的ruby借口动态移动窗口
下一篇:Totalspaces2+Alfred: send windows to other spaces