Linux Application Launcher

Related tags

python linux gtk launcher
Overview

Master: Build Status Dev: Build Status

Application Launcher for Linux 🐧

Ulauncher is a fast application launcher for Linux. It's is written in Python, using GTK+.

App Search File Browser Custom Themes
screenshot screenshot screenshot

Download it at ulauncher.io

Create Your Ulauncher Extensions

As of Ulauncher v3, you can create your own Ulauncher extensions Check out docs.ulauncher.io to find out how.

Create Your Ulauncher Color themes

As of Ulauncher v4, you can create your own color themes Check out docs.ulauncher.io to find out how.

Systemd users

If your distribution packages ulauncher.service properly, then you can run ulauncher on startup by running:

systemctl --user enable ulauncher.service

Known Issues

Code Contribution

Project Contributor-friendly Issues
Ulauncher App GitHub issues by-label
GitHub issues by-label
GitHub issues by-label
GitHub issues by-label
Frontend for extensions website
Uses ReactJS
GitHub issues by-label
API for extensions website
Uses Python and bottle library
GitHub issues by-label

Any code contributions are welcomed as long as they are discussed in Github Issues with maintainers. Be aware that if you decide to change something and submit a PR on your own, it may not be accepted.

Checkout Code Contribution Guidelines for more info.

Setup Development Environment

You must have the following things installed:

  • Docker

  • python3-distutils-extra

  • Application runtime dependencies. (You don't have to manually install these if you have already installed Ulauncher)

    sudo apt-get install \
      libkeybinder-3.0-0 \
      libgtk-3-0 \
      gir1.2-gtk-3.0 \
      gir1.2-keybinder-3.0 \
      gir1.2-webkit2-4.0 \
      gir1.2-glib-2.0 \
      gir1.2-notify-0.7 \
      gir1.2-gdkpixbuf-2.0 \
      gir1.2-ayatanaappindicator3-0.1 \
      python3-dbus \
      python3-levenshtein \
      python3-pyinotify \
      python3-websocket \
      python3-xdg
    

Build and Run

  1. $ ./ul init-dev-env installs Ulauncher data to ~/.local/share/ulauncher/
  2. $ ./ul dev-container will take you into a Docker container from which you can run build and test scripts. Use sudo -E ./ul dev-container if your user is not in the docker group.
  3. [email protected]: # ./ul build-preferences build preferences UI in JS/HTML
  4. [email protected]: # ./ul test runs linter, type checker, and unit tests
  5. $ ./ul run runs the app

Check out output of ./ul to find more useful commands.

License

See the LICENSE file for license rights and limitations (GNU GPL v3.0).

Issues
  • Ulauncher showed up with thick black border

    Ulauncher showed up with thick black border

    When auto started, ULauncher shows up with a thick black border.

    Steps to reproduce:

    1. Install ULauncher
    2. Select "Launch At Login" from Preferences.
    3. Logout & login again.
    4. Press Ctrl + Enter

    Ulauncher version: 4.0.6.r1 Linux distro: Linux Mint 18.3 Sylvia 64 Bit Desktop environment: KDE

    screenshot_20180206_121053

    bug severity-low 
    opened by ayanb1991 42
  • Hotkey doesn't work in Wayland when is triggered from certain apps

    Hotkey doesn't work in Wayland when is triggered from certain apps

    For example, when I press Ctrl Space when in Ubuntu terminal, Ulauncher app won't show up. However, the hotkey works fine when triggered from Firefox.

    I think this has something to do with Ulauncher running in XWayland mode.

    bug severity-high 
    opened by gornostal 28
  • Add support for environments without a compositor

    Add support for environments without a compositor

    check out this comment https://github.com/Ulauncher/Ulauncher/issues/212#issuecomment-378580674

    Please give this issue a :+1: if it's important for you


    If you decide to implement this enhancement, try doing that in as few code changes as possible. I would probably try to detect an absence of compositor once Ulauncher starts and then remove the shadows from the window. Maybe there's a better way though...

    GTK Python enhancement 
    opened by gornostal 25
  • Ulauncher not displaying applications if launched manually

    Ulauncher not displaying applications if launched manually

    (If launched manually) Ulauncher will not display applications in results even though it is able to access ~/.local/share/applications and /usr/share/applications. Is this intended?

    Steps to reproduce: Install using ppa (stable) Start the application via the Dash

    Ulauncher version: 4.0.8.r1 Linux distro: Ubuntu Desktop environment: Unity

    Term Gist #~~Future Persons: Ulauncher appears to not cache application data, so if you have alot of .desktop links it may take a while to index it all. #154~~ Note: If started manually Ulauncher will have the Launch at Login option greyed out

    bug no solution :man_shrugging: 
    opened by kakolisgay 19
  • ULauncher ALWAYS stops working after a few weeks of use

    ULauncher ALWAYS stops working after a few weeks of use

    Steps to reproduce

    1. Install on Ubuntu 14.04, or 16.04 or 18.04 (all MATE desktop 32bit or 64bit)
    2. Also install Kupfer
    3. STart using ULauncher Regularly

    Current behavior

    Doent work at all when I type ANY app or search nothing comes up a if it stopped thinking

    Expected behavior

    TO show me 1 or more items/apps to open when I type its name

    Environment

    Ulauncher version: 5.4 and 3 previous versions at least Linux distro: Ubuntu MATE 14.04, 16.04 and 18.04 32bit and 64bit Desktop environment: MATE

    Logs

    https://gist.github.com/leirbag28/e9e6c8f3956ad8575d546065ccb9bbf5 bug 
    opened by leirbag28 19
  • How would you build for Centos?

    How would you build for Centos?

    Sorry for posting this here, but I can't seem to find other place - how do you build Ulauncher for Centos7 ? There is no rpm for this distro and I'd love to have it - mostly because it is possible to configure Ulauncher to start from a single keystroke (super key for example). Even though from what I read it is not officially supported , for me this is the only sensible option for launcher - and the reason I would prefer Ulauncher over other options (well, and with Synapse seemingly being dead and with no docs).

    size-M 
    opened by Pshemas 17
  • Plugins not working: Websocket error

    Plugins not working: Websocket error "x takes exactly n arguments (n-1 given)"

    Steps to reproduce:

    1. Start Ulauncher
    2. With the kill plugin installed type in kill firefox (or something else you don't mind killing if the plugin should work)

    Result: Nothing (no tab completion and nothing happens on pressing enter). Only "Loading" is shown.

    The same thing happens with all the plugins I've tried (npms, search files, myip)

    Every time I try I get a websocket error in "ulauncher.api.client.Client.Client" that "on_message() takes exactly 3 arguments (2 given)" and sometimes "on_open() takes exactly 2 arguments (1 given)" (see log for more details).

    Ulauncher version: 4.1.0.r1 Linux distro: Arch Desktop environment: Gnome/GTK with x11 Python version: 2.7.15 (GCC 8.1.1 20180531)

    Verbose log


    Fix: update python-websocket-client (python2-websocket-client for Arch and Fedora) to version 0.52 or higher.

    bug 
    opened by friday 17
  • Searching for apps does't return any result. Black box around the window. gtk_main_quit: assertion 'main_loops != NULL' failed

    Searching for apps does't return any result. Black box around the window. gtk_main_quit: assertion 'main_loops != NULL' failed

    I don't know why this problem is occuring. But whenever I shutdown my laptop and then restart it. Ulauncher misbehaves and it looks something like this. And then if you will search for any application then it only shows those three shortcuts which are Google Search, Stackoverflow Search and Wikipedia Search. screenshot from 2018-01-18 10-41-35

    I don't know why it's color is changing.

    Steps to reproduce: Whenever I shutdown my system and then restart, it occurs.

    Ulauncher version: v3.2.1.r1 Linux distro: Ubuntu 16.04 Desktop environment: Unity

    Logs:

    gist link

    Thank you.

    bug 
    opened by lalitmee 17
  • Ulauncher search doesn't work (for the first 5 minutes)

    Ulauncher search doesn't work (for the first 5 minutes)

    Steps to reproduce:

    1. start Ulauncher (either via terminal, dash or autostart);
    2. use the hotkey and type anything that is not a shortcut.

    Expected behaviour: Ulauncher shows the programs matching the written string. Actual behaviour: the only matched items are the default shortcuts.

    Notes: Ulauncher actually start to work ~5 minutes after the startup. From that point on, closing and re-opening the app will still result in a fully-functioning Ulauncher.

    Ulauncher version: 2.2.0.r1 Linux distro: Ubuntu 17.04 Desktop environment: Unity 7

    Logs: https://gist.github.com/NetBender/5789068673a37fd78028522f59fd14b5#file-ulauncher_search_issue-txt I purposefully let the log go until Ulauncher started showing the program i was looking for (Geany).

    bug 
    opened by NetBender 16
  • Allow executing shortcuts without specifying an argument

    Allow executing shortcuts without specifying an argument

    This enhancement requires changes in Preferences UI and in Python code.

    Technical details

    • In UI, add a new checkbox "Run without arguments" under "Default search" checkbox
    • In Python code save that flag to the ShortcutsDb
    • When user selects a shortcut from the result list and it has "Run without arguments" flag checked, run the action
    JS Python VueJS enhancement size-S 
    opened by gornostal 16
  • could add some VIM-like keymaps in ulauncher?

    could add some VIM-like keymaps in ulauncher?

    vim-like keymap affected me a lot, include vscode, idea... I think ulauncher could be better if it also have a vim-like keymap. example:

    • type jj when input, can change focus on items
    • type j and k, can move focus up and down
    • type gg, go first
    • type G, go last

    please...

    opened by sunn4room 0
  • Remove sass

    Remove sass

    Link to related issue (if applicable)

    https://github.com/Ulauncher/Ulauncher/issues/651

    Summary of the changes in this PR

    • Update vue files to use only CSS instead of SCSS, removing dependency on node-sass
    • Remove dependency on ora, because nothing else was depending on it
    • Fix a build bug by manually specifying vue-template-compiler version
    • update yarn.lock file

    Checklist (see more here)

    • [x] Use dev as the base branch
    • [ ] All tests are passing

    Tested environment (distro, desktop environment and their versions)

    manjaro, yarn 1.22.10, node v16.1.0

    How to test:

    cd data/preferences
    yarn install
    yarn build
    

    (you can also do ./ul build-preferences)

    opened by earboxer 0
  • Sort results by frequency

    Sort results by frequency

    Link to related issue (if applicable)

    Possibly related to #559, #324, #336, #232, #317, #542

    Summary of the changes in this PR

    This will sort the fuzzy search results first by their frequency score and then by their fuzzy search score. Previously they were sorted only by their fuzzy search score. The frequency score is the number of times the user has selected the app in the past using the AppStatDb.

    This should have the (hopefully desired) effect of putting the most frequently used apps on the top of the list and thereby requiring fewer keystrokes to open.

    Note: This does not affect the quality of the fuzzy search results, only their order. However, since this sorting is done over all results, rather than just the final 9 that are printed, the actual results shown to the user will differ and prefer frequent apps.

    I believe this PR is orthogonal to an improved fuzzy search (e.g. #317) and would not cause issue with a swapped out algorithm. I have some thoughts for an improved algorithm, but that would be for a separate issue/PR.

    This PR should not be merged as is since it lacks updated tests. I wanted to open the PR to at least verify if this is a welcomed feature. It may need to hide behind a preference flag too.

    Checklist (see more here)

    • [X] Use dev as the base branch
    • [X] Follow the Python Code Style Guides
    • [ ] Write unit tests for your changes when applicable
    • [ ] If your changes alters the behavior or introduce new functionality, please update the documentation accordingly
    • [ ] All tests are passing

    Tested environment (distro, desktop environment and their versions)

    Ubuntu 20.04, Gnome Flashback

    opened by voidstarstar 1
  • Possible to move Ulauncher's window?

    Possible to move Ulauncher's window?

    Simple as that: is it possible to move ulauncher's window someplace else? Currently it is always shown in the middle slightly above the center of my primary display. I'd like to move it to the top of the display but cannot move the window (neither via mouse, Alt+mouse or context menu) and there are no prefs that allow setting of the window placement. Am I missing something? (using Ulauncher 5.11.0 with Gnome 3.38 on Pop!_OS 20.10).

    opened by Cantello 0
  • Extensions can't be added.

    Extensions can't be added.

    Question

    Message: <urlopen error [Errno 111] Connection refused> Error Name: UnhandledError Type: URLError

    Stacktrace:

    Traceback (most recent call last):
      File "/usr/lib/python3.8/urllib/request.py", line 1350, in do_open
        h.request(req.get_method(), req.selector, req.data, headers,
      File "/usr/lib/python3.8/http/client.py", line 1255, in request
        self._send_request(method, url, body, headers, encode_chunked)
      File "/usr/lib/python3.8/http/client.py", line 1301, in _send_request
        self.endheaders(body, encode_chunked=encode_chunked)
      File "/usr/lib/python3.8/http/client.py", line 1250, in endheaders
        self._send_output(message_body, encode_chunked=encode_chunked)
      File "/usr/lib/python3.8/http/client.py", line 1010, in _send_output
        self.send(msg)
      File "/usr/lib/python3.8/http/client.py", line 950, in send
        self.connect()
      File "/usr/lib/python3.8/http/client.py", line 1417, in connect
        super().connect()
      File "/usr/lib/python3.8/http/client.py", line 921, in connect
        self.sock = self._create_connection(
      File "/usr/lib/python3.8/socket.py", line 808, in create_connection
        raise err
      File "/usr/lib/python3.8/socket.py", line 796, in create_connection
        sock.connect(sa)
    ConnectionRefusedError: [Errno 111] Connection refused
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "/usr/lib/python3/dist-packages/ulauncher/ui/windows/PreferencesUlauncherDialog.py", line 198, in on_scheme_callback
        resp = rt.dispatch(self, scheme_request.get_uri())
      File "/usr/lib/python3/dist-packages/ulauncher/utils/Router.py", line 49, in dispatch
        return callback(context, url_params)
      File "/usr/lib/python3/dist-packages/ulauncher/ui/windows/PreferencesUlauncherDialog.py", line 433, in prefs_extension_add
        ext_id = downloader.download(url)
      File "/usr/lib/python3/dist-packages/ulauncher/api/server/ExtensionDownloader.py", line 75, in download
        commit = gh_ext.find_compatible_version()
      File "/usr/lib/python3/dist-packages/ulauncher/api/server/GithubExtension.py", line 71, in find_compatible_version
        for ver in self.read_versions():
      File "/usr/lib/python3/dist-packages/ulauncher/api/server/GithubExtension.py", line 110, in read_versions
        versions = self._read_json('master', 'versions.json')
      File "/usr/lib/python3/dist-packages/ulauncher/api/server/GithubExtension.py", line 101, in _read_json
        return json.loads(urlopen(url).read().decode('utf-8'))
      File "/usr/lib/python3.8/urllib/request.py", line 222, in urlopen
        return opener.open(url, data, timeout)
      File "/usr/lib/python3.8/urllib/request.py", line 525, in open
        response = self._open(req, data)
      File "/usr/lib/python3.8/urllib/request.py", line 542, in _open
        result = self._call_chain(self.handle_open, protocol, protocol +
      File "/usr/lib/python3.8/urllib/request.py", line 502, in _call_chain
        result = func(*args)
      File "/usr/lib/python3.8/urllib/request.py", line 1393, in https_open
        return self.do_open(http.client.HTTPSConnection, req,
      File "/usr/lib/python3.8/urllib/request.py", line 1353, in do_open
        raise URLError(err)
    urllib.error.URLError: <urlopen error [Errno 111] Connection refused>
    
    
    opened by Airili 1
  • ulauncher window freezes on top after any search

    ulauncher window freezes on top after any search

    Steps to reproduce

    1. Open ulauncher
    2. use google search " g search terms" (or stack overflow or any search)
    3. Alt + 1 to open results in browser

    Current behavior

    ulauncher stays freezed on top of all windows and I have to kill the process to get rid of it

    Expected behavior

    ulauncher hides after execution of command

    Environment

    Ulauncher version: 5.11.0 Linux distro: Arch Linux Desktop environment: KDE plasma

    Logs

    https://gist.github.com/verajosemanuel/5fc3735296f37b15a3f199c4895dcb0b

    opened by verajosemanuel 0
  • Extensions are not added

    Extensions are not added

    Steps to reproduce

    1. Click extensions tab
    2. Click ' add extension
    3. Paste extension github link

    Current behavior

    Doesn't add extension

    Expected behavior

    Extension added

    Environment

    Ulauncher version: v.5.11.0 Linux distro: Ubuntu Desktop environment: Gnome

    Logs

    https://gist.github.com/alpha-oliveira/3cca6b835413fa1c04edb5f984b8e377

    opened by alpha-oliveira 1
  • All extensions crashed

    All extensions crashed

    Steps to reproduce

    all extensions are showing crashed status in ulauncher settings

    Environment

    Ulauncher version: 5.11.0-1 Linux distro: Arch Desktop environment: Sway

    Logs

    https://gist.github.com/kushraj/24aa529fb3694753f7f21820dd14798a

    opened by kushraj 8
  • Extension settings changed programatically don't show in UI

    Extension settings changed programatically don't show in UI

    Problem

    I am trying to implement a reset to default "button" as a select preference. The entry in manifest.json looks like this:

    {
          "id": "reset_to_default",
          "type": "select",
          "name": "Reset preferences to default",
          "default_value": "-",
          "options": [
            {
              "value": "-",
              "text": "-"
            },
            {
              "value": "Reset",
              "text": "Reset"
            }
          ]
    }
    

    And the PreferencesUpdateListener looks like this:

    DEFAULT_PREFERENCES = {"kw": "rae", "max_suggested_items": 10, "max_shown_definitions": 10, "reset_to_default": "-"}
    class PreferencesUpdateListener(EventListener):
        def on_event(self, event, extension):
            if event.id == "reset_to_default" and event.new_value == 'Reset':
                for id_, val in DEFAULT_PREFERENCES.items():
                    extension.preferences[id_] = val
    

    When I toggle the Reset button to reset and save, the extension's behaviour changes but the UI doesn't reflect that.

    Source can be found here.

    Steps to reproduce

    1. Define PreferencesUpdateListener with an on_event method that updates a preference with a predefined value.
    2. Before changing values in the UI, test extension to verify it complies with the behaviour reflected in the UI.
    3. Trigger the on_event method (in my case, by toggling a button in the preferences menu).
    4. Verify the extension now behaves as expected, but that the UI shows the old values.

    See attached video for illustration.

    Current behavior

    PreferencesUpdateListener resets the extension.preferences property to its default value and the behaviour changes accordingly. That is, when I use the extension, the new set values are in effect.

    However, the extensions settings UI shows the old values.

    Expected behavior

    When I change the extension.preferences property in a PreferencesUpdateListener, both the behaviour and the values in the settings UI should reflect these new values.

    Environment

    Ulauncher version: 5.11.0 Linux distro: Pop_OS! 20.10 Desktop environment: Gnome 3.38.3

    Logs

    Not sure whether they add much information, but here they are. They correspond to the process shown in the video.

    Closing remarks

    This might not be a bug. I suspect I have to tell the extension to update the UI once the values are set in the code. I did not find a way to do this, and this template suits the issue the best. Feel free to change the tags.

    Thanks!

    opened by sebastian-correa 0
  • French translation

    French translation

    Hello,

    I wanted to know if there is any plan to add translation for this project (or if any already exist) ?

    I'll be happy to do a full French translation for every settings and all other language related sentence, is there any file with all sentence that I could translate then send it back to you ?

    Thanks for this nice launcher, keep up the good job !

    opened by RobOT05442309 0
Releases(5.11.0)
Owner
Ulauncher
Fast Application Launcher for Linux
Ulauncher
A pie menu launcher for linux. Read the release announcement of version 0.7.2 at https://schneegans.github.io/news/2018/10/30/gnome-pie-072 Or have a look at the homepage!

Gnome-Pie ⚠️ At this point, I will only provide very basic support for Gnome-Pie. If you are on a GNOME Shell based distro, you may want to try my suc

Simon Schneegans 283 Jun 3, 2021
Popcorn Time is a multi-platform, free software BitTorrent client that includes an integrated media player ( Windows / Mac / Linux ) A Butter-Project Fork

Popcorn Time A multi-platform, free software BitTorrent client that includes an integrated media player. Visit the project's website at popcorntime.ap

Popcorn Software 6k Jun 4, 2021
Graphical program used to map keyboard buttons and mouse controls to a gamepad. Useful for playing games with no gamepad support

antimicro ?? Important update ?? This repo is currently unmaintained. The code hasn't been updated for a while. But not all is lost, antimicro has a f

null 1.4k Jun 5, 2021
Display and control your Android device

scrcpy (v1.17) Read in another language This application provides display and control of Android devices connected on USB (or over TCP/IP). It does no

Genymobile 49.4k Jun 4, 2021
🎧 Kaku is a highly integrated music player supports different online platform like YouTube, SoundCloud, Vimeo and more. Available on Mac, Windows and Linux.

Kaku Kaku is a highly integrated music player that supports different online platforms like YouTube, SoundCloud, Vimeo and more. Available on Windows,

Chia-Lung Chen 1k Jun 2, 2021
Make any web page a desktop application

Nativefier You want to make a native wrapper for WhatsApp Web (or any web page). nativefier 'web.whatsapp.com' You're done. Introduction Nativefier is

null 27.2k Jun 4, 2021
Open source back-end server for web, mobile and IoT. The backend for busy developers. (self-hosted or hosted)

A scalable, multitenant backend for the cloud. Para is a scalable, multitenant backend server/framework for object persistence and retrieval. It helps

Erudika 395 May 26, 2021
Linux System Optimizer and Monitoring - https://oguzhaninan.github.io/Stacer-Web

Linux System Optimizer and Monitoring Sponsors Reviews Required Packages curl, systemd PPA Repository (for ubuntu) sudo add-apt-repository ppa:oguzhan

Oguzhan Inan 7k Jun 6, 2021
Terminal disk space navigator 🔭

diskonaut How does it work? Given a path on your hard-drive (which could also be the root path, eg. /). diskonaut scans it and indexes its metadata to

Aram Drevekenin 925 Jun 6, 2021
Flash OS images to SD cards & USB drives, safely and easily.

Etcher Flash OS images to SD cards & USB drives, safely and easily. Etcher is a powerful OS image flasher built with web technologies to ensure flashi

balena 20.6k Jun 6, 2021
A beautiful and customizable wallpapers manager for Linux

Komorebi - Animated Wallpapers for Linux (n) sunlight filtering through trees. Watch demo What is Komorebi? Komorebi is an awesome animated wallpapers

null 2.2k Jun 5, 2021
RGB lighting management front-end application for GNU/Linux. Powered by OpenRazer (but soon to be vendor agnostic)

An open source RGB lighting management front-end application to customise OpenRazer peripherals on GNU/Linux. Soon to be vendor agnostic! The next gen

Polychromatic 624 Jun 6, 2021
GeneWeb is an open source genealogy software with a web interface created by Daniel de Rauglaudre.

GeneWeb GeneWeb is an open source genealogy software written in OCaml. It comes with a Web interface and can be used off-line or as a Web service. Doc

GeneWeb 177 Jun 4, 2021
Multi-platform app that allows your devices to communicate

KDE Connect - desktop app KDE Connect is a multi-platform app that allows your devices to communicate (eg: your phone and your computer). (Some) Featu

KDE GitHub Mirror 1.1k Jun 7, 2021