Skip to main content

Overview

Stash allows you to temporarily hide windows at the edges of your screen, keeping your workspace clean while maintaining quick access to important applications. Windows remain partially visible at the edge and automatically reveal when you hover near them or use a keybind. This feature is perfect for:
  • Monitoring apps (Activity Monitor, system stats)
  • Communication tools (Messages, Slack) that you check frequently
  • Reference materials you want nearby but not always visible
  • Music players or other utility apps

How Stashing Works

When you stash a window, Loop moves it to a screen edge with only a small portion remaining visible. The window automatically reveals when your mouse approaches the edge and hides again when you move away.

Basic Usage

1

Create a stash action

In Settings > Keybinds, create a new custom action with direction “Stash” and choose an edge (left, right, or bottom)
2

Assign a keybind

Record your keyboard shortcut (e.g., Trigger + S)
3

Stash a window

Focus the window you want to stash and press your keybind
4

Reveal on demand

Hover your mouse near the stashed edge to reveal the window, or press the same keybind again
Only one stashed window can be revealed at a time. Revealing a new window automatically hides the previously revealed one.

Stash Edges

Loop supports stashing windows at three screen edges:

Left Edge

Windows slide out from the left side of the screen

Right Edge

Windows slide out from the right side of the screen

Bottom Edge

Windows slide up from the bottom of the screen
Top edge stashing is not currently supported due to macOS menu bar conflicts.

Implementation Details

Stash functionality is managed by the StashManager singleton class:
Loop/Stashing/StashManager.swift

Mouse-Based Revealing

StashManager listens for mouse movement events to reveal windows:
The system uses debouncing to avoid excessive processing:

Stashed vs Revealed Frames

Each stashed window has two frame states:

Animation System

Reveal and hide transitions can be animated:

Configuration Options

number
default:"5"
How many pixels of the stashed window remain visible at the screen edge. Increase for easier mouse targeting.
toggle
default:"true"
Enable smooth reveal/hide animations. Disable for instant transitions.
toggle
default:"false"
Automatically focus revealed windows and shift focus away when hiding. When disabled, windows reveal without stealing focus.

Multi-Screen Support

StashManager intelligently handles multiple displays:
This ensures:
  • Left stash uses the leftmost screen in the same row
  • Right stash uses the rightmost screen in the same row
  • Bottom stash uses the bottommost screen in the same column
Treat all screens as a unified virtual space when stashing. Loop automatically finds the appropriate screen edge.

Overlap Handling

StashManager prevents overlapping stashed windows:
When you stash a window where another is already stashed, the original window is automatically unstashed and restored to its previous position.

Reveal Triggers

Windows can be revealed in multiple ways:

1. Mouse Proximity

Move your mouse over the visible portion of the stashed window.

2. Keybind Toggle

Press the same keybind that stashed the window to toggle reveal/hide.

3. Application Activation

Activate the stashed application via Cmd+Tab or Spotlight.

Auto-Hide Behavior

Revealed windows automatically hide when:
  • Mouse moves away from the window (with tolerance)
  • Another window is focused (if shiftFocusWhenStashed is enabled)
  • You stash a different window

Persistence

Stashed window states persist across app restarts:
When Loop quits, all stashed windows are automatically restored to prevent “lost” windows.

Unstashing Windows

To permanently unstash a window:
1

Create an unstash action

Add a new keybind with direction “Unstash”
2

Focus the stashed window

Reveal it using mouse hover or the stash keybind
3

Trigger unstash

Press your unstash keybind to restore the window to its original position
Alternatively, moving or resizing a stashed window with Loop automatically unstashes it.

Advanced Features

Focus Management

When shiftFocusWhenStashed is enabled:
Loop automatically shifts focus to another window when hiding a stashed window.

Z-Index Sorting

Multiple stashed windows are managed by z-order:
If stashed windows overlap, only the topmost window reveals when you hover over the shared area.

Drag and Drop Support

Stashed windows support drag and drop:
Drag files or content to the stashed window edge to reveal and interact with it.

Use Cases

Stash Activity Monitor or system stats at the edge. Quickly glance when needed without cluttering your main workspace.
Keep Messages or Slack stashed for quick replies while maintaining focus on your primary work.
Stash your music player (Spotify, Apple Music) for easy access to playback controls.
Stash documentation, calculators, or notes that you reference occasionally but don’t need constantly visible.
Stash a terminal window for quick command execution without switching spaces or minimizing.
Combine stash with different edges for different types of applications: communication on the left, monitoring on the right, utilities at the bottom.