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.
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