App Lemonator is a console app for quickly launching and managing your application shortcuts. Originally written to handle the hidden locations of Microsoft Store apps and the difficulties of consistently opening them from an Elgato Stream Deck, it has since grown to be a general purpose app launcher.
Think of it as a mini shortcut database. You give it details on an app and it will try its darndest to keep its app path up to date and launch it when you ask it to.
It has some smarts around finding your apps and there are path shortcuts you can use to make it easier to define your apps.
App Lemonator is a self contained executable that can be run from anywhere on Windows. It does not require any installation. On first run it will create a local Sqlite database to store any settings. It is written entirely in Rust because it's a fun thing to do in 2023!
You can download the latest release from the releases page and then extract the ZIP file to a folder of your choice.
It is a console app so you will need to open a Command Prompt or PowerShell Prompt to use it. You can then run it from the folder you extracted it to. It will create a local Sqlite database in the same folder to store any settings.
To add apps, use the add
command. For example:
.\app-lemonator.exe add WinTerm wt.exe "*WindowsTerminal*" ps-get-app
.\app-lemonator.exe add Rider rider64.exe "%localappdata%\Programs" folder-search
.\app-lemonator.exe add ch-p1 chrome.exe "%programfiles%\Google\Chrome\Application" shortcut --params " --args --profile-directory='Profile 1'"
You can use the --params
argument to pass additional parameters to the app when it is launched.
To open an app, use the open
command. For example:
.\app-lemonator.exe open WinTerm
.\app-lemonator.exe open Rider
.\app-lemonator.exe open ch-p1
If you're using an Elgato Stream Deck, this is what you would set as your App / File
within the Stream Deck software. You will need to set the icon yourself and NirSoft IconsExtract is good tool for extracting icons from executables.
Note: On first open of an app it will go to find and set the app path. This can take a few seconds, especially if it doing a folder search across a large number of sub folders. On next run it will use the saved app path. If an app path no longer exists prior to opening, it will attempt to find the app again.
To manually update the app path of an individual app, use the update
command with the app name. For example:
.\app-lemonator.exe update WinTerm
To update all apps in your database, don't pass any arguments to the update
command. For example:
.\app-lemonator.exe update
Note: This command shouldn't be needed as App Lemonator will automatically update apps when they are opened. However, it can be useful if you want to force an update.
To delete an individual app, use the delete
command with the app name. For example:
.\app-lemonator.exe delete WinTerm
If you want to see what apps are configured, use the list
command. For example:
.\app-lemonator.exe list
You would get output like this:
┌──────────┬────────────────────────────────────────────────────┬─────────────────────┬─────────────────────┐
│ App Name │ App Path │ Last Opened │ Last Updated │
├──────────┼────────────────────────────────────────────────────┼─────────────────────┼─────────────────────┤
│ ch-p1 │ C:\Program │ 2023-10-16 11:23:48 │ 2023-08-29 13:24:49 │
│ │ Files\Google\Chrome\Application\chrome.exe │ │ │
├──────────┼────────────────────────────────────────────────────┼─────────────────────┼─────────────────────┤
│ Rider │ C:\Users\Jeff\AppData\Local\Programs\Rider\bin\rid │ 2023-10-18 14:05:56 │ 2023-09-08 12:15:20 │
│ │ er64.exe │ │ │
├──────────┼────────────────────────────────────────────────────┼─────────────────────┼─────────────────────┤
│ WinTerm │ C:\Program Files\WindowsApps\Microsoft.WindowsTerm │ 2023-10-15 10:12:32 │ 2023-09-05 09:05:47 │
│ │ inal_1.18.2822.0_x64__8wekyb3d8bbwe\wt.exe │ │ │
└──────────┴────────────────────────────────────────────────────┴─────────────────────┴─────────────────────┘
You can add --full
to get a complete output. It is very wide though!
For further details, use --help
to get a list of the available arguments or help <argument>
to get details on individual arguments. A more detailed example is listed in the Windows PowerShell test script.
App Lemonator allows you to select different search methods for your apps:
ps-get-app
- Uses PowerShell to search for apps installed from the Microsoft Store. See section below for guidance.folder-search
- Searches a folder for an app. You give it a base folder and it will recursively search and use the highest version number of the executable.shortcut
- Uses a shortcut to launch an app. You give it the folder the app is in and it will launch it.
App Lemonator supports various path shortcuts:
%appdata%
- The current user's (Roaming) AppData folder%localappdata%
- The current user's Local AppData folder%homepath%
- The current user's Home folder%programfiles%
- The Program Files folder%programfilesx86%
- The Program Files (x86) folder%temp%
- The current user's Temp folder%windir%
- The Windows folder
Tip: You can check these by typing them into Explorer.
App Lemonator also has the ability to work out where your Dropbox folder is and use that as a shortcut. This is useful for apps that stored in Dropbox.
%personaldropbox%
- The current user's Personal Dropbox folder%businessdropbox%
- The current user's Business Dropbox folder
This works by looking for your Dropbox\info.json file and parsing out the correct folder.
The ps-get-app
search method is used to find Microsoft Store Apps and relies on running a PowerShell command of Get-AppXPackage -Name <search_term> | Format-List InstallLocation
to get the app path (i.e. InstallLocation). It's a bit of a chicken and egg situation to know what the search_term is.
The method I've used is to first open the app (i.e OneNote, Windows Terminal, WhatsApp, etc) then run Process Explorer to get the properties of the app. Specfically, the Path
listed on the Image
tab of the process properties. You can then split that Path into the folder it is running from (i.e. the InstallLocation) and the executable name (i.e. onenoteim.exe). Keep the executable name for later, it's needed by App Lemonator.
Next run the following PowerShell command:
Get-AppXPackage | Format-List Name, InstallLocation > apps.txt
This gives a list of installed apps in a text file. Open apps.txt
in a text editor and search for an InstallLocation
that matches the folder you got from Process Explorer (make sure to remove any trailing slashes). Once you have that, you'll have the Name of the app to lookup and all the details you need for App Lemonator.
Note: If you don't want to use Process Explorer, you could run the above PowerShell command and grok apps.txt
yourself for the correct Name but it may be trial and error to find the right one.
The syntax to add is as follows:
.\app-lemonator.exe add <app_name> <exe_name> "<search_term>" ps-get-app
To break it down:
app_name
is your name for the app. Keep it short. It'll be what you use to open the app with.exe_name
is the executable to open.search_term
is the Name from the PowerShell output above. You can use wildcards in the search term or the full name, it's up to you.ps-get-app
is the search method for App Lemonator to use.
Using full name:
.\app-lemonator.exe add OneNote onenoteim.exe "Microsoft.Office.OneNote" ps-get-app
Using wildcards:
.\app-lemonator.exe add OneNote onenoteim.exe "*onenote*" ps-get-app
Note: You could just create shortcut
with the InstallLocation and executable name but this will break when the app updates and the InstallLocation changes. Using ps-get-app
App Lemonator will attempt to keep the app path up to date. It's the main reason I wrote the app.
Then to open:
.\app-lemonator.exe open OneNote
If you want to see what App Lemonator is doing under the hood, open %temp%\app-lemonator.log
in a text editor of your choice.