Skip to content

Latest commit

 

History

History
163 lines (141 loc) · 6.02 KB

README.md

File metadata and controls

163 lines (141 loc) · 6.02 KB

projektor

Fast application launcher for Gnome written in Go

Screenshot

Features

  • Search and launch any app installed on you system:
    • Type chrome, gimp, steam etc. and press Enter to launch the app.
  • Run any command which can be found in your PATH:
    • gksu service mysql restart, cp ~/src/file1 ~/dst/ etc.
    • Search for an app, select it with arrow keys and press Tab to copy its commandline into the input box. Now you can modify launch options and start it with Enter button.
  • Open files and directories; navigate your file system through launcher's UI without using the mouse.
    • Type path to a file and press Enter to open it in an appropriate app.
    • Type path to a directory and press Enter to open it in your file manager.
    • If your type directory path, Projektor will list all the files in that directory. Select it with arrow keys and press Enter to open.
    • Select a directory and press Tab to copy its path into the input box. Projektor will now walk into that dir and list its files.
    • Type .. (two dots) to walk into the parent directory.
  • Open any URLs and web addresses:
    • Type github.com and Projektor will suggest you to open this website in your favourite web browser.
    • Type ftp://[email protected] to launch your favourite FTP client.
    • Type any URL which is supported on your system.
  • Perform web searching
    • Type any text and Projektor will show an entry to search it on the web with your default browser.
    • By default Projektor uses Google, but you can set any search engine in the config file.
  • Calculate math equations:
    • 5^3 * (15/4 + 1.5)
    • sqrt(256) + pow(3, 2.5) / fact(5)
    • ln(e) * log2(16) * log10(1000) * log(3, 81)
    • sin(1) * cos(pi/2) + tan(3*pi/2) - cot(4*pi/3)
  • Finally, Projektor keeps history of your recently launched entries.
    • When you're searching, Projektor will show history results at the top.
    • Open Projektor and simply press Enter to launch last used item.

Installing

Please note, this launcher was only tested on Ubuntu-like linux distros. It might not work on other systems as expected. Feel free to leave an issue, if you experience problems using Projektor. Thank you :)

Projektor is built with Gtk 3 and requires the library to be installed on your system.

To install Projektor:

  • Download latest build from the releases page. If build for you OS or architecture is not available, read Building section on how to build projektor yourself.
  • Add projektor to your startup applications. Restart your session or run projektor & to start the key binding daemon. The daemon should start automatically on your next login.
  • Done! Use Super+Q to open the launcher. Happy projekting :)

Building

  • Install gtk+-3.0 development files (sudo apt install libgtk-3-dev if you're an Ubuntu user)
  • Install latest version of Golang from https://golang.org
  • Run go get github.com/yamnikov-oleg/projektor in your terminal.
  • If the build succeeds, the binary will be located in the $GOPATH/bin directory. Now you can install using installing instructions in this Readme.

Usage

When projektor keybind daemon is running, Super+Q keys will open the projektor UI. Type what you want to launch, select the item with arrow keys, press enter or double-click it with left mouse button to launch it. Also, try experimenting with Tab key :)

For complete list of functions read the Features section.

Configuration

Projektor configuration file is located at ~/.projektor/config.yaml.

Here's annotation for every paramater of the default config:

# Key bind, used by Projektor daemon. `Mod4` is the Windows (Super) key.
# If your Super+Q shortcut doesn't work, edit this option.
# You can use modifier keys `shift` and `control`.
# To identify some complex keybind use `xbindkeys` tool.
keybind: Mod4-q
# How often should projektor daemon run an instance in the background with
# '-dry' flag?
# The dry instances are run to force the kernel to cache all the data needed
# by projektor to run. By forcing the caching we can enable projektor instances
# to startup faster.
# The interval is specified in seconds. Set to 0 if you want to disable
# the force caching completely.
forcecacheinterval: 60
# Searching categories, enabled for use.
# Disable a category by settings its flag to `false` and projektor will no longer
# offer you entries of that category.
enabledcategories:
  # Mathematical calculations
  calc: true
  # Entries history
  history: true
  # Installed applications
  apps: true
  # URLs and web addresses
  url: true
  # Custom command lines
  commands: true
  # File system
  files: true
  # Web searching
  websearch: true
# History category configuration
history:
  # How many last used items should Projektor remember for history?
  capacity: 40
# URL category configuration
url:
  # Icon for URL entries. Use a name of some gtk icon installed on your system,
  # e.g. `firefox`. You can specify absolute path to an image file as well,
  # e.g. `/home/me/.projektor/url-icon.png`
  icon: web-browser
# Web searching category configuration
websearch:
  # Template for search url. `%s` marker denotes, where the search query
  # should be inserted.
  engine: https://google.com/search?q=%s
  # Icon for web search entries. Use a name of some gtk icon installed
  # on your system. You can specify absolute path to an image file as well,
  # e.g. `/home/me/.projektor/google.png`
  icon: web-browser
ui:
  # These values must be quoted so they would be parsed as strings. This is required for future support of sizes proportional to screen size.
  width: "600"
  height: "300"

Projektor styles should be placed at ~/.projektor/styles.css.

Here is the default style:

GtkEntry {
  background-image: none;
  border: none;
  box-shadow: none;
  font-size: 12pt;
}
GtkTreeView {
  background-color: transparent;
  font-size: 8pt;
}
GtkTreeView:selected {
  background-color: rgba(0,0,0,0.1);
}
GtkTreeView.cell {
  padding: 6px 3px;
}