Tiled OO Windows Anyone?

A long time back I used a command in Quickeys (now gone) to “corral” all my open OmniOutliner windows and tile them as small windows so I could see the title of each file and a few lines.

It made finding open files easy and kept my desktop fairly clear.

Does that sound usable to other OO users ???

Thansks - BoC

I finally gave up the hopes for Quickeys. It turned out, though, that Keyboard Maestro can do most of the things Quickeys could, and many, many more! It’s sometimes a bit more complicated to use than Quickeys was, but it’s extremely powerful and flexible. Keyboard Maestro can do a lot of windows manipulating, but I don’t think it can do exactly what you are asking for. My suggestion is that consider opening Omnioutliner windows (and other windows) in tabs instead (Mac OS System Preferences: Dock: ”Prefer tabs when opening documents”: Always) to get a clean view and an easy way to find your files.

I tried to modify the below script from Ben Waldie to work with OmniOutliner, but failed. Here it is in case others want to try for the gold star:

-- Ask the user to enter some preliminary values for positioning and sizing the windows 
set theTopOffset to askForInput("How many pixels would you like between the menu bar and the first window?", 10)
set theLeftOffset to askForInput("How many pixels would you like between the left of the screen and the first window?", 10)
set theWindowHeight to askForInput("How many pixels high would you like each window?", 300)
set theWindowWidth to askForInput("How many pixels wide would you like each window?", 350)
set theWindowOffset to askForInput("How many pixels would you like the windows offset from one another?", 25)
set staggerWindows to (button returned of (display dialog "Would you like the windows to cascade to the right?" buttons {"No", "Yes"} default button "Yes")) = "Yes"

-- Compensate for the menu bar 
set theTopOffset to theTopOffset + 45

-- Get the parent folders of any opened windows 
tell application "Finder"
	set theFolders to folder of every window
	
	-- Sort the folders by name 
	set theFolders to sort theFolders by name
	
	-- Prepare the bounds list for the first window 
	set theWindowBounds to {theLeftOffset, theTopOffset, theLeftOffset + theWindowWidth, theTopOffset + theWindowHeight}
	
	-- Loop through the folders 
	repeat with aFolder in theFolders
		
		-- Target the container window of the current folder 
		tell container window of aFolder
			
			-- Set the bounds of the window to the new bounds 
			set bounds to theWindowBounds
			
			-- Offset the bounds of the next window down the appropriate amount 
			set item 2 of theWindowBounds to (item 2 of theWindowBounds) + theWindowOffset
			set item 4 of theWindowBounds to (item 4 of theWindowBounds) + theWindowOffset
			
			-- If the windows should be staggered, offset the bounds of the next window right the appropriate amount 
			if staggerWindows = true then
				set item 1 of theWindowBounds to (item 1 of theWindowBounds) + theWindowOffset
				set item 3 of theWindowBounds to (item 3 of theWindowBounds) + theWindowOffset
			end if
		end tell
	end repeat
end tell

-- Ask the user to enter a value 
on askForInput(theQuestion, theDefaultAnswer)
	return text returned of (display dialog theQuestion default answer theDefaultAnswer)
end askForInput