Rofi: A window switcher, application launcher and dmenu replacement
Go to file
Dave Davenport b7fba9752f Don't double switch something trivial. 2016-07-05 09:21:50 +02:00
.github Mention gist in CONTRIBUTING. 2016-05-24 12:06:38 +02:00
Examples added optional history; normalized variable names 2016-01-17 21:29:04 +01:00
config Fix windowcd command and allow custom Window string format 2016-06-28 23:07:48 +02:00
data Issue #411: Show list of Keyboard bindings with rofi, from rofi. 2016-05-30 10:25:58 +02:00
doc Update manpage with window-format 2016-07-01 07:57:00 +02:00
include Fix windowcd command and allow custom Window string format 2016-06-28 23:07:48 +02:00
libgwater@173f2f5566 gitmodules: Update libgwater 2016-05-30 18:25:40 +02:00
releasenotes Release v1.1.0 2016-06-14 20:46:46 +02:00
script no need for bash here, sh suffices 2016-04-27 18:13:19 +02:00
source Don't double switch something trivial. 2016-07-05 09:21:50 +02:00
test Forgot normal-window test 2016-06-26 11:10:50 +02:00
.gitignore gitignore: Properly identity top-level files 2016-05-07 15:16:44 +02:00
.gitlab-ci.yml Disable gitlab test, as it get stuck. 2016-04-10 22:46:46 +02:00
.gitmodules rofi: Convert to XCB events 2016-02-21 16:04:53 +01:00
.travis.yml Remove libx11-dev from travis file. 2016-06-25 14:23:43 +02:00
AUTHORS Issue: #418 fixed, update Author file 2016-06-07 08:50:24 +02:00
COPYING Update copyright 2016-01-01 00:27:00 +01:00
Changelog Update Changelog and README 2016-07-04 09:29:43 +02:00
INSTALL.md Fix INSTALL file. 2016-06-25 14:34:03 +02:00
Makefile.am Remove fuzzy matching option. 2016-06-18 20:54:29 +02:00
README.md Update README. 2016-07-04 17:29:58 +02:00
configure.ac Remove xlib dependency, add xcb-util-xrm. 2016-06-25 14:01:41 +02:00
libgwater-xcb-nolibtool.mk rofi: Convert to XCB events 2016-02-21 16:04:53 +01:00

README.md

Build Status codecov.io Issues Forks Stars Downloads

A window switcher, run dialog and dmenu replacement

Rofi started as clone of simpleswitcher, written by Sean Pringle a popup window switcher roughly based on superswitcher. Simpleswitcher laid the foundations and therefor Sean Pringle deserves most of the credit for this tool. Rofi, renamed as it lost the simple property, has been extended with extra features, like a run-dialog, ssh-launcher and can act as a drop-in dmenu replacement, making it a very versatile tool.

Rofi, like dmenu, will provide the user with a textual list of options where one or more can be selected. This can either be, running an application, selecting a window or options provided by an external script.

It main features are:

  • Full (configurable) keyboard navigation.
  • Type to filter
    • Tokenized: Type any word in any order to filter.
    • (toggable) Case insensitive.
    • Supports regex and glob matching.
  • UTF-8 enabled.
    • UTF-8 aware string collating.
    • intl. keyboard support (`e -> è)
  • RTL language support.
  • Cairo drawing and Pango font rendering.
  • Build in modes:
    • Window switcher mode.
      • EWMH compatible WM.
      • Workaround for older I3 installations.
    • Run mode.
    • Desktop File Run mode.
    • SSH launcher mode.
    • Combi mode, allow several modes to be merged into one list.
  • History based ordering last 25 choices are ordered on top based on use. (optional)
  • Levenshtein distance ordering of matches. (optional)
  • Drop in dmenu replacement.
    • With many added improvements.
  • Can be easily extended using scripts.
  • Themeing.

Rofi has several buildin modes implementing common use-cases and can be exteneded by scripts (either called from Rofi or calling Rofi).

Below the different modes are listed:

Window Switcher

Window List

The window switcher shows the following informations in columns (can be customized):

  1. Desktop number
  2. Window class.
  3. Window title.

If compiled with I3 support, it should autodetect if I3 window manager is running and switch into I3 compatibility mode. This will disable Desktop numbers and hide the i3-bar, also it sends an IPC message to I3 to change focus.

Note: With the latest I3 this is no longer needed as I3 obeys EWHM hints. The 'dedicated' support of I3 will be removed from future releases.

Run mode

run mode

The run mode allows the user to quickly search and launch a program. It offers the following features:

  • Shift-Return to run the selected program in a terminal.
  • Favorites list, frequently used programs are sorted on top.

DRun mode

The desktop run mode allows the user to quickly search and launch an application from the freedesktop.org Desktop Entries. E.g. what is used by Desktop Environment to fill their launcher. It offers the following features:

  • Favorites list, frequently used programs are sorted on top.
  • Auto starting terminal applications in a terminal.

SSH launcher

SSH Launcher

Quickly ssh into remote machines

  • Parses ~/.ssh/config to find hosts.

Script mode

Loads external scripts to add modes to Rofi, for example a file-browser.

COMBI mode

Combine multiple modes in one view. This is especially usefull when merging the window and run mode into one view. Allowing to quickly switch to an application, either by switching to it when it is already running or starting it.

dmenu replacement

DMENU replacement (running teiler)

Drop in dmenu replacement. (Screenshot shows rofi used by teiler ).

Rofi features several improvements over dmenu to improve usability. There is the option to add an extra message bar (-mesg), pre-entering of text (-filter) or selecting entries based on a pattern (-select). Also highlighting (-u and -a) options and modi to force user to select one provided option (-only-match).

Usage

If used with -show [mode], rofi will immediately open in the specified [mode]

If used with -dmenu, rofi will use data from STDIN to let the user select an option.

For example to show a run dialog:

rofi -show run

Show a ssh dialog:

rofi -show ssh

dmenu

If passed the -dmenu option, or ran as dmenu (ie, /usr/bin/dmenu is symlinked to /usr/bin/rofi), rofi will use the data passed from STDIN.

~/scripts/my_script.sh | rofi -dmenu
echo -e "Option #1\nOption #2\nOption #3" | rofi -dmenu

In both cases, rofi will output the user's selection to STDOUT.

Switching Between Modi

Type Shift-Right to switch from Window list mode to Run mode and back.

Keybindings

Key Action
Ctrl-v, Insert Paste clipboard
Ctrl-Shift-v, Shift-Insert Paste primary selection
Ctrl-u Clear the line
Ctrl-a Beginning of line
Ctrl-e End of line
Ctrl-f, Right Forward one character
Alt-f Forward one word
Ctrl-b, Left Back one character
Alt-b Back one word
Ctrl-d, Delete Delete character
Ctrl-Alt-d Delete word
Ctrl-h, Backspace Backspace (delete previous character)
Ctrl-Alt-h Delete previous word
Ctrl-j,Ctrl-m,Enter Accept entry
Ctrl-n,Down Select next entry
Ctrl-p,Up Select previous entry
Page Up Go to the previous page
Page Down Go to the next page
Ctrl-Page Up Go to the previous column
Ctrl-Page Down Go to the next column
Ctrl-Enter Use entered text as command (in ssh/run modi)
Shift-Enter Launch the application in a terminal (in run mode)
Shift-Enter Return the selected entry and move to the next item while keeping Rofi open. (in dmenu)
Shift-Right Switch to the next modi. The list can be customized with the -modi option.
Shift-Left Switch to the previous modi. The list can be customized with the -modi option.
Ctrl-Tab Switch to the next modi. The list can be customized with the -modi option.
Ctrl-Shift-Tab Switch to the previous modi. The list can be customized with the -modi option.
Ctrl-space Set selected item as input text.
Shift-Del Delete entry from history.
grave Toggle case sensitivity.
Alt-grave Toggle levenshtein sort.
Alt-Shift-S Take a screenshot and store this in the Pictures directory.

For the full list of keybindings see: rofi -show keys or rofi -help.

Configuration

There are currently three methods of setting configuration options:

  • Local configuration. Normally, depending on XDG, in ~/.local/rofi/config. This uses the Xresources format.
  • Xresources: A method of storing key values in the Xserver. See here for more information. This is the recommended way of configuring Rofi. Remember to load your changes with xrdb -load ~/.Xresources
  • Commandline options: Arguments passed to Rofi.

The Xresources options and the commandline options are aliased. So to set option X you would set:

rofi.X: value

In the Xresources file, and to (override) this via the commandline you would pass the same key prefixed with a '-':

rofi -X value

To get a list of available options, formatted as Xresources entries run:

rofi -dump-Xresources

or in a more readable format

rofi -help

The configuration system supports the following types:

  • String
  • Integer (signed and unsigned)
  • Char
  • Boolean

The boolean option has a non-default commandline syntax, to enable option X you do:

rofi -X

to disable it:

rofi -no-X

Installation

Please see the installation guide for instruction on how to install Rofi.