2019-05-14 09:52:21 +00:00
[![Issues ](https://img.shields.io/github/issues/davatorium/rofi.svg )](https://github.com/davatorium/rofi/issues)
[![Forks ](https://img.shields.io/github/forks/davatorium/rofi.svg )](https://github.com/davatorium/rofi/network)
[![Stars ](https://img.shields.io/github/stars/davatorium/rofi.svg )](https://github.com/davatorium/rofi/stargazers)
[![Downloads ](https://img.shields.io/github/downloads/davatorium/rofi/total.svg )](https://github.com/davatorium/rofi/releases)
2021-08-20 14:09:09 +00:00
[![Forum ](https://img.shields.io/badge/forum-online-green.svg )](https://github.com/davatorium/rofi/discussions)
2021-01-17 15:36:51 +00:00
[![Packages ](https://repology.org/badge/tiny-repos/rofi.svg )](https://repology.org/metapackage/rofi/versions)
2015-12-31 20:33:20 +00:00
2017-03-24 08:51:57 +00:00
# A window switcher, Application launcher and dmenu replacement
2014-08-28 19:36:53 +00:00
2020-07-24 18:05:45 +00:00
**This is a fork of [Rofi ](https://github.com/davatorium/rofi ) with added support for Wayland via the [layer shell protocol ](https://github.com/swaywm/wlr-protocols ).**
**For more information, see the [Wayland support section ](#wayland-support )**
2019-01-02 09:51:59 +00:00
**Rofi** started as a clone of simpleswitcher, written by [Sean Pringle ](http://github.com/seanpringle/simpleswitcher ) - a
2016-12-07 17:20:05 +00:00
popup window switcher roughly based on [superswitcher ](http://code.google.com/p/superswitcher/ ).
2019-01-02 09:51:59 +00:00
Simpleswitcher laid the foundations, and therefore Sean Pringle deserves most of the credit for this tool. **Rofi**
2021-01-17 15:36:51 +00:00
(renamed, as it lost the *simple* property) has been extended with extra features, like an application launcher and
2019-01-02 09:51:59 +00:00
ssh-launcher, and can act as a drop-in dmenu replacement, making it a very versatile tool.
2016-07-04 15:29:58 +00:00
**Rofi**, like dmenu, will provide the user with a textual list of options where one or more can be selected.
2019-01-02 09:51:59 +00:00
This can either be running an application, selecting a window, or options provided by an external script.
2015-01-20 22:34:53 +00:00
2017-07-31 12:30:05 +00:00
Its main features are:
2021-01-17 15:36:51 +00:00
* Fully configurable keyboard navigation
* Type to filter
* Tokenized: type any word in any order to filter
* Case insensitive (togglable)
* Support for fuzzy-, regex-, and glob matching
* UTF-8 enabled
* UTF-8-aware string collating
* International keyboard support (\`e -> è)
* RTL language support
* Cairo drawing and Pango font rendering
* Built-in modes:
* Window switcher mode
* EWMH compatible WM
* Application launcher
* Desktop file application launcher
* SSH launcher mode
* Combi mode, allowing several modes to be merged into one list
* History-based ordering — last 25 choices are ordered on top based on use (optional)
2021-05-04 17:40:45 +00:00
* Levenshtein distance or fzf like sorting of matches (optional)
2021-01-17 15:36:51 +00:00
* Drop-in dmenu replacement
* Many added improvements
2021-05-04 17:40:45 +00:00
* Easily extensible using scripts and plugins
* Advanced Theming
2017-07-31 12:30:05 +00:00
2021-04-22 09:10:28 +00:00
**Rofi** has several built-in modi implementing common use cases and can be extended by scripts (either called from
2021-05-04 17:40:45 +00:00
**Rofi** or calling **Rofi** ) or plugins.
2015-05-04 13:37:54 +00:00
2021-04-22 09:10:28 +00:00
Below is a list of the different modi:
2015-05-04 13:37:54 +00:00
2021-04-22 09:10:28 +00:00
* **run**: launch applications from $PATH, with option to launch in terminal.
* **drun**: launch applications based on desktop files. It tries to be compliant to the XDG standard.
* **window**: Switch between windows on an EWMH compatible window manager.
* **ssh**: Connect to a remote host via ssh.
* **file-browser**: A basic file-browser for opening files.
* **keys**: list internal keybindings.
* **script**: Write (limited) custom mode using simple scripts.
* **combi**: Combine multiple modi into one.
2015-05-04 13:37:54 +00:00
2021-04-22 09:10:28 +00:00
**Rofi** is known to work on Linux and BSD.
2015-05-04 13:37:54 +00:00
2020-07-24 18:05:45 +00:00
# Wayland support
To enable Wayland support, build the project with meson and make sure the wayland feature is enabled (it is by default).
```
meson build -Dwayland=enabled
```
The rest of the installation process is unchanged (see [Installation ](#Installation )).
**Rofi** can be invoked with the same CLI and configuration and can be forced to use X11 mode with the x11 flag:
rofi -x11 ...
This port to layer shell is not yet in a stable state, so expect to encounter some rough edges. That said, the core of Rofi's functionalities is present.
What is currently missing:
* [ ] Building with autotools, with or without Wayland support
* [ ] Window mode when running in Wayland mode. Though it can be emulated in dmenu mode on some compositors (ie: Sway IPC)
* [ ] `-normal-window` flag in Wayland mode
* [ ] Selecting which monitor to run rofi on in Wayland mode, only shows up on the currently focused monitor
* [ ] Advanced window location options such as x-offset and y-offset (probably not possible with layer shell)
* [ ] Some X11-specific options like `-dpi` or fake transparency
* [ ] Some refactoring to make the feature less intrusive
* [ ] Updated documentation
If you find something does not work and is not listed here, please open a PR.
I do not intend to make releases from this fork at the moment, but will simply try to keep it regularly in sync with the develop branch upstream.
2021-05-04 15:29:03 +00:00
# Screenshots
2015-05-04 13:37:54 +00:00
2021-05-04 15:29:03 +00:00
![screenshot ](https://raw.githubusercontent.com/davatorium/rofi/next/releasenotes/1.6.0/icons.png )
![screenshot2 ](https://raw.githubusercontent.com/davatorium/rofi/next/releasenotes/1.6.0/icons2.png )
![default ](https://raw.githubusercontent.com/davatorium/rofi/next/releasenotes/1.4.0/rofi-no-fzf.png )
2017-03-24 08:51:57 +00:00
2016-12-13 20:32:42 +00:00
# Manpage
2021-06-08 21:16:01 +00:00
For more up to date information, please see the manpages:
* Manpages:
* [rofi ](doc/rofi.1.markdown )
2021-08-15 18:02:07 +00:00
* [rofi-theme ](doc/rofi-theme.5.markdown )
2021-06-08 21:16:01 +00:00
* [rofi-script ](doc/rofi-script.5.markdown )
* [rofi-theme-selector ](doc/rofi-theme-selector.1.markdown )
* Discussion places:
* [Reddit ](https://reddit.com/r/qtools/ )
* [GitHub Discussions ](https://github.com/davatorium/rofi/discussions )
* IRC (#rofi on irc.libera.chat)
* [wiki ](https://github.com/davatorium/rofi/wiki ) (Currently unmaintained).
2015-05-04 13:37:54 +00:00
# Installation
2019-05-14 09:52:21 +00:00
Please see the [installation guide ](https://github.com/davatorium/rofi/blob/next/INSTALL.md ) for instructions on how to
2016-07-04 15:29:58 +00:00
install **Rofi** .
2016-12-22 14:59:13 +00:00
# What is rofi not?
Rofi is not:
2021-01-17 15:36:51 +00:00
* A UI toolkit.
* A library to be used in other applications.
* An application that can support every possible use-case. It tries to be generic enough to be usable by everybody.
2021-06-08 21:16:01 +00:00
* Specific functionality can be added using scripts or plugins, many exists.
2021-01-17 15:36:51 +00:00
* Just a dmenu replacement. The dmenu functionality is a nice 'extra' to **rofi** , not its main purpose.