Skip to content
akamienski edited this page Feb 1, 2026 · 25 revisions

Note

Please be informed that this is a beta version - you're using it at your own risk!

WinMac Menu Quick Start

Run

# Default INI next to the EXE
./WinMacMenu.exe

# Custom INI path
./WinMacMenu.exe --config C:\Tools\menu.ini

Background mode

  • Enable in config.ini under [General]:
    • RunInBackground=true keeps the app running in the background for instant menu display.
    • ShowTrayIcon=true shows an icon in the system tray while running in background. Left-click toggles the menu; right-click shows a small menu with "Show menu" and "Exit".
  • When in background mode, clicking outside the menu, pressing the Windows key, or Escape hides the menu (the process keeps running).
  • Starting WinMacMenu again while it’s already running in background will simply signal the existing instance to show/toggle the menu and exit immediately.

Start on login

  • In [General], set StartOnLogin=true to add a Run entry under HKCU for the current config (value name is unique per-config). The command line preserves your --config path.
  • Set StartOnLogin=false to remove that registry entry cleanly.

Inline Folder Expansion (experimental)

- Add inline to the Params field of a FOLDER item to inject its first-level contents directly into the root menu. - Add inlineopen instead of inline to make the header (Label) clickable (opens the folder) while still expanding contents inline. - Add notitle (or noheader) with inline to suppress the grayed header (omit with inlineopen if you want the clickable header line).

Examples

Item1=Code|FOLDER|%USERPROFILE%\Code|inline
Item2=My Scripts|FOLDER|%USERPROFILE%\Scripts|inlinenotitle
Item3=Projects|FOLDER|%USERPROFILE%\Projects|inlineopen

Sections

Comment Syntax

The generated default INI is comment-free. If you add comments manually, use ; or # at the start of a line. Inline comments (end‑of‑line) are not supported.

Behavior Details

  • First-letter activation
  • Outside click dismisses menu
  • DPI-aware scaling via system menu metrics
  • Icons in legacy mode use MIIM_BITMAP, keeping native look (no custom owner-draw)
  • Direct files appear as normal clickable items.
  • Subdirectories appear as expandable lazy submenus (respecting visibility filters and depth limits).
  • No automatic separator is added; manage separators explicitly with SEPARATOR items if desired.
  • inlineopen creates a clickable header line first.
  • ShowDotfiles supports: false | true | filesonly | foldersonly (default false). Extended modes let you selectively expose dot files vs dot folders.
  • [General] FolderShowOpenEntry=false hides the automatic "Open " line at the top of folder submenus when single-click mode is enabled.
  • Recent resolves .lnk targets; missing targets skipped
  • Power actions: consistent markers used internally (POWER_MENU aggregates)
  • Single-instance per INI path
  • Second invocation toggle: launching the executable again (e.g., via a Windows key binding in an external tool) sends a toggle message. If the menu is open it closes; if closed it opens at the configured position. This enables assigning the EXE both to open and to dismiss via the same key.

Troubleshooting

  • Empty folder submenu: check path, permissions, filters (ShowHidden / ShowDotfiles)
  • No icons: ensure ShowIcons=true (or LegacyIcons=true for backward compatibility) and paths are correct
  • Folder icons not appearing: set ShowFolderIcons=true; the system folder icon only shows when no per-item icon exists

Security & Privacy

  • No telemetry. The app makes no network connections and collects no data.
  • Registry usage: optional HKCU\Software\Microsoft\Windows\CurrentVersion\Run entry when you enable “Start on login” from the tray. It’s off by default and only changed when you toggle it. There is no service or scheduled task.
  • Keyboard/mouse hooks: installed only while the popup menu is visible to allow outside‑click/escape dismissal; they are immediately removed when the menu closes.
  • Recent cleanup: choosing “Clear Recent Items list” deletes shortcut (.lnk) files from your user Recent folder. It doesn’t touch actual documents or programs. There’s no confirmation.
  • Filesystem: reads your config.ini and enumerates folders you explicitly reference in the menu.

Notes

  • Configure the menu using either a simple INI file or the built-in GUI for live editing.
  • WinMacMenu reads an INI. If missing, a default is created.
  • Environment variables expand in labels, paths, params, and icon paths (e.g., %USERNAME%).
  • Indices N in [Icons]/[IconsLight]/[IconsDark] map to ItemN in [Menu].
  • Generated default INI contains no comments (to keep the file minimal). Comments are still supported by the parser if you add them manually: lines beginning with ; or # are ignored.
  • Duplicate keys: The last occurrence in a section wins (standard Win32 profile API behavior).
  • Unknown keys are ignored.
  • Built with standard Win32 APIs: user32, shell32, shlwapi, comctl32, uxtheme, dwmapi, powrprof, advapi32.
  • This app uses legacy popup menus; so no parity with Windows 11 Fluent Design System for now
  • It's recommended to use it together with Open-Shell, so the WinMacMenu can be triggered by clicking the Start menu button with the left mouse button or by pressing the Windows key.
  • You can also pin shortcuts to taskbar, or add to custom toolbar. Each shortcut can refer to different config.ini files with different file names for ini file.
  • ini file used in current session will be highlighted in tooptip of tray icon, if file name is different than default (config.ini).

Clone this wiki locally