def create_workspace(monitor) monitor[:workspaces] << Workspace.new($monitors.key(monitor)) monitor[:selected_workspace] = monitor[:workspaces].length - 1 end def delete_workspace(n, monitor) return if monitor[:workspaces].length <= 2 monitor[:workspaces][n].windows.each { |w| monitor[:workspaces][(n - 1) % monitor[:workspaces].length].drop 0, w } monitor[:workspaces].delete_at n if monitor[:selected_workspace] >= n monitor[:selected_workspace] -= 1 end end def select_workspace(n, monitor) if n >= monitor[:workspaces].length select_workspace monitor[:workspaces].length - 1, monitor elsif n < 0 select_workspace 1, monitor end monitor[:workspaces].each { |w| w.hide if w != monitor[:workspaces][n] } monitor[:selected_workspace] = n monitor[:workspaces][n].show monitor[:workspaces][n].compute_tiled! end