mirror of
https://github.com/davatorium/rofi.git
synced 2025-04-14 17:43:01 -04:00
Merge branch 'next' into patch-1
This commit is contained in:
commit
b87ac1225a
48 changed files with 9263 additions and 303 deletions
8
.github/actions/autotools/action.yml
vendored
8
.github/actions/autotools/action.yml
vendored
|
@ -2,6 +2,9 @@ name: Autotools Build
|
|||
description: Builds Rofi using Autotools
|
||||
|
||||
inputs:
|
||||
do-release:
|
||||
description: Do a make dist and upload
|
||||
required: true
|
||||
cc:
|
||||
description: Compiler to use
|
||||
required: true
|
||||
|
@ -45,9 +48,10 @@ runs:
|
|||
make
|
||||
make check
|
||||
- id: upload
|
||||
uses: actions/upload-artifact@v3
|
||||
if: ${{ inputs.do-release == 'true' }}
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: tarballs
|
||||
name: tarballs ${{ github.sha }}
|
||||
path: |
|
||||
builddir/*.tar.gz
|
||||
builddir/*.tar.xz
|
||||
|
|
3
.github/workflows/build.yml
vendored
3
.github/workflows/build.yml
vendored
|
@ -46,6 +46,7 @@ jobs:
|
|||
with:
|
||||
cc: gcc
|
||||
windowmode: enable
|
||||
do-release: true
|
||||
build-autotools-gcc-no-window:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
@ -57,6 +58,7 @@ jobs:
|
|||
with:
|
||||
cc: gcc
|
||||
windowmode: disable
|
||||
do-release: false
|
||||
build-autotools-clang:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
@ -68,3 +70,4 @@ jobs:
|
|||
with:
|
||||
cc: clang
|
||||
windowmode: enable
|
||||
do-release: false
|
||||
|
|
28
CONFIG.md
28
CONFIG.md
|
@ -20,7 +20,8 @@ configuration {
|
|||
|
||||
}
|
||||
```
|
||||
You can now set the options in the `configuration` block.
|
||||
|
||||
You can now set the options in the `configuration` block.
|
||||
|
||||
## Create a configuration file from current setup
|
||||
|
||||
|
@ -35,6 +36,7 @@ This will have all the possible settings and their current value.
|
|||
If a value is the default value, the entry will be commented.
|
||||
|
||||
For example:
|
||||
|
||||
```css
|
||||
configuration {
|
||||
/* modes: "window,run,ssh,drun";*/
|
||||
|
@ -68,8 +70,8 @@ newlines format are supported. But Unix is preferred.
|
|||
|
||||
C and C++ file comments are supported.
|
||||
|
||||
- Anything after `// ` and before a newline is considered a comment.
|
||||
- Everything between `/*` and `*/` is a comment.
|
||||
- Anything after `//` and before a newline is considered a comment.
|
||||
- Everything between `/*` and `*/` is a comment.
|
||||
|
||||
Comments can be nested and the C comments can be inline.
|
||||
|
||||
|
@ -124,12 +126,12 @@ For example:
|
|||
#### Number
|
||||
|
||||
An integer may contain any full number.
|
||||
|
||||
For example:
|
||||
|
||||
```css
|
||||
|
||||
For example:
|
||||
|
||||
```css
|
||||
eh: 2;
|
||||
```
|
||||
```
|
||||
|
||||
#### Boolean
|
||||
|
||||
|
@ -144,15 +146,6 @@ show-icons: true;
|
|||
This is equal to the `-show-icons` option on the commandline, and `show-icons:
|
||||
false;` is equal to `-no-show-icons`.
|
||||
|
||||
#### Character
|
||||
|
||||
Character value is always surrounded by single quotes (') and should contain a
|
||||
single character. It supports escaping.
|
||||
|
||||
```css
|
||||
matching-negate-char: '-';
|
||||
```
|
||||
|
||||
#### List
|
||||
|
||||
This is not supported by the old configuration system, but can be used in the
|
||||
|
@ -164,6 +157,7 @@ comma-separated. The entry in the list single ASCII words.
|
|||
```css
|
||||
combi-modes: [window,drun];
|
||||
```
|
||||
|
||||
For older versions you have :
|
||||
|
||||
```css
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
For newer release ChangeLogs please see the releasenotes.
|
||||
|
||||
v1.7.3: Sturtled!
|
||||
- [Help] Print out the parsed config/theme files in -help output.
|
||||
- [Keybindings] Fix keybindings being modified by -theme-str
|
||||
|
|
|
@ -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.7](https://github.com/davatorium/rofi/tree/1.7.7)
|
||||
- [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,4 +1,4 @@
|
|||
AC_INIT([rofi], [1.7.6-dev], [https://github.com/davatorium/rofi/],[],[https://github.com/davatorium/rofi/discussions])
|
||||
AC_INIT([rofi], [1.7.8-dev], [https://github.com/davatorium/rofi/],[],[https://github.com/davatorium/rofi/discussions])
|
||||
|
||||
AC_CONFIG_SRCDIR([source/rofi.c])
|
||||
AC_CONFIG_HEADER([config.h])
|
||||
|
|
|
@ -195,9 +195,9 @@ newlines format are supported. But unix is preferred.
|
|||
|
||||
C and C++ file comments are supported.
|
||||
|
||||
- Anything after `// ` and before a newline is considered a comment.
|
||||
- Anything after `//` and before a newline is considered a comment.
|
||||
|
||||
- Everything between `/*` and `*/` is a comment, this comment can span
|
||||
- Everything between `/*` and `*/` is a comment, this comment can span
|
||||
multiple lines.
|
||||
|
||||
Comments can be nested and the C comments can be inline.
|
||||
|
@ -443,17 +443,17 @@ dynamic: false;
|
|||
|
||||
**rofi** support a limited set of background-image formats.
|
||||
|
||||
- Format: url("path to image");
|
||||
- Format: url("path to image");
|
||||
|
||||
- Format: url("path to image", scale);
|
||||
- Format: url("path to image", scale);
|
||||
where scale is: none, both, width, height
|
||||
|
||||
- Format: linear-gradient(stop color,stop1, color, stop2 color, ...);
|
||||
- Format: linear-gradient(stop color,stop1, color, stop2 color, ...);
|
||||
|
||||
- Format: linear-gradient(to direction, stop color,stop1, color, stop2 color,
|
||||
- Format: linear-gradient(to direction, stop color,stop1, color, stop2 color,
|
||||
...); where direction is: top,left,right,bottom.
|
||||
|
||||
- Format: linear-gradient(angle, stop color,stop1, color, stop2 color, ...);
|
||||
- Format: linear-gradient(angle, stop color,stop1, color, stop2 color, ...);
|
||||
Angle in deg,rad,grad (as used in color).
|
||||
|
||||
Where the `path` is a string, and `stop` color is of type color.
|
||||
|
@ -463,42 +463,42 @@ Where the `path` is a string, and `stop` color is of type color.
|
|||
**rofi** supports the color formats as specified in the CSS standard (1,2,3 and
|
||||
some of CSS 4)
|
||||
|
||||
- Format: `#{HEX}{3}` (rgb)
|
||||
- Format: `#{HEX}{3}` (rgb)
|
||||
|
||||
- Format: `#{HEX}{4}` (rgba)
|
||||
- Format: `#{HEX}{4}` (rgba)
|
||||
|
||||
- Format: `#{HEX}{6}` (rrggbb)
|
||||
- Format: `#{HEX}{6}` (rrggbb)
|
||||
|
||||
- Format: `#{HEX}{8}` (rrggbbaa)
|
||||
- Format: `#{HEX}{8}` (rrggbbaa)
|
||||
|
||||
- Format: `rgb[a]({INTEGER},{INTEGER},{INTEGER}[, {PERCENTAGE}])`
|
||||
- Format: `rgb[a]({INTEGER},{INTEGER},{INTEGER}[, {PERCENTAGE}])`
|
||||
|
||||
- Format: `rgb[a]({INTEGER}%,{INTEGER}%,{INTEGER}%[, {PERCENTAGE}])`
|
||||
- Format: `rgb[a]({INTEGER}%,{INTEGER}%,{INTEGER}%[, {PERCENTAGE}])`
|
||||
|
||||
- Format: `hsl[a]( {ANGLE}, {PERCENTAGE}, {PERCENTAGE} [, {PERCENTAGE}])`
|
||||
- Format: `hsl[a]( {ANGLE}, {PERCENTAGE}, {PERCENTAGE} [, {PERCENTAGE}])`
|
||||
|
||||
- Format: `hwb[a]( {ANGLE}, {PERCENTAGE}, {PERCENTAGE} [, {PERCENTAGE}])`
|
||||
- Format: `hwb[a]( {ANGLE}, {PERCENTAGE}, {PERCENTAGE} [, {PERCENTAGE}])`
|
||||
|
||||
- Format: `cmyk( {PERCENTAGE}, {PERCENTAGE}, {PERCENTAGE}, {PERCENTAGE} [,
|
||||
- Format: `cmyk( {PERCENTAGE}, {PERCENTAGE}, {PERCENTAGE}, {PERCENTAGE} [,
|
||||
{PERCENTAGE} ])`
|
||||
|
||||
- Format: `{named-color} [ / {PERCENTAGE} ]`
|
||||
- Format: `{named-color} [ / {PERCENTAGE} ]`
|
||||
|
||||
The white-space format proposed in CSS4 is also supported.
|
||||
|
||||
The different values are:
|
||||
|
||||
- `{HEX}` is a hexadecimal number ('0-9a-f' case insensitive).
|
||||
- `{HEX}` is a hexadecimal number ('0-9a-f' case insensitive).
|
||||
|
||||
- `{INTEGER}` value can be between 0 and 255 or 0-100 when representing
|
||||
- `{INTEGER}` value can be between 0 and 255 or 0-100 when representing
|
||||
percentage.
|
||||
|
||||
- `{ANGLE}` is the angle on the color wheel, can be in `deg`, `rad`, `grad`
|
||||
- `{ANGLE}` is the angle on the color wheel, can be in `deg`, `rad`, `grad`
|
||||
or `turn`. When no unit is specified, degrees is assumed.
|
||||
|
||||
- `{PERCENTAGE}` can be between 0-1.0, or 0%-100%
|
||||
- `{PERCENTAGE}` can be between 0-1.0, or 0%-100%
|
||||
|
||||
- `{named-color}` is one of the following colors:
|
||||
- `{named-color}` is one of the following colors:
|
||||
|
||||
AliceBlue, AntiqueWhite, Aqua, Aquamarine, Azure, Beige, Bisque, Black,
|
||||
BlanchedAlmond, Blue, BlueViolet, Brown, BurlyWood, CadetBlue, Chartreuse,
|
||||
|
@ -532,6 +532,7 @@ background-color: #FF0000;
|
|||
border-color: rgba(0,0,1, 0.5);
|
||||
text-color: SeaGreen;
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
```css
|
||||
|
@ -567,6 +568,7 @@ upsizing or wrapping. This will be re-enabled once fixed:
|
|||
|
||||
Indicates how a line should be drawn.
|
||||
It currently supports:
|
||||
|
||||
- `dash`: a dashed line, where the gap is the same width as the dash
|
||||
- `solid`: a solid line
|
||||
|
||||
|
@ -593,6 +595,7 @@ For example:
|
|||
```css
|
||||
padding: 10%;
|
||||
```
|
||||
|
||||
On a full-HD (1920x1080) monitor, it defines a padding of 192 pixels on the left
|
||||
and right side and 108 pixels on the top and bottom.
|
||||
|
||||
|
@ -617,9 +620,9 @@ It supports the following operations:
|
|||
- `modulo` : Modulo
|
||||
- `min` : Minimum of lvalue or rvalue;
|
||||
- `max` : Maximum of lvalue or rvalue;
|
||||
- `floor` : Round down lvalue to the next multiple of rvalue
|
||||
- `ceil` : Round up lvalue to the next multiple of rvalue
|
||||
- `round` : Round lvalue to the next multiple of rvalue
|
||||
- `floor` : Round down lvalue to the next multiple of rvalue
|
||||
- `ceil` : Round up lvalue to the next multiple of rvalue
|
||||
- `round` : Round lvalue to the next multiple of rvalue
|
||||
|
||||
It uses the C precedence ordering.
|
||||
|
||||
|
@ -642,24 +645,24 @@ The different number of fields in the formats are parsed like:
|
|||
|
||||
### Border
|
||||
|
||||
- Format: `{Integer}`
|
||||
- Format: `{Integer}`
|
||||
|
||||
- Format: `{Distance}`
|
||||
- Format: `{Distance}`
|
||||
|
||||
- Format: `{Distance} {Distance}`
|
||||
- Format: `{Distance} {Distance}`
|
||||
|
||||
- Format: `{Distance} {Distance} {Distance}`
|
||||
- Format: `{Distance} {Distance} {Distance}`
|
||||
|
||||
- Format: `{Distance} {Distance} {Distance} {Distance}`
|
||||
- Format: `{Distance} {Distance} {Distance} {Distance}`
|
||||
|
||||
- Format: `{Distance} {Line style}`
|
||||
- Format: `{Distance} {Line style}`
|
||||
|
||||
- Format: `{Distance} {Line style} {Distance} {Line style}`
|
||||
- Format: `{Distance} {Line style} {Distance} {Line style}`
|
||||
|
||||
- Format: `{Distance} {Line style} {Distance} {Line style} {Distance} {Line
|
||||
- Format: `{Distance} {Line style} {Distance} {Line style} {Distance} {Line
|
||||
style}`
|
||||
|
||||
- Format: `{Distance} {Line style} {Distance} {Line style} {Distance} {Line
|
||||
- Format: `{Distance} {Line style} {Distance} {Line style} {Distance} {Line
|
||||
style} {Distance} {Line style}`
|
||||
|
||||
Borders are identical to padding, except that each distance field has a line
|
||||
|
@ -838,50 +841,50 @@ element selected {
|
|||
The default widgets available in **rofi** and the default hierarchic:
|
||||
|
||||
- `window`
|
||||
- `overlay`: the overlay widget.
|
||||
- `overlay`: the overlay widget.
|
||||
|
||||
- `mainbox`: The mainbox box.
|
||||
- `mainbox`: The mainbox box.
|
||||
|
||||
- `inputbar`: The input bar box.
|
||||
- `box`: the horizontal @box packing the widgets
|
||||
- `inputbar`: The input bar box.
|
||||
- `box`: the horizontal @box packing the widgets
|
||||
|
||||
- `case-indicator`: the case/sort indicator @textbox
|
||||
- `case-indicator`: the case/sort indicator @textbox
|
||||
|
||||
- `prompt`: the prompt @textbox
|
||||
- `prompt`: the prompt @textbox
|
||||
|
||||
- `entry`: the main entry @textbox
|
||||
- `entry`: the main entry @textbox
|
||||
|
||||
- `num-rows`: Shows the total number of rows.
|
||||
- `num-rows`: Shows the total number of rows.
|
||||
|
||||
- `num-filtered-rows`: Shows the total number of rows after
|
||||
- `num-filtered-rows`: Shows the total number of rows after
|
||||
filtering.
|
||||
|
||||
- `textbox-current-entry`: Shows the text of the currently selected
|
||||
- `textbox-current-entry`: Shows the text of the currently selected
|
||||
entry.
|
||||
|
||||
- `icon-current-entry`: Shows the icon of the currently selected
|
||||
- `icon-current-entry`: Shows the icon of the currently selected
|
||||
entry.
|
||||
|
||||
- `listview`: The listview.
|
||||
- `listview`: The listview.
|
||||
|
||||
- `scrollbar`: the listview scrollbar
|
||||
- `scrollbar`: the listview scrollbar
|
||||
|
||||
- `element`: a box in the listview holding the entries
|
||||
- `element`: a box in the listview holding the entries
|
||||
|
||||
- `element-icon`: the widget in the listview's entry showing the
|
||||
(optional) icon
|
||||
- `element-icon`: the widget in the listview's entry showing the
|
||||
(optional) icon
|
||||
|
||||
- `element-index`: the widget in the listview's entry
|
||||
keybindable index (1,2,3..0)
|
||||
- `element-index`: the widget in the listview's entry
|
||||
keybindable index (1,2,3..0)
|
||||
|
||||
- `element-text`: the widget in the listview's entry showing the
|
||||
text.
|
||||
- `element-text`: the widget in the listview's entry showing the
|
||||
text.
|
||||
|
||||
- `mode-switcher`: the main horizontal @box packing the buttons.
|
||||
- `button`: the buttons @textbox for each mode
|
||||
- `mode-switcher`: the main horizontal @box packing the buttons.
|
||||
- `button`: the buttons @textbox for each mode
|
||||
|
||||
- `message`: The container holding the textbox.
|
||||
- `textbox`: the message textbox
|
||||
- `message`: The container holding the textbox.
|
||||
- `textbox`: the message textbox
|
||||
|
||||
Note that these path names match the default theme. Themes that provide a
|
||||
custom layout will have different elements, and structure.
|
||||
|
@ -911,11 +914,13 @@ Currently only the entrybox and scrollbar have states:
|
|||
```
|
||||
|
||||
Where `visible modifier` can be:
|
||||
|
||||
- normal: no modification
|
||||
- selected: the entry is selected/highlighted by user
|
||||
- alternate: the entry is at an alternating row (uneven row)
|
||||
|
||||
Where `state` is:
|
||||
|
||||
- normal: no modification
|
||||
- urgent: this entry is marked urgent
|
||||
- active: this entry is marked active
|
||||
|
@ -944,60 +949,60 @@ This allows the colors used for drawing the handle to be set independently.
|
|||
|
||||
The following properties are currently supported:
|
||||
|
||||
### all widgets
|
||||
### all widgets
|
||||
|
||||
- **enabled**: enable/disable rendering of the widget
|
||||
- **enabled**: enable/disable rendering of the widget
|
||||
|
||||
- **padding**: padding
|
||||
- **padding**: padding
|
||||
Padding on the inside of the widget
|
||||
|
||||
- **margin**: padding
|
||||
- **margin**: padding
|
||||
Margin on the outside of the widget
|
||||
|
||||
- **border**: border
|
||||
- **border**: border
|
||||
Border around the widget (between padding and margin)/
|
||||
|
||||
- **border-radius**: padding
|
||||
- **border-radius**: padding
|
||||
Sets a radius on the corners of the borders.
|
||||
|
||||
- **background-color**: color
|
||||
- **background-color**: color
|
||||
Background color
|
||||
|
||||
- **background-image**: image
|
||||
- **background-image**: image
|
||||
Background image
|
||||
|
||||
- **border-color**: color
|
||||
- **border-color**: color
|
||||
Color of the border
|
||||
|
||||
- **cursor**: cursor
|
||||
- **cursor**: cursor
|
||||
Type of mouse cursor that is set when the mouse pointer is hovered over the
|
||||
widget.
|
||||
|
||||
### window
|
||||
|
||||
- **font**: string
|
||||
- **font**: string
|
||||
The font used in the window
|
||||
|
||||
- **transparency**: string
|
||||
- **transparency**: string
|
||||
Indicating if transparency should be used and what type:
|
||||
- **real** - True transparency. Only works with a compositor.
|
||||
- **background** - Take a screenshot of the background image and use that.
|
||||
- **screenshot** - Take a screenshot of the screen and use that.
|
||||
- **Path** to png file - Use an image.
|
||||
- **real** - True transparency. Only works with a compositor.
|
||||
- **background** - Take a screenshot of the background image and use that.
|
||||
- **screenshot** - Take a screenshot of the screen and use that.
|
||||
- **Path** to png file - Use an image.
|
||||
|
||||
- **location**: position
|
||||
- **location**: position
|
||||
The place of the anchor on the monitor
|
||||
|
||||
- **anchor**: anchor
|
||||
- **anchor**: anchor
|
||||
The anchor position on the window
|
||||
|
||||
- **fullscreen**: boolean Window is fullscreen.
|
||||
- **fullscreen**: boolean Window is fullscreen.
|
||||
|
||||
- **width**: distance The width of the window
|
||||
- **width**: distance The width of the window
|
||||
|
||||
- **x-offset**: distance
|
||||
- **x-offset**: distance
|
||||
|
||||
- **y-offset**: distance The offset of the window to the anchor point,
|
||||
- **y-offset**: distance The offset of the window to the anchor point,
|
||||
allowing you to push the window left/right/up/down
|
||||
|
||||
### scrollbar Properties
|
||||
|
@ -1014,102 +1019,103 @@ The following properties are currently supported:
|
|||
|
||||
### textbox
|
||||
|
||||
- **background-color**: color
|
||||
- **background-color**: color
|
||||
|
||||
- **border-color**: the color used for the border around the widget.
|
||||
- **border-color**: the color used for the border around the widget.
|
||||
|
||||
- **font**: the font used by this textbox (string).
|
||||
- **font**: the font used by this textbox (string).
|
||||
|
||||
- **str**/**content**: the string to display by this textbox (string).
|
||||
- **str**/**content**: the string to display by this textbox (string).
|
||||
|
||||
- **vertical-align**: Vertical alignment of the text. A number between 0
|
||||
- **vertical-align**: Vertical alignment of the text. A number between 0
|
||||
(top) and 1 (bottom).
|
||||
|
||||
- **horizontal-align**: Horizontal alignment of the text. A number between 0
|
||||
- **horizontal-align**: Horizontal alignment of the text. A number between 0
|
||||
(left) and 1 (right).
|
||||
|
||||
- **text-color**: the text color to use.
|
||||
- **text-color**: the text color to use.
|
||||
|
||||
- **text-transform**: text style {color} for the whole text.
|
||||
- **text-transform**: text style {color} for the whole text.
|
||||
|
||||
- **highlight**: text style {color}. color is optional, multiple
|
||||
- **highlight**: text style {color}. color is optional, multiple
|
||||
highlight styles can be added like: bold underline italic #000000; This
|
||||
option is only available on the `element-text` widget.
|
||||
|
||||
- **width**: override the desired width for the textbox.
|
||||
- **width**: override the desired width for the textbox.
|
||||
|
||||
- **content**: Set the displayed text (String).
|
||||
- **content**: Set the displayed text (String).
|
||||
|
||||
- **placeholder**: Set the displayed text (String) when nothing is
|
||||
- **placeholder**: Set the displayed text (String) when nothing is
|
||||
entered.
|
||||
|
||||
- **placeholder-markup**: If true, placeholder text supports pango
|
||||
- **placeholder-markup**: If true, placeholder text supports pango
|
||||
markup for stylizing.
|
||||
|
||||
- **placeholder-color**: Color of the placeholder text.
|
||||
- **placeholder-color**: Color of the placeholder text.
|
||||
|
||||
- **blink**: Enable/Disable blinking on an input textbox
|
||||
- **blink**: Enable/Disable blinking on an input textbox
|
||||
(Boolean).
|
||||
|
||||
- **markup**: Force markup on, beware that only valid pango markup
|
||||
- **markup**: Force markup on, beware that only valid pango markup
|
||||
strings are shown.
|
||||
|
||||
- **tab-stops**: array of distances. Set the location of tab stops by
|
||||
- **tab-stops**: array of distances. Set the location of tab stops by
|
||||
their distance from the beginning of the line. Each distance should be
|
||||
greater than the previous one. The text appears to the right of the tab
|
||||
stop position (other alignments are not supported yet).
|
||||
|
||||
- **cursor-width**: The width of the cursor.
|
||||
- **cursor-width**: The width of the cursor.
|
||||
|
||||
- **cursor-color**: The color used to draw the cursor.
|
||||
- **cursor-color**: The color used to draw the cursor.
|
||||
|
||||
- **cursor-outline**: Enable a border (outline) around the cursor.
|
||||
- **cursor-outline**: Enable a border (outline) around the cursor.
|
||||
(Boolean)
|
||||
|
||||
- **cursor-outline-width**: The width of the border around the cursor.
|
||||
- **cursor-outline-width**: The width of the border around the cursor.
|
||||
(Double)
|
||||
|
||||
- **cursor-outline-color**: The color to use for the cursor outline.
|
||||
- **cursor-outline-color**: The color to use for the cursor outline.
|
||||
(Color)
|
||||
|
||||
- **text-outline**: Enable a border (outline) around the text. (Boolean)
|
||||
- **text-outline**: Enable a border (outline) around the text. (Boolean)
|
||||
|
||||
- **text-outline-width**: The width of the border around the text. (Double)
|
||||
- **text-outline-width**: The width of the border around the text. (Double)
|
||||
|
||||
- **text-outline-color**: The color to use for the text outline. (Color)
|
||||
- **text-outline-color**: The color to use for the text outline. (Color)
|
||||
|
||||
### listview
|
||||
- **columns**: integer Number of columns to show (at least 1)
|
||||
|
||||
- **fixed-height**: boolean Always show `lines` rows, even if fewer
|
||||
- **columns**: integer Number of columns to show (at least 1)
|
||||
|
||||
- **fixed-height**: boolean Always show `lines` rows, even if fewer
|
||||
elements are available.
|
||||
|
||||
- **dynamic**: boolean `True` if the size should change when filtering
|
||||
- **dynamic**: boolean `True` if the size should change when filtering
|
||||
the list, `False` if it should keep the original height.
|
||||
|
||||
- **scrollbar**: boolean If the scrollbar should be enabled/disabled.
|
||||
- **scrollbar**: boolean If the scrollbar should be enabled/disabled.
|
||||
|
||||
- **scrollbar-width**: distance Width of the scrollbar
|
||||
- **scrollbar-width**: distance Width of the scrollbar
|
||||
|
||||
- **cycle**: boolean When navigating, it should wrap around
|
||||
- **cycle**: boolean When navigating, it should wrap around
|
||||
|
||||
- **spacing**: distance Spacing between the elements (both vertical
|
||||
- **spacing**: distance Spacing between the elements (both vertical
|
||||
and horizontal)
|
||||
|
||||
- **lines**: integer Number of rows to show in the list view.
|
||||
- **lines**: integer Number of rows to show in the list view.
|
||||
|
||||
- **layout**: orientation Indicate how elements are stacked.
|
||||
- **layout**: orientation Indicate how elements are stacked.
|
||||
Horizontal implements the dmenu style.
|
||||
|
||||
- **reverse**: boolean Reverse the ordering (top down to bottom up).
|
||||
- **reverse**: boolean Reverse the ordering (top down to bottom up).
|
||||
|
||||
- **flow**: orientation The order the elements are layed out.
|
||||
- **flow**: orientation The order the elements are layed out.
|
||||
Vertical is the original 'column' view.
|
||||
|
||||
- **fixed-columns**: boolean Do not reduce the number of columns shown when
|
||||
- **fixed-columns**: boolean Do not reduce the number of columns shown when
|
||||
number of visible elements is not enough to fill them all.
|
||||
|
||||
- **require-input**: boolean Listview requires user input to be unhidden.
|
||||
- **require-input**: boolean Listview requires user input to be unhidden.
|
||||
The list is still present and hitting accept will activate the first entry.
|
||||
|
||||
## Listview widget
|
||||
|
@ -1117,9 +1123,9 @@ The following properties are currently supported:
|
|||
The listview widget is special container widget.
|
||||
It has the following fixed children widgets:
|
||||
|
||||
- 0 or more `element` widgets of the type box.
|
||||
- 0 or more `element` widgets of the type box.
|
||||
|
||||
- An optional `scrollbar` widget. This can be enabled using the scrollbar
|
||||
- An optional `scrollbar` widget. This can be enabled using the scrollbar
|
||||
property.
|
||||
|
||||
These cannot be changed using the `children` property.
|
||||
|
@ -1215,6 +1221,7 @@ The current layout of **rofi** is structured as follows:
|
|||
|
||||
|
||||
```
|
||||
>
|
||||
> - ci is the case-indicator
|
||||
> - fr is the num-filtered-rows
|
||||
> - ns is the num-rows
|
||||
|
@ -1390,15 +1397,15 @@ Just like CSS, **rofi** uses the box model for each widget.
|
|||
|
||||
Explanation of the different parts:
|
||||
|
||||
- Content - The content of the widget.
|
||||
- Content - The content of the widget.
|
||||
|
||||
- Padding - Clears an area around the widget. The padding shows the
|
||||
- Padding - Clears an area around the widget. The padding shows the
|
||||
background color of the widget.
|
||||
|
||||
- Border - A border that goes around the padding and content. The border use
|
||||
- Border - A border that goes around the padding and content. The border use
|
||||
the border-color of the widget.
|
||||
|
||||
- Margin - Clears an area outside the border. The margin is transparent.
|
||||
- Margin - Clears an area outside the border. The margin is transparent.
|
||||
|
||||
The box model allows us to add a border around elements, and to define space
|
||||
between elements.
|
||||
|
@ -1594,7 +1601,7 @@ A typical example:
|
|||
|
||||
"Cantarell Italic Light 15 \`wght`=200"
|
||||
|
||||
## Icon Handling
|
||||
## Icon Handling
|
||||
|
||||
Rofi supports 3 ways of specifying an icon:
|
||||
|
||||
|
@ -1618,6 +1625,7 @@ Getting supported icon formats:
|
|||
```bash
|
||||
G_MESSAGES_DEBUG=Helpers.IconFetcher rofi
|
||||
```
|
||||
|
||||
This uses the debug framework and prints out a list of supported image file
|
||||
extensions.
|
||||
|
||||
|
@ -1647,7 +1655,16 @@ If a filename is provided, it will try to resolve it in the following order:
|
|||
- `${XDG_DATA_HOME}/rofi/themes/`
|
||||
- `${INSTALL PREFIX}/share/rofi/themes/`
|
||||
|
||||
A name is resolved (if it has no valid extension) as a filename by appending the `.rasi` extension.
|
||||
A name is resolved (if it has no valid extension) as a filename by appending the `.rasi` and the `.rasinc` extension.
|
||||
It will first look for files with `.rasi`, then for files with `.rasinc`.
|
||||
|
||||
If you want to do an optional import, e.g. no error when the file does not exists, you can do:
|
||||
|
||||
```css
|
||||
?import "myfile"
|
||||
```
|
||||
|
||||
This still throws an error on syntax error, but won't abort parsing if file does not exists.
|
||||
|
||||
## Examples
|
||||
|
||||
|
|
|
@ -66,15 +66,15 @@ Markup support can be enabled, see CONFIGURATION options.
|
|||
There are currently three methods of setting configuration options (evaluated
|
||||
in order below):
|
||||
|
||||
- System configuration file (for example `/etc/rofi.rasi`). It first checks
|
||||
- System configuration file (for example `/etc/rofi.rasi`). It first checks
|
||||
`XDG_CONFIG_DIRS`, and then `SYSCONFDIR` (that is passed at compile time).
|
||||
It loads the first config file it finds, it does not merge multiple system
|
||||
configuration files.
|
||||
|
||||
- Rasi theme file: The new *theme* format can be used to set configuration
|
||||
- Rasi theme file: The new *theme* format can be used to set configuration
|
||||
values.
|
||||
|
||||
- Command-line options: Arguments passed to **rofi**.
|
||||
- Command-line options: Arguments passed to **rofi**.
|
||||
|
||||
To get a template config file, run: `rofi -dump-config > config.rasi`
|
||||
|
||||
|
@ -102,7 +102,7 @@ For example to set the dpi value to 72:
|
|||
|
||||
```css
|
||||
configuration {
|
||||
dpi: 72;
|
||||
dpi: 72;
|
||||
}
|
||||
```
|
||||
|
||||
|
@ -329,6 +329,7 @@ configuration {
|
|||
}
|
||||
}
|
||||
```
|
||||
|
||||
Example
|
||||
|
||||
```css
|
||||
|
@ -416,10 +417,10 @@ The different fields are:
|
|||
|
||||
Default: *all*
|
||||
|
||||
`-matching-negate-char` *char*
|
||||
`-matching-negate-char` *string*
|
||||
|
||||
Set the character used to negate the query (i.e. if it does **not** match the
|
||||
next keyword). Set to '\x0' to disable.
|
||||
next keyword). Set to '\x0' to disable. It takes the first ASCII character from the string.
|
||||
|
||||
Default: '-'
|
||||
|
||||
|
@ -466,7 +467,7 @@ Default: *0*
|
|||
|
||||
`-fixed-num-lines`
|
||||
|
||||
Keep a fixed number of visible lines.
|
||||
Keep a fixed number of visible lines.
|
||||
|
||||
`-sidebar-mode`
|
||||
|
||||
|
@ -502,17 +503,17 @@ Select monitor to display **rofi** on. It accepts as input: *primary* (if
|
|||
primary output is set), the *xrandr* output name, or integer number (in order
|
||||
of detection). Negative numbers are handled differently:
|
||||
|
||||
- **-1**: the currently focused monitor.
|
||||
- **-1**: the currently focused monitor.
|
||||
|
||||
- **-2**: the currently focused window (that is, **rofi** will be displayed
|
||||
- **-2**: the currently focused window (that is, **rofi** will be displayed
|
||||
on top of the focused window).
|
||||
|
||||
- **-3**: Position of mouse (overrides the location setting to get normal
|
||||
- **-3**: Position of mouse (overrides the location setting to get normal
|
||||
context menu behavior.)
|
||||
|
||||
- **-4**: the monitor with the focused window.
|
||||
- **-4**: the monitor with the focused window.
|
||||
|
||||
- **-5**: the monitor that shows the mouse pointer.
|
||||
- **-5**: the monitor that shows the mouse pointer.
|
||||
|
||||
Default: *-5*
|
||||
|
||||
|
@ -539,10 +540,10 @@ This is now the method to tweak the theme via the command line.
|
|||
|
||||
Override the default DPI setting.
|
||||
|
||||
- If set to `0`, it tries to auto-detect based on X11 screen size (similar to
|
||||
- If set to `0`, it tries to auto-detect based on X11 screen size (similar to
|
||||
i3 and GTK).
|
||||
|
||||
- If set to `1`, it tries to auto-detect based on the size of the monitor
|
||||
- If set to `1`, it tries to auto-detect based on the size of the monitor
|
||||
that **rofi** is displayed on (similar to latest Qt 5).
|
||||
|
||||
`-selected-row` *selected row*
|
||||
|
@ -669,6 +670,7 @@ configuration {
|
|||
}
|
||||
}
|
||||
```
|
||||
|
||||
You can hide the currently active window with the 'hide-active-window' setting:
|
||||
|
||||
```css
|
||||
|
@ -696,7 +698,7 @@ or pass `-window-prefer-icon-theme true` on command line.
|
|||
|
||||
### Combi settings
|
||||
|
||||
`-combi-modes ` *mode1*,*mode2*
|
||||
`-combi-modes` *mode1*,*mode2*
|
||||
|
||||
The modes to combine in combi mode.
|
||||
For syntax to `-combi-modes`, see `-modes`.
|
||||
|
@ -950,13 +952,13 @@ If there is no match, it will try to launch the input.
|
|||
Shows a list of executables in `$PATH` and can launch them (optional in a
|
||||
terminal).
|
||||
|
||||
- Pressing the `delete-entry` binding (`shift-delete`) will remove this entry
|
||||
- Pressing the `delete-entry` binding (`shift-delete`) will remove this entry
|
||||
from the run history.
|
||||
|
||||
- Pressing the `accept-custom` binding (`control-enter`) will run the command
|
||||
- Pressing the `accept-custom` binding (`control-enter`) will run the command
|
||||
as entered in the entry box.
|
||||
|
||||
- Pressing the `accept-alt` binding (`shift-enter`) will run the command in a
|
||||
- Pressing the `accept-alt` binding (`shift-enter`) will run the command in a
|
||||
terminal.
|
||||
|
||||
When pressing the `mode-complete` binding (`Control-l`), you can use the File
|
||||
|
@ -968,13 +970,13 @@ Same as the **run** launches, but the list is created from the installed
|
|||
desktop files. It automatically launches them in a terminal if specified in the
|
||||
Desktop File.
|
||||
|
||||
- Pressing the `delete-entry` binding (`shift-delete`) will remove this entry
|
||||
- Pressing the `delete-entry` binding (`shift-delete`) will remove this entry
|
||||
from the run history.
|
||||
|
||||
- Pressing the `accept-custom` binding (`control-enter`) will run the command
|
||||
- Pressing the `accept-custom` binding (`control-enter`) will run the command
|
||||
as entered in the entry box.
|
||||
|
||||
- Pressing the `accept-alt` binding (`shift-enter`) will run the command in a
|
||||
- Pressing the `accept-alt` binding (`shift-enter`) will run the command in a
|
||||
terminal.
|
||||
|
||||
When pressing the `mode-complete` binding (`Control-l`), you can use the File
|
||||
|
@ -999,9 +1001,12 @@ configuration {
|
|||
parse-user: true;
|
||||
/** Parse system desktop files. */
|
||||
parse-system: false;
|
||||
/** Disable DBusActivatable */
|
||||
DBusActivatable: false;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
### ssh
|
||||
|
||||
Shows a list of SSH targets based on your `ssh` config file, and allows to
|
||||
|
@ -1044,7 +1049,7 @@ instead of `"` ("machine quotes").
|
|||
|
||||
The indicator shows:
|
||||
|
||||
- ` ` Case insensitive and no sorting.
|
||||
- `` Case insensitive and no sorting.
|
||||
- `-` Case sensitivity enabled, no sorting.
|
||||
- `+` Case insensitive and Sorting enabled
|
||||
- `±` Sorting and Case sensitivity enabled"
|
||||
|
@ -1053,13 +1058,13 @@ The indicator shows:
|
|||
|
||||
Each of these modes uses different methods of resolving the icon:
|
||||
|
||||
- Window: It first uses the icon that the application exposes via the X11
|
||||
- Window: It first uses the icon that the application exposes via the X11
|
||||
Server, if none is set it does a lookup of the window Class name in the icon
|
||||
theme.
|
||||
|
||||
- drun: It uses the icon set in the desktop file.
|
||||
- drun: It uses the icon set in the desktop file.
|
||||
|
||||
- run: It does a lookup using the executable name.
|
||||
- run: It does a lookup using the executable name.
|
||||
|
||||
## EXAMPLES
|
||||
|
||||
|
@ -1157,7 +1162,7 @@ after the keys have been released.
|
|||
|
||||
## DEBUGGING
|
||||
|
||||
For more information see **rofi-debugging(5)** manpage.
|
||||
For more information see **rofi-debugging(5)** manpage.
|
||||
|
||||
## ISSUE TRACKER
|
||||
|
||||
|
|
|
@ -14,8 +14,6 @@ typedef enum {
|
|||
P_DOUBLE,
|
||||
/** String */
|
||||
P_STRING,
|
||||
/** Character */
|
||||
P_CHAR,
|
||||
/** Boolean */
|
||||
P_BOOLEAN,
|
||||
/** Color */
|
||||
|
@ -260,8 +258,6 @@ typedef union _PropertyValue {
|
|||
double f;
|
||||
/** String */
|
||||
char *s;
|
||||
/** Character */
|
||||
char c;
|
||||
/** boolean */
|
||||
gboolean b;
|
||||
/** Color */
|
||||
|
|
|
@ -51,6 +51,8 @@
|
|||
int last_state = 0;
|
||||
extern int rofi_is_in_dmenu_mode;
|
||||
|
||||
gboolean import_optional = FALSE;
|
||||
|
||||
const char *rasi_theme_file_extensions[] = {".rasi", ".rasinc", NULL};
|
||||
/**
|
||||
* Type of Object to parse.
|
||||
|
@ -186,7 +188,6 @@ WORD_ENV [[:alpha:]_][[:alnum:]_]*
|
|||
COLOR_NAME [[:alpha:]]+
|
||||
STRING \"{UANYN}*\"|\'{UANYN}*\'
|
||||
STRING_LIST \"{UANYNP1}*\"|\'{UANYNP2}*\'
|
||||
CHAR \'({ASCN}|\\\\|\\\'|\\0)\'
|
||||
HEX [[:xdigit:]]
|
||||
NUMBER [[:digit:]]+
|
||||
UNARYMIN -
|
||||
|
@ -290,6 +291,7 @@ C_COMMENT_OPEN "/*"
|
|||
|
||||
|
||||
INCLUDE "@import"
|
||||
OPT_INCLUDE "?import"
|
||||
THEME "@theme"
|
||||
DEFAULT (?i:\"default\"?)
|
||||
|
||||
|
@ -379,6 +381,12 @@ if ( queue == NULL ) {
|
|||
*/
|
||||
<INITIAL>{INCLUDE} {
|
||||
g_queue_push_head ( queue, GINT_TO_POINTER (YY_START) );
|
||||
import_optional = FALSE;
|
||||
BEGIN(INCLUDE);
|
||||
}
|
||||
<INITIAL>{OPT_INCLUDE} {
|
||||
g_queue_push_head ( queue, GINT_TO_POINTER (YY_START) );
|
||||
import_optional = TRUE;
|
||||
BEGIN(INCLUDE);
|
||||
}
|
||||
<INITIAL>{THEME} {
|
||||
|
@ -438,10 +446,15 @@ if ( queue == NULL ) {
|
|||
yylloc->first_column = yylloc->last_column = 1;
|
||||
yylloc->filename = current->filename;
|
||||
} else {
|
||||
char *str = g_markup_printf_escaped ( "Failed to open theme: <i>%s</i>\nError: <b>%s</b>",
|
||||
filename, strerror ( errno ) );
|
||||
rofi_add_warning_message ( g_string_new ( str ) );
|
||||
g_free ( str );
|
||||
if ( !import_optional ) {
|
||||
char *str = g_markup_printf_escaped ( "Failed to open theme: <i>%s</i>\nError: <b>%s</b>",
|
||||
filename, strerror ( errno ) );
|
||||
rofi_add_warning_message ( g_string_new ( str ) );
|
||||
g_free ( str );
|
||||
} else {
|
||||
g_warning("Trying to parse optional theme: '%s', Error: %s",
|
||||
filename, strerror(errno));
|
||||
}
|
||||
g_free(filename);
|
||||
}
|
||||
// Pop out of include. */
|
||||
|
@ -522,7 +535,6 @@ if ( queue == NULL ) {
|
|||
<PROPERTIES,PROPERTIES_ARRAY,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT,MEDIA_CONTENT>{UNARYMIN} { return T_MIN; }
|
||||
<PROPERTIES,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{STRING} { yytext[yyleng-1] = '\0'; yylval->sval = g_strcompress(&yytext[1]); return T_STRING;}
|
||||
<PROPERTIES_ARRAY>{STRING_LIST} { yytext[yyleng-1] = '\0'; yylval->sval = g_strcompress(&yytext[1]); return T_STRING;}
|
||||
<PROPERTIES,PROPERTIES_ARRAY,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>{CHAR} { yytext[yyleng-1] = '\0'; yylval->cval = g_strcompress(&yytext[1])[0]; return T_CHAR;}
|
||||
|
||||
<PROPERTIES,PROPERTIES_ARRAY,PROPERTIES_ENV,PROPERTIES_VAR_DEFAULT>@{WORD} {
|
||||
yylval->sval = g_strdup(yytext+1);
|
||||
|
@ -846,7 +858,7 @@ if ( queue == NULL ) {
|
|||
/**
|
||||
* Media defaults.
|
||||
*/
|
||||
<MEDIA,MEDIA_CONTENT,MEDIA_ENV_VAR,MEDIA_ENV_VAR_DEFAULT,MEDIA_ENV_VAR_CONTENT>{WHITESPACE}+ ; // ignore all whitespace
|
||||
<MEDIA,MEDIA_CONTENT,MEDIA_ENV_VAR,MEDIA_ENV_VAR_DEFAULT,MEDIA_ENV_VAR_CONTENT>{WHITESPACE}+ ; // ignore all whitespace
|
||||
|
||||
<MEDIA,MEDIA_CONTENT,MEDIA_ENV_VAR,MEDIA_ENV_VAR_DEFAULT,MEDIA_ENV_VAR_CONTENT>. {
|
||||
yytext[yyleng-1] = '\0';
|
||||
|
|
|
@ -164,7 +164,6 @@ static ThemeColor hwb_to_rgb ( double h, double w, double b )
|
|||
%token <fval> T_DOUBLE "Floating-point number"
|
||||
%token <sval> T_STRING "UTF-8 encode string"
|
||||
%token <sval> T_MEDIA_TYPE "Media type"
|
||||
%token <cval> T_CHAR "Character"
|
||||
%token <sval> T_PROP_NAME "property name"
|
||||
%token <colorval> T_COLOR_NAME "Color value by name"
|
||||
%token <sval> T_NAME_ELEMENT "Element name"
|
||||
|
@ -567,10 +566,6 @@ t_property_element
|
|||
$$ = rofi_theme_property_create ( P_STRING );
|
||||
$$->value.s = $1;
|
||||
}
|
||||
| T_CHAR {
|
||||
$$ = rofi_theme_property_create ( P_CHAR );
|
||||
$$->value.c = $1;
|
||||
}
|
||||
| T_LINK {
|
||||
$$ = rofi_theme_property_create ( P_LINK );
|
||||
$$->value.link.name = $1;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
project('rofi', 'c',
|
||||
version: '1.7.6-dev',
|
||||
version: '1.7.8-dev',
|
||||
meson_version: '>=0.59.0',
|
||||
license: [ 'MIT' ],
|
||||
default_options: [
|
||||
|
|
177
mkdocs/docs/1.7.7/rofi-debugging.5.markdown
Normal file
177
mkdocs/docs/1.7.7/rofi-debugging.5.markdown
Normal file
|
@ -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 <qball@blame.services>
|
245
mkdocs/docs/1.7.7/rofi-dmenu.5.markdown
Normal file
245
mkdocs/docs/1.7.7/rofi-dmenu.5.markdown
Normal file
|
@ -0,0 +1,245 @@
|
|||
# rofi-dmenu(5)
|
||||
|
||||
## NAME
|
||||
|
||||
**rofi dmenu mode** - Rofi dmenu emulation
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
To integrate **rofi** into scripts as simple selection dialogs,
|
||||
**rofi** supports emulating **dmenu(1)** (A dynamic menu for X11).
|
||||
|
||||
The website for `dmenu` can be found [here](http://tools.suckless.org/dmenu/).
|
||||
|
||||
**rofi** does not aim to be 100% compatible with `dmenu`. There are simply too
|
||||
many flavors of `dmenu`. The idea is that the basic usage command-line flags
|
||||
are obeyed, theme-related flags are not. Besides, **rofi** offers some extended
|
||||
features (like multi-select, highlighting, message bar, extra key bindings).
|
||||
|
||||
## BASIC CONCEPT
|
||||
|
||||
In `dmenu` mode, **rofi** reads data from standard in, splits them into
|
||||
separate entries and displays them. If the user selects a row, this is printed
|
||||
out to standard out, allowing the script to process it further.
|
||||
|
||||
By default separation of rows is done on new lines, making it easy to pipe the
|
||||
output a one application into **rofi** and the output of rofi into the next.
|
||||
|
||||
## USAGE
|
||||
|
||||
By launching **rofi** with the `-dmenu` flag it will go into dmenu emulation
|
||||
mode.
|
||||
|
||||
```bash
|
||||
ls | rofi -dmenu
|
||||
```
|
||||
|
||||
### DMENU DROP-IN REPLACEMENT
|
||||
|
||||
If `argv[0]` (calling command) is dmenu, **rofi** will start in dmenu mode.
|
||||
This way, it can be used as a drop-in replacement for dmenu. Just copy or
|
||||
symlink **rofi** to dmenu in `$PATH`.
|
||||
|
||||
```bash
|
||||
ln -s /usr/bin/rofi /usr/bin/dmenu
|
||||
```
|
||||
|
||||
### DMENU VS SCRIPT MODE
|
||||
|
||||
Script mode is used to extend **rofi**, dmenu mode is used to extend a script.
|
||||
The two do share much of the same input format. Please see the
|
||||
**rofi-script(5)** manpage for more information.
|
||||
|
||||
### DMENU SPECIFIC COMMANDLINE FLAGS
|
||||
|
||||
A lot of these options can also be modified by the script using special input.
|
||||
See the **rofi-script(5)** manpage for more information about this syntax.
|
||||
|
||||
`-sep` *separator*
|
||||
|
||||
Separator for `dmenu`. Example: To show a list of 'a' to 'e' with '|' as a
|
||||
separator:
|
||||
|
||||
```bash
|
||||
echo "a|b|c|d|e" | rofi -sep '|' -dmenu
|
||||
```
|
||||
|
||||
`-p` *prompt*
|
||||
|
||||
Specify the prompt to show in `dmenu` mode. For example, select 'monkey',
|
||||
a,b,c,d, or e.
|
||||
|
||||
```bash
|
||||
echo "a|b|c|d|e" | rofi -sep '|' -dmenu -p "monkey"
|
||||
```
|
||||
|
||||
Default: *dmenu*
|
||||
|
||||
`-l` *number of lines to show*
|
||||
|
||||
Maximum number of lines the menu may show before scrolling.
|
||||
|
||||
```bash
|
||||
rofi -dmenu -l 25
|
||||
```
|
||||
|
||||
Default: *15*
|
||||
|
||||
`-i`
|
||||
|
||||
Makes `dmenu` searches case-insensitive
|
||||
|
||||
`-a` *X*
|
||||
|
||||
Active row, mark *X* as active. Where *X* is a comma-separated list of
|
||||
python(1)-style indices and ranges, e.g. indices start at 0, -1 refers to the
|
||||
last row with -2 preceding it, ranges are left-open and right-close, and so on.
|
||||
You can specify:
|
||||
|
||||
- A single row: '5'
|
||||
- A range of (last 3) rows: '-3:'
|
||||
- 4 rows starting from row 7: '7:11' (or in legacy notation: '7-10')
|
||||
- A set of rows: '2,0,-9'
|
||||
- Or any combination: '5,-3:,7:11,2,0,-9'
|
||||
|
||||
`-u` *X*
|
||||
|
||||
Urgent row, mark *X* as urgent. See `-a` option for details.
|
||||
|
||||
`-only-match`
|
||||
|
||||
Only return a selected item, do not allow custom entry.
|
||||
This mode always returns an entry. It will not return if no matching entry is
|
||||
selected.
|
||||
|
||||
`-no-custom`
|
||||
|
||||
Only return a selected item, do not allow custom entry.
|
||||
This mode returns directly when no entries given.
|
||||
|
||||
`-format` *format*
|
||||
|
||||
Allows the output of dmenu to be customized (N is the total number of input
|
||||
entries):
|
||||
|
||||
- 's' selected string
|
||||
- 'i' index (0 - (N-1))
|
||||
- 'd' index (1 - N)
|
||||
- 'q' quote string
|
||||
- 'p' Selected string stripped from Pango markup (Needs to be a valid string)
|
||||
- 'f' filter string (user input)
|
||||
- 'F' quoted filter string (user input)
|
||||
|
||||
Default: 's'
|
||||
|
||||
`-select` *string*
|
||||
|
||||
Select first line that matches the given string
|
||||
|
||||
`-mesg` *string*
|
||||
|
||||
Add a message line below the filter entry box. Supports Pango markup. For more
|
||||
information on supported markup, see
|
||||
[here](https://docs.gtk.org/Pango/pango_markup.html)
|
||||
|
||||
`-dump`
|
||||
|
||||
Dump the filtered list to stdout and quit.
|
||||
This can be used to get the list as **rofi** would filter it.
|
||||
Use together with `-filter` command.
|
||||
|
||||
`-input` *file*
|
||||
|
||||
Reads from *file* instead of stdin.
|
||||
|
||||
`-password`
|
||||
|
||||
Hide the input text. This should not be considered secure!
|
||||
|
||||
`-markup-rows`
|
||||
|
||||
Tell **rofi** that DMenu input is Pango markup encoded, and should be rendered.
|
||||
See [here](https://developer.gnome.org/pygtk/stable/pango-markup-language.html)
|
||||
for details about Pango markup.
|
||||
|
||||
`-multi-select`
|
||||
|
||||
Allow multiple lines to be selected. Adds a small selection indicator to the
|
||||
left of each entry.
|
||||
|
||||
`-sync`
|
||||
|
||||
Force **rofi** mode to first read all data from stdin before showing the
|
||||
selection window. This is original dmenu behavior.
|
||||
|
||||
Note: the default asynchronous mode will also be automatically disabled if used
|
||||
with conflicting options,
|
||||
such as `-dump`, `-only-match` or `-auto-select`.
|
||||
|
||||
`-window-title` *title*
|
||||
|
||||
Set name used for the window title. Will be shown as Rofi - *title*
|
||||
|
||||
`-w` *windowid*
|
||||
|
||||
Position **rofi** over the window with the given X11 window ID.
|
||||
|
||||
`-keep-right`
|
||||
|
||||
Set ellipsize mode to start. So, the end of the string is visible.
|
||||
|
||||
`-display-columns`
|
||||
|
||||
A comma seperated list of columns to show.
|
||||
|
||||
`-display-column-separator`
|
||||
|
||||
The column separator. This is a regex.
|
||||
|
||||
*default*: '\t'
|
||||
|
||||
`-ballot-selected-str` *string*
|
||||
|
||||
When multi-select is enabled, prefix this string when element is selected.
|
||||
|
||||
*default*: "☑ "
|
||||
|
||||
`-ballot-unselected-str` *string*
|
||||
|
||||
When multi-select is enabled, prefix this string when element is not selected.
|
||||
|
||||
*default*: "☐ "
|
||||
|
||||
`-ellipsize-mode` (start|middle|end)
|
||||
|
||||
Set ellipsize mode on the listview.
|
||||
|
||||
*default* "end"
|
||||
|
||||
## PARSING ROW OPTIONS
|
||||
|
||||
Extra options for individual rows can be also set. See the **rofi-script(5)**
|
||||
manpage for details; the syntax and supported features are identical.
|
||||
|
||||
## RETURN VALUE
|
||||
|
||||
- **0**: Row has been selected accepted by user.
|
||||
- **1**: User cancelled the selection.
|
||||
- **10-28**: Row accepted by custom keybinding.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
rofi(1), rofi-sensible-terminal(1), dmenu(1), rofi-theme(5), rofi-script(5),
|
||||
rofi-theme-selector(1), ascii(7)
|
||||
|
||||
## AUTHOR
|
||||
|
||||
Qball Cow <qball@gmpclient.org>
|
||||
|
||||
Rasmus Steinke <rasi@xssn.at>
|
||||
|
||||
Morgane Glidic <sardemff7+rofi@sardemff7.net>
|
||||
|
||||
Original code based on work by: Sean Pringle <sean.pringle@gmail.com>
|
||||
|
||||
For a full list of authors, check the AUTHORS file.
|
576
mkdocs/docs/1.7.7/rofi-keys.5.markdown
Normal file
576
mkdocs/docs/1.7.7/rofi-keys.5.markdown
Normal file
|
@ -0,0 +1,576 @@
|
|||
# rofi-keys(5)
|
||||
|
||||
## NAME
|
||||
|
||||
**rofi keys** - Rofi Key and Mouse bindings
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
**rofi** supports overriding of any of it key and mouse binding.
|
||||
|
||||
## Setting binding
|
||||
|
||||
Bindings can be done on the commandline (-{bindingname}):
|
||||
|
||||
```bash
|
||||
rofi -show run -kb-accept-entry 'Control+Shift+space'
|
||||
```
|
||||
|
||||
or via the configuration file:
|
||||
|
||||
```css
|
||||
configuration {
|
||||
kb-accept-entry: "Control+Shift+space";
|
||||
}
|
||||
```
|
||||
|
||||
The key can be set by its name (see above) or its keycode:
|
||||
|
||||
```css
|
||||
configuration {
|
||||
kb-accept-entry: "Control+Shift+[65]";
|
||||
}
|
||||
```
|
||||
|
||||
An easy way to look up keycode is xev(1).
|
||||
|
||||
Multiple keys can be specified for an action as a comma separated list:
|
||||
|
||||
```css
|
||||
configuration {
|
||||
kb-accept-entry: "Control+Shift+space,Return";
|
||||
}
|
||||
```
|
||||
|
||||
By Default **rofi** reacts on pressing, to act on the release of all keys
|
||||
prepend the binding with `!`:
|
||||
|
||||
```css
|
||||
configuration {
|
||||
kb-accept-entry: "!Control+Shift+space,Return";
|
||||
}
|
||||
```
|
||||
|
||||
## Unsetting a binding
|
||||
|
||||
To unset a binding, pass an empty string.
|
||||
|
||||
```css
|
||||
configuration {
|
||||
kb-clear-line: "";
|
||||
}
|
||||
```
|
||||
|
||||
## Keyboard Bindings
|
||||
|
||||
`kb-primary-paste`
|
||||
|
||||
Paste primary selection
|
||||
|
||||
Default: Control+V,Shift+Insert
|
||||
|
||||
`kb-secondary-paste`
|
||||
|
||||
Paste clipboard
|
||||
|
||||
Default: Control+v,Insert
|
||||
|
||||
`kb-secondary-copy`
|
||||
|
||||
Copy current selection to clipboard
|
||||
|
||||
Default: Control+c
|
||||
|
||||
`kb-clear-line`
|
||||
|
||||
Clear input line
|
||||
|
||||
Default: Control+w
|
||||
|
||||
`kb-move-front`
|
||||
|
||||
Beginning of line
|
||||
|
||||
Default: Control+a
|
||||
|
||||
`kb-move-end`
|
||||
|
||||
End of line
|
||||
|
||||
Default: Control+e
|
||||
|
||||
`kb-move-word-back`
|
||||
|
||||
Move back one word
|
||||
|
||||
Default: Alt+b,Control+Left
|
||||
|
||||
`kb-move-word-forward`
|
||||
|
||||
Move forward one word
|
||||
|
||||
Default: Alt+f,Control+Right
|
||||
|
||||
`kb-move-char-back`
|
||||
|
||||
Move back one char
|
||||
|
||||
Default: Left,Control+b
|
||||
|
||||
`kb-move-char-forward`
|
||||
|
||||
Move forward one char
|
||||
|
||||
Default: Right,Control+f
|
||||
|
||||
`kb-remove-word-back`
|
||||
|
||||
Delete previous word
|
||||
|
||||
Default: Control+Alt+h,Control+BackSpace
|
||||
|
||||
`kb-remove-word-forward`
|
||||
|
||||
Delete next word
|
||||
|
||||
Default: Control+Alt+d
|
||||
|
||||
`kb-remove-char-forward`
|
||||
|
||||
Delete next char
|
||||
|
||||
Default: Delete,Control+d
|
||||
|
||||
`kb-remove-char-back`
|
||||
|
||||
Delete previous char
|
||||
|
||||
Default: BackSpace,Shift+BackSpace,Control+h
|
||||
|
||||
`kb-remove-to-eol`
|
||||
|
||||
Delete till the end of line
|
||||
|
||||
Default: Control+k
|
||||
|
||||
`kb-remove-to-sol`
|
||||
|
||||
Delete till the start of line
|
||||
|
||||
Default: Control+u
|
||||
|
||||
`kb-accept-entry`
|
||||
|
||||
Accept entry
|
||||
|
||||
Default: Control+j,Control+m,Return,KP\_Enter
|
||||
|
||||
`kb-accept-custom`
|
||||
|
||||
Use entered text as command (in ssh/run modes)
|
||||
|
||||
Default: Control+Return
|
||||
|
||||
`kb-accept-custom-alt`
|
||||
|
||||
Use entered text as command (in ssh/run modes)
|
||||
|
||||
Default: Control+Shift+Return
|
||||
|
||||
`kb-accept-alt`
|
||||
|
||||
Use alternate accept command.
|
||||
|
||||
Default: Shift+Return
|
||||
|
||||
`kb-delete-entry`
|
||||
|
||||
Delete entry from history
|
||||
|
||||
Default: Shift+Delete
|
||||
|
||||
`kb-mode-next`
|
||||
|
||||
Switch to the next mode.
|
||||
|
||||
Default: Shift+Right,Control+Tab
|
||||
|
||||
`kb-mode-previous`
|
||||
|
||||
Switch to the previous mode.
|
||||
|
||||
Default: Shift+Left,Control+ISO\_Left\_Tab
|
||||
|
||||
`kb-mode-complete`
|
||||
|
||||
Start completion for mode.
|
||||
|
||||
Default: Control+l
|
||||
|
||||
`kb-row-left`
|
||||
|
||||
Go to the previous column
|
||||
|
||||
Default: Control+Page\_Up
|
||||
|
||||
`kb-row-right`
|
||||
|
||||
Go to the next column
|
||||
|
||||
Default: Control+Page\_Down
|
||||
|
||||
`kb-row-up`
|
||||
|
||||
Select previous entry
|
||||
|
||||
Default: Up,Control+p
|
||||
|
||||
`kb-row-down`
|
||||
|
||||
Select next entry
|
||||
|
||||
Default: Down,Control+n
|
||||
|
||||
`kb-row-tab`
|
||||
|
||||
Go to next row, if one left, accept it, if no left next mode.
|
||||
|
||||
Default:
|
||||
|
||||
`kb-element-next`
|
||||
|
||||
Go to next row.
|
||||
|
||||
Default: Tab
|
||||
|
||||
`kb-element-prev`
|
||||
|
||||
Go to previous row.
|
||||
|
||||
Default: ISO\_Left\_Tab
|
||||
|
||||
`kb-page-prev`
|
||||
|
||||
Go to the previous page
|
||||
|
||||
Default: Page\_Up
|
||||
|
||||
`kb-page-next`
|
||||
|
||||
Go to the next page
|
||||
|
||||
Default: Page\_Down
|
||||
|
||||
`kb-row-first`
|
||||
|
||||
Go to the first entry
|
||||
|
||||
Default: Home,KP\_Home
|
||||
|
||||
`kb-row-last`
|
||||
|
||||
Go to the last entry
|
||||
|
||||
Default: End,KP\_End
|
||||
|
||||
`kb-row-select`
|
||||
|
||||
Set selected item as input text
|
||||
|
||||
Default: Control+space
|
||||
|
||||
`kb-screenshot`
|
||||
|
||||
Take a screenshot of the rofi window
|
||||
|
||||
Default: Alt+S
|
||||
|
||||
`kb-ellipsize`
|
||||
|
||||
Toggle between ellipsize modes for displayed data
|
||||
|
||||
Default: Alt+period
|
||||
|
||||
`kb-toggle-case-sensitivity`
|
||||
|
||||
Toggle case sensitivity
|
||||
|
||||
Default: grave,dead\_grave
|
||||
|
||||
`kb-toggle-sort`
|
||||
|
||||
Toggle filtered menu sort
|
||||
|
||||
Default: Alt+grave
|
||||
|
||||
`kb-cancel`
|
||||
|
||||
Quit rofi
|
||||
|
||||
Default: Escape,Control+g,Control+bracketleft
|
||||
|
||||
`kb-custom-1`
|
||||
|
||||
Custom keybinding 1
|
||||
|
||||
Default: Alt+1
|
||||
|
||||
`kb-custom-2`
|
||||
|
||||
Custom keybinding 2
|
||||
|
||||
Default: Alt+2
|
||||
|
||||
`kb-custom-3`
|
||||
|
||||
Custom keybinding 3
|
||||
|
||||
Default: Alt+3
|
||||
|
||||
`kb-custom-4`
|
||||
|
||||
Custom keybinding 4
|
||||
|
||||
Default: Alt+4
|
||||
|
||||
`kb-custom-5`
|
||||
|
||||
Custom Keybinding 5
|
||||
|
||||
Default: Alt+5
|
||||
|
||||
`kb-custom-6`
|
||||
|
||||
Custom keybinding 6
|
||||
|
||||
Default: Alt+6
|
||||
|
||||
`kb-custom-7`
|
||||
|
||||
Custom Keybinding 7
|
||||
|
||||
Default: Alt+7
|
||||
|
||||
`kb-custom-8`
|
||||
|
||||
Custom keybinding 8
|
||||
|
||||
Default: Alt+8
|
||||
|
||||
`kb-custom-9`
|
||||
|
||||
Custom keybinding 9
|
||||
|
||||
Default: Alt+9
|
||||
|
||||
`kb-custom-10`
|
||||
|
||||
Custom keybinding 10
|
||||
|
||||
Default: Alt+0
|
||||
|
||||
`kb-custom-11`
|
||||
|
||||
Custom keybinding 11
|
||||
|
||||
Default: Alt+exclam
|
||||
|
||||
`kb-custom-12`
|
||||
|
||||
Custom keybinding 12
|
||||
|
||||
Default: Alt+at
|
||||
|
||||
`kb-custom-13`
|
||||
|
||||
Custom keybinding 13
|
||||
|
||||
Default: Alt+numbersign
|
||||
|
||||
`kb-custom-14`
|
||||
|
||||
Custom keybinding 14
|
||||
|
||||
Default: Alt+dollar
|
||||
|
||||
`kb-custom-15`
|
||||
|
||||
Custom keybinding 15
|
||||
|
||||
Default: Alt+percent
|
||||
|
||||
`kb-custom-16`
|
||||
|
||||
Custom keybinding 16
|
||||
|
||||
Default: Alt+dead\_circumflex
|
||||
|
||||
`kb-custom-17`
|
||||
|
||||
Custom keybinding 17
|
||||
|
||||
Default: Alt+ampersand
|
||||
|
||||
`kb-custom-18`
|
||||
|
||||
Custom keybinding 18
|
||||
|
||||
Default: Alt+asterisk
|
||||
|
||||
`kb-custom-19`
|
||||
|
||||
Custom Keybinding 19
|
||||
|
||||
Default: Alt+parenleft
|
||||
|
||||
`kb-select-1`
|
||||
|
||||
Select row 1
|
||||
|
||||
Default: Super+1
|
||||
|
||||
`kb-select-2`
|
||||
|
||||
Select row 2
|
||||
|
||||
Default: Super+2
|
||||
|
||||
`kb-select-3`
|
||||
|
||||
Select row 3
|
||||
|
||||
Default: Super+3
|
||||
|
||||
`kb-select-4`
|
||||
|
||||
Select row 4
|
||||
|
||||
Default: Super+4
|
||||
|
||||
`kb-select-5`
|
||||
|
||||
Select row 5
|
||||
|
||||
Default: Super+5
|
||||
|
||||
`kb-select-6`
|
||||
|
||||
Select row 6
|
||||
|
||||
Default: Super+6
|
||||
|
||||
`kb-select-7`
|
||||
|
||||
Select row 7
|
||||
|
||||
Default: Super+7
|
||||
|
||||
`kb-select-8`
|
||||
|
||||
Select row 8
|
||||
|
||||
Default: Super+8
|
||||
|
||||
`kb-select-9`
|
||||
|
||||
Select row 9
|
||||
|
||||
Default: Super+9
|
||||
|
||||
`kb-select-10`
|
||||
|
||||
Select row 10
|
||||
|
||||
Default: Super+0
|
||||
|
||||
`kb-entry-history-up`
|
||||
|
||||
Go up in the entry history.
|
||||
|
||||
Default: Control+Up
|
||||
|
||||
`kb-entry-history-down`
|
||||
|
||||
Go down in the entry history.
|
||||
|
||||
Default: Control+Down
|
||||
|
||||
## Mouse Bindings
|
||||
|
||||
`ml-row-left`
|
||||
|
||||
Go to the previous column
|
||||
|
||||
Default: ScrollLeft
|
||||
|
||||
`ml-row-right`
|
||||
|
||||
Go to the next column
|
||||
|
||||
Default: ScrollRight
|
||||
|
||||
`ml-row-up`
|
||||
|
||||
Select previous entry
|
||||
|
||||
Default: ScrollUp
|
||||
|
||||
`ml-row-down`
|
||||
|
||||
Select next entry
|
||||
|
||||
Default: ScrollDown
|
||||
|
||||
`me-select-entry`
|
||||
|
||||
Select hovered row
|
||||
|
||||
Default: MousePrimary
|
||||
|
||||
`me-accept-entry`
|
||||
|
||||
Accept hovered row
|
||||
|
||||
Default: MouseDPrimary
|
||||
|
||||
`me-accept-custom`
|
||||
|
||||
Accept hovered row with custom action
|
||||
|
||||
Default: Control+MouseDPrimary
|
||||
|
||||
## Mouse key bindings
|
||||
|
||||
The following mouse buttons can be bound:
|
||||
|
||||
* `Primary`: Primary (Left) mouse button click.
|
||||
* `Secondary`: Secondary (Right) mouse button click.
|
||||
* `Middle`: Middle mouse button click.
|
||||
* `Forward`: The forward mouse button.
|
||||
* `Back`: The back mouse button.
|
||||
* `ExtraN`: The N'the mouse button. (Depending on mouse support).
|
||||
|
||||
The Identifier is constructed as follow:
|
||||
|
||||
`Mouse<D><Button>`
|
||||
|
||||
* `D` indicates optional Double press.
|
||||
* `Button` is the button name.
|
||||
|
||||
So `MouseDPrimary` is Primary (`Left`) mouse button double click.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
rofi(1), rofi-sensible-terminal(1), rofi-theme(5), rofi-script(5)
|
||||
|
||||
## AUTHOR
|
||||
|
||||
Qball Cow <qball@gmpclient.org>
|
||||
|
||||
Rasmus Steinke <rasi@xssn.at>
|
||||
|
||||
Morgane Glidic <sardemff7+rofi@sardemff7.net>
|
||||
|
||||
Original code based on work by: Sean Pringle <sean.pringle@gmail.com>
|
||||
|
||||
For a full list of authors, check the AUTHORS file.
|
216
mkdocs/docs/1.7.7/rofi-script.5.markdown
Normal file
216
mkdocs/docs/1.7.7/rofi-script.5.markdown
Normal file
|
@ -0,0 +1,216 @@
|
|||
# rofi-script(5)
|
||||
|
||||
## NAME
|
||||
|
||||
**rofi script mode** - Rofi format for scriptable mode.
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
**rofi** supports modes that use simple scripts in the background to generate a
|
||||
list and process the result from user actions. This provide a simple interface
|
||||
to make simple extensions to rofi.
|
||||
|
||||
## USAGE
|
||||
|
||||
To specify a script mode, set a mode with the following syntax:
|
||||
"{name}:{executable}"
|
||||
|
||||
For example:
|
||||
|
||||
```bash
|
||||
rofi -show fb -modes "fb:file_browser.sh"
|
||||
```
|
||||
|
||||
The name should be unique.
|
||||
|
||||
## API
|
||||
|
||||
Rofi calls the executable without arguments on startup. This should generate a
|
||||
list of options, separated by a newline (`\n`) (This can be changed by the
|
||||
script). If the user selects an option, rofi calls the executable with the text
|
||||
of that option as the first argument. If the script returns no entries, rofi
|
||||
quits.
|
||||
|
||||
A simple script would be:
|
||||
|
||||
```bash
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if [ x"$@" = x"quit" ]
|
||||
then
|
||||
exit 0
|
||||
fi
|
||||
echo "reload"
|
||||
echo "quit"
|
||||
|
||||
```
|
||||
|
||||
This shows two entries, reload and quit. When the quit entry is selected, rofi
|
||||
closes.
|
||||
|
||||
## Environment
|
||||
|
||||
Rofi sets the following environment variable when executing the script:
|
||||
|
||||
### `ROFI_RETV`
|
||||
|
||||
An integer number with the current state:
|
||||
|
||||
- **0**: Initial call of script.
|
||||
- **1**: Selected an entry.
|
||||
- **2**: Selected a custom entry.
|
||||
- **10-28**: Custom keybinding 1-19 ( need to be explicitly enabled by script ).
|
||||
|
||||
### `ROFI_INFO`
|
||||
|
||||
Environment get set when selected entry get set with the property value of the
|
||||
'info' row option, if set.
|
||||
|
||||
### `ROFI_DATA`
|
||||
|
||||
Environment get set when script sets `data` option in header.
|
||||
|
||||
## Passing mode options
|
||||
|
||||
Extra options, like setting the prompt, can be set by the script. Extra options
|
||||
are lines that start with a NULL character (`\0`) followed by a key, separator
|
||||
(`\x1f`) and value.
|
||||
|
||||
For example to set the prompt:
|
||||
|
||||
```bash
|
||||
echo -en "\0prompt\x1fChange prompt\n"
|
||||
```
|
||||
|
||||
The following extra options exists:
|
||||
|
||||
- **prompt**: Update the prompt text.
|
||||
|
||||
- **message**: Update the message text.
|
||||
|
||||
- **markup-rows**: If 'true' renders markup in the row.
|
||||
|
||||
- **urgent**: Mark rows as urgent. (for syntax see the urgent option in
|
||||
dmenu mode)
|
||||
|
||||
- **active**: Mark rows as active. (for syntax see the active option in
|
||||
dmenu mode)
|
||||
|
||||
- **delim**: Set the delimiter for for next rows. Default is '\n' and
|
||||
this option should finish with this. Only call this on first call of script,
|
||||
it is remembered for consecutive calls.
|
||||
|
||||
- **no-custom**: If set to 'true'; only accept listed entries, ignore custom
|
||||
input.
|
||||
|
||||
- **use-hot-keys**: If set to true, it enabled the Custom keybindings for
|
||||
script. Warning this breaks the normal rofi flow.
|
||||
|
||||
- **keep-selection**: If set, the selection is not moved to the first entry,
|
||||
but the current position is maintained. The filter is cleared.
|
||||
|
||||
- **keep-filter**: If set, the filter is not cleared.
|
||||
|
||||
- **new-selection**: If `keep-selection` is set, this allows you to override
|
||||
the selected entry (absolute position).
|
||||
|
||||
- **data**: Passed data to the next execution of the script via
|
||||
**ROFI\_DATA**.
|
||||
|
||||
- **theme**: Small theme snippet to f.e. change the background color of
|
||||
a widget.
|
||||
|
||||
The **theme** property cannot change the interface while running, it is only
|
||||
usable for small changes in, for example background color, of widgets that get
|
||||
updated during display like the row color of the listview.
|
||||
|
||||
## Parsing row options
|
||||
|
||||
Extra options for individual rows can be set. The extra option can be specified
|
||||
following the same syntax as mode option, but following the entry.
|
||||
|
||||
For example:
|
||||
|
||||
```bash
|
||||
echo -en "aap\0icon\x1ffolder\n"
|
||||
```
|
||||
|
||||
The following options are supported:
|
||||
|
||||
- **icon**: Set the icon for that row.
|
||||
|
||||
- **display**: Replace the displayed string. (Original string will still be used for filtering)
|
||||
|
||||
- **meta**: Specify invisible search terms used for filtering.
|
||||
|
||||
- **nonselectable**: If true the row cannot activated.
|
||||
|
||||
- **permanent**: If true the row always shows, independent of filter.
|
||||
|
||||
- **info**: Info that, on selection, gets placed in the `ROFI_INFO`
|
||||
environment variable. This entry does not get searched for filtering.
|
||||
|
||||
- **urgent**: Set urgent flag on entry (true/false)
|
||||
|
||||
- **active**: Set active flag on entry (true/false)
|
||||
|
||||
multiple entries can be passed using the `\x1f` separator.
|
||||
|
||||
```bash
|
||||
echo -en "aap\0icon\x1ffolder\x1finfo\x1ftest\n"
|
||||
```
|
||||
|
||||
## Executing external program
|
||||
|
||||
If you want to launch an external program from the script, you need to make
|
||||
sure it is launched in the background. If not rofi will wait for its output (to
|
||||
display).
|
||||
|
||||
In bash the best way to do this is using `coproc`.
|
||||
|
||||
```bash
|
||||
coproc ( myApp > /dev/null 2>&1 )
|
||||
```
|
||||
|
||||
## DASH shell
|
||||
|
||||
If you use the `dash` shell for your script, take special care with how dash
|
||||
handles escaped values for the separators. See issue #1201 on github.
|
||||
|
||||
## Script locations
|
||||
|
||||
To specify a script there are the following options:
|
||||
|
||||
- Specify an absolute path to the script.
|
||||
- The script is executable and located in your $PATH
|
||||
|
||||
Scripts located in the following location are **loaded** on startup
|
||||
and can be directly launched based on the filename (without extension):
|
||||
|
||||
- The script is in `$XDG_CONFIG_HOME/rofi/scripts/`, this is usually
|
||||
`~/.config/rofi/scripts/`.
|
||||
|
||||
If you have a script 'mymode.sh' in this folder you can open it using:
|
||||
|
||||
```bash
|
||||
rofi -show mymode
|
||||
```
|
||||
|
||||
See `rofi -h` output for a list of detected scripts.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
rofi(1), rofi-sensible-terminal(1), dmenu(1), rofi-theme(5),
|
||||
rofi-theme-selector(1)
|
||||
|
||||
## AUTHOR
|
||||
|
||||
Qball Cow <qball@gmpclient.org>
|
||||
|
||||
Rasmus Steinke <rasi@xssn.at>
|
||||
|
||||
Morgane Glidic <sardemff7+rofi@sardemff7.net>
|
||||
|
||||
Original code based on work by: Sean Pringle <sean.pringle@gmail.com>
|
||||
|
||||
For a full list of authors, check the AUTHORS file.
|
50
mkdocs/docs/1.7.7/rofi-sensible-terminal.1.markdown
Normal file
50
mkdocs/docs/1.7.7/rofi-sensible-terminal.1.markdown
Normal file
|
@ -0,0 +1,50 @@
|
|||
# rofi-sensible-terminal(1)
|
||||
|
||||
## NAME
|
||||
|
||||
**rofi-sensible-terminal** - launches $TERMINAL with fallbacks
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
rofi-sensible-terminal [arguments]
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
rofi-sensible-terminal is invoked in the rofi default config to start a terminal. This
|
||||
wrapper script is necessary since there is no distribution-independent terminal launcher
|
||||
(but for example Debian has x-terminal-emulator). Distribution packagers are responsible for
|
||||
shipping this script in a way which is appropriate for the distribution.
|
||||
|
||||
It tries to start one of the following (in that order):
|
||||
|
||||
* `$TERMINAL` (this is a non-standard variable)
|
||||
* x-terminal-emulator
|
||||
* urxvt
|
||||
* rxvt
|
||||
* st
|
||||
* terminology
|
||||
* qterminal
|
||||
* Eterm
|
||||
* aterm
|
||||
* uxterm
|
||||
* xterm
|
||||
* roxterm
|
||||
* xfce4-terminal.wrapper
|
||||
* mate-terminal
|
||||
* lxterminal
|
||||
* konsole
|
||||
* alacritty
|
||||
* kitty
|
||||
* wezterm
|
||||
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
rofi(1)
|
||||
|
||||
## AUTHORS
|
||||
|
||||
Dave Davenport and contributors
|
||||
|
||||
Copied script from i3:
|
||||
Michael Stapelberg and contributors
|
40
mkdocs/docs/1.7.7/rofi-theme-selector.1.markdown
Normal file
40
mkdocs/docs/1.7.7/rofi-theme-selector.1.markdown
Normal file
|
@ -0,0 +1,40 @@
|
|||
# rofi-theme-selector(1)
|
||||
|
||||
## NAME
|
||||
|
||||
**rofi-theme-selector** - Preview and apply themes for **rofi**
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
**rofi-theme-selector** is a bash/rofi script to preview and apply themes for
|
||||
**rofi**. It's part of any installation of **rofi**.
|
||||
|
||||
## USAGE
|
||||
|
||||
### Running rofi-theme-selector
|
||||
|
||||
**rofi-theme-selector** shows a list of all available themes in a **rofi**
|
||||
window. It lets you preview each theme with the Enter key and apply the theme
|
||||
to your **rofi** configuration file with Alt+a.
|
||||
|
||||
## Theme directories
|
||||
|
||||
**rofi-theme-selector** searches the following directories for themes:
|
||||
|
||||
- ${PREFIX}/share/rofi/themes
|
||||
- $XDG_CONFIG_HOME/rofi/themes
|
||||
- $XDG_DATA_HOME/share/rofi/themes
|
||||
|
||||
${PREFIX} reflects the install location of rofi. In most cases this will be
|
||||
"/usr".<br>
|
||||
$XDG_CONFIG_HOME is normally unset. Default path is "$HOME/.config".<br>
|
||||
$XDG_DATA_HOME is normally unset. Default path is "$HOME/.local/share".
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
rofi(1)
|
||||
|
||||
## AUTHORS
|
||||
|
||||
Qball Cow qball@gmpclient.org<br>
|
||||
Rasmus Steinke rasi@xssn.at
|
1669
mkdocs/docs/1.7.7/rofi-theme.5.markdown
Normal file
1669
mkdocs/docs/1.7.7/rofi-theme.5.markdown
Normal file
File diff suppressed because it is too large
Load diff
85
mkdocs/docs/1.7.7/rofi-thumbnails.5.markdown
Normal file
85
mkdocs/docs/1.7.7/rofi-thumbnails.5.markdown
Normal file
|
@ -0,0 +1,85 @@
|
|||
# rofi-thumbnails(5)
|
||||
|
||||
## NAME
|
||||
|
||||
**rofi-thumbnails** - Rofi thumbnails system
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
**rofi** is now able to show thumbnails for all file types where an XDG compatible thumbnailer is present in the system.
|
||||
|
||||
This is done by default in filebrowser and recursivebrowser mode, if **rofi** is launched with the `-show-icons` argument.
|
||||
|
||||
In a custom user script or dmenu mode, it is possible to produce entry icons using XDG thumbnailers by adding the prefix `thumbnail://` to the filename
|
||||
specified after `\0icon\x1f`, for example:
|
||||
|
||||
```bash
|
||||
echo -en "EntryName\0icon\x1fthumbnail://path/to/file\n" | rofi -dmenu -show-icons
|
||||
```
|
||||
|
||||
### XDG thumbnailers
|
||||
|
||||
XDG thumbnailers are files with a ".thumbnailer" suffix and a structure similar to ".desktop" files for launching applications. They are placed in `/usr/share/thumbnailers/` or `$HOME/.local/share/thumbnailers/`, and contain a list of mimetypes, for which is possible to produce the thumbnail image, and a string with the command to create said image. The example below shows the content of `librsvg.thumbnailer`, a thumbnailer for svg files using librsvg:
|
||||
|
||||
```
|
||||
[Thumbnailer Entry]
|
||||
TryExec=/usr/bin/gdk-pixbuf-thumbnailer
|
||||
Exec=/usr/bin/gdk-pixbuf-thumbnailer -s %s %u %o
|
||||
MimeType=image/svg+xml;image/svg+xml-compressed;
|
||||
```
|
||||
|
||||
The images produced are named as the md5sum of the input files and placed, depending on their size, in the XDG thumbnails directories: `$HOME/.cache/thumbnails/{normal,large,x-large,xx-large}`. They are then loaded by **rofi** as entry icons and can also be used by file managers like Thunar, Caja or KDE Dolphin to show their thumbnails. Additionally, if a thumbnail for a file is found in the thumbnails directories (produced previously by **rofi** or a file manager), **rofi** will load it instead of calling the thumbnailer.
|
||||
|
||||
If a suitable thumbnailer for a given file is not found, **rofi** will try to use the corresponding mimetype icon from the icon theme.
|
||||
|
||||
### Custom command to create thumbnails
|
||||
|
||||
It is possible to use a custom command to generate thumbnails for generic entry names, for example a script that downloads an icon given its url or selects different icons depending on the input. This can be done providing the `-preview-cmd` argument followed by a string with the command to execute, with the following syntax:
|
||||
|
||||
```
|
||||
rofi ... -preview-cmd 'path/to/script_or_cmd "{input}" "{output}" "{size}"'
|
||||
```
|
||||
|
||||
**rofi** will call the script or command substituting `{input}` with the input entry icon name (the string after `\0icon\x1fthumbnail://`), `{output}` with the output filename of the thumbnail and `{size}` with the requested thumbnail size. The script or command is responsible of producing a thumbnail image (if possible respecting the requested size) and saving it in the given `{output}` filename.
|
||||
|
||||
### Issues with AppArmor
|
||||
|
||||
In Linux distributions using AppArmor (such as Ubuntu and Debian), the default rules shipped can cause issues with thumbnails generation. If that is the case, AppArmor can be disabled by issuing the following commands
|
||||
|
||||
```
|
||||
sudo systemctl stop apparmor
|
||||
sudo systemctl disable apparmor
|
||||
```
|
||||
|
||||
In alternative, the following apparmor profile con be placed in a file named /etc/apparmor.d/usr.bin.rofi
|
||||
|
||||
```
|
||||
#vim:syntax=apparmor
|
||||
# AppArmor policy for rofi
|
||||
|
||||
#include <tunables/global>
|
||||
|
||||
/usr/bin/rofi {
|
||||
#include <abstractions/base>
|
||||
|
||||
# TCP/UDP network access for NFS
|
||||
network inet stream,
|
||||
network inet6 stream,
|
||||
network inet dgram,
|
||||
network inet6 dgram,
|
||||
|
||||
/usr/bin/rofi mr,
|
||||
|
||||
@{HOME}/ r,
|
||||
@{HOME}/** rw,
|
||||
owner @{HOME}/.cache/thumbnails/** rw,
|
||||
}
|
||||
```
|
||||
|
||||
then run
|
||||
|
||||
```
|
||||
apparmor_parser -r /etc/apparmor.d/usr.bin.rofi
|
||||
```
|
||||
|
||||
to reload the rule. This assumes that **rofi** binary is in /usr/bin, that is the case of a standard package installation.
|
1186
mkdocs/docs/1.7.7/rofi.1.markdown
Normal file
1186
mkdocs/docs/1.7.7/rofi.1.markdown
Normal file
File diff suppressed because it is too large
Load diff
177
mkdocs/docs/1.7.8/rofi-debugging.5.markdown
Normal file
177
mkdocs/docs/1.7.8/rofi-debugging.5.markdown
Normal file
|
@ -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 <qball@blame.services>
|
245
mkdocs/docs/1.7.8/rofi-dmenu.5.markdown
Normal file
245
mkdocs/docs/1.7.8/rofi-dmenu.5.markdown
Normal file
|
@ -0,0 +1,245 @@
|
|||
# rofi-dmenu(5)
|
||||
|
||||
## NAME
|
||||
|
||||
**rofi dmenu mode** - Rofi dmenu emulation
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
To integrate **rofi** into scripts as simple selection dialogs,
|
||||
**rofi** supports emulating **dmenu(1)** (A dynamic menu for X11).
|
||||
|
||||
The website for `dmenu` can be found [here](http://tools.suckless.org/dmenu/).
|
||||
|
||||
**rofi** does not aim to be 100% compatible with `dmenu`. There are simply too
|
||||
many flavors of `dmenu`. The idea is that the basic usage command-line flags
|
||||
are obeyed, theme-related flags are not. Besides, **rofi** offers some extended
|
||||
features (like multi-select, highlighting, message bar, extra key bindings).
|
||||
|
||||
## BASIC CONCEPT
|
||||
|
||||
In `dmenu` mode, **rofi** reads data from standard in, splits them into
|
||||
separate entries and displays them. If the user selects a row, this is printed
|
||||
out to standard out, allowing the script to process it further.
|
||||
|
||||
By default separation of rows is done on new lines, making it easy to pipe the
|
||||
output a one application into **rofi** and the output of rofi into the next.
|
||||
|
||||
## USAGE
|
||||
|
||||
By launching **rofi** with the `-dmenu` flag it will go into dmenu emulation
|
||||
mode.
|
||||
|
||||
```bash
|
||||
ls | rofi -dmenu
|
||||
```
|
||||
|
||||
### DMENU DROP-IN REPLACEMENT
|
||||
|
||||
If `argv[0]` (calling command) is dmenu, **rofi** will start in dmenu mode.
|
||||
This way, it can be used as a drop-in replacement for dmenu. Just copy or
|
||||
symlink **rofi** to dmenu in `$PATH`.
|
||||
|
||||
```bash
|
||||
ln -s /usr/bin/rofi /usr/bin/dmenu
|
||||
```
|
||||
|
||||
### DMENU VS SCRIPT MODE
|
||||
|
||||
Script mode is used to extend **rofi**, dmenu mode is used to extend a script.
|
||||
The two do share much of the same input format. Please see the
|
||||
**rofi-script(5)** manpage for more information.
|
||||
|
||||
### DMENU SPECIFIC COMMANDLINE FLAGS
|
||||
|
||||
A lot of these options can also be modified by the script using special input.
|
||||
See the **rofi-script(5)** manpage for more information about this syntax.
|
||||
|
||||
`-sep` *separator*
|
||||
|
||||
Separator for `dmenu`. Example: To show a list of 'a' to 'e' with '|' as a
|
||||
separator:
|
||||
|
||||
```bash
|
||||
echo "a|b|c|d|e" | rofi -sep '|' -dmenu
|
||||
```
|
||||
|
||||
`-p` *prompt*
|
||||
|
||||
Specify the prompt to show in `dmenu` mode. For example, select 'monkey',
|
||||
a,b,c,d, or e.
|
||||
|
||||
```bash
|
||||
echo "a|b|c|d|e" | rofi -sep '|' -dmenu -p "monkey"
|
||||
```
|
||||
|
||||
Default: *dmenu*
|
||||
|
||||
`-l` *number of lines to show*
|
||||
|
||||
Maximum number of lines the menu may show before scrolling.
|
||||
|
||||
```bash
|
||||
rofi -dmenu -l 25
|
||||
```
|
||||
|
||||
Default: *15*
|
||||
|
||||
`-i`
|
||||
|
||||
Makes `dmenu` searches case-insensitive
|
||||
|
||||
`-a` *X*
|
||||
|
||||
Active row, mark *X* as active. Where *X* is a comma-separated list of
|
||||
python(1)-style indices and ranges, e.g. indices start at 0, -1 refers to the
|
||||
last row with -2 preceding it, ranges are left-open and right-close, and so on.
|
||||
You can specify:
|
||||
|
||||
- A single row: '5'
|
||||
- A range of (last 3) rows: '-3:'
|
||||
- 4 rows starting from row 7: '7:11' (or in legacy notation: '7-10')
|
||||
- A set of rows: '2,0,-9'
|
||||
- Or any combination: '5,-3:,7:11,2,0,-9'
|
||||
|
||||
`-u` *X*
|
||||
|
||||
Urgent row, mark *X* as urgent. See `-a` option for details.
|
||||
|
||||
`-only-match`
|
||||
|
||||
Only return a selected item, do not allow custom entry.
|
||||
This mode always returns an entry. It will not return if no matching entry is
|
||||
selected.
|
||||
|
||||
`-no-custom`
|
||||
|
||||
Only return a selected item, do not allow custom entry.
|
||||
This mode returns directly when no entries given.
|
||||
|
||||
`-format` *format*
|
||||
|
||||
Allows the output of dmenu to be customized (N is the total number of input
|
||||
entries):
|
||||
|
||||
- 's' selected string
|
||||
- 'i' index (0 - (N-1))
|
||||
- 'd' index (1 - N)
|
||||
- 'q' quote string
|
||||
- 'p' Selected string stripped from Pango markup (Needs to be a valid string)
|
||||
- 'f' filter string (user input)
|
||||
- 'F' quoted filter string (user input)
|
||||
|
||||
Default: 's'
|
||||
|
||||
`-select` *string*
|
||||
|
||||
Select first line that matches the given string
|
||||
|
||||
`-mesg` *string*
|
||||
|
||||
Add a message line below the filter entry box. Supports Pango markup. For more
|
||||
information on supported markup, see
|
||||
[here](https://docs.gtk.org/Pango/pango_markup.html)
|
||||
|
||||
`-dump`
|
||||
|
||||
Dump the filtered list to stdout and quit.
|
||||
This can be used to get the list as **rofi** would filter it.
|
||||
Use together with `-filter` command.
|
||||
|
||||
`-input` *file*
|
||||
|
||||
Reads from *file* instead of stdin.
|
||||
|
||||
`-password`
|
||||
|
||||
Hide the input text. This should not be considered secure!
|
||||
|
||||
`-markup-rows`
|
||||
|
||||
Tell **rofi** that DMenu input is Pango markup encoded, and should be rendered.
|
||||
See [here](https://developer.gnome.org/pygtk/stable/pango-markup-language.html)
|
||||
for details about Pango markup.
|
||||
|
||||
`-multi-select`
|
||||
|
||||
Allow multiple lines to be selected. Adds a small selection indicator to the
|
||||
left of each entry.
|
||||
|
||||
`-sync`
|
||||
|
||||
Force **rofi** mode to first read all data from stdin before showing the
|
||||
selection window. This is original dmenu behavior.
|
||||
|
||||
Note: the default asynchronous mode will also be automatically disabled if used
|
||||
with conflicting options,
|
||||
such as `-dump`, `-only-match` or `-auto-select`.
|
||||
|
||||
`-window-title` *title*
|
||||
|
||||
Set name used for the window title. Will be shown as Rofi - *title*
|
||||
|
||||
`-w` *windowid*
|
||||
|
||||
Position **rofi** over the window with the given X11 window ID.
|
||||
|
||||
`-keep-right`
|
||||
|
||||
Set ellipsize mode to start. So, the end of the string is visible.
|
||||
|
||||
`-display-columns`
|
||||
|
||||
A comma seperated list of columns to show.
|
||||
|
||||
`-display-column-separator`
|
||||
|
||||
The column separator. This is a regex.
|
||||
|
||||
*default*: '\t'
|
||||
|
||||
`-ballot-selected-str` *string*
|
||||
|
||||
When multi-select is enabled, prefix this string when element is selected.
|
||||
|
||||
*default*: "☑ "
|
||||
|
||||
`-ballot-unselected-str` *string*
|
||||
|
||||
When multi-select is enabled, prefix this string when element is not selected.
|
||||
|
||||
*default*: "☐ "
|
||||
|
||||
`-ellipsize-mode` (start|middle|end)
|
||||
|
||||
Set ellipsize mode on the listview.
|
||||
|
||||
*default* "end"
|
||||
|
||||
## PARSING ROW OPTIONS
|
||||
|
||||
Extra options for individual rows can be also set. See the **rofi-script(5)**
|
||||
manpage for details; the syntax and supported features are identical.
|
||||
|
||||
## RETURN VALUE
|
||||
|
||||
- **0**: Row has been selected accepted by user.
|
||||
- **1**: User cancelled the selection.
|
||||
- **10-28**: Row accepted by custom keybinding.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
rofi(1), rofi-sensible-terminal(1), dmenu(1), rofi-theme(5), rofi-script(5),
|
||||
rofi-theme-selector(1), ascii(7)
|
||||
|
||||
## AUTHOR
|
||||
|
||||
Qball Cow <qball@gmpclient.org>
|
||||
|
||||
Rasmus Steinke <rasi@xssn.at>
|
||||
|
||||
Morgane Glidic <sardemff7+rofi@sardemff7.net>
|
||||
|
||||
Original code based on work by: Sean Pringle <sean.pringle@gmail.com>
|
||||
|
||||
For a full list of authors, check the AUTHORS file.
|
576
mkdocs/docs/1.7.8/rofi-keys.5.markdown
Normal file
576
mkdocs/docs/1.7.8/rofi-keys.5.markdown
Normal file
|
@ -0,0 +1,576 @@
|
|||
# rofi-keys(5)
|
||||
|
||||
## NAME
|
||||
|
||||
**rofi keys** - Rofi Key and Mouse bindings
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
**rofi** supports overriding of any of it key and mouse binding.
|
||||
|
||||
## Setting binding
|
||||
|
||||
Bindings can be done on the commandline (-{bindingname}):
|
||||
|
||||
```bash
|
||||
rofi -show run -kb-accept-entry 'Control+Shift+space'
|
||||
```
|
||||
|
||||
or via the configuration file:
|
||||
|
||||
```css
|
||||
configuration {
|
||||
kb-accept-entry: "Control+Shift+space";
|
||||
}
|
||||
```
|
||||
|
||||
The key can be set by its name (see above) or its keycode:
|
||||
|
||||
```css
|
||||
configuration {
|
||||
kb-accept-entry: "Control+Shift+[65]";
|
||||
}
|
||||
```
|
||||
|
||||
An easy way to look up keycode is xev(1).
|
||||
|
||||
Multiple keys can be specified for an action as a comma separated list:
|
||||
|
||||
```css
|
||||
configuration {
|
||||
kb-accept-entry: "Control+Shift+space,Return";
|
||||
}
|
||||
```
|
||||
|
||||
By Default **rofi** reacts on pressing, to act on the release of all keys
|
||||
prepend the binding with `!`:
|
||||
|
||||
```css
|
||||
configuration {
|
||||
kb-accept-entry: "!Control+Shift+space,Return";
|
||||
}
|
||||
```
|
||||
|
||||
## Unsetting a binding
|
||||
|
||||
To unset a binding, pass an empty string.
|
||||
|
||||
```css
|
||||
configuration {
|
||||
kb-clear-line: "";
|
||||
}
|
||||
```
|
||||
|
||||
## Keyboard Bindings
|
||||
|
||||
`kb-primary-paste`
|
||||
|
||||
Paste primary selection
|
||||
|
||||
Default: Control+V,Shift+Insert
|
||||
|
||||
`kb-secondary-paste`
|
||||
|
||||
Paste clipboard
|
||||
|
||||
Default: Control+v,Insert
|
||||
|
||||
`kb-secondary-copy`
|
||||
|
||||
Copy current selection to clipboard
|
||||
|
||||
Default: Control+c
|
||||
|
||||
`kb-clear-line`
|
||||
|
||||
Clear input line
|
||||
|
||||
Default: Control+w
|
||||
|
||||
`kb-move-front`
|
||||
|
||||
Beginning of line
|
||||
|
||||
Default: Control+a
|
||||
|
||||
`kb-move-end`
|
||||
|
||||
End of line
|
||||
|
||||
Default: Control+e
|
||||
|
||||
`kb-move-word-back`
|
||||
|
||||
Move back one word
|
||||
|
||||
Default: Alt+b,Control+Left
|
||||
|
||||
`kb-move-word-forward`
|
||||
|
||||
Move forward one word
|
||||
|
||||
Default: Alt+f,Control+Right
|
||||
|
||||
`kb-move-char-back`
|
||||
|
||||
Move back one char
|
||||
|
||||
Default: Left,Control+b
|
||||
|
||||
`kb-move-char-forward`
|
||||
|
||||
Move forward one char
|
||||
|
||||
Default: Right,Control+f
|
||||
|
||||
`kb-remove-word-back`
|
||||
|
||||
Delete previous word
|
||||
|
||||
Default: Control+Alt+h,Control+BackSpace
|
||||
|
||||
`kb-remove-word-forward`
|
||||
|
||||
Delete next word
|
||||
|
||||
Default: Control+Alt+d
|
||||
|
||||
`kb-remove-char-forward`
|
||||
|
||||
Delete next char
|
||||
|
||||
Default: Delete,Control+d
|
||||
|
||||
`kb-remove-char-back`
|
||||
|
||||
Delete previous char
|
||||
|
||||
Default: BackSpace,Shift+BackSpace,Control+h
|
||||
|
||||
`kb-remove-to-eol`
|
||||
|
||||
Delete till the end of line
|
||||
|
||||
Default: Control+k
|
||||
|
||||
`kb-remove-to-sol`
|
||||
|
||||
Delete till the start of line
|
||||
|
||||
Default: Control+u
|
||||
|
||||
`kb-accept-entry`
|
||||
|
||||
Accept entry
|
||||
|
||||
Default: Control+j,Control+m,Return,KP\_Enter
|
||||
|
||||
`kb-accept-custom`
|
||||
|
||||
Use entered text as command (in ssh/run modes)
|
||||
|
||||
Default: Control+Return
|
||||
|
||||
`kb-accept-custom-alt`
|
||||
|
||||
Use entered text as command (in ssh/run modes)
|
||||
|
||||
Default: Control+Shift+Return
|
||||
|
||||
`kb-accept-alt`
|
||||
|
||||
Use alternate accept command.
|
||||
|
||||
Default: Shift+Return
|
||||
|
||||
`kb-delete-entry`
|
||||
|
||||
Delete entry from history
|
||||
|
||||
Default: Shift+Delete
|
||||
|
||||
`kb-mode-next`
|
||||
|
||||
Switch to the next mode.
|
||||
|
||||
Default: Shift+Right,Control+Tab
|
||||
|
||||
`kb-mode-previous`
|
||||
|
||||
Switch to the previous mode.
|
||||
|
||||
Default: Shift+Left,Control+ISO\_Left\_Tab
|
||||
|
||||
`kb-mode-complete`
|
||||
|
||||
Start completion for mode.
|
||||
|
||||
Default: Control+l
|
||||
|
||||
`kb-row-left`
|
||||
|
||||
Go to the previous column
|
||||
|
||||
Default: Control+Page\_Up
|
||||
|
||||
`kb-row-right`
|
||||
|
||||
Go to the next column
|
||||
|
||||
Default: Control+Page\_Down
|
||||
|
||||
`kb-row-up`
|
||||
|
||||
Select previous entry
|
||||
|
||||
Default: Up,Control+p
|
||||
|
||||
`kb-row-down`
|
||||
|
||||
Select next entry
|
||||
|
||||
Default: Down,Control+n
|
||||
|
||||
`kb-row-tab`
|
||||
|
||||
Go to next row, if one left, accept it, if no left next mode.
|
||||
|
||||
Default:
|
||||
|
||||
`kb-element-next`
|
||||
|
||||
Go to next row.
|
||||
|
||||
Default: Tab
|
||||
|
||||
`kb-element-prev`
|
||||
|
||||
Go to previous row.
|
||||
|
||||
Default: ISO\_Left\_Tab
|
||||
|
||||
`kb-page-prev`
|
||||
|
||||
Go to the previous page
|
||||
|
||||
Default: Page\_Up
|
||||
|
||||
`kb-page-next`
|
||||
|
||||
Go to the next page
|
||||
|
||||
Default: Page\_Down
|
||||
|
||||
`kb-row-first`
|
||||
|
||||
Go to the first entry
|
||||
|
||||
Default: Home,KP\_Home
|
||||
|
||||
`kb-row-last`
|
||||
|
||||
Go to the last entry
|
||||
|
||||
Default: End,KP\_End
|
||||
|
||||
`kb-row-select`
|
||||
|
||||
Set selected item as input text
|
||||
|
||||
Default: Control+space
|
||||
|
||||
`kb-screenshot`
|
||||
|
||||
Take a screenshot of the rofi window
|
||||
|
||||
Default: Alt+S
|
||||
|
||||
`kb-ellipsize`
|
||||
|
||||
Toggle between ellipsize modes for displayed data
|
||||
|
||||
Default: Alt+period
|
||||
|
||||
`kb-toggle-case-sensitivity`
|
||||
|
||||
Toggle case sensitivity
|
||||
|
||||
Default: grave,dead\_grave
|
||||
|
||||
`kb-toggle-sort`
|
||||
|
||||
Toggle filtered menu sort
|
||||
|
||||
Default: Alt+grave
|
||||
|
||||
`kb-cancel`
|
||||
|
||||
Quit rofi
|
||||
|
||||
Default: Escape,Control+g,Control+bracketleft
|
||||
|
||||
`kb-custom-1`
|
||||
|
||||
Custom keybinding 1
|
||||
|
||||
Default: Alt+1
|
||||
|
||||
`kb-custom-2`
|
||||
|
||||
Custom keybinding 2
|
||||
|
||||
Default: Alt+2
|
||||
|
||||
`kb-custom-3`
|
||||
|
||||
Custom keybinding 3
|
||||
|
||||
Default: Alt+3
|
||||
|
||||
`kb-custom-4`
|
||||
|
||||
Custom keybinding 4
|
||||
|
||||
Default: Alt+4
|
||||
|
||||
`kb-custom-5`
|
||||
|
||||
Custom Keybinding 5
|
||||
|
||||
Default: Alt+5
|
||||
|
||||
`kb-custom-6`
|
||||
|
||||
Custom keybinding 6
|
||||
|
||||
Default: Alt+6
|
||||
|
||||
`kb-custom-7`
|
||||
|
||||
Custom Keybinding 7
|
||||
|
||||
Default: Alt+7
|
||||
|
||||
`kb-custom-8`
|
||||
|
||||
Custom keybinding 8
|
||||
|
||||
Default: Alt+8
|
||||
|
||||
`kb-custom-9`
|
||||
|
||||
Custom keybinding 9
|
||||
|
||||
Default: Alt+9
|
||||
|
||||
`kb-custom-10`
|
||||
|
||||
Custom keybinding 10
|
||||
|
||||
Default: Alt+0
|
||||
|
||||
`kb-custom-11`
|
||||
|
||||
Custom keybinding 11
|
||||
|
||||
Default: Alt+exclam
|
||||
|
||||
`kb-custom-12`
|
||||
|
||||
Custom keybinding 12
|
||||
|
||||
Default: Alt+at
|
||||
|
||||
`kb-custom-13`
|
||||
|
||||
Custom keybinding 13
|
||||
|
||||
Default: Alt+numbersign
|
||||
|
||||
`kb-custom-14`
|
||||
|
||||
Custom keybinding 14
|
||||
|
||||
Default: Alt+dollar
|
||||
|
||||
`kb-custom-15`
|
||||
|
||||
Custom keybinding 15
|
||||
|
||||
Default: Alt+percent
|
||||
|
||||
`kb-custom-16`
|
||||
|
||||
Custom keybinding 16
|
||||
|
||||
Default: Alt+dead\_circumflex
|
||||
|
||||
`kb-custom-17`
|
||||
|
||||
Custom keybinding 17
|
||||
|
||||
Default: Alt+ampersand
|
||||
|
||||
`kb-custom-18`
|
||||
|
||||
Custom keybinding 18
|
||||
|
||||
Default: Alt+asterisk
|
||||
|
||||
`kb-custom-19`
|
||||
|
||||
Custom Keybinding 19
|
||||
|
||||
Default: Alt+parenleft
|
||||
|
||||
`kb-select-1`
|
||||
|
||||
Select row 1
|
||||
|
||||
Default: Super+1
|
||||
|
||||
`kb-select-2`
|
||||
|
||||
Select row 2
|
||||
|
||||
Default: Super+2
|
||||
|
||||
`kb-select-3`
|
||||
|
||||
Select row 3
|
||||
|
||||
Default: Super+3
|
||||
|
||||
`kb-select-4`
|
||||
|
||||
Select row 4
|
||||
|
||||
Default: Super+4
|
||||
|
||||
`kb-select-5`
|
||||
|
||||
Select row 5
|
||||
|
||||
Default: Super+5
|
||||
|
||||
`kb-select-6`
|
||||
|
||||
Select row 6
|
||||
|
||||
Default: Super+6
|
||||
|
||||
`kb-select-7`
|
||||
|
||||
Select row 7
|
||||
|
||||
Default: Super+7
|
||||
|
||||
`kb-select-8`
|
||||
|
||||
Select row 8
|
||||
|
||||
Default: Super+8
|
||||
|
||||
`kb-select-9`
|
||||
|
||||
Select row 9
|
||||
|
||||
Default: Super+9
|
||||
|
||||
`kb-select-10`
|
||||
|
||||
Select row 10
|
||||
|
||||
Default: Super+0
|
||||
|
||||
`kb-entry-history-up`
|
||||
|
||||
Go up in the entry history.
|
||||
|
||||
Default: Control+Up
|
||||
|
||||
`kb-entry-history-down`
|
||||
|
||||
Go down in the entry history.
|
||||
|
||||
Default: Control+Down
|
||||
|
||||
## Mouse Bindings
|
||||
|
||||
`ml-row-left`
|
||||
|
||||
Go to the previous column
|
||||
|
||||
Default: ScrollLeft
|
||||
|
||||
`ml-row-right`
|
||||
|
||||
Go to the next column
|
||||
|
||||
Default: ScrollRight
|
||||
|
||||
`ml-row-up`
|
||||
|
||||
Select previous entry
|
||||
|
||||
Default: ScrollUp
|
||||
|
||||
`ml-row-down`
|
||||
|
||||
Select next entry
|
||||
|
||||
Default: ScrollDown
|
||||
|
||||
`me-select-entry`
|
||||
|
||||
Select hovered row
|
||||
|
||||
Default: MousePrimary
|
||||
|
||||
`me-accept-entry`
|
||||
|
||||
Accept hovered row
|
||||
|
||||
Default: MouseDPrimary
|
||||
|
||||
`me-accept-custom`
|
||||
|
||||
Accept hovered row with custom action
|
||||
|
||||
Default: Control+MouseDPrimary
|
||||
|
||||
## Mouse key bindings
|
||||
|
||||
The following mouse buttons can be bound:
|
||||
|
||||
* `Primary`: Primary (Left) mouse button click.
|
||||
* `Secondary`: Secondary (Right) mouse button click.
|
||||
* `Middle`: Middle mouse button click.
|
||||
* `Forward`: The forward mouse button.
|
||||
* `Back`: The back mouse button.
|
||||
* `ExtraN`: The N'the mouse button. (Depending on mouse support).
|
||||
|
||||
The Identifier is constructed as follow:
|
||||
|
||||
`Mouse<D><Button>`
|
||||
|
||||
* `D` indicates optional Double press.
|
||||
* `Button` is the button name.
|
||||
|
||||
So `MouseDPrimary` is Primary (`Left`) mouse button double click.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
rofi(1), rofi-sensible-terminal(1), rofi-theme(5), rofi-script(5)
|
||||
|
||||
## AUTHOR
|
||||
|
||||
Qball Cow <qball@gmpclient.org>
|
||||
|
||||
Rasmus Steinke <rasi@xssn.at>
|
||||
|
||||
Morgane Glidic <sardemff7+rofi@sardemff7.net>
|
||||
|
||||
Original code based on work by: Sean Pringle <sean.pringle@gmail.com>
|
||||
|
||||
For a full list of authors, check the AUTHORS file.
|
216
mkdocs/docs/1.7.8/rofi-script.5.markdown
Normal file
216
mkdocs/docs/1.7.8/rofi-script.5.markdown
Normal file
|
@ -0,0 +1,216 @@
|
|||
# rofi-script(5)
|
||||
|
||||
## NAME
|
||||
|
||||
**rofi script mode** - Rofi format for scriptable mode.
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
**rofi** supports modes that use simple scripts in the background to generate a
|
||||
list and process the result from user actions. This provide a simple interface
|
||||
to make simple extensions to rofi.
|
||||
|
||||
## USAGE
|
||||
|
||||
To specify a script mode, set a mode with the following syntax:
|
||||
"{name}:{executable}"
|
||||
|
||||
For example:
|
||||
|
||||
```bash
|
||||
rofi -show fb -modes "fb:file_browser.sh"
|
||||
```
|
||||
|
||||
The name should be unique.
|
||||
|
||||
## API
|
||||
|
||||
Rofi calls the executable without arguments on startup. This should generate a
|
||||
list of options, separated by a newline (`\n`) (This can be changed by the
|
||||
script). If the user selects an option, rofi calls the executable with the text
|
||||
of that option as the first argument. If the script returns no entries, rofi
|
||||
quits.
|
||||
|
||||
A simple script would be:
|
||||
|
||||
```bash
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if [ x"$@" = x"quit" ]
|
||||
then
|
||||
exit 0
|
||||
fi
|
||||
echo "reload"
|
||||
echo "quit"
|
||||
|
||||
```
|
||||
|
||||
This shows two entries, reload and quit. When the quit entry is selected, rofi
|
||||
closes.
|
||||
|
||||
## Environment
|
||||
|
||||
Rofi sets the following environment variable when executing the script:
|
||||
|
||||
### `ROFI_RETV`
|
||||
|
||||
An integer number with the current state:
|
||||
|
||||
- **0**: Initial call of script.
|
||||
- **1**: Selected an entry.
|
||||
- **2**: Selected a custom entry.
|
||||
- **10-28**: Custom keybinding 1-19 ( need to be explicitly enabled by script ).
|
||||
|
||||
### `ROFI_INFO`
|
||||
|
||||
Environment get set when selected entry get set with the property value of the
|
||||
'info' row option, if set.
|
||||
|
||||
### `ROFI_DATA`
|
||||
|
||||
Environment get set when script sets `data` option in header.
|
||||
|
||||
## Passing mode options
|
||||
|
||||
Extra options, like setting the prompt, can be set by the script. Extra options
|
||||
are lines that start with a NULL character (`\0`) followed by a key, separator
|
||||
(`\x1f`) and value.
|
||||
|
||||
For example to set the prompt:
|
||||
|
||||
```bash
|
||||
echo -en "\0prompt\x1fChange prompt\n"
|
||||
```
|
||||
|
||||
The following extra options exists:
|
||||
|
||||
- **prompt**: Update the prompt text.
|
||||
|
||||
- **message**: Update the message text.
|
||||
|
||||
- **markup-rows**: If 'true' renders markup in the row.
|
||||
|
||||
- **urgent**: Mark rows as urgent. (for syntax see the urgent option in
|
||||
dmenu mode)
|
||||
|
||||
- **active**: Mark rows as active. (for syntax see the active option in
|
||||
dmenu mode)
|
||||
|
||||
- **delim**: Set the delimiter for for next rows. Default is '\n' and
|
||||
this option should finish with this. Only call this on first call of script,
|
||||
it is remembered for consecutive calls.
|
||||
|
||||
- **no-custom**: If set to 'true'; only accept listed entries, ignore custom
|
||||
input.
|
||||
|
||||
- **use-hot-keys**: If set to true, it enabled the Custom keybindings for
|
||||
script. Warning this breaks the normal rofi flow.
|
||||
|
||||
- **keep-selection**: If set, the selection is not moved to the first entry,
|
||||
but the current position is maintained. The filter is cleared.
|
||||
|
||||
- **keep-filter**: If set, the filter is not cleared.
|
||||
|
||||
- **new-selection**: If `keep-selection` is set, this allows you to override
|
||||
the selected entry (absolute position).
|
||||
|
||||
- **data**: Passed data to the next execution of the script via
|
||||
**ROFI\_DATA**.
|
||||
|
||||
- **theme**: Small theme snippet to f.e. change the background color of
|
||||
a widget.
|
||||
|
||||
The **theme** property cannot change the interface while running, it is only
|
||||
usable for small changes in, for example background color, of widgets that get
|
||||
updated during display like the row color of the listview.
|
||||
|
||||
## Parsing row options
|
||||
|
||||
Extra options for individual rows can be set. The extra option can be specified
|
||||
following the same syntax as mode option, but following the entry.
|
||||
|
||||
For example:
|
||||
|
||||
```bash
|
||||
echo -en "aap\0icon\x1ffolder\n"
|
||||
```
|
||||
|
||||
The following options are supported:
|
||||
|
||||
- **icon**: Set the icon for that row.
|
||||
|
||||
- **display**: Replace the displayed string. (Original string will still be used for filtering)
|
||||
|
||||
- **meta**: Specify invisible search terms used for filtering.
|
||||
|
||||
- **nonselectable**: If true the row cannot activated.
|
||||
|
||||
- **permanent**: If true the row always shows, independent of filter.
|
||||
|
||||
- **info**: Info that, on selection, gets placed in the `ROFI_INFO`
|
||||
environment variable. This entry does not get searched for filtering.
|
||||
|
||||
- **urgent**: Set urgent flag on entry (true/false)
|
||||
|
||||
- **active**: Set active flag on entry (true/false)
|
||||
|
||||
multiple entries can be passed using the `\x1f` separator.
|
||||
|
||||
```bash
|
||||
echo -en "aap\0icon\x1ffolder\x1finfo\x1ftest\n"
|
||||
```
|
||||
|
||||
## Executing external program
|
||||
|
||||
If you want to launch an external program from the script, you need to make
|
||||
sure it is launched in the background. If not rofi will wait for its output (to
|
||||
display).
|
||||
|
||||
In bash the best way to do this is using `coproc`.
|
||||
|
||||
```bash
|
||||
coproc ( myApp > /dev/null 2>&1 )
|
||||
```
|
||||
|
||||
## DASH shell
|
||||
|
||||
If you use the `dash` shell for your script, take special care with how dash
|
||||
handles escaped values for the separators. See issue #1201 on github.
|
||||
|
||||
## Script locations
|
||||
|
||||
To specify a script there are the following options:
|
||||
|
||||
- Specify an absolute path to the script.
|
||||
- The script is executable and located in your $PATH
|
||||
|
||||
Scripts located in the following location are **loaded** on startup
|
||||
and can be directly launched based on the filename (without extension):
|
||||
|
||||
- The script is in `$XDG_CONFIG_HOME/rofi/scripts/`, this is usually
|
||||
`~/.config/rofi/scripts/`.
|
||||
|
||||
If you have a script 'mymode.sh' in this folder you can open it using:
|
||||
|
||||
```bash
|
||||
rofi -show mymode
|
||||
```
|
||||
|
||||
See `rofi -h` output for a list of detected scripts.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
rofi(1), rofi-sensible-terminal(1), dmenu(1), rofi-theme(5),
|
||||
rofi-theme-selector(1)
|
||||
|
||||
## AUTHOR
|
||||
|
||||
Qball Cow <qball@gmpclient.org>
|
||||
|
||||
Rasmus Steinke <rasi@xssn.at>
|
||||
|
||||
Morgane Glidic <sardemff7+rofi@sardemff7.net>
|
||||
|
||||
Original code based on work by: Sean Pringle <sean.pringle@gmail.com>
|
||||
|
||||
For a full list of authors, check the AUTHORS file.
|
50
mkdocs/docs/1.7.8/rofi-sensible-terminal.1.markdown
Normal file
50
mkdocs/docs/1.7.8/rofi-sensible-terminal.1.markdown
Normal file
|
@ -0,0 +1,50 @@
|
|||
# rofi-sensible-terminal(1)
|
||||
|
||||
## NAME
|
||||
|
||||
**rofi-sensible-terminal** - launches $TERMINAL with fallbacks
|
||||
|
||||
## SYNOPSIS
|
||||
|
||||
rofi-sensible-terminal [arguments]
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
rofi-sensible-terminal is invoked in the rofi default config to start a terminal. This
|
||||
wrapper script is necessary since there is no distribution-independent terminal launcher
|
||||
(but for example Debian has x-terminal-emulator). Distribution packagers are responsible for
|
||||
shipping this script in a way which is appropriate for the distribution.
|
||||
|
||||
It tries to start one of the following (in that order):
|
||||
|
||||
* `$TERMINAL` (this is a non-standard variable)
|
||||
* x-terminal-emulator
|
||||
* urxvt
|
||||
* rxvt
|
||||
* st
|
||||
* terminology
|
||||
* qterminal
|
||||
* Eterm
|
||||
* aterm
|
||||
* uxterm
|
||||
* xterm
|
||||
* roxterm
|
||||
* xfce4-terminal.wrapper
|
||||
* mate-terminal
|
||||
* lxterminal
|
||||
* konsole
|
||||
* alacritty
|
||||
* kitty
|
||||
* wezterm
|
||||
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
rofi(1)
|
||||
|
||||
## AUTHORS
|
||||
|
||||
Dave Davenport and contributors
|
||||
|
||||
Copied script from i3:
|
||||
Michael Stapelberg and contributors
|
40
mkdocs/docs/1.7.8/rofi-theme-selector.1.markdown
Normal file
40
mkdocs/docs/1.7.8/rofi-theme-selector.1.markdown
Normal file
|
@ -0,0 +1,40 @@
|
|||
# rofi-theme-selector(1)
|
||||
|
||||
## NAME
|
||||
|
||||
**rofi-theme-selector** - Preview and apply themes for **rofi**
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
**rofi-theme-selector** is a bash/rofi script to preview and apply themes for
|
||||
**rofi**. It's part of any installation of **rofi**.
|
||||
|
||||
## USAGE
|
||||
|
||||
### Running rofi-theme-selector
|
||||
|
||||
**rofi-theme-selector** shows a list of all available themes in a **rofi**
|
||||
window. It lets you preview each theme with the Enter key and apply the theme
|
||||
to your **rofi** configuration file with Alt+a.
|
||||
|
||||
## Theme directories
|
||||
|
||||
**rofi-theme-selector** searches the following directories for themes:
|
||||
|
||||
- ${PREFIX}/share/rofi/themes
|
||||
- $XDG_CONFIG_HOME/rofi/themes
|
||||
- $XDG_DATA_HOME/share/rofi/themes
|
||||
|
||||
${PREFIX} reflects the install location of rofi. In most cases this will be
|
||||
"/usr".<br>
|
||||
$XDG_CONFIG_HOME is normally unset. Default path is "$HOME/.config".<br>
|
||||
$XDG_DATA_HOME is normally unset. Default path is "$HOME/.local/share".
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
rofi(1)
|
||||
|
||||
## AUTHORS
|
||||
|
||||
Qball Cow qball@gmpclient.org<br>
|
||||
Rasmus Steinke rasi@xssn.at
|
1669
mkdocs/docs/1.7.8/rofi-theme.5.markdown
Normal file
1669
mkdocs/docs/1.7.8/rofi-theme.5.markdown
Normal file
File diff suppressed because it is too large
Load diff
85
mkdocs/docs/1.7.8/rofi-thumbnails.5.markdown
Normal file
85
mkdocs/docs/1.7.8/rofi-thumbnails.5.markdown
Normal file
|
@ -0,0 +1,85 @@
|
|||
# rofi-thumbnails(5)
|
||||
|
||||
## NAME
|
||||
|
||||
**rofi-thumbnails** - Rofi thumbnails system
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
**rofi** is now able to show thumbnails for all file types where an XDG compatible thumbnailer is present in the system.
|
||||
|
||||
This is done by default in filebrowser and recursivebrowser mode, if **rofi** is launched with the `-show-icons` argument.
|
||||
|
||||
In a custom user script or dmenu mode, it is possible to produce entry icons using XDG thumbnailers by adding the prefix `thumbnail://` to the filename
|
||||
specified after `\0icon\x1f`, for example:
|
||||
|
||||
```bash
|
||||
echo -en "EntryName\0icon\x1fthumbnail://path/to/file\n" | rofi -dmenu -show-icons
|
||||
```
|
||||
|
||||
### XDG thumbnailers
|
||||
|
||||
XDG thumbnailers are files with a ".thumbnailer" suffix and a structure similar to ".desktop" files for launching applications. They are placed in `/usr/share/thumbnailers/` or `$HOME/.local/share/thumbnailers/`, and contain a list of mimetypes, for which is possible to produce the thumbnail image, and a string with the command to create said image. The example below shows the content of `librsvg.thumbnailer`, a thumbnailer for svg files using librsvg:
|
||||
|
||||
```
|
||||
[Thumbnailer Entry]
|
||||
TryExec=/usr/bin/gdk-pixbuf-thumbnailer
|
||||
Exec=/usr/bin/gdk-pixbuf-thumbnailer -s %s %u %o
|
||||
MimeType=image/svg+xml;image/svg+xml-compressed;
|
||||
```
|
||||
|
||||
The images produced are named as the md5sum of the input files and placed, depending on their size, in the XDG thumbnails directories: `$HOME/.cache/thumbnails/{normal,large,x-large,xx-large}`. They are then loaded by **rofi** as entry icons and can also be used by file managers like Thunar, Caja or KDE Dolphin to show their thumbnails. Additionally, if a thumbnail for a file is found in the thumbnails directories (produced previously by **rofi** or a file manager), **rofi** will load it instead of calling the thumbnailer.
|
||||
|
||||
If a suitable thumbnailer for a given file is not found, **rofi** will try to use the corresponding mimetype icon from the icon theme.
|
||||
|
||||
### Custom command to create thumbnails
|
||||
|
||||
It is possible to use a custom command to generate thumbnails for generic entry names, for example a script that downloads an icon given its url or selects different icons depending on the input. This can be done providing the `-preview-cmd` argument followed by a string with the command to execute, with the following syntax:
|
||||
|
||||
```
|
||||
rofi ... -preview-cmd 'path/to/script_or_cmd "{input}" "{output}" "{size}"'
|
||||
```
|
||||
|
||||
**rofi** will call the script or command substituting `{input}` with the input entry icon name (the string after `\0icon\x1fthumbnail://`), `{output}` with the output filename of the thumbnail and `{size}` with the requested thumbnail size. The script or command is responsible of producing a thumbnail image (if possible respecting the requested size) and saving it in the given `{output}` filename.
|
||||
|
||||
### Issues with AppArmor
|
||||
|
||||
In Linux distributions using AppArmor (such as Ubuntu and Debian), the default rules shipped can cause issues with thumbnails generation. If that is the case, AppArmor can be disabled by issuing the following commands
|
||||
|
||||
```
|
||||
sudo systemctl stop apparmor
|
||||
sudo systemctl disable apparmor
|
||||
```
|
||||
|
||||
In alternative, the following apparmor profile con be placed in a file named /etc/apparmor.d/usr.bin.rofi
|
||||
|
||||
```
|
||||
#vim:syntax=apparmor
|
||||
# AppArmor policy for rofi
|
||||
|
||||
#include <tunables/global>
|
||||
|
||||
/usr/bin/rofi {
|
||||
#include <abstractions/base>
|
||||
|
||||
# TCP/UDP network access for NFS
|
||||
network inet stream,
|
||||
network inet6 stream,
|
||||
network inet dgram,
|
||||
network inet6 dgram,
|
||||
|
||||
/usr/bin/rofi mr,
|
||||
|
||||
@{HOME}/ r,
|
||||
@{HOME}/** rw,
|
||||
owner @{HOME}/.cache/thumbnails/** rw,
|
||||
}
|
||||
```
|
||||
|
||||
then run
|
||||
|
||||
```
|
||||
apparmor_parser -r /etc/apparmor.d/usr.bin.rofi
|
||||
```
|
||||
|
||||
to reload the rule. This assumes that **rofi** binary is in /usr/bin, that is the case of a standard package installation.
|
1188
mkdocs/docs/1.7.8/rofi.1.markdown
Normal file
1188
mkdocs/docs/1.7.8/rofi.1.markdown
Normal file
File diff suppressed because it is too large
Load diff
|
@ -23,6 +23,22 @@ nav:
|
|||
- Debugging: current/rofi-debugging.5.markdown
|
||||
- Keys: current/rofi-keys.5.markdown
|
||||
- Thumbnails: current/rofi-thumbnails.5.markdown
|
||||
- 1.7.8:
|
||||
- Rofi: 1.7.8/rofi.1.markdown
|
||||
- Themes: 1.7.8/rofi-theme.5.markdown
|
||||
- Dmenu: 1.7.8/rofi-dmenu.5.markdown
|
||||
- Script: 1.7.8/rofi-script.5.markdown
|
||||
- Debugging: 1.7.8/rofi-debugging.5.markdown
|
||||
- Keys: 1.7.8/rofi-keys.5.markdown
|
||||
- Thumbnails: 1.7.8/rofi-thumbnails.5.markdown
|
||||
- 1.7.7:
|
||||
- Rofi: 1.7.7/rofi.1.markdown
|
||||
- Themes: 1.7.7/rofi-theme.5.markdown
|
||||
- Dmenu: 1.7.7/rofi-dmenu.5.markdown
|
||||
- Script: 1.7.7/rofi-script.5.markdown
|
||||
- Debugging: 1.7.7/rofi-debugging.5.markdown
|
||||
- Keys: 1.7.7/rofi-keys.5.markdown
|
||||
- Thumbnails: 1.7.7/rofi-thumbnails.5.markdown
|
||||
- 1.7.6:
|
||||
- Rofi: 1.7.6/rofi.1.markdown
|
||||
- Themes: 1.7.6/rofi-theme.5.markdown
|
||||
|
|
83
releasenotes/1.7.7/release-1.7.7.markdown
Normal file
83
releasenotes/1.7.7/release-1.7.7.markdown
Normal file
|
@ -0,0 +1,83 @@
|
|||
# 1.7.7: Time Dilation
|
||||
|
||||
A quick-fix release following reports after releasing the 1.7.6 release.
|
||||
|
||||
## Issues
|
||||
|
||||
### Drawing issue
|
||||
|
||||
After the previous release some users experienced rofi being rendered to screen
|
||||
as a black box. The issue seems to be only hit on certain video cards/drivers
|
||||
see the github issue [#2068](https://github.com/davatorium/rofi/issues/2068).It turned out on these systems using
|
||||
`cairo_push/pop_group` results in a black screen when the backing surface is
|
||||
using the XCB library. When using other drivers, or rendering to a cairo image
|
||||
surface.
|
||||
Hopefully reverting to `cairo_store` and `cairo_restore` fixes this issue for everybody.
|
||||
|
||||
Issue [#2068](https://github.com/davatorium/rofi/issues/2068)
|
||||
|
||||
### Window mode missing some windows
|
||||
|
||||
Because of a wrong check some windows where misidentified as 'skip pager' and
|
||||
hidden from the view. This should now be resolved.
|
||||
|
||||
Issue [#2071](https://github.com/davatorium/rofi/issues/2071)
|
||||
|
||||
### 'Character' in config file broken
|
||||
|
||||
A previous patch to make using strings more easy to use in the configuration
|
||||
file broke settings that use the 'character' type as setting. Because not a lot
|
||||
of options use the 'Character' type , this has been 'resolved' by using the
|
||||
'String' type and picking the first ASCII character.
|
||||
|
||||
Issue [#2070](https://github.com/davatorium/rofi/issues/2070)
|
||||
|
||||
## improvements
|
||||
|
||||
Beside these issues, also some improvements are included in this release.
|
||||
|
||||
## Resolve 'rasinc' for @imports
|
||||
|
||||
When importing a theme file like this:
|
||||
|
||||
```css
|
||||
@import "mytheme"
|
||||
```
|
||||
|
||||
Rofi would find any file 'mytheme.rasi' in any of the theme paths.
|
||||
This was missing the new extension for shared include files 'rasinc'.
|
||||
This is now added when resolving.
|
||||
|
||||
Issue [#2069](https://github.com/davatorium/rofi/issues/2069)
|
||||
|
||||
## Desktop file DBus activation
|
||||
|
||||
Some desktop files did not launch correctly because it did not implement the
|
||||
DBusActivation feature. While most desktop files did provide a fallback `Exec`
|
||||
entry, this seems to not always be the case. Rofi should now first try
|
||||
DBusActivation and fall back to the Exec if it does not succeed.
|
||||
|
||||
Issue [#1924](https://github.com/davatorium/rofi/issues/1924)
|
||||
|
||||
## Resolve `-config` identical to `-theme`
|
||||
|
||||
if you pass an alternative config file, this is now resolved using the same
|
||||
logic as the `-theme` argument. Making it easier to have multiple, alternative,
|
||||
configuration files.
|
||||
|
||||
Issue [#2040](https://github.com/davatorium/rofi/issues/2040)
|
||||
|
||||
## Changelog
|
||||
|
||||
* [Widget] Don't use cairo_push/pop_group as it causes issues. (#2068)
|
||||
* Revert "[window] Check bitmask, not full comparison". (#2071)
|
||||
* [Config] Remove character data type as it aliases with string. (#2070)
|
||||
* [Doc] Refer to releasenotes for updates in Changelog file. (#2069)
|
||||
* [Doc] Update theme documentation with import resolving update. (#2069)
|
||||
* [Themes] Update themes to import without rasi(nc) extensions. (#2069)
|
||||
* [Theme] Fix resolving of 'rasinc' extension when no extension is given. (#2069)
|
||||
* Be more diligent trying to resolve -config. (#2040)
|
||||
* Use FALSE instead of FALSE.
|
||||
* Resolve -config argument identical to a -theme argument. (#2040)
|
||||
* [DRun] If indicated by .desktop file, launch via dbus activation. (#1924)
|
||||
* [Website] Update website links and headers.
|
53
releasenotes/1.7.8/release-1.7.8.markdown
Normal file
53
releasenotes/1.7.8/release-1.7.8.markdown
Normal file
|
@ -0,0 +1,53 @@
|
|||
# 1.7.8
|
||||
|
||||
## Fix drawing issue
|
||||
|
||||
In the last release we had some code that hit a bug in some graphics drivers.
|
||||
The fix that went in had a side-effect causing borders not to be drawn as
|
||||
expected. This release should fix that.
|
||||
|
||||
Issue: #2076
|
||||
|
||||
## DBusActivatable
|
||||
|
||||
The previously introduced DBusActivatable seems to cause some issues and
|
||||
confusion. First if the application (dconf-editor looking at you) does not
|
||||
acknowledge it launched rofi stays open until it times out. By default this is
|
||||
15 seconds. We reduced the timeout to 1.5 seconds and added an option to
|
||||
disable DBusActivatable.
|
||||
|
||||
The 2nd point is, that if you launch an application via DBusActivatable it is
|
||||
not launched by rofi and does not inherits rofi's environment, but the one
|
||||
systemd is configured to use for that user.
|
||||
The archlinux documentation explains this and how to fix this [here](https://wiki.archlinux.org/title/Systemd/User#Environment_variables).
|
||||
|
||||
Issue: #2077
|
||||
|
||||
## CI Fixes
|
||||
|
||||
Because of some deprecation, the CI scripts are updated. It might be useful for
|
||||
people who want to help to test the latest rofi that for every commit an
|
||||
artifact is build with a 'source package' you can install.
|
||||
|
||||
You can find them
|
||||
[here](https://github.com/davatorium/rofi/actions/workflows/build.yml) by
|
||||
clicking on the commit you want and scrolling to the bottom of the page. This
|
||||
contains a zip with the two normal source tarballs.
|
||||
|
||||
## Changelog
|
||||
|
||||
* Fix buffer overflow in rofi -e after reading from stdin (#2082) (Thanks to
|
||||
Faule Socke)
|
||||
* [DRun] Reduce DBus timeout to 1500ms add option to disable DBusActivatable.
|
||||
Issue: #2077
|
||||
* [CI] Do explicit compare with 'true'?
|
||||
* [CI] Fix typo in conditional.
|
||||
* [CI] Only make dist on one build.
|
||||
* [CI] Fix identical name?
|
||||
* [CI] Bump upload action to v4
|
||||
* [Widget] Actually remove ADD operator from border drawing.
|
||||
Issue: #2076
|
||||
* [widget] Remove the ADD operator.
|
||||
Issue: #2076
|
||||
* Add 1.7.7 docs to README.
|
||||
* Mark as dev version
|
189
source/helper.c
189
source/helper.c
|
@ -1065,6 +1065,92 @@ gboolean helper_execute_command(const char *wd, const char *cmd,
|
|||
return helper_execute(wd, args, "", cmd, context);
|
||||
}
|
||||
|
||||
static char *helper_get_theme_path_check_file(const char *filename,
|
||||
const char *parent_file) {
|
||||
|
||||
// Check if absolute path.
|
||||
if (g_path_is_absolute(filename)) {
|
||||
g_debug("Opening theme, path is absolute: %s", filename);
|
||||
if (g_file_test(filename, G_FILE_TEST_EXISTS)) {
|
||||
return g_strdup(filename);
|
||||
}
|
||||
g_debug("Opening theme, path is absolute but does not exists: %s",
|
||||
filename);
|
||||
} else {
|
||||
if (parent_file != NULL) {
|
||||
// If no absolute path specified, expand it.
|
||||
char *basedir = g_path_get_dirname(parent_file);
|
||||
char *path = g_build_filename(basedir, filename, NULL);
|
||||
g_free(basedir);
|
||||
g_debug("Opening theme, check in dir where file is included: %s", path);
|
||||
if (g_file_test(path, G_FILE_TEST_EXISTS)) {
|
||||
return path;
|
||||
}
|
||||
g_debug("Opening theme, file does not exists in dir where file is "
|
||||
"included: %s\n",
|
||||
filename);
|
||||
}
|
||||
}
|
||||
// Check config's themes directory.
|
||||
const char *cpath = g_get_user_config_dir();
|
||||
if (cpath) {
|
||||
char *themep = g_build_filename(cpath, "rofi", "themes", filename, NULL);
|
||||
g_debug("Opening theme, testing: %s", themep);
|
||||
if (themep && g_file_test(themep, G_FILE_TEST_EXISTS)) {
|
||||
return themep;
|
||||
}
|
||||
g_free(themep);
|
||||
}
|
||||
// Check config directory.
|
||||
if (cpath) {
|
||||
char *themep = g_build_filename(cpath, "rofi", filename, NULL);
|
||||
g_debug("Opening theme, testing: %s", themep);
|
||||
if (g_file_test(themep, G_FILE_TEST_EXISTS)) {
|
||||
return themep;
|
||||
}
|
||||
g_free(themep);
|
||||
}
|
||||
const char *datadir = g_get_user_data_dir();
|
||||
if (datadir) {
|
||||
char *theme_path =
|
||||
g_build_filename(datadir, "rofi", "themes", filename, NULL);
|
||||
if (theme_path) {
|
||||
g_debug("Opening theme, testing: %s", theme_path);
|
||||
if (g_file_test(theme_path, G_FILE_TEST_EXISTS)) {
|
||||
return theme_path;
|
||||
}
|
||||
g_free(theme_path);
|
||||
}
|
||||
}
|
||||
|
||||
const gchar *const *system_data_dirs = g_get_system_data_dirs();
|
||||
if (system_data_dirs) {
|
||||
for (uint_fast32_t i = 0; system_data_dirs[i] != NULL; i++) {
|
||||
const char *const sdatadir = system_data_dirs[i];
|
||||
g_debug("Opening theme directory: %s", sdatadir);
|
||||
char *theme_path =
|
||||
g_build_filename(sdatadir, "rofi", "themes", filename, NULL);
|
||||
if (theme_path) {
|
||||
g_debug("Opening theme, testing: %s", theme_path);
|
||||
if (g_file_test(theme_path, G_FILE_TEST_EXISTS)) {
|
||||
return theme_path;
|
||||
}
|
||||
g_free(theme_path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
char *theme_path = g_build_filename(THEME_DIR, filename, NULL);
|
||||
if (theme_path) {
|
||||
g_debug("Opening theme, testing: %s", theme_path);
|
||||
if (g_file_test(theme_path, G_FILE_TEST_EXISTS)) {
|
||||
return theme_path;
|
||||
}
|
||||
g_free(theme_path);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
char *helper_get_theme_path(const char *file, const char **ext,
|
||||
const char *parent_file) {
|
||||
|
||||
|
@ -1085,99 +1171,28 @@ char *helper_get_theme_path(const char *file, const char **ext,
|
|||
}
|
||||
if (ext_found) {
|
||||
filename = rofi_expand_path(file);
|
||||
|
||||
char *retv = helper_get_theme_path_check_file(filename, parent_file);
|
||||
if (retv) {
|
||||
g_free(filename);
|
||||
return retv;
|
||||
}
|
||||
} else {
|
||||
g_assert_nonnull(ext[0]);
|
||||
// Iterate through extensions.
|
||||
char *temp = filename;
|
||||
// TODO: Pick the first extension. needs fixing.
|
||||
filename = g_strconcat(temp, ext[0], NULL);
|
||||
for (const char **i = ext; *i != NULL; i++) {
|
||||
filename = g_strconcat(temp, *i, NULL);
|
||||
char *retv = helper_get_theme_path_check_file(filename, parent_file);
|
||||
if (retv) {
|
||||
g_free(filename);
|
||||
g_free(temp);
|
||||
return retv;
|
||||
}
|
||||
}
|
||||
g_free(temp);
|
||||
}
|
||||
if (g_path_is_absolute(filename)) {
|
||||
g_debug("Opening theme, path is absolute: %s", filename);
|
||||
if (g_file_test(filename, G_FILE_TEST_EXISTS)) {
|
||||
return filename;
|
||||
}
|
||||
g_debug("Opening theme, path is absolute but does not exists: %s",
|
||||
filename);
|
||||
} else {
|
||||
if (parent_file != NULL) {
|
||||
// If no absolute path specified, expand it.
|
||||
char *basedir = g_path_get_dirname(parent_file);
|
||||
char *path = g_build_filename(basedir, filename, NULL);
|
||||
g_free(basedir);
|
||||
g_debug("Opening theme, check in dir where file is included: %s", path);
|
||||
if (g_file_test(path, G_FILE_TEST_EXISTS)) {
|
||||
g_free(filename);
|
||||
return path;
|
||||
}
|
||||
g_debug("Opening theme, file does not exists in dir where file is "
|
||||
"included: %s\n",
|
||||
filename);
|
||||
}
|
||||
}
|
||||
|
||||
// Check config's themes directory.
|
||||
const char *cpath = g_get_user_config_dir();
|
||||
if (cpath) {
|
||||
char *themep = g_build_filename(cpath, "rofi", "themes", filename, NULL);
|
||||
g_debug("Opening theme, testing: %s", themep);
|
||||
if (themep && g_file_test(themep, G_FILE_TEST_EXISTS)) {
|
||||
g_free(filename);
|
||||
return themep;
|
||||
}
|
||||
g_free(themep);
|
||||
}
|
||||
// Check config directory.
|
||||
if (cpath) {
|
||||
char *themep = g_build_filename(cpath, "rofi", filename, NULL);
|
||||
g_debug("Opening theme, testing: %s", themep);
|
||||
if (g_file_test(themep, G_FILE_TEST_EXISTS)) {
|
||||
g_free(filename);
|
||||
return themep;
|
||||
}
|
||||
g_free(themep);
|
||||
}
|
||||
const char *datadir = g_get_user_data_dir();
|
||||
if (datadir) {
|
||||
char *theme_path =
|
||||
g_build_filename(datadir, "rofi", "themes", filename, NULL);
|
||||
if (theme_path) {
|
||||
g_debug("Opening theme, testing: %s", theme_path);
|
||||
if (g_file_test(theme_path, G_FILE_TEST_EXISTS)) {
|
||||
g_free(filename);
|
||||
return theme_path;
|
||||
}
|
||||
g_free(theme_path);
|
||||
}
|
||||
}
|
||||
|
||||
const gchar *const *system_data_dirs = g_get_system_data_dirs();
|
||||
if (system_data_dirs) {
|
||||
for (uint_fast32_t i = 0; system_data_dirs[i] != NULL; i++) {
|
||||
const char *const sdatadir = system_data_dirs[i];
|
||||
g_debug("Opening theme directory: %s", sdatadir);
|
||||
char *theme_path =
|
||||
g_build_filename(sdatadir, "rofi", "themes", filename, NULL);
|
||||
if (theme_path) {
|
||||
g_debug("Opening theme, testing: %s", theme_path);
|
||||
if (g_file_test(theme_path, G_FILE_TEST_EXISTS)) {
|
||||
g_free(filename);
|
||||
return theme_path;
|
||||
}
|
||||
g_free(theme_path);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
char *theme_path = g_build_filename(THEME_DIR, filename, NULL);
|
||||
if (theme_path) {
|
||||
g_debug("Opening theme, testing: %s", theme_path);
|
||||
if (g_file_test(theme_path, G_FILE_TEST_EXISTS)) {
|
||||
g_free(filename);
|
||||
return theme_path;
|
||||
}
|
||||
g_free(theme_path);
|
||||
}
|
||||
return filename;
|
||||
}
|
||||
|
||||
|
|
|
@ -226,6 +226,8 @@ struct _DRunModePrivateData {
|
|||
char *old_completer_input;
|
||||
uint32_t selected_line;
|
||||
char *old_input;
|
||||
|
||||
gboolean disable_dbusactivate;
|
||||
};
|
||||
|
||||
struct RegexEvalArg {
|
||||
|
@ -396,9 +398,10 @@ static gboolean exec_dbus_entry(DRunModeEntry *e, const char *path) {
|
|||
&files, g_variant_new_take_string(g_file_get_uri(file)));
|
||||
g_object_unref(file);
|
||||
}
|
||||
// Wait 1500ms, otherwise assume failed.
|
||||
result = g_dbus_connection_call_sync(
|
||||
session, e->app_id, object_path, "org.freedesktop.Application", method,
|
||||
params, G_VARIANT_TYPE_UNIT, G_DBUS_CALL_FLAGS_NONE, -1, NULL, &error);
|
||||
params, G_VARIANT_TYPE_UNIT, G_DBUS_CALL_FLAGS_NONE, 1500, NULL, &error);
|
||||
|
||||
g_free(object_path);
|
||||
|
||||
|
@ -415,7 +418,8 @@ static gboolean exec_dbus_entry(DRunModeEntry *e, const char *path) {
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static void exec_cmd_entry(DRunModeEntry *e, const char *path) {
|
||||
static void exec_cmd_entry(DRunModePrivateData *pd, DRunModeEntry *e,
|
||||
const char *path) {
|
||||
GError *error = NULL;
|
||||
GRegex *reg = g_regex_new("%[a-zA-Z%]", 0, 0, &error);
|
||||
if (error != NULL) {
|
||||
|
@ -488,8 +492,12 @@ static void exec_cmd_entry(DRunModeEntry *e, const char *path) {
|
|||
* If its required to launch via dbus, do that.
|
||||
*/
|
||||
gboolean launched = FALSE;
|
||||
if (g_key_file_get_boolean(e->key_file, e->action, "DBusActivatable", NULL)) {
|
||||
launched = exec_dbus_entry(e, path);
|
||||
if (!(pd->disable_dbusactivate)) {
|
||||
if (g_key_file_get_boolean(e->key_file, e->action, "DBusActivatable",
|
||||
NULL)) {
|
||||
printf("DBus launch\n");
|
||||
launched = exec_dbus_entry(e, path);
|
||||
}
|
||||
}
|
||||
if (launched == FALSE) {
|
||||
/** Fallback to old style if not set. */
|
||||
|
@ -1167,6 +1175,11 @@ static void get_apps(DRunModePrivateData *pd) {
|
|||
}
|
||||
TICK_N("Get Desktop apps (system dirs)");
|
||||
}
|
||||
pd->disable_dbusactivate = FALSE;
|
||||
p = rofi_theme_find_property(wid, P_BOOLEAN, "DBusActivatable", TRUE);
|
||||
if (p != NULL && (p->type == P_BOOLEAN && p->value.b == FALSE)) {
|
||||
pd->disable_dbusactivate = TRUE;
|
||||
}
|
||||
get_apps_history(pd);
|
||||
|
||||
g_qsort_with_data(pd->entry_list, pd->cmd_list_length,
|
||||
|
@ -1300,7 +1313,7 @@ static ModeMode drun_mode_result(Mode *sw, int mretv, char **input,
|
|||
retv = mode_completer_result(rmpd->completer, mretv, input, selected_line,
|
||||
&path);
|
||||
if (retv == MODE_EXIT) {
|
||||
exec_cmd_entry(&(rmpd->entry_list[rmpd->selected_line]), path);
|
||||
exec_cmd_entry(rmpd, &(rmpd->entry_list[rmpd->selected_line]), path);
|
||||
}
|
||||
g_free(path);
|
||||
}
|
||||
|
@ -1310,7 +1323,7 @@ static ModeMode drun_mode_result(Mode *sw, int mretv, char **input,
|
|||
switch (rmpd->entry_list[selected_line].type) {
|
||||
case DRUN_DESKTOP_ENTRY_TYPE_SERVICE:
|
||||
case DRUN_DESKTOP_ENTRY_TYPE_APPLICATION:
|
||||
exec_cmd_entry(&(rmpd->entry_list[selected_line]), NULL);
|
||||
exec_cmd_entry(rmpd, &(rmpd->entry_list[selected_line]), NULL);
|
||||
break;
|
||||
case DRUN_DESKTOP_ENTRY_TYPE_LINK:
|
||||
launch_link_entry(&(rmpd->entry_list[selected_line]));
|
||||
|
|
|
@ -296,7 +296,7 @@ window_get_attributes(xcb_window_t w) {
|
|||
// _NET_WM_STATE_*
|
||||
static int client_has_state(client *c, xcb_atom_t state) {
|
||||
for (int i = 0; i < c->states; i++) {
|
||||
if ((c->state[i] & state) == state) {
|
||||
if (c->state[i] == state) {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,8 +10,6 @@ const char *const PropertyTypeName[P_NUM_TYPES] = {
|
|||
"Double",
|
||||
/** String */
|
||||
"String",
|
||||
/** Character */
|
||||
"Character",
|
||||
/** Boolean */
|
||||
"Boolean",
|
||||
/** Color */
|
||||
|
|
|
@ -823,6 +823,8 @@ static gboolean startup(G_GNUC_UNUSED gpointer data) {
|
|||
msg = realloc(msg, length * sizeof(char));
|
||||
}
|
||||
|
||||
msg[index] = 0;
|
||||
|
||||
if (!rofi_view_error_dialog(msg, markup)) {
|
||||
g_main_loop_quit(main_loop);
|
||||
}
|
||||
|
|
|
@ -250,10 +250,8 @@ void widget_draw(widget *wid, cairo_t *d) {
|
|||
cairo_restore(d);
|
||||
|
||||
if (left != 0 || top != 0 || right != 0 || bottom != 0) {
|
||||
// NOTE: Cairo group push/pop has same effect as cairo_save/cairo_restore,
|
||||
// thus no need for these.
|
||||
cairo_push_group(d);
|
||||
cairo_set_operator(d, CAIRO_OPERATOR_ADD);
|
||||
cairo_save(d);
|
||||
// cairo_set_operator(d, CAIRO_OPERATOR_ADD);
|
||||
cairo_translate(d, wid->x, wid->y);
|
||||
cairo_new_path(d);
|
||||
rofi_theme_get_color(wid, "border-color", d);
|
||||
|
@ -409,8 +407,7 @@ void widget_draw(widget *wid, cairo_t *d) {
|
|||
|
||||
cairo_fill(d);
|
||||
}
|
||||
cairo_pop_group_to_source(d);
|
||||
cairo_paint(d);
|
||||
cairo_restore(d);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -128,7 +128,7 @@ static XrmOption xrmOptions[] = {
|
|||
NULL,
|
||||
"Whether to load and show icons",
|
||||
CONFIG_DEFAULT},
|
||||
|
||||
|
||||
{xrm_String,
|
||||
"preview-cmd",
|
||||
{.str = &config.preview_cmd},
|
||||
|
@ -707,13 +707,14 @@ static gboolean __config_parser_set_property(XrmOption *option,
|
|||
*(option->value.num) = (p->value.b);
|
||||
option->source = (option->source & ~3) | CONFIG_FILE_THEME;
|
||||
} else if (option->type == xrm_Char) {
|
||||
if (p->type != P_CHAR) {
|
||||
*error = g_strdup_printf(
|
||||
"Option: %s needs to be set with a character not a %s.", option->name,
|
||||
PropertyTypeName[p->type]);
|
||||
|
||||
if (p->type != P_STRING) {
|
||||
*error =
|
||||
g_strdup_printf("Option: %s needs to be set with a string not a %s.",
|
||||
option->name, PropertyTypeName[p->type]);
|
||||
return TRUE;
|
||||
}
|
||||
*(option->value.charc) = (p->value.c);
|
||||
*(option->value.charc) = (p->value.s[0]);
|
||||
option->source = (option->source & ~3) | CONFIG_FILE_THEME;
|
||||
} else {
|
||||
// TODO add type
|
||||
|
|
262
themes/breaking-themes/2076.rasi
Normal file
262
themes/breaking-themes/2076.rasi
Normal file
|
@ -0,0 +1,262 @@
|
|||
/**
|
||||
* rofi -dump-theme output.
|
||||
* Rofi version: 1.7.7
|
||||
**/
|
||||
* {
|
||||
text-color: var(urgent-background);
|
||||
red: rgba ( 220, 50, 47, 100 % );
|
||||
selected-active-foreground: var(background);
|
||||
lightfg: rgba ( 88, 104, 117, 100 % );
|
||||
separatorcolor: var(foreground);
|
||||
urgent-foreground: rgba ( 255, 178, 186, 100 % );
|
||||
alternate-urgent-background: var(lightbg);
|
||||
lightbg: rgba ( 238, 232, 213, 100 % );
|
||||
background-color: var(active-background);
|
||||
border-color: var(foreground);
|
||||
normal-background: rgba ( 44, 21, 24, 100 % );
|
||||
selected-urgent-background: var(red);
|
||||
alternate-active-background: var(lightbg);
|
||||
spacing: 2;
|
||||
blue: rgba ( 38, 139, 210, 100 % );
|
||||
alternate-normal-foreground: var(foreground);
|
||||
urgent-background: rgba ( 44, 21, 24, 100 % );
|
||||
selected-normal-foreground: var(lightbg);
|
||||
active-foreground: rgba ( 255, 178, 186, 100 % );
|
||||
background: rgba ( 253, 246, 227, 100 % );
|
||||
font: "JetBrainsMono Bold 10";
|
||||
selected-active-background: var(blue);
|
||||
active-background: rgba ( 114, 51, 60, 100 % );
|
||||
selected-normal-background: var(lightfg);
|
||||
alternate-normal-background: var(lightbg);
|
||||
foreground: rgba ( 0, 43, 54, 100 % );
|
||||
selected-urgent-foreground: var(background);
|
||||
normal-foreground: rgba ( 255, 178, 186, 100 % );
|
||||
alternate-urgent-foreground: var(red);
|
||||
alternate-active-foreground: var(blue);
|
||||
}
|
||||
element {
|
||||
cursor: pointer;
|
||||
text-color: inherit;
|
||||
padding: 5px ;
|
||||
children: [ "element-icon","element-text" ];
|
||||
background-color: inherit;
|
||||
border-radius: 5px ;
|
||||
border-color: var(active-background);
|
||||
border: 5px ;
|
||||
spacing: 5px ;
|
||||
background: transparent;
|
||||
}
|
||||
element normal.normal {
|
||||
background-color: var(active-background);
|
||||
text-color: var(urgent-background);
|
||||
}
|
||||
element normal.urgent {
|
||||
background-color: var(active-background);
|
||||
text-color: var(urgent-background);
|
||||
}
|
||||
element normal.active {
|
||||
background-color: var(active-background);
|
||||
text-color: var(urgent-background);
|
||||
}
|
||||
element selected.normal {
|
||||
background-color: var(urgent-background);
|
||||
border-color: var(urgent-background);
|
||||
text-color: var(urgent-background);
|
||||
}
|
||||
element selected.urgent {
|
||||
background-color: var(urgent-background);
|
||||
border-color: var(urgent-background);
|
||||
text-color: var(urgent-background);
|
||||
}
|
||||
element selected.active {
|
||||
background-color: var(urgent-background);
|
||||
border-color: var(urgent-background);
|
||||
text-color: var(urgent-background);
|
||||
}
|
||||
element alternate.normal {
|
||||
background-color: var(active-background);
|
||||
text-color: var(urgent-background);
|
||||
}
|
||||
element alternate.urgent {
|
||||
background-color: var(active-background);
|
||||
text-color: var(urgent-background);
|
||||
}
|
||||
element alternate.active {
|
||||
background-color: var(active-background);
|
||||
text-color: var(urgent-background);
|
||||
}
|
||||
element-text {
|
||||
background-color: var(active-background);
|
||||
cursor: pointer;
|
||||
highlight: inherit;
|
||||
font: "JetBrains Mono Medium";
|
||||
text-color: White;
|
||||
}
|
||||
element-text selected.normal {
|
||||
background-color: var(urgent-background);
|
||||
border-color: var(urgent-background);
|
||||
font: "JetBrains Mono Medium";
|
||||
text-color: var(active-background);
|
||||
}
|
||||
element-text selected.urgent {
|
||||
background-color: var(urgent-background);
|
||||
border-color: var(urgent-background);
|
||||
font: "JetBrains Mono Medium";
|
||||
text-color: var(active-background);
|
||||
}
|
||||
element-text selected.active {
|
||||
background-color: var(urgent-background);
|
||||
border-color: var(urgent-background);
|
||||
font: "JetBrains Mono Medium";
|
||||
text-color: var(active-background);
|
||||
}
|
||||
element-icon {
|
||||
background-color: inherit;
|
||||
size: 1.0000em ;
|
||||
cursor: pointer;
|
||||
text-color: inherit;
|
||||
}
|
||||
window {
|
||||
padding: 1.0000em ;
|
||||
background-color: var(active-background);
|
||||
border-color: var(active-background);
|
||||
border: 5px ;
|
||||
border-radius: 10px ;
|
||||
}
|
||||
mainbox {
|
||||
padding: 0;
|
||||
spacing: 0px ;
|
||||
border: 0;
|
||||
children: [ "message","inputbar","listview" ];
|
||||
}
|
||||
message {
|
||||
enabled: true;
|
||||
text-color: inherit;
|
||||
padding: 0.5000em ;
|
||||
size: 400.0000em ;
|
||||
lines: 8;
|
||||
background-color: var(active-background);
|
||||
margin: 0px 100px ;
|
||||
border-color: var(active-background);
|
||||
border: 5px ;
|
||||
border-radius: 10px ;
|
||||
columns: 1;
|
||||
}
|
||||
textbox {
|
||||
text-color: inherit;
|
||||
markup: true;
|
||||
blink: true;
|
||||
size: 400.0000em ;
|
||||
background-color: inherit;
|
||||
placeholder-color: inherit;
|
||||
vertical-align: 0.50;
|
||||
horizontal-align: 0.50;
|
||||
font: "JetBrainsMono Bold 15";
|
||||
}
|
||||
listview {
|
||||
fixed-height: 0;
|
||||
padding: 0.5000em ;
|
||||
scrollbar: true;
|
||||
lines: 8;
|
||||
background-color: var(active-background);
|
||||
border-radius: 10px ;
|
||||
border-color: var(active-background);
|
||||
border: 0px 5px 5px ;
|
||||
spacing: 10px ;
|
||||
columns: 1;
|
||||
}
|
||||
scrollbar {
|
||||
width: 4px ;
|
||||
padding: 0;
|
||||
handle-width: 8px ;
|
||||
border: 0;
|
||||
handle-color: var(urgent-background);
|
||||
}
|
||||
sidebar {
|
||||
border-color: var(separatorcolor);
|
||||
border: 2px dash 0px 0px ;
|
||||
}
|
||||
button {
|
||||
cursor: pointer;
|
||||
text-color: var(urgent-background);
|
||||
background-color: var(active-background);
|
||||
border-radius: 10px 10px 0px 0px ;
|
||||
border-color: var(active-background);
|
||||
border: 0px 0px 5px ;
|
||||
horizontal-align: 0.50;
|
||||
spacing: 0;
|
||||
}
|
||||
button selected {
|
||||
background-color: var(selected-normal-background);
|
||||
text-color: var(selected-normal-foreground);
|
||||
}
|
||||
button selected.normal {
|
||||
padding: 0px ;
|
||||
margin: 0px ;
|
||||
background-color: var(active-foreground);
|
||||
border-color: var(active-background);
|
||||
text-color: var(urgent-background);
|
||||
border: 5px ;
|
||||
border-radius: 10px ;
|
||||
}
|
||||
num-filtered-rows {
|
||||
expand: false;
|
||||
text-color: Gray;
|
||||
}
|
||||
num-rows {
|
||||
expand: false;
|
||||
text-color: Gray;
|
||||
}
|
||||
textbox-num-sep {
|
||||
expand: false;
|
||||
str: "/";
|
||||
text-color: Gray;
|
||||
}
|
||||
inputbar {
|
||||
text-color: var(normal-foreground);
|
||||
padding: 1px ;
|
||||
children: [ "entry","overlay","case-indicator" ];
|
||||
margin: 0px 10px ;
|
||||
background-color: var(active-background);
|
||||
border-color: var(active-background);
|
||||
border: 5px ;
|
||||
spacing: 0.4000em ;
|
||||
}
|
||||
case-indicator {
|
||||
spacing: 0;
|
||||
text-color: var(normal-foreground);
|
||||
}
|
||||
entry {
|
||||
text-color: var(urgent-background);
|
||||
cursor: text;
|
||||
border: 10px ;
|
||||
background-color: var(active-foreground);
|
||||
border-radius: 2px ;
|
||||
border-color: var(active-foreground);
|
||||
placeholder-color: var(active-background);
|
||||
spacing: 0;
|
||||
placeholder: "Search here";
|
||||
}
|
||||
prompt {
|
||||
spacing: 0;
|
||||
text-color: var(normal-foreground);
|
||||
}
|
||||
textbox-prompt-colon {
|
||||
margin: 0px 0.3000em 0.0000em 0.0000em ;
|
||||
expand: false;
|
||||
str: ":";
|
||||
text-color: inherit;
|
||||
}
|
||||
error-message {
|
||||
padding: 12px ;
|
||||
background-color: inherit;
|
||||
border-color: inherit;
|
||||
border: 0px ;
|
||||
border-radius: 0px ;
|
||||
text-color: inherit;
|
||||
}
|
||||
mode-switcher {
|
||||
expand: true;
|
||||
spacing: 0px ;
|
||||
border: 0px ;
|
||||
}
|
1
themes/breaking-themes/readme.md
Normal file
1
themes/breaking-themes/readme.md
Normal file
|
@ -0,0 +1 @@
|
|||
Test themes that broke in the past.
|
|
@ -58,5 +58,5 @@
|
|||
selected-urgent-foreground: @urgent-foreground;
|
||||
}
|
||||
|
||||
@import "gruvbox-common.rasinc"
|
||||
@import "gruvbox-common"
|
||||
|
||||
|
|
|
@ -58,5 +58,5 @@
|
|||
selected-urgent-foreground: @urgent-foreground;
|
||||
}
|
||||
|
||||
@import "gruvbox-common.rasinc"
|
||||
@import "gruvbox-common"
|
||||
|
||||
|
|
|
@ -58,5 +58,5 @@
|
|||
selected-urgent-foreground: @urgent-foreground;
|
||||
}
|
||||
|
||||
@import "gruvbox-common.rasinc"
|
||||
@import "gruvbox-common"
|
||||
|
||||
|
|
|
@ -58,5 +58,5 @@
|
|||
selected-urgent-foreground: @urgent-foreground;
|
||||
}
|
||||
|
||||
@import "gruvbox-common.rasinc"
|
||||
@import "gruvbox-common"
|
||||
|
||||
|
|
|
@ -58,5 +58,5 @@
|
|||
selected-urgent-foreground: @urgent-foreground;
|
||||
}
|
||||
|
||||
@import "gruvbox-common.rasinc"
|
||||
@import "gruvbox-common"
|
||||
|
||||
|
|
|
@ -58,5 +58,5 @@
|
|||
selected-urgent-foreground: @urgent-foreground;
|
||||
}
|
||||
|
||||
@import "gruvbox-common.rasinc"
|
||||
@import "gruvbox-common"
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue