Skip to content

Commit

Permalink
Release 1.7.6
Browse files Browse the repository at this point in the history
  • Loading branch information
DaveDavenport committed Dec 27, 2024
1 parent ec6df03 commit 554c0d6
Show file tree
Hide file tree
Showing 12 changed files with 4,279 additions and 46 deletions.
89 changes: 45 additions & 44 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
**Please match the documentation and scripts to the version of rofi used**

- [next version](https://github.com/davatorium/rofi)
- [1.7.6](https://github.com/davatorium/rofi/tree/1.7.6)
- [1.7.5](https://github.com/davatorium/rofi/tree/1.7.5)
- [1.7.4](https://github.com/davatorium/rofi/tree/1.7.4)
- [1.7.3](https://github.com/davatorium/rofi/tree/1.7.3)
Expand All @@ -21,7 +22,7 @@ Also see the locally installed documentation (manpages).
<h1 align="center"> Rofi </h1>
<p align="center"><i>A window switcher, Application launcher and dmenu replacement</i>.</p>

https://user-images.githubusercontent.com/84911063/139428874-fe182dd6-82c6-49b8-8da1-920ddda3d1ed.mp4
<https://user-images.githubusercontent.com/84911063/139428874-fe182dd6-82c6-49b8-8da1-920ddda3d1ed.mp4>

**Rofi** started as a clone of simpleswitcher, written by [Sean
Pringle](http://github.com/seanpringle/simpleswitcher) - a popup window
Expand All @@ -41,15 +42,15 @@ provided by an external script.

Rofi is not:

- A UI toolkit.
- A UI toolkit.

- A library to be used in other applications.
- A library to be used in other applications.

- An application that can support every possible use-case. It tries to be
- An application that can support every possible use-case. It tries to be
generic enough to be usable by everybody.
- Specific functionality can be added using scripts or plugins, many exists.
- Specific functionality can be added using scripts or plugins, many exists.

- Just a dmenu replacement. The dmenu functionality is a nice 'extra' to
- Just a dmenu replacement. The dmenu functionality is a nice 'extra' to
**rofi**, not its main purpose.

## Table of Contents
Expand All @@ -58,7 +59,7 @@ Rofi is not:
- [Modes](#modes)
- [Manpages](#manpage)
- [Installation](#installation)
- [Quickstart](#quickstart)
- [Quickstart](#quickstart)
- [Usage](#usage)
- [Configuration](#configuration)
- [Themes](#themes)
Expand All @@ -70,47 +71,47 @@ Rofi is not:

Its main features are:

- Fully configurable keyboard navigation
- Fully configurable keyboard navigation

- Type to filter
- Tokenized: type any word in any order to filter
- Case insensitive (togglable)
- Support for fuzzy-, regex-, prefix-, and glob-matching
- Type to filter
- Tokenized: type any word in any order to filter
- Case insensitive (togglable)
- Support for fuzzy-, regex-, prefix-, and glob-matching

- UTF-8 enabled
- UTF-8-aware string collating
- International keyboard support (\`e -> è)
- UTF-8 enabled
- UTF-8-aware string collating
- International keyboard support (\`e -> è)

- RTL language support
- RTL language support

- Cairo drawing and Pango font rendering
- Cairo drawing and Pango font rendering

- Built-in modes:
- Window switcher mode
- EWMH compatible WM
- Work arounds for i3,bspwm
- Built-in modes:
- Window switcher mode
- EWMH compatible WM
- Work arounds for i3,bspwm

- Application launcher
- Application launcher

- Desktop file application launcher
- Desktop file application launcher

- SSH launcher mode
- SSH launcher mode

- File browser
- File browser

- Combi mode, allowing several modes to be merged into one list
- Combi mode, allowing several modes to be merged into one list

- History-based ordering — last 25 choices are ordered on top based on use
- History-based ordering — last 25 choices are ordered on top based on use
(optional)

- Levenshtein distance or fzf like sorting of matches (optional)
- Levenshtein distance or fzf like sorting of matches (optional)

- Drop-in dmenu replacement
- Many added improvements
- Drop-in dmenu replacement
- Many added improvements

- Easily extensible using scripts and plugins
- Easily extensible using scripts and plugins

- Advanced Theming
- Advanced Theming

## Modes

Expand All @@ -120,22 +121,22 @@ extended by scripts (either called from

Below is a list of the different modes:

- **run**: launch applications from $PATH, with option to launch in terminal.
- **run**: launch applications from $PATH, with option to launch in terminal.

- **drun**: launch applications based on desktop files. It tries to be
- **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.
- **window**: Switch between windows on an EWMH compatible window manager.

- **ssh**: Connect to a remote host via ssh.
- **ssh**: Connect to a remote host via ssh.

- **filebrowser**: A basic file-browser for opening files.
- **filebrowser**: A basic file-browser for opening files.

- **keys**: list internal keybindings.
- **keys**: list internal keybindings.

- **script**: Write (limited) custom mode using simple scripts.
- **script**: Write (limited) custom mode using simple scripts.

- **combi**: Combine multiple modes into one.
- **combi**: Combine multiple modes into one.

**Rofi** is known to work on Linux and BSD.

Expand Down Expand Up @@ -196,11 +197,11 @@ launcher:
```

The modes to combine in combi mode.
For syntax to `-combi-modes `, see `-modes`.
For syntax to `-combi-modes`, see `-modes`.
To get one merge view, of `window`,`run`, and `ssh`:

```bash
rofi -show combi -combi-modes "window,run,ssh" -modes combi
rofi -show combi -combi-modes "window,run,ssh" -modes combi
```

### Configuration
Expand Down Expand Up @@ -243,9 +244,9 @@ Default theme:

![default](https://raw.githubusercontent.com/davatorium/rofi/next/releasenotes/1.4.0/rofi-no-fzf.png)

## Wiki
## Wiki

|**The Wiki is currently unmaintained and might contain outdated data ** |
|**The Wiki is currently unmaintained and might contain outdated data** |
| --- |

[Go to wiki](https://github.com/davatorium/rofi/wiki) .
Expand Down
2 changes: 1 addition & 1 deletion configure.ac
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
AC_INIT([rofi], [1.7.5-dev], [https://github.com/davatorium/rofi/],[],[https://github.com/davatorium/rofi/discussions])
AC_INIT([rofi], [1.7.6], [https://github.com/davatorium/rofi/],[],[https://github.com/davatorium/rofi/discussions])

AC_CONFIG_SRCDIR([source/rofi.c])
AC_CONFIG_HEADER([config.h])
Expand Down
2 changes: 1 addition & 1 deletion meson.build
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
project('rofi', 'c',
version: '1.7.5-dev',
version: '1.7.6',
meson_version: '>=0.59.0',
license: [ 'MIT' ],
default_options: [
Expand Down
177 changes: 177 additions & 0 deletions mkdocs/docs/1.7.6/rofi-debugging.5.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,177 @@
# rofi-debugging(5)

## NAME

Debugging rofi.

When reporting an issue with rofi crashing, or misbehaving. It helps to do some
small test to help pin-point the problem.

First try disabling your custom configuration: `-no-config`

This disables the parsing of the configuration files. This runs rofi in *stock*
mode.

If you run custom C plugins, you can disable the plugins using: `-no-plugins`

## Get the relevant information for an issue

Please pastebin the output of the following commands:

```bash
rofi -help
rofi -dump-config
rofi -dump-theme
```

`rofi -help` provides us with the configuration files parsed, the exact
version, monitor layout and more useful information.

The `rofi -dump-config` and `rofi -dump-theme` output gives us `rofi`
interpretation of your configuration and theme.

Please check the output for identifiable information and remove this.

## Timing traces

To get a timing trace, enable the **Timings** debug domain.

```bash
G_MESSAGES_DEBUG=Timings rofi -show drun
```
It will show a trace with (useful) timing information at relevant points during
the execution. This will help debugging when rofi is slow to start.

Example trace:

```text
(process:14942): Timings-DEBUG: 13:47:39.335: 0.000000 (0.000000): Started
(process:14942): Timings-DEBUG: 13:47:39.335: 0.000126 (0.000126): ../source/rofi.c:main:786
(process:14942): Timings-DEBUG: 13:47:39.335: 0.000163 (0.000037): ../source/rofi.c:main:819
(process:14942): Timings-DEBUG: 13:47:39.336: 0.000219 (0.000056): ../source/rofi.c:main:826 Setup Locale
(process:14942): Timings-DEBUG: 13:47:39.337: 0.001235 (0.001016): ../source/rofi.c:main:828 Collect MODI
(process:14942): Timings-DEBUG: 13:47:39.337: 0.001264 (0.000029): ../source/rofi.c:main:830 Setup MODI
(process:14942): Timings-DEBUG: 13:47:39.337: 0.001283 (0.000019): ../source/rofi.c:main:834 Setup mainloop
(process:14942): Timings-DEBUG: 13:47:39.337: 0.001369 (0.000086): ../source/rofi.c:main:837 NK Bindings
(process:14942): Timings-DEBUG: 13:47:39.337: 0.001512 (0.000143): ../source/xcb.c:display_setup:1177 Open Display
(process:14942): Timings-DEBUG: 13:47:39.337: 0.001829 (0.000317): ../source/xcb.c:display_setup:1192 Setup XCB
(process:14942): Timings-DEBUG: 13:47:39.346: 0.010650 (0.008821): ../source/rofi.c:main:844 Setup Display
(process:14942): Timings-DEBUG: 13:47:39.346: 0.010715 (0.000065): ../source/rofi.c:main:848 Setup abe
(process:14942): Timings-DEBUG: 13:47:39.350: 0.015101 (0.004386): ../source/rofi.c:main:883 Load cmd config
(process:14942): Timings-DEBUG: 13:47:39.351: 0.015275 (0.000174): ../source/rofi.c:main:907 Setup Modi
(process:14942): Timings-DEBUG: 13:47:39.351: 0.015291 (0.000016): ../source/view.c:rofi_view_workers_initialize:1922 Setup Threadpool, start
(process:14942): Timings-DEBUG: 13:47:39.351: 0.015349 (0.000058): ../source/view.c:rofi_view_workers_initialize:1945 Setup Threadpool, done
(process:14942): Timings-DEBUG: 13:47:39.367: 0.032018 (0.016669): ../source/rofi.c:main:1000 Setup late Display
(process:14942): Timings-DEBUG: 13:47:39.367: 0.032080 (0.000062): ../source/rofi.c:main:1003 Theme setup
(process:14942): Timings-DEBUG: 13:47:39.367: 0.032109 (0.000029): ../source/rofi.c:startup:668 Startup
(process:14942): Timings-DEBUG: 13:47:39.367: 0.032121 (0.000012): ../source/rofi.c:startup:677 Grab keyboard
(process:14942): Timings-DEBUG: 13:47:39.368: 0.032214 (0.000093): ../source/view.c:__create_window:701 xcb create window
(process:14942): Timings-DEBUG: 13:47:39.368: 0.032235 (0.000021): ../source/view.c:__create_window:705 xcb create gc
(process:14942): Timings-DEBUG: 13:47:39.368: 0.033136 (0.000901): ../source/view.c:__create_window:714 create cairo surface
(process:14942): Timings-DEBUG: 13:47:39.369: 0.033286 (0.000150): ../source/view.c:__create_window:723 pango cairo font setup
(process:14942): Timings-DEBUG: 13:47:39.369: 0.033351 (0.000065): ../source/view.c:__create_window:761 configure font
(process:14942): Timings-DEBUG: 13:47:39.381: 0.045896 (0.012545): ../source/view.c:__create_window:769 textbox setup
(process:14942): Timings-DEBUG: 13:47:39.381: 0.045944 (0.000048): ../source/view.c:__create_window:781 setup window attributes
(process:14942): Timings-DEBUG: 13:47:39.381: 0.045955 (0.000011): ../source/view.c:__create_window:791 setup window fullscreen
(process:14942): Timings-DEBUG: 13:47:39.381: 0.045966 (0.000011): ../source/view.c:__create_window:797 setup window name and class
(process:14942): Timings-DEBUG: 13:47:39.381: 0.045974 (0.000008): ../source/view.c:__create_window:808 setup startup notification
(process:14942): Timings-DEBUG: 13:47:39.381: 0.045981 (0.000007): ../source/view.c:__create_window:810 done
(process:14942): Timings-DEBUG: 13:47:39.381: 0.045992 (0.000011): ../source/rofi.c:startup:679 Create Window
(process:14942): Timings-DEBUG: 13:47:39.381: 0.045999 (0.000007): ../source/rofi.c:startup:681 Parse ABE
(process:14942): Timings-DEBUG: 13:47:39.381: 0.046113 (0.000114): ../source/rofi.c:startup:684 Config sanity check
(process:14942): Timings-DEBUG: 13:47:39.384: 0.048229 (0.002116): ../source/dialogs/run.c:get_apps:216 start
(process:14942): Timings-DEBUG: 13:47:39.390: 0.054626 (0.006397): ../source/dialogs/run.c:get_apps:336 stop
(process:14942): Timings-DEBUG: 13:47:39.390: 0.054781 (0.000155): ../source/dialogs/drun.c:get_apps:634 Get Desktop apps (start)
(process:14942): Timings-DEBUG: 13:47:39.391: 0.055264 (0.000483): ../source/dialogs/drun.c:get_apps:641 Get Desktop apps (user dir)
(process:14942): Timings-DEBUG: 13:47:39.418: 0.082884 (0.027620): ../source/dialogs/drun.c:get_apps:659 Get Desktop apps (system dirs)
(process:14942): Timings-DEBUG: 13:47:39.418: 0.082944 (0.000060): ../source/dialogs/drun.c:get_apps_history:597 Start drun history
(process:14942): Timings-DEBUG: 13:47:39.418: 0.082977 (0.000033): ../source/dialogs/drun.c:get_apps_history:617 Stop drun history
(process:14942): Timings-DEBUG: 13:47:39.419: 0.083638 (0.000661): ../source/dialogs/drun.c:get_apps:664 Sorting done.
(process:14942): Timings-DEBUG: 13:47:39.419: 0.083685 (0.000047): ../source/view.c:rofi_view_create:1759
(process:14942): Timings-DEBUG: 13:47:39.419: 0.083700 (0.000015): ../source/view.c:rofi_view_create:1783 Startup notification
(process:14942): Timings-DEBUG: 13:47:39.419: 0.083711 (0.000011): ../source/view.c:rofi_view_create:1786 Get active monitor
(process:14942): Timings-DEBUG: 13:47:39.420: 0.084693 (0.000982): ../source/view.c:rofi_view_refilter:1028 Filter start
(process:14942): Timings-DEBUG: 13:47:39.421: 0.085992 (0.001299): ../source/view.c:rofi_view_refilter:1132 Filter done
(process:14942): Timings-DEBUG: 13:47:39.421: 0.086090 (0.000098): ../source/view.c:rofi_view_update:982
(process:14942): Timings-DEBUG: 13:47:39.421: 0.086123 (0.000033): ../source/view.c:rofi_view_update:1002 Background
(process:14942): Timings-DEBUG: 13:47:39.428: 0.092864 (0.006741): ../source/view.c:rofi_view_update:1008 widgets
```

## Debug domains

To further debug the plugin, you can get a trace with (lots of) debug
information. This debug output can be enabled for multiple parts in rofi using
the glib debug framework. Debug domains can be enabled by setting the
G\_MESSAGES\_DEBUG environment variable. At the time of creation of this page,
the following debug domains exist:

- all: Show debug information from all domains.
- X11Helper: The X11 Helper functions.
- View: The main window view functions.
- Widgets.Box: The Box widget.
- Modes.DMenu: The dmenu mode.
- Modes.Run: The run mode.
- Modes.DRun: The desktop file run mode.
- Modes.Window: The window mode.
- Modes.Script: The script mode.
- Modes.Combi: The script mode.
- Modes.Ssh: The ssh mode.
- Rofi: The main application.
- Timings: Get timing output.
- Theme: Theme engine debug output. (warning lots of output).
- Widgets.Icon: The Icon widget.
- Widgets.Box: The box widget.
- Widgets.Container: The container widget.
- Widgets.Window: The window widget.
- Helpers.IconFetcher: Information about icon lookup.

For full list see `man rofi`.

Example: `G_MESSAGES_DEBUG=Dialogs.DRun rofi -show drun` To get specific output
from the Desktop file run dialog.

To redirect the debug output to a file (`~/rofi.log`) add:

```bash
rofi -show drun -log ~/rofi.log
```

Specifying the logfile automatically enabled all log domains.
This can be useful when rofi is launched from a window manager.

## Creating a backtrace

First make sure you compile **rofi** with debug symbols:

```bash
make CFLAGS="-O0 -g3" clean rofi
```

Getting a backtrace using GDB is not very handy. Because if rofi get stuck, it
grabs keyboard and mouse. So if it crashes in GDB you are stuck. The best way
to go is to enable core file. (ulimit -c unlimited in bash) then make rofi
crash. You can then load the core in GDB.

```bash
gdb rofi core
```

Then type inside gdb:

```bash
thread apply all bt
```

The output trace is useful when reporting crashes.

Some distribution have `systemd-coredump`, this way you can easily get a
backtrace via `coredumpctl`.

## SEE ALSO

rofi-sensible-terminal(1), dmenu(1), rofi-theme(5),
rofi-script(5), rofi-keys(5),rofi-theme-selector(1)

## AUTHOR

* Qball Cow <[email protected]>
Loading

0 comments on commit 554c0d6

Please sign in to comment.