Skip to content

ketchalegend/ueli

Repository files navigation

ueli logo

ueli

This is a keystroke launcher for Windows and macOS.

ueli screenshot

Table of contents

Installation

Installer / Zip

Note: because the executables are not signed Windows will probably prevent you from executing the installer or the program itself. You can click "Run anyway" to install/run the program.

  • Download the latest version here
  • Run the installer or unzip
  • Run the application

Installing via chocolatey repository

Chocolatey is a package manager for Windows and ueli is in the official repository! Please see https://chocolatey.org on how to set choco up!

  • Open a powershell with administration rights (Right click on your start button and click Windows PowerShell (Admin)
  • Type choco install ueli
  • Accept the upcoming prompt by entering y or run above command with -y switch
  • Run the application

Quick tutorial

  • Press the global hot key to show/hide the window (default is alt+space)
  • Start typing a program name
  • Press Enter to launch the program

Features

Program search

  • You can search for installed programs
  • Use the arrow keys to scroll up and down
  • Presss Enter to launch the selected program

Feature Program search

Files and folder search

  • You can search files and folders
  • Press Enter to open the selected file/folder
  • You can customize the folders which are scanned for files and folders

Feature file search

Open URLs with your default web browser

  • Type in a URL
  • Press Enter to open the URL with your default web browser

Feature URL

Open default mail program

  • Type in an email address
  • Press Enter to open your default mail program with an empty email to the specified email address

Feature email

Web search engines

  • You can use web search engines with a prefix and ?.
    • Example: g?{your search term}

Feature web search engines

Default web search engines:

Prefix Web Search Engine
d DuckDuckGo
g Google
gi Google Images
l Linguee
w Wikipedia
yt YouTube

You can customize web search engines like this:

"webSearches": [
    {
        "icon": "<svg>...</svg>",
        "name": "My Search Engine",
        "prefix": "m",
        "url": "https://my-search-engine.com/search?q="
    }
]

Fallback web search engines

You can customize multiple fallback web search engines which are used if ueli does not find any other search results.

"fallbackWebSearches": ["Google"],
"webSearches": [
    {
        "icon": "<svg>...</svg>",
        "name": "Google",
        "prefix": "g",
        "url": "https://google.com/search?q="
    },
    {
        "icon": "<svg>...</svg>",
        "name": "DuckDuckGo",
        "prefix": "d",
        "url": "https://duckduckgo.com/search?q="
    }
]

Execute commandline tools

  • Start a commandline tool with the > prefix
    • Example: >ipconfig /all
  • Stop an executing commandline tool with Ctrl+c

Note: you can not interact with the commandline tool. You only see the output.

Feature commandline

Browse file system

  • You can browse your file system by typing in a filepath
    • Example: C:\Users (Windows) or /Users (macOS)
  • Press Enter to open the file or folder
  • Press Tab for autocompletion

Feature file browser

Calculator

  • Calculate simple math, matrix, symbolic function, convert units and a lot more.
    • Example:
      • 23 * 24 / 2 + (6 * 7) ^ 2
      • 1 km/h to mile/h
      • a = [1, 2, 3]; a * 2
  • Press Enter to copy the result to the clipboard

Feature calculator

Shortcuts

  • You can customize shortcuts to
    • Start command line tools
    • Open websites
    • Open files/folders
    • Launch programs
"shortcuts": [
    {
        "name": "ping",
        "executionArgument": ">ping 8.8.8.8 -t",
        "icon": "<svg>...</svg>"
    },
    {
        "name": "Whatsapp",
        "executionArgument": "https://web.whatsapp.com",
        "icon": "<svg>...</svg"
    },
    {
        "name": "Data",
        "executionArgument": "C:\\Data"
    },
    {
        "name": "my-project",
        "executionArgument": "!code C:\\my-project"
    }
]

Feature shortcuts

Custom commands

  • You can set up custom commands with parameters
"customCommands": [
    {
        "name": "Open with Visual Studio Code:",
        "executionArgument": "!code",
        "prefix": "openwithcode",
        "icon": "<svg>...</svg"
    }
]

With the example above you should be able to open Visual Studio Code at a specified path. For example openwithcode C:/file.txt is similar to the command line command code C:/file.txt.

Environment Variables

This feature is deactivated by default. You have to activate this via customization.

  • Search for environment variables
  • Press Enter to open the current file/folder
  • Press Tab to autocomplete if it shows a valid file path

Feature environment variables

Keyboard shortcuts

Keyboard shortcut Description
Enter Execute selected search result
Tab Autocomplete file path
Ctrl+o Open the selected program or file at it's location
ArrowUp Scroll up
ArrowDown Scroll down
Shift+ArrowUp Browse user input history up
Shift+ArrowDown Browse user input history down
F6, Ctrl+l Set focus on user input
F1 Get help

Updater

To check if a new version is available right click on the tray icon. The first item in the context menu shows you if there is an update available or if you are running the latest version.

Update available

If there is an update available search for "Download and install update" and hit Enter:

Download and install update

Customization

All settings are stored in ~/ueli.config.json. You can modify this file to change the default values.

Options

  • allowMouseInteraction Boolean - If mouse interaction should be allowed.
  • alwaysShowOnPrimaryDisplay Boolean - If ueli should always show up your the primary display. If set to false ueli will show up on the display your cursor is currently on.
  • applicationFileExtensions Array of string - Represents the file extensions which are used to find applications in the specified folders.
  • applicationFolders Array of string - Represents the folders which are scanned for applications.
  • autoStartApp Boolean - If the app should be started automatically when you log in.
  • colorTheme String - Defines the color theme.
  • customCommands Array of customCommand objects - A list of custom commands
    • name String - Represents the displayed name of the custom command.
    • executionArgument String - Represents the execution argument for the custom command.
    • prefix String - Represents the prefix for the custom command.
    • icon String - Represents the svg icon for the custom command.
  • fallbackWebSearches Array of string - Represents the names of web search engines used when ueli does not find any search results.
  • fileSearchOptions Array of FileSearchOption objects.
    • folderPath String - Represents a folder which should be searched for files and folders.
    • recursive Boolean - If the specified folder should be searched recursively. Be cautious with this option because it can slow down the application drastically.
  • hotKey String - Represents the hotkey to show/hide the window (Available hot keys).
  • logExecution Boolean - If ueli should log the execution of applications, files and folders for better search results. Set to false if you want to disable logging.
  • iconSet IconSet - Represents the default icon set.
    • appIcon String - Represents the svg icon for applications.
    • emailIcon String - Represents the svg icon when typing in an email address.
    • environmentVariableIcon String - Represents the svg icon for environment variables.
    • fileIcon String - Represents the svg icon for files.
    • folderIcon String - Represents the svg icon for folders.
    • operatingSystemSettingsIcon String - Represents the svg icon for operating system settings.
    • searchIcon String - Represents the svg icon for the search icon on the top right.
    • shortcutIcon String - Represents the default svg icon for shortcuts and custom commands.
    • urlIcon String - Represents the svg icon when typing in an email address.
  • maxSearchResultCount Number - Maximum number of search results to be displayed.
  • maxWindowHeight Number - Represents the maximum window height. Only used for command line output and settings view.
  • rescanInterval Number - Interval in seconds to rescan the application folders.
  • searchEngineThreshold Number - Represents the threshold for fuzzy matching (min = 0, max = 1, lower means you have to be more precise with the user input).
  • searchEnvironmentVariables Boolean - If environment variables should appear in the search results.
  • searchOperatingSystemCommands Boolean - If operating system commands such as "Shutdown", etc. should appear in the search results.
  • searchOperatingSystemSettings Boolean - If operting system settings should appear in the search results.
  • searchResultDescriptionFontSize Number - Represents the font size of the search result description in pixels.
  • searchResultHeight Number - Represents the height of a search result box in pixels.
  • searchResultNameFontSize Number - Represents the font size of the search result name in pixels.
  • shortcuts Arraay of shortcut objects - A list of shortcuts.
    • executionArgument String - Represents the execution argument for the shortcut.
    • name String - Represents the displayed name for the shortcut.
    • icon String - (Optional) Represents the svg icon for the shortcut. If no icon is set default icon is used.
  • showTrayIcon Boolean - If the icon should appear in the system tray.
  • userInputFontSize Number - Represents the font size of the user input in pixels.
  • userInputHeight Number - Represents the height of the user input box in pixels.
  • userStylesheet String - Represents a path to a local stylesheet to modify the appearance of the window.
  • webSearches Array of webSearch Objects - A list of web search engines:
    • webSearch Object - Defines a web search engine.
      • icon String - Represents the svg icon for the specific web search engine.
      • name String - Represents the name of the web search engine.
      • prefix String - Represents the prefix for your web search engine. For example if the prefix is g you can type in g?{your search term} to search.
      • url String - Represents the url for the search engine to which the search term is appended to. For example https://google.com/search?q=.
  • windowWidth: Number - Represents the width of the main window in pixels.

Color themes

Color themes

  • atom-one-dark
  • dark
  • dark-mono
  • light
  • light-mono

Custom color themes

You can customize your own color theme with a CSS file on your computer!

  1. Create a CSS file on your computer.

  2. Add CSS variables in the :root section. For example:

    :root {
        --background-color: #21252b;
        --text-color: #ccc;
        --accent-color: #333842;
        --accent-text-color: #fff;
        --mono-font-color: #ccc;
        --scrollbar-foreground-color: #3d444f;
        --scrollbar-background-color: #1f2328;
    }
  3. In the customization set userStylesheet to the CSS file you just created.

  4. Reload ueli.

You can completly overwrite uelis behaviour with your CSS file! See the base stylesheet of ueli.

Privacy

For better search results ueli is keeping track of the applications, files and folders you are accessing. All information is stored in ~/ueli.count.json. If you don't want ueli to track your executions simply delete that file's content and disable logging via the customization.

Roadmap

  • Add nice GUI to modifiy configuration
  • Notify user when update is available
  • Use vue components

Known bugs

  • (#37) Window starts to move while typing when custom scaling in Windows is set.

Development

Build status

Platform Build status
Windows Build status
macOS Build status

Code coverage

Coverage Status

Requirements

  • Git
  • Node.js
  • Yarn

Setup

$ git clone https://github.com/oliverschwendener/ueli
$ cd ueli
$ yarn

Run

$ yarn bundle
$ yarn start

Note: there is also a watch task $ yarn bundle:watch which watches the typescript files and bundles them automatically if there are any changes.

Debug

Note: for debugging you need Visual Studio Code

Choose one of these debug configurations:

Debug configurations

Run tests

$ yarn test:unit
$ yarn test:integration

Code coverage

$ yarn test:unit --coverage

Package

$ yarn package

Alternatives

License

Copyright (c) Oliver Schwendener. All rights reserved.

Licensed under the MIT License.

About

This is a keystroke launcher for Windows and macOS.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 89.0%
  • HTML 9.1%
  • CSS 1.7%
  • JavaScript 0.2%