Skip to content
WinMac edited this page Sep 21, 2025 · 29 revisions

Welcome to the WinMac-Menu wiki!

Note

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

WinMac Menu Quick Start

  • Build presets: x64 and ARM64
  • Artifacts: build-x64/Release/WinMacMenu.exe and build-arm64/Release/WinMacMenu.exe

Build:

cmake --preset x64-release
cmake --build --preset x64-release

cmake --preset arm64-release
cmake --build --preset arm64-release

Run:

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

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

# Background mode (stays running, Windows key / edge triggers if configured in INI)
./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 (in [Menu]):

Item5=Code|FOLDER|%USERPROFILE%\Code|inline|
Item6=My Scripts|FOLDER|%USERPROFILE%\Scripts|inline notitle|
Item7=Projects|FOLDER|%USERPROFILE%\Projects|inlineopen|

Behavior:

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

Global Toggle (submenus):

  • [General] FolderShowOpenEntry=false hides the automatic "Open " line at the top of folder submenus when single-click mode is enabled.

Tray Icon: Right-click for settings menu including:

  • Show menu / Hide tray / Elevate (run as admin)
  • Start on login toggle
  • Show/Hide menu icons (toggles whether icons appear in the popup menu)
  • Settings (opens config.ini) / Help / About
  • Exit

Sections

  • [General] global behavior and style
  • [Placement] position rules
  • [Menu] menu items Item1..ItemN
  • [Icons] per-item icon mapping Icon1..IconN and optional DefaultIcon/DefaultIconLight/DefaultIconDark
  • [IconsLight] theme-specific per-item icons for light theme (Icon1..IconN)
  • [IconsDark] theme-specific per-item icons for dark theme (Icon1..IconN)

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)
  • 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

  • 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