Compare commits
175 Commits
Author | SHA1 | Date | |
---|---|---|---|
ede969e9ce | |||
81e9d6ca1f | |||
c0c861372e | |||
![]() |
07955bf9b3 | ||
![]() |
9f458ad2e7 | ||
![]() |
5596ecaca4 | ||
![]() |
b5e1494fcc | ||
![]() |
4b41e4e8df | ||
![]() |
c873b37119 | ||
![]() |
709faac842 | ||
![]() |
54411627a9 | ||
![]() |
c645bdeab9 | ||
![]() |
b35f516556 | ||
![]() |
f0ccf4c186 | ||
![]() |
d948e33e68 | ||
![]() |
56fd08ed58 | ||
![]() |
a993ceadf4 | ||
![]() |
8b13ae350d | ||
![]() |
e70e3906cc | ||
![]() |
22a0e39b9b | ||
![]() |
a84f04a14b | ||
![]() |
3bec3fac59 | ||
![]() |
8639783f5f | ||
![]() |
5d77a9bb33 | ||
![]() |
47053f30d2 | ||
![]() |
183b0b5d75 | ||
![]() |
c609e5e085 | ||
![]() |
cebb0fd1a7 | ||
![]() |
32a0374fb1 | ||
![]() |
f2f22e7edc | ||
![]() |
88456b6adc | ||
![]() |
1942c527a8 | ||
![]() |
00b15de450 | ||
![]() |
995cd3c048 | ||
![]() |
f43d578264 | ||
![]() |
1c144cc901 | ||
![]() |
0c3cbd0cfb | ||
![]() |
3724b4dd31 | ||
![]() |
fb326c1b61 | ||
![]() |
e068ddbc01 | ||
![]() |
613bc5814c | ||
![]() |
bc67d8a8a6 | ||
![]() |
168b5d6381 | ||
![]() |
5870040256 | ||
![]() |
03a3a58d54 | ||
![]() |
369818666b | ||
![]() |
e22d8ff75f | ||
![]() |
42c384aec0 | ||
![]() |
8542b3ee7e | ||
![]() |
5b95abce92 | ||
![]() |
56fbb62bd3 | ||
![]() |
68a27ff317 | ||
![]() |
40a084949d | ||
![]() |
4cdca24995 | ||
![]() |
329a5dd6a5 | ||
![]() |
4287ff444a | ||
![]() |
b8932b36ce | ||
![]() |
829310b290 | ||
![]() |
53fd39b6ee | ||
![]() |
ff56b4b954 | ||
![]() |
6c1c029e98 | ||
![]() |
5df2d3a137 | ||
![]() |
60181710dc | ||
![]() |
5a016a3b17 | ||
![]() |
bbe85035c9 | ||
![]() |
5cf3d34ba4 | ||
![]() |
96df6d233e | ||
![]() |
3550af6d5b | ||
![]() |
fab79016fb | ||
![]() |
57c53bdc16 | ||
![]() |
085e5eaccd | ||
![]() |
c8d0bd3156 | ||
![]() |
3500cdb540 | ||
![]() |
3b1e483a6c | ||
![]() |
496101ac36 | ||
![]() |
de4e10a7de | ||
![]() |
de85539eb7 | ||
![]() |
e8ecd86bc0 | ||
![]() |
ec5c6fe7c8 | ||
![]() |
25c1adbb2a | ||
![]() |
d8e9a1981f | ||
![]() |
f9491690fd | ||
![]() |
39f231b5ff | ||
![]() |
b955b9aff9 | ||
![]() |
b5861f8626 | ||
![]() |
33a50843f7 | ||
![]() |
554c0d6d49 | ||
![]() |
ec6df03950 | ||
![]() |
7adea592a0 | ||
![]() |
54ebfa7484 | ||
![]() |
8b9afa39c8 | ||
![]() |
53a80627e7 | ||
![]() |
98924ddcb7 | ||
![]() |
151b91092e | ||
![]() |
0abd88784b | ||
![]() |
405f5231d8 | ||
![]() |
0a0cc5f6d7 | ||
![]() |
2baa809d8a | ||
![]() |
c38dc9a1d9 | ||
![]() |
08989ab4fc | ||
![]() |
9d785b5ce1 | ||
![]() |
df7d8b65f0 | ||
![]() |
142e78071c | ||
![]() |
186b0e7be0 | ||
![]() |
f15aae9bd6 | ||
![]() |
35a4af12ff | ||
![]() |
7402e451e2 | ||
![]() |
558ab34aa3 | ||
![]() |
21e57a6b7d | ||
![]() |
8eb8ff3b6f | ||
![]() |
8b612f08cf | ||
![]() |
8604addae2 | ||
![]() |
a7c03695c4 | ||
![]() |
8f06e0a370 | ||
![]() |
3b0f2b43f9 | ||
![]() |
d88b475bad | ||
![]() |
75ae2a41f0 | ||
![]() |
5133f50f30 | ||
![]() |
93ad86da10 | ||
![]() |
bd0ba45db8 | ||
![]() |
753cd1e9e1 | ||
![]() |
dee97eb540 | ||
![]() |
9580c4a191 | ||
![]() |
b04bedca44 | ||
![]() |
51dec9d65b | ||
![]() |
5b9939b287 | ||
![]() |
812ad0277f | ||
![]() |
9b6e70b365 | ||
![]() |
4f098751cd | ||
![]() |
6c38a49d54 | ||
![]() |
94f8c88336 | ||
![]() |
81e06d7157 | ||
![]() |
839ee0d7d9 | ||
![]() |
76154cc1ff | ||
![]() |
1063b6ec05 | ||
![]() |
04f16052a9 | ||
![]() |
9cae4a9b61 | ||
![]() |
af6fb83a51 | ||
![]() |
0bf0c51827 | ||
![]() |
47ae31eb5d | ||
![]() |
d8ba203f6e | ||
![]() |
1c41373f52 | ||
![]() |
32d229bb47 | ||
![]() |
433f9664e9 | ||
![]() |
3d29715e1e | ||
![]() |
be7c088eea | ||
![]() |
ccea31234a | ||
![]() |
8061e4e7c2 | ||
![]() |
37b8e9fb99 | ||
![]() |
217d6c46d4 | ||
![]() |
42d6bb9af4 | ||
![]() |
afc65ac125 | ||
![]() |
2a8380f260 | ||
![]() |
1d9819fe50 | ||
![]() |
ccb8385d93 | ||
![]() |
0cec298f91 | ||
![]() |
f2c0f75fd2 | ||
![]() |
ee1b68aea6 | ||
![]() |
eae65b2c07 | ||
![]() |
3a97e0cb91 | ||
![]() |
1c41c36488 | ||
![]() |
aa193c3be6 | ||
![]() |
b847cb35f1 | ||
![]() |
d53738170c | ||
![]() |
2ddef0f8ac | ||
![]() |
d2ad9fe828 | ||
![]() |
6c1a425d87 | ||
![]() |
54a2c45120 | ||
![]() |
cb6fd22118 | ||
![]() |
43790b3eda | ||
![]() |
2bbaa36b7a | ||
![]() |
058aac887f | ||
![]() |
2d35397195 | ||
![]() |
118e3a4df4 | ||
![]() |
83ecbfe127 |
@@ -2,6 +2,8 @@ image: ubuntu/lts
|
||||
packages:
|
||||
- meson
|
||||
- ninja-build
|
||||
- autoconf
|
||||
- automake
|
||||
- build-essential
|
||||
- libpango1.0-dev
|
||||
- libstartup-notification0-dev
|
||||
@@ -13,10 +15,14 @@ packages:
|
||||
- libxcb-xkb-dev
|
||||
- libxcb-xrm-dev
|
||||
- libxcb-cursor-dev
|
||||
- libxcb-imdkit-dev
|
||||
- libxcb-keysyms1
|
||||
- libxkbcommon-dev
|
||||
- libxkbcommon-dev
|
||||
- libxkbcommon-x11-dev
|
||||
- libgdk-pixbuf2.0-dev
|
||||
- ninja-build
|
||||
- pandoc
|
||||
- check
|
||||
- flex
|
||||
- bison
|
||||
@@ -38,4 +44,4 @@ tasks:
|
||||
- dist: |
|
||||
ninja -C rofi/builddir dist
|
||||
artifacts:
|
||||
- rofi/builddir/meson-dist/rofi-1.7.5-dev.tar.xz
|
||||
- rofi/builddir/meson-dist/rofi-1.7.8-dev.tar.xz
|
||||
|
12
.gitattributes
vendored
12
.gitattributes
vendored
@@ -1,9 +1,11 @@
|
||||
*gitignore export-ignore
|
||||
.build.yml export-ignore
|
||||
.gitattributes export-ignore
|
||||
.gitmodules export-ignore
|
||||
.gitlab-ci.yml export-ignore
|
||||
.travis.yml export-ignore
|
||||
.gitignore export-ignore
|
||||
.mailmap export-ignore
|
||||
.github export-ignore
|
||||
.gitlab-ci.yml export-ignore
|
||||
.gitmodules export-ignore
|
||||
.travis.yml export-ignore
|
||||
releasenotes export-ignore
|
||||
doc/*.png export-ignore
|
||||
doc/help-output.txt export-ignore
|
||||
@@ -12,5 +14,5 @@ doc/Notes export-ignore
|
||||
doc/old-theme-convert-output.rasi export-ignore
|
||||
doc/test_xr.txt export-ignore
|
||||
doc/create_screenshot.sh export-ignore
|
||||
doc/README.md export-ignore
|
||||
mkdocs export-ignore
|
||||
script/*.jpg export-ignore
|
||||
|
13
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
13
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -16,7 +16,7 @@ body:
|
||||
consider you’re wrong and still fill the full report. Any report
|
||||
missing required informations will be labeled as “Incomplete Report -
|
||||
Please follow the guidelines” and will be closed. If you ask a
|
||||
question, enter dummy information in required fields to get passed the
|
||||
question, enter dummy information in required fields to get past the
|
||||
checks or in general completely ignore the guidelines, the issue will
|
||||
be closed and locked as spam.
|
||||
|
||||
@@ -37,21 +37,26 @@ body:
|
||||
- type: input
|
||||
attributes:
|
||||
label: "Configuration"
|
||||
description: "Please use https://gist.github.com and include output of `rofi -dump-config`."
|
||||
description: |
|
||||
Please use https://gist.github.com and include output of `rofi -dump-config`.
|
||||
n/a is not a valid config.
|
||||
placeholder: "Gist URL"
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
attributes:
|
||||
label: "Theme"
|
||||
description: "Please use https://gist.github.com and include output of `rofi -dump-theme`."
|
||||
description: |
|
||||
Please use https://gist.github.com and include output of `rofi -dump-theme`.
|
||||
n/a is not a valid theme.
|
||||
placeholder: "Gist URL"
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
attributes:
|
||||
label: "Timing report"
|
||||
description: "Please use https://gist.github.com and include output of your command with G_MESSAGES_DEBUG=Timings set."
|
||||
description: |
|
||||
Please use https://gist.github.com and include output of your command with G_MESSAGES_DEBUG=Timings set.
|
||||
placeholder: "Gist URL"
|
||||
validations:
|
||||
required: false
|
||||
|
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
|
||||
|
6
.github/actions/release/action.yml
vendored
6
.github/actions/release/action.yml
vendored
@@ -8,14 +8,14 @@ runs:
|
||||
run: meson dist -C builddir --include-subprojects --formats xztar,gztar --no-tests
|
||||
shell: bash
|
||||
- id: upload
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: tarballs
|
||||
name: release_tarballs-${{ github.ref_name }}
|
||||
path: |
|
||||
builddir/meson-dist/*.tar.xz
|
||||
builddir/meson-dist/*.tar.gz
|
||||
- id: create_release
|
||||
uses: softprops/action-gh-release@v1
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
draft: true
|
||||
files: |
|
||||
|
2
.github/actions/setup/action.yml
vendored
2
.github/actions/setup/action.yml
vendored
@@ -32,7 +32,9 @@ runs:
|
||||
libxkbcommon-dev \
|
||||
libxkbcommon-dev \
|
||||
libxkbcommon-x11-dev \
|
||||
libgdk-pixbuf-2.0-dev \
|
||||
ninja-build \
|
||||
pandoc \
|
||||
python3-pip \
|
||||
python3-setuptools \
|
||||
python3-wheel \
|
||||
|
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@@ -51,7 +51,7 @@ jobs:
|
||||
build-meson-gcc-xcb:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
- uses: ./.github/actions/setup
|
||||
|
4
.github/workflows/codeql.yml
vendored
4
.github/workflows/codeql.yml
vendored
@@ -37,7 +37,7 @@ jobs:
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
uses: github/codeql-action/init@v3
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
@@ -52,6 +52,6 @@ jobs:
|
||||
cc: gcc
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
uses: github/codeql-action/analyze@v3
|
||||
with:
|
||||
category: "/language:${{matrix.language}}"
|
||||
|
12
CONFIG.md
12
CONFIG.md
@@ -20,6 +20,7 @@ configuration {
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
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";*/
|
||||
@@ -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
|
||||
|
2
COPYING
2
COPYING
@@ -1,5 +1,5 @@
|
||||
MIT/X11 License
|
||||
Modified 2013-2023 Qball Cow <qball@gmpclient.org>
|
||||
Modified 2013-2024 Qball Cow <qball@gmpclient.org>
|
||||
Copyright (c) 2012 Sean Pringle <sean.pringle@gmail.com>
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
|
@@ -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
|
||||
|
@@ -1,16 +1,13 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if [ "$*" = "quit" ]
|
||||
then
|
||||
if [ "$*" = "quit" ]; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ "$@" ]
|
||||
then
|
||||
if [ "$@" ]; then
|
||||
# Override the previously set prompt.
|
||||
echo -en "\x00prompt\x1fChange prompt\n"
|
||||
for a in {1..10}
|
||||
do
|
||||
for a in {1..10}; do
|
||||
echo "$a"
|
||||
done
|
||||
echo "quit"
|
||||
@@ -25,7 +22,7 @@ else
|
||||
echo -en "blob\0icon\x1ffolder\x1fdisplay\x1fblub\n"
|
||||
echo "noot"
|
||||
echo "mies"
|
||||
echo -en "-------------\0nonselectable\x1ftrue\n"
|
||||
echo -en "-------------\0nonselectable\x1ftrue\x1fpermanent\x1ftrue\n"
|
||||
echo "testing"
|
||||
echo "<b>Bold</b>"
|
||||
echo "quit"
|
||||
|
@@ -42,7 +42,7 @@ You can also use [Meson](https://mesonbuild.com/) as an alternative.
|
||||
|
||||
- libcairo-xcb
|
||||
|
||||
- libglib2.0 >= 2.68
|
||||
- libglib2.0 >= 2.72
|
||||
- gmodule-2.0
|
||||
- gio-unix-2.0
|
||||
|
||||
@@ -140,7 +140,7 @@ The GitHub Pages version of these directions may be out of date. Please use
|
||||
If you don't have a checkout:
|
||||
|
||||
```bash
|
||||
git clone --recursive https://github.com/DaveDavenport/rofi
|
||||
git clone --recursive https://github.com/lbonn/rofi
|
||||
cd rofi/
|
||||
```
|
||||
|
||||
@@ -270,7 +270,7 @@ https://pkgs.alpinelinux.org/packages?name=rofi-wayland
|
||||
|
||||
### ArchLinux
|
||||
|
||||
https://aur.archlinux.org/packages/rofi-lbonn-wayland-git/
|
||||
https://archlinux.org/packages/extra/x86_64/rofi-wayland
|
||||
|
||||
### Fedora
|
||||
|
||||
|
67
Makefile.am
67
Makefile.am
@@ -172,22 +172,61 @@ rofi_LDADD=\
|
||||
$(LIBS)
|
||||
|
||||
##
|
||||
# Manpage
|
||||
# Manpages
|
||||
##
|
||||
|
||||
.PHONY: generate-manpage
|
||||
|
||||
if FOUND_PANDOC
|
||||
|
||||
generate-manpage: doc/rofi.1\
|
||||
doc/rofi-sensible-terminal.1\
|
||||
doc/rofi-theme-selector.1\
|
||||
doc/rofi-actions.5\
|
||||
doc/rofi-debugging.5\
|
||||
doc/rofi-dmenu.5\
|
||||
doc/rofi-keys.5\
|
||||
doc/rofi-script.5\
|
||||
doc/rofi-theme.5 \
|
||||
doc/rofi-thumbnails.5
|
||||
|
||||
doc/rofi.1: doc/rofi.1.markdown
|
||||
pandoc --standalone --to=man --lua-filter=$(top_srcdir)/doc/man_filter.lua -f markdown-tex_math_dollars -o ./$@ ./$<
|
||||
doc/rofi-sensible-terminal.1: doc/rofi-sensible-terminal.1.markdown
|
||||
pandoc --standalone --to=man --lua-filter=$(top_srcdir)/doc/man_filter.lua -f markdown-tex_math_dollars -o ./$@ ./$<
|
||||
doc/rofi-theme-selector.1: doc/rofi-theme-selector.1.markdown
|
||||
pandoc --standalone --to=man --lua-filter=$(top_srcdir)/doc/man_filter.lua -f markdown-tex_math_dollars -o ./$@ ./$<
|
||||
doc/rofi-debugging.5: doc/rofi-debugging.5.markdown
|
||||
pandoc --standalone --to=man --lua-filter=$(top_srcdir)/doc/man_filter.lua -f markdown-tex_math_dollars -o ./$@ ./$<
|
||||
doc/rofi-dmenu.5: doc/rofi-dmenu.5.markdown
|
||||
pandoc --standalone --to=man --lua-filter=$(top_srcdir)/doc/man_filter.lua -f markdown-tex_math_dollars -o ./$@ ./$<
|
||||
doc/rofi-keys.5: doc/rofi-keys.5.markdown
|
||||
pandoc --standalone --to=man --lua-filter=$(top_srcdir)/doc/man_filter.lua -f markdown-tex_math_dollars -o ./$@ ./$<
|
||||
doc/rofi-script.5: doc/rofi-script.5.markdown
|
||||
pandoc --standalone --to=man --lua-filter=$(top_srcdir)/doc/man_filter.lua -f markdown-tex_math_dollars -o ./$@ ./$<
|
||||
doc/rofi-theme.5: doc/rofi-theme.5.markdown
|
||||
pandoc --standalone --to=man --lua-filter=$(top_srcdir)/doc/man_filter.lua -f markdown-tex_math_dollars -o ./$@ ./$<
|
||||
doc/rofi-thumbnails.5: doc/rofi-thumbnails.5.markdown
|
||||
pandoc --standalone --to=man --lua-filter=$(top_srcdir)/doc/man_filter.lua -f markdown-tex_math_dollars -o ./$@ ./$<
|
||||
|
||||
endif
|
||||
|
||||
dist_man1_MANS=\
|
||||
doc/rofi.1\
|
||||
doc/rofi-theme-selector.1\
|
||||
doc/rofi-sensible-terminal.1
|
||||
doc/rofi-sensible-terminal.1\
|
||||
doc/rofi-theme-selector.1
|
||||
|
||||
dist_man5_MANS=\
|
||||
doc/rofi-theme.5\
|
||||
doc/rofi-debugging.5\
|
||||
doc/rofi-keys.5\
|
||||
doc/rofi-dmenu.5\
|
||||
doc/rofi-script.5
|
||||
doc/rofi-keys.5\
|
||||
doc/rofi-script.5\
|
||||
doc/rofi-theme.5\
|
||||
doc/rofi-thumbnails.5
|
||||
|
||||
EXTRA_DIST += \
|
||||
doc/rofi-theme.5.markdown \
|
||||
doc/rofi-thumbnails.5.markdown \
|
||||
doc/rofi-debugging.5.markdown \
|
||||
doc/rofi-script.5.markdown \
|
||||
doc/rofi-keys.5.markdown \
|
||||
@@ -254,19 +293,7 @@ EXTRA_DIST+=\
|
||||
doc/default_configuration.rasi\
|
||||
doc/default_theme.rasi\
|
||||
Changelog
|
||||
##
|
||||
# Indent
|
||||
##
|
||||
|
||||
update-manpage: $(top_srcdir)/doc/rofi-theme-selector.1.markdown $(top_srcdir)/doc/rofi.1.markdown $(top_srcdir)/doc/rofi-theme.5.markdown $(top_srcdir)/doc/rofi-script.5.markdown ${top_srcdir}/doc/rofi-sensible-terminal.1.markdown ${top_srcdir}/doc/rofi-keys.5.markdown ${top_srcdir}/doc/rofi-dmenu.5.markdown $(top_srcdir)/doc/rofi-debugging.5.markdown
|
||||
go-md2man -in $(top_srcdir)/doc/rofi.1.markdown -out $(top_srcdir)/doc/rofi.1
|
||||
go-md2man -in $(top_srcdir)/doc/rofi-theme-selector.1.markdown -out $(top_srcdir)/doc/rofi-theme-selector.1
|
||||
go-md2man -in $(top_srcdir)/doc/rofi-theme.5.markdown -out $(top_srcdir)/doc/rofi-theme.5
|
||||
go-md2man -in $(top_srcdir)/doc/rofi-debugging.5.markdown -out $(top_srcdir)/doc/rofi-debugging.5
|
||||
go-md2man -in $(top_srcdir)/doc/rofi-keys.5.markdown -out $(top_srcdir)/doc/rofi-keys.5
|
||||
go-md2man -in $(top_srcdir)/doc/rofi-script.5.markdown -out $(top_srcdir)/doc/rofi-script.5
|
||||
go-md2man -in $(top_srcdir)/doc/rofi-dmenu.5.markdown -out $(top_srcdir)/doc/rofi-dmenu.5
|
||||
go-md2man -in $(top_srcdir)/doc/rofi-sensible-terminal.1.markdown -out $(top_srcdir)/doc/rofi-sensible-terminal.1
|
||||
|
||||
##
|
||||
# Rofi test program
|
||||
@@ -647,6 +674,7 @@ desktop_DATA=\
|
||||
data/rofi-theme-selector.desktop
|
||||
|
||||
EXTRA_DIST += \
|
||||
doc/man_filter.lua \
|
||||
doc/meson.build \
|
||||
subprojects/libgwater/mpd/meson.build \
|
||||
subprojects/libgwater/nl/meson.build \
|
||||
@@ -656,6 +684,8 @@ EXTRA_DIST += \
|
||||
subprojects/libgwater/wayland-server/meson.build \
|
||||
subprojects/libgwater/meson.build \
|
||||
subprojects/libgwater/win/meson.build \
|
||||
subprojects/libnkutils/bindings/meson.build \
|
||||
subprojects/libnkutils/core/meson.build \
|
||||
subprojects/libnkutils/meson.build \
|
||||
subprojects/libnkutils/meson_options.txt \
|
||||
subprojects/libgwater/wayland/libgwater-wayland.h \
|
||||
@@ -669,6 +699,7 @@ EXTRA_DIST += \
|
||||
subprojects/libgwater/alsa-mixer/libgwater-alsa-mixer.h \
|
||||
subprojects/libgwater/alsa-mixer/libgwater-alsa-mixer.c \
|
||||
data/rofi.png\
|
||||
meson-dist-script \
|
||||
meson_options.txt \
|
||||
meson.build
|
||||
|
||||
|
@@ -10,7 +10,7 @@
|
||||
<h1 align="center"> Rofi </h1>
|
||||
<p align="center"><i>A window switcher, Application launcher and dmenu replacement</i>.</p>
|
||||
|
||||
https://user-images.githubusercontent.com/84911063/139428874-fe182dd6-82c6-49b8-8da1-920ddda3d1ed.mp4
|
||||
<https://user-images.githubusercontent.com/84911063/139428874-fe182dd6-82c6-49b8-8da1-920ddda3d1ed.mp4>
|
||||
|
||||
**This is a fork of [Rofi](https://github.com/davatorium/rofi) with added support for Wayland via the [layer shell protocol](https://github.com/swaywm/wlr-protocols).**
|
||||
**For more information, see the [Wayland support section](#wayland-support)**
|
||||
@@ -171,6 +171,7 @@ For more up to date information, please see the manpages. The other sections and
|
||||
- [rofi-debugging](doc/rofi-debugging.5.markdown)
|
||||
- [rofi-script](doc/rofi-script.5.markdown)
|
||||
- [rofi-theme-selector](doc/rofi-theme-selector.1.markdown)
|
||||
- [rofi-thumbnails](doc/rofi-thumbnails.5.markdown)
|
||||
- [rofi-keys](doc/rofi-keys.5.markdown)
|
||||
- [rofi-dmenu](doc/rofi-dmenu.5.markdown)
|
||||
|
||||
|
@@ -46,6 +46,21 @@ Settings config = {
|
||||
/** Whether to load and show icons */
|
||||
.show_icons = FALSE,
|
||||
|
||||
/** Custom command to generate preview icons */
|
||||
.preview_cmd = NULL,
|
||||
|
||||
/** Custom command to call when menu selection changes */
|
||||
.on_selection_changed = NULL,
|
||||
/** Custom command to call when menu mode changes */
|
||||
.on_mode_changed = NULL,
|
||||
/** Custom command to call when menu entry is accepted */
|
||||
.on_entry_accepted = NULL,
|
||||
/** Custom command to call when menu is canceled */
|
||||
.on_menu_canceled = NULL,
|
||||
/** Custom command to call when menu finds errors */
|
||||
.on_menu_error = NULL,
|
||||
/** Custom command to call when menu screenshot is taken */
|
||||
.on_screenshot_taken = NULL,
|
||||
/** Terminal to use. (for ssh and open in terminal) */
|
||||
.terminal_emulator = "rofi-sensible-terminal",
|
||||
.ssh_client = "ssh",
|
||||
@@ -89,6 +104,8 @@ Settings config = {
|
||||
.sorting_method = "normal",
|
||||
/** Case sensitivity of the search */
|
||||
.case_sensitive = FALSE,
|
||||
/** Case smart of the search */
|
||||
.case_smart = FALSE,
|
||||
/** Cycle through in the element list */
|
||||
.cycle = TRUE,
|
||||
/** Height of an element in #chars */
|
||||
@@ -111,6 +128,8 @@ Settings config = {
|
||||
.drun_match_fields = "name,generic,exec,categories,keywords",
|
||||
/** Only show entries in this category */
|
||||
.drun_categories = NULL,
|
||||
/** Exclude entries in this category */
|
||||
.drun_exclude_categories = NULL,
|
||||
/** Desktop entry show actions */
|
||||
.drun_show_actions = FALSE,
|
||||
/** Desktop format display */
|
||||
@@ -130,6 +149,7 @@ Settings config = {
|
||||
.scroll_method = 0,
|
||||
.window_format = "{w} {c} {t}",
|
||||
.click_to_exit = TRUE,
|
||||
.global_kb = FALSE,
|
||||
.theme = NULL,
|
||||
.plugin_path = PLUGIN_PATH,
|
||||
.max_history_size = 25,
|
||||
@@ -159,5 +179,7 @@ Settings config = {
|
||||
/** workaround for broken xserver (#300 on xserver, #611) */
|
||||
.xserver_i300_workaround = FALSE,
|
||||
/** What browser to use for completion */
|
||||
.completer_mode = "recursivebrowser",
|
||||
.completer_mode = "filebrowser",
|
||||
/** Whether to enable imdkit, see #2123 */
|
||||
.enable_imdkit = TRUE,
|
||||
};
|
||||
|
20
configure.ac
20
configure.ac
@@ -1,4 +1,4 @@
|
||||
AC_INIT([rofi], [1.7.5-dev], [https://github.com/davatorium/rofi/],[],[https://github.com/davatorium/rofi/discussions])
|
||||
AC_INIT([rofi], [1.7.9], [https://github.com/davatorium/rofi/],[],[https://github.com/davatorium/rofi/discussions])
|
||||
|
||||
AC_CONFIG_SRCDIR([source/rofi.c])
|
||||
AC_CONFIG_HEADER([config.h])
|
||||
@@ -74,7 +74,7 @@ AM_PROG_AR
|
||||
dnl ---------------------------------------------------------------------
|
||||
dnl Base CFLAGS
|
||||
dnl ---------------------------------------------------------------------
|
||||
AM_CFLAGS="-Wall -Wextra -Wparentheses -Winline -pedantic -Wno-overlength-strings -Wunreachable-code"
|
||||
AM_CFLAGS="-Wall -Wextra -Wparentheses -Wno-inline -pedantic -Wno-overlength-strings -Wunreachable-code"
|
||||
|
||||
dnl ---------------------------------------------------------------------
|
||||
dnl Enable source code coverage reporting for GCC
|
||||
@@ -139,13 +139,13 @@ dnl ---------------------------------------------------------------------
|
||||
dnl PKG_CONFIG based dependencies
|
||||
dnl ---------------------------------------------------------------------
|
||||
glib_min_major="2"
|
||||
glib_min_minor="40"
|
||||
glib_min_minor="72"
|
||||
glib_min_version="${glib_min_major}.${glib_min_minor}"
|
||||
NK_INIT([bindings xdg-theme])
|
||||
PKG_CHECK_MODULES([glib], [glib-2.0 >= ${glib_min_version} gio-unix-2.0 gmodule-2.0])
|
||||
AC_DEFINE_UNQUOTED([GLIB_VERSION_MIN_REQUIRED], [(G_ENCODE_VERSION(${glib_min_major},${glib_min_minor}))], [The lower GLib version supported])
|
||||
AC_DEFINE_UNQUOTED([GLIB_VERSION_MAX_ALLOWED], [(G_ENCODE_VERSION(${glib_min_major},${glib_min_minor}))], [The highest GLib version supported])
|
||||
GW_CHECK_XCB([xcb-aux xcb-xkb xkbcommon xkbcommon-x11 xcb-ewmh xcb-icccm xcb-cursor xcb-randr xcb-xinerama ])
|
||||
GW_CHECK_XCB([xcb-aux xcb-xkb xkbcommon xkbcommon-x11 xcb-ewmh xcb-icccm xcb-cursor xcb-randr xcb-xinerama xcb-keysyms ])
|
||||
|
||||
|
||||
AC_ARG_ENABLE([imdkit], AS_HELP_STRING([--enable-imdkit], [Build with checks using check library (default: disabled)]))
|
||||
@@ -169,6 +169,13 @@ AC_ARG_ENABLE([check], AS_HELP_STRING([--disable-check], [Build with checks usin
|
||||
AS_IF([test "x${enable_check}" != "xno"], [ PKG_CHECK_MODULES([check],[check >= 0.11.0], [HAVE_CHECK=1]) ])
|
||||
AM_CONDITIONAL([USE_CHECK], [test "x${enable_check}" != "xno" && test "$HAVE_CHECK" -eq 1])
|
||||
|
||||
dnl ---------------------------------------------------------------------
|
||||
dnl Build man pages
|
||||
dnl ---------------------------------------------------------------------
|
||||
AC_ARG_ENABLE([man], AS_HELP_STRING([--disable-man], [Build man pages (default: enabled)]))
|
||||
|
||||
AS_IF([test "x$enable_man" != "xno" ], [ AC_CHECK_PROG([pandoc], pandoc, [yes])])
|
||||
AM_CONDITIONAL([FOUND_PANDOC], [test "x$pandoc" = xyes])
|
||||
|
||||
dnl ---------------------------------------------------------------------
|
||||
dnl Gets the resource compile tool path.
|
||||
@@ -210,6 +217,11 @@ echo "Check based tests Enabled"
|
||||
else
|
||||
echo "Check based tests Disabled"
|
||||
fi
|
||||
if test "x${enable_man}" != "xno" && test "x$pandoc" = "xyes"; then
|
||||
echo "Build man pages Enabled"
|
||||
else
|
||||
echo "Build man pages Disabled"
|
||||
fi
|
||||
echo "-------------------------------------"
|
||||
echo "Now type 'make' to build"
|
||||
echo ""
|
||||
|
44
default.nix
Normal file
44
default.nix
Normal file
@@ -0,0 +1,44 @@
|
||||
{ pkgs ? import <nixpkgs> {} }:
|
||||
with pkgs;
|
||||
stdenv.mkDerivation {
|
||||
pname = "rofi";
|
||||
version = "1.7.5-unstable";
|
||||
src = ./.;
|
||||
|
||||
depsBuildBuild = [
|
||||
buildPackages.stdenv.cc
|
||||
pkg-config
|
||||
glib
|
||||
];
|
||||
nativeBuildInputs = [
|
||||
meson
|
||||
ninja
|
||||
pkg-config
|
||||
flex
|
||||
bison
|
||||
pandoc
|
||||
wayland-protocols
|
||||
wayland-scanner
|
||||
];
|
||||
buildInputs = [
|
||||
libxkbcommon
|
||||
pango
|
||||
cairo
|
||||
git
|
||||
librsvg
|
||||
check
|
||||
libstartup_notification
|
||||
xorg.libxcb
|
||||
xcb-imdkit
|
||||
xcb-util-cursor
|
||||
xorg.xcbutilkeysyms
|
||||
xorg.xcbutil
|
||||
xorg.xcbutilwm
|
||||
xcbutilxrm
|
||||
wayland
|
||||
wayland-protocols
|
||||
which
|
||||
];
|
||||
|
||||
mesonFlags = [ "-Dimdkit=true" ];
|
||||
}
|
@@ -1,7 +1,7 @@
|
||||
Manpages are build using [go-md2man](https://github.com/cpuguy83/go-md2man)
|
||||
Manpages are build using [pandoc](https://pandoc.org/)
|
||||
|
||||
Manpages can be updated using the following make command:
|
||||
|
||||
```
|
||||
make update-manpage
|
||||
make generate-manpage
|
||||
```
|
||||
|
@@ -144,7 +144,14 @@ inputbar {
|
||||
padding: 1px;
|
||||
spacing: 0px;
|
||||
text-color: var(normal-foreground);
|
||||
children: [ prompt,textbox-prompt-colon,entry, num-filtered-rows, textbox-num-sep, num-rows, case-indicator ];
|
||||
children: [ prompt,textbox-prompt-colon,entry, overlay,num-filtered-rows, textbox-num-sep, num-rows, case-indicator ];
|
||||
}
|
||||
overlay {
|
||||
background-color: var(normal-foreground);
|
||||
foreground-color: var(normal-background);
|
||||
text-color: var(normal-background);
|
||||
padding: 0 0.2em;
|
||||
margin: 0 0.2em;
|
||||
}
|
||||
case-indicator {
|
||||
spacing: 0;
|
||||
|
237
doc/man_filter.lua
Normal file
237
doc/man_filter.lua
Normal file
@@ -0,0 +1,237 @@
|
||||
local Def = {}
|
||||
|
||||
function Def:new(d)
|
||||
-- init with empty def
|
||||
if d == nil then
|
||||
d = {
|
||||
start_idx = nil,
|
||||
end_idx = nil,
|
||||
def_par = nil,
|
||||
content = {},
|
||||
}
|
||||
end
|
||||
setmetatable(d, self)
|
||||
self.__index = self
|
||||
return d
|
||||
end
|
||||
|
||||
function Def:init(start_idx, el)
|
||||
self.start_idx = start_idx
|
||||
self.def_par = el
|
||||
end
|
||||
|
||||
function Def:append(el)
|
||||
if self.start_idx ~= nil then
|
||||
table.insert(self.content, el)
|
||||
end
|
||||
end
|
||||
|
||||
function Def:stop(end_idx)
|
||||
if self.start_idx == nil then
|
||||
return nil
|
||||
end
|
||||
local out = self:new({
|
||||
start_idx = self.start_idx,
|
||||
end_idx = end_idx,
|
||||
def_par = self.def_par,
|
||||
content = self.content,
|
||||
})
|
||||
self.start_idx = nil
|
||||
self.end_idx = nil
|
||||
self.def_par = nil
|
||||
self.content = {}
|
||||
return out
|
||||
end
|
||||
|
||||
function Def:to_string()
|
||||
return string.format("start: %d, end: %d, def_par: %s", self.start_idx, self.end_idx, self.def_par)
|
||||
end
|
||||
|
||||
function find_defs(doc)
|
||||
local defs = {}
|
||||
local idx = 0
|
||||
local def = Def:new()
|
||||
|
||||
-- find defintions:
|
||||
-- * start at paragraphs with `word` ...
|
||||
-- * stop at next definition or next header
|
||||
local filter = {
|
||||
traverse = "topdown",
|
||||
Para = function(el)
|
||||
idx = idx + 1
|
||||
|
||||
local new_def_start = #el.content >= 1 and el.content[1].tag == "Code"
|
||||
|
||||
if new_def_start then
|
||||
local newd = def:stop(idx - 1)
|
||||
table.insert(defs, newd)
|
||||
|
||||
def:init(idx, el.content)
|
||||
else
|
||||
def:append(el)
|
||||
end
|
||||
return nil, false
|
||||
end,
|
||||
Block = function(el)
|
||||
idx = idx + 1
|
||||
def:append(el)
|
||||
-- stop exploring after one nesting level
|
||||
return nil, false
|
||||
end,
|
||||
Header = function(el)
|
||||
idx = idx + 1
|
||||
local newd = def:stop(idx - 1)
|
||||
table.insert(defs, newd)
|
||||
return nil, false
|
||||
end,
|
||||
}
|
||||
|
||||
doc:walk(filter)
|
||||
local newd = def:stop(idx - 1)
|
||||
table.insert(defs, newd)
|
||||
|
||||
return defs
|
||||
end
|
||||
|
||||
function convert_defs(doc, defs)
|
||||
local idx = 0
|
||||
local out_blocks = {}
|
||||
|
||||
local convert_defs = {
|
||||
traverse = "topdown",
|
||||
Block = function(el)
|
||||
idx = idx + 1
|
||||
for _, d in ipairs(defs) do
|
||||
if idx == d.end_idx then
|
||||
local dl = pandoc.DefinitionList({ { d.def_par, { d.content } } })
|
||||
table.insert(out_blocks, dl:walk())
|
||||
return {}, false
|
||||
end
|
||||
if idx >= d.start_idx and idx < d.end_idx then
|
||||
-- drop
|
||||
return {}, false
|
||||
end
|
||||
end
|
||||
table.insert(out_blocks, el:walk())
|
||||
return nil, false
|
||||
end,
|
||||
}
|
||||
|
||||
doc:walk(convert_defs)
|
||||
|
||||
return pandoc.Pandoc(out_blocks, doc.meta)
|
||||
end
|
||||
|
||||
-- for <2.17 compatibility
|
||||
-- equivalent to `doc:walk(filter)`
|
||||
local function walk_doc(doc, filter)
|
||||
local div = pandoc.Div(doc.blocks)
|
||||
local blocks = pandoc.walk_block(div, filter).content
|
||||
return pandoc.Pandoc(blocks, doc.meta)
|
||||
end
|
||||
|
||||
local function extract_title(doc)
|
||||
local title = {}
|
||||
local section
|
||||
local filter = {
|
||||
Header = function(el)
|
||||
local f = {
|
||||
Str = function(el)
|
||||
if el.text:find("%(1%)") ~= nil then
|
||||
section = "General Commands Manual"
|
||||
elseif el.text:find("%(5%)") ~= nil then
|
||||
section = "File Formats Manual"
|
||||
end
|
||||
table.insert(title, el)
|
||||
end,
|
||||
Inline = function(el)
|
||||
table.insert(title, el)
|
||||
end,
|
||||
}
|
||||
if el.level == 1 then
|
||||
pandoc.walk_block(el, f)
|
||||
return {} -- drop
|
||||
end
|
||||
return nil
|
||||
end,
|
||||
}
|
||||
|
||||
doc = walk_doc(doc, filter)
|
||||
|
||||
local to_inline = function(s)
|
||||
local r = {}
|
||||
for w in s:gmatch("%S+") do
|
||||
table.insert(r, pandoc.Str(w))
|
||||
table.insert(r, pandoc.Space())
|
||||
end
|
||||
table.remove(r, #r)
|
||||
return r
|
||||
end
|
||||
|
||||
if section ~= nil then
|
||||
for _, e in ipairs({
|
||||
pandoc.Space(),
|
||||
pandoc.Str("rofi"),
|
||||
pandoc.Space(),
|
||||
pandoc.Str("|"),
|
||||
table.unpack(to_inline(section)),
|
||||
}) do
|
||||
table.insert(title, e)
|
||||
end
|
||||
end
|
||||
|
||||
doc.meta = pandoc.Meta({
|
||||
title = pandoc.MetaInlines(title),
|
||||
})
|
||||
|
||||
return doc
|
||||
end
|
||||
|
||||
local function decrement_heading(doc)
|
||||
local filter = {
|
||||
Header = function(el)
|
||||
if el.level > 1 then
|
||||
el.level = el.level - 1
|
||||
return el
|
||||
end
|
||||
return nil
|
||||
end,
|
||||
}
|
||||
|
||||
doc = walk_doc(doc, filter)
|
||||
return doc
|
||||
end
|
||||
|
||||
local function code_in_strong(doc)
|
||||
local filter = {
|
||||
Code = function(el)
|
||||
return pandoc.Strong(el.text)
|
||||
end,
|
||||
}
|
||||
|
||||
doc = walk_doc(doc, filter)
|
||||
return doc
|
||||
end
|
||||
|
||||
--- Run filtering function through whole document
|
||||
--
|
||||
-- * find argument definitions: paragraph starting with inline code (`-arg`)
|
||||
-- * replace the paragraphs until the end of the definition with a DefinitionList
|
||||
-- * extract metadata title from main heading
|
||||
-- * decrement heading from 1 for better display
|
||||
-- * convert inline code text to Strong as usual in man pages
|
||||
function Pandoc(doc)
|
||||
if PANDOC_VERSION >= pandoc.types.Version("2.17.0") then
|
||||
-- 2.17 is required for topdown traversal
|
||||
local defs = find_defs(doc)
|
||||
doc = convert_defs(doc, defs)
|
||||
end
|
||||
|
||||
doc = extract_title(doc)
|
||||
|
||||
doc = decrement_heading(doc)
|
||||
|
||||
doc = code_in_strong(doc)
|
||||
|
||||
return doc
|
||||
end
|
@@ -1,32 +1,61 @@
|
||||
gomd2man = find_program('go-md2man', required: false)
|
||||
if gomd2man.found()
|
||||
man_targets = []
|
||||
foreach f: [
|
||||
man_files = [
|
||||
'rofi.1',
|
||||
'rofi-sensible-terminal.1',
|
||||
'rofi-theme-selector.1',
|
||||
'rofi-theme.5',
|
||||
'rofi-dmenu.5',
|
||||
'rofi-actions.5',
|
||||
'rofi-debugging.5',
|
||||
'rofi-dmenu.5',
|
||||
'rofi-keys.5',
|
||||
'rofi-script.5',
|
||||
'rofi-sensible-terminal.1'
|
||||
'rofi-theme.5',
|
||||
'rofi-thumbnails.5',
|
||||
]
|
||||
|
||||
fs = import('fs')
|
||||
|
||||
pandoc = find_program('pandoc', required: false, version: '>=2.9')
|
||||
|
||||
if pandoc.found()
|
||||
man_targets = []
|
||||
cp_cmds = []
|
||||
foreach f: man_files
|
||||
section_number = f.split('.')[1]
|
||||
install_dest = join_paths(get_option('prefix'), get_option('mandir'), 'man' + section_number)
|
||||
|
||||
man_targets += custom_target(f,
|
||||
input: '.'.join([f, 'markdown']),
|
||||
input: ['.'.join([f, 'markdown']), 'man_filter.lua'],
|
||||
output: f,
|
||||
command: [ 'go-md2man',
|
||||
'-in', files('.'.join([f,'markdown'])),
|
||||
'-out', files(f)
|
||||
])
|
||||
command: [ 'pandoc', '--standalone', '--to=man',
|
||||
'--lua-filter', '@INPUT1@',
|
||||
'-f', 'markdown-tex_math_dollars',
|
||||
'@INPUT0@', '-o', '@OUTPUT@' ],
|
||||
install: true,
|
||||
install_dir: install_dest,
|
||||
build_by_default: true,
|
||||
)
|
||||
endforeach
|
||||
run_target('update-manpage', command: ['true'], depends: man_targets)
|
||||
|
||||
run_target('generate-manpage', command: ['true'], depends: man_targets)
|
||||
else
|
||||
man_missing = false
|
||||
foreach f: man_files
|
||||
if not fs.is_file(f)
|
||||
man_missing = true
|
||||
endif
|
||||
endforeach
|
||||
|
||||
if man_missing
|
||||
warning('Man files cannot be generated and not present in source directory, they will not be installed')
|
||||
else
|
||||
install_man(man_files)
|
||||
endif
|
||||
endif
|
||||
|
||||
doxy_conf = configuration_data()
|
||||
doxy_conf.set('PACKAGE', meson.project_name())
|
||||
doxy_conf.set('VERSION', meson.project_version())
|
||||
doxy_conf.set('abs_builddir', join_paths(meson.build_root(), meson.current_build_dir()))
|
||||
doxy_conf.set('abs_top_srcdir', meson.source_root())
|
||||
doxy_conf.set('abs_builddir', join_paths(meson.project_build_root(), meson.current_build_dir()))
|
||||
doxy_conf.set('abs_top_srcdir', meson.project_source_root())
|
||||
|
||||
doxyfile = configure_file(
|
||||
input: 'rofi.doxy.in',
|
||||
|
89
doc/rofi-actions.5.markdown
Normal file
89
doc/rofi-actions.5.markdown
Normal file
@@ -0,0 +1,89 @@
|
||||
# rofi-actions(5)
|
||||
|
||||
## NAME
|
||||
|
||||
**rofi-actions** - Custom commands following interaction with rofi menus
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
**rofi** allows to set custom commands or scripts to be executed when some actions are performed in the menu, such as changing selection, accepting an entry or canceling.
|
||||
|
||||
This makes it possible for example to play sound effects or read aloud menu entries on selection.
|
||||
|
||||
## USAGE
|
||||
|
||||
Following is the list of rofi flags for specifying custom commands or scripts to execute on supported actions:
|
||||
|
||||
`-on-selection-changed` *cmd*
|
||||
|
||||
Command or script to run when the current selection changes. Selected text is forwarded to the command replacing the pattern *{entry}*.
|
||||
|
||||
`-on-entry-accepted` *cmd*
|
||||
|
||||
Command or script to run when a menu entry is accepted. Accepted text is forwarded to the command replacing the pattern *{entry}*.
|
||||
|
||||
`-on-mode-changed` *cmd*
|
||||
|
||||
Command or script to run when the menu mode (e.g. drun,window,ssh...) is changed.
|
||||
|
||||
`-on-menu-canceled` *cmd*
|
||||
|
||||
Command or script to run when the menu is canceled.
|
||||
|
||||
`-on-menu-error` *cmd*
|
||||
|
||||
Command or script to run when an error menu is shown (e.g. `rofi -e "error message"`). Error text is forwarded to the command replacing the pattern *{error}*.
|
||||
|
||||
`-on-screenshot-taken` *cmd*
|
||||
|
||||
Command or script to run when a screenshot of rofi is taken. Screenshot path is forwarded to the command replacing the pattern *{path}*.
|
||||
|
||||
### Example usage
|
||||
|
||||
Rofi command line:
|
||||
|
||||
```bash
|
||||
rofi -on-selection-changed "/path/to/select.sh {entry}" \
|
||||
-on-entry-accepted "/path/to/accept.sh {entry}" \
|
||||
-on-menu-canceled "/path/to/exit.sh" \
|
||||
-on-mode-changed "/path/to/change.sh" \
|
||||
-on-menu-error "/path/to/error.sh {error}" \
|
||||
-on-screenshot-taken "/path/to/camera.sh {path}" \
|
||||
-show drun
|
||||
```
|
||||
|
||||
Rofi config file:
|
||||
|
||||
```css
|
||||
configuration {
|
||||
on-selection-changed: "/path/to/select.sh {entry}";
|
||||
on-entry-accepted: "/path/to/accept.sh {entry}";
|
||||
on-menu-canceled: "/path/to/exit.sh";
|
||||
on-mode-changed: "/path/to/change.sh";
|
||||
on-menu-error: "/path/to/error.sh {error}";
|
||||
on-screenshot-taken: "/path/to/camera.sh {path}";
|
||||
}
|
||||
```
|
||||
|
||||
### Play sound effects
|
||||
|
||||
Here's an example bash script that plays a sound effect using `aplay` when the current selection is changed:
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
coproc aplay -q $HOME/Music/selecting_an_item.wav
|
||||
```
|
||||
|
||||
The use of `coproc` for playing sounds is suggested, otherwise the rofi process will wait for sounds to end playback before exiting.
|
||||
|
||||
### Read aloud
|
||||
|
||||
Here's an example bash script that reads aloud currently selected entries using `espeak`:
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
killall espeak
|
||||
echo "selected: $@" | espeak
|
||||
```
|
@@ -1,4 +1,4 @@
|
||||
# ROFI DEBUGGING 5 rofi debugging
|
||||
# rofi-debugging(5)
|
||||
|
||||
## NAME
|
||||
|
||||
@@ -169,7 +169,7 @@ backtrace via `coredumpctl`.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
rofi-sensible-terminal(1), dmenu(1), rofi-debugging(5), rofi-theme(5),
|
||||
rofi-sensible-terminal(1), dmenu(1), rofi-theme(5),
|
||||
rofi-script(5), rofi-keys(5),rofi-theme-selector(1)
|
||||
|
||||
## AUTHOR
|
||||
|
365
doc/rofi-dmenu.5
365
doc/rofi-dmenu.5
@@ -1,365 +0,0 @@
|
||||
.nh
|
||||
.TH ROFI-DMENU 5 rofi-dmenu
|
||||
.SH NAME
|
||||
.PP
|
||||
\fBrofi dmenu mode\fP - Rofi dmenu emulation
|
||||
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
To integrate \fBrofi\fP into scripts as simple selection dialogs,
|
||||
\fBrofi\fP supports emulating \fBdmenu(1)\fP (A dynamic menu for X11).
|
||||
|
||||
.PP
|
||||
The website for \fB\fCdmenu\fR can be found here
|
||||
\[la]http://tools.suckless.org/dmenu/\[ra]\&.
|
||||
|
||||
.PP
|
||||
\fBrofi\fP does not aim to be 100% compatible with \fB\fCdmenu\fR\&. There are simply too
|
||||
many flavors of \fB\fCdmenu\fR\&. The idea is that the basic usage command-line flags
|
||||
are obeyed, theme-related flags are not. Besides, \fBrofi\fP offers some extended
|
||||
features (like multi-select, highlighting, message bar, extra key bindings).
|
||||
|
||||
.SH BASIC CONCEPT
|
||||
.PP
|
||||
In \fB\fCdmenu\fR mode, \fBrofi\fP 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.
|
||||
|
||||
.PP
|
||||
By default separation of rows is done on new lines, making it easy to pipe the
|
||||
output a one application into \fBrofi\fP and the output of rofi into the next.
|
||||
|
||||
.SH USAGE
|
||||
.PP
|
||||
By launching \fBrofi\fP with the \fB\fC-dmenu\fR flag it will go into dmenu emulation
|
||||
mode.
|
||||
|
||||
.PP
|
||||
.RS
|
||||
|
||||
.nf
|
||||
ls | rofi -dmenu
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.SS DMENU DROP-IN REPLACEMENT
|
||||
.PP
|
||||
If \fB\fCargv[0]\fR (calling command) is dmenu, \fBrofi\fP will start in dmenu mode.
|
||||
This way, it can be used as a drop-in replacement for dmenu. Just copy or
|
||||
symlink \fBrofi\fP to dmenu in \fB\fC$PATH\fR\&.
|
||||
|
||||
.PP
|
||||
.RS
|
||||
|
||||
.nf
|
||||
ln -s /usr/bin/rofi /usr/bin/dmenu
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.SS DMENU VS SCRIPT MODE
|
||||
.PP
|
||||
Script mode is used to extend \fBrofi\fP, dmenu mode is used to extend a script.
|
||||
The two do share much of the same input format. Please see the
|
||||
\fBrofi-script(5)\fP manpage for more information.
|
||||
|
||||
.SS DMENU SPECIFIC COMMANDLINE FLAGS
|
||||
.PP
|
||||
A lot of these options can also be modified by the script using special input.
|
||||
See the \fBrofi-script(5)\fP manpage for more information about this syntax.
|
||||
|
||||
.PP
|
||||
\fB\fC-sep\fR \fIseparator\fP
|
||||
|
||||
.PP
|
||||
Separator for \fB\fCdmenu\fR\&. Example: To show a list of 'a' to 'e' with '|' as a
|
||||
separator:
|
||||
|
||||
.PP
|
||||
.RS
|
||||
|
||||
.nf
|
||||
echo "a|b|c|d|e" | rofi -sep '|' -dmenu
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.PP
|
||||
\fB\fC-p\fR \fIprompt\fP
|
||||
|
||||
.PP
|
||||
Specify the prompt to show in \fB\fCdmenu\fR mode. For example, select 'monkey',
|
||||
a,b,c,d, or e.
|
||||
|
||||
.PP
|
||||
.RS
|
||||
|
||||
.nf
|
||||
echo "a|b|c|d|e" | rofi -sep '|' -dmenu -p "monkey"
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.PP
|
||||
Default: \fIdmenu\fP
|
||||
|
||||
.PP
|
||||
\fB\fC-l\fR \fInumber of lines to show\fP
|
||||
|
||||
.PP
|
||||
Maximum number of lines the menu may show before scrolling.
|
||||
|
||||
.PP
|
||||
.RS
|
||||
|
||||
.nf
|
||||
rofi -dmenu -l 25
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.PP
|
||||
Default: \fI15\fP
|
||||
|
||||
.PP
|
||||
\fB\fC-i\fR
|
||||
|
||||
.PP
|
||||
Makes \fB\fCdmenu\fR searches case-insensitive
|
||||
|
||||
.PP
|
||||
\fB\fC-a\fR \fIX\fP
|
||||
|
||||
.PP
|
||||
Active row, mark \fIX\fP as active. Where \fIX\fP 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:
|
||||
|
||||
.RS
|
||||
.IP \(bu 2
|
||||
A single row: '5'
|
||||
.IP \(bu 2
|
||||
A range of (last 3) rows: '-3:'
|
||||
.IP \(bu 2
|
||||
4 rows starting from row 7: '7:11' (or in legacy notation: '7-10')
|
||||
.IP \(bu 2
|
||||
A set of rows: '2,0,-9'
|
||||
.IP \(bu 2
|
||||
Or any combination: '5,-3:,7:11,2,0,-9'
|
||||
|
||||
.RE
|
||||
|
||||
.PP
|
||||
\fB\fC-u\fR \fIX\fP
|
||||
|
||||
.PP
|
||||
Urgent row, mark \fIX\fP as urgent. See \fB\fC-a\fR option for details.
|
||||
|
||||
.PP
|
||||
\fB\fC-only-match\fR
|
||||
|
||||
.PP
|
||||
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.
|
||||
|
||||
.PP
|
||||
\fB\fC-no-custom\fR
|
||||
|
||||
.PP
|
||||
Only return a selected item, do not allow custom entry.
|
||||
This mode returns directly when no entries given.
|
||||
|
||||
.PP
|
||||
\fB\fC-format\fR \fIformat\fP
|
||||
|
||||
.PP
|
||||
Allows the output of dmenu to be customized (N is the total number of input
|
||||
entries):
|
||||
|
||||
.RS
|
||||
.IP \(bu 2
|
||||
\&'s' selected string
|
||||
.IP \(bu 2
|
||||
\&'i' index (0 - (N-1))
|
||||
.IP \(bu 2
|
||||
\&'d' index (1 - N)
|
||||
.IP \(bu 2
|
||||
\&'q' quote string
|
||||
.IP \(bu 2
|
||||
\&'p' Selected string stripped from Pango markup (Needs to be a valid string)
|
||||
.IP \(bu 2
|
||||
\&'f' filter string (user input)
|
||||
.IP \(bu 2
|
||||
\&'F' quoted filter string (user input)
|
||||
|
||||
.RE
|
||||
|
||||
.PP
|
||||
Default: 's'
|
||||
|
||||
.PP
|
||||
\fB\fC-select\fR \fIstring\fP
|
||||
|
||||
.PP
|
||||
Select first line that matches the given string
|
||||
|
||||
.PP
|
||||
\fB\fC-mesg\fR \fIstring\fP
|
||||
|
||||
.PP
|
||||
Add a message line below the filter entry box. Supports Pango markup. For more
|
||||
information on supported markup, see
|
||||
here
|
||||
\[la]https://docs.gtk.org/Pango/pango_markup.html\[ra]
|
||||
|
||||
.PP
|
||||
\fB\fC-dump\fR
|
||||
|
||||
.PP
|
||||
Dump the filtered list to stdout and quit.
|
||||
This can be used to get the list as \fBrofi\fP would filter it.
|
||||
Use together with \fB\fC-filter\fR command.
|
||||
|
||||
.PP
|
||||
\fB\fC-input\fR \fIfile\fP
|
||||
|
||||
.PP
|
||||
Reads from \fIfile\fP instead of stdin.
|
||||
|
||||
.PP
|
||||
\fB\fC-password\fR
|
||||
|
||||
.PP
|
||||
Hide the input text. This should not be considered secure!
|
||||
|
||||
.PP
|
||||
\fB\fC-markup-rows\fR
|
||||
|
||||
.PP
|
||||
Tell \fBrofi\fP that DMenu input is Pango markup encoded, and should be rendered.
|
||||
See here
|
||||
\[la]https://developer.gnome.org/pygtk/stable/pango-markup-language.html\[ra]
|
||||
for details about Pango markup.
|
||||
|
||||
.PP
|
||||
\fB\fC-multi-select\fR
|
||||
|
||||
.PP
|
||||
Allow multiple lines to be selected. Adds a small selection indicator to the
|
||||
left of each entry.
|
||||
|
||||
.PP
|
||||
\fB\fC-sync\fR
|
||||
|
||||
.PP
|
||||
Force \fBrofi\fP mode to first read all data from stdin before showing the
|
||||
selection window. This is original dmenu behavior.
|
||||
|
||||
.PP
|
||||
Note: the default asynchronous mode will also be automatically disabled if used
|
||||
with conflicting options,
|
||||
such as \fB\fC-dump\fR, \fB\fC-only-match\fR or \fB\fC-auto-select\fR\&.
|
||||
|
||||
.PP
|
||||
\fB\fC-window-title\fR \fItitle\fP
|
||||
|
||||
.PP
|
||||
Set name used for the window title. Will be shown as Rofi - \fItitle\fP
|
||||
|
||||
.PP
|
||||
\fB\fC-w\fR \fIwindowid\fP
|
||||
|
||||
.PP
|
||||
Position \fBrofi\fP over the window with the given X11 window ID.
|
||||
|
||||
.PP
|
||||
\fB\fC-keep-right\fR
|
||||
|
||||
.PP
|
||||
Set ellipsize mode to start. So, the end of the string is visible.
|
||||
|
||||
.PP
|
||||
\fB\fC-display-columns\fR
|
||||
|
||||
.PP
|
||||
A comma seperated list of columns to show.
|
||||
|
||||
.PP
|
||||
\fB\fC-display-column-separator\fR
|
||||
|
||||
.PP
|
||||
The column separator. This is a regex.
|
||||
|
||||
.PP
|
||||
\fIdefault\fP: '\\t'
|
||||
|
||||
.PP
|
||||
\fB\fC-ballot-selected-str\fR \fIstring\fP
|
||||
|
||||
.PP
|
||||
When multi-select is enabled, prefix this string when element is selected.
|
||||
|
||||
.PP
|
||||
\fIdefault\fP: "☑ "
|
||||
|
||||
.PP
|
||||
\fB\fC-ballot-unselected-str\fR \fIstring\fP
|
||||
|
||||
.PP
|
||||
When multi-select is enabled, prefix this string when element is not selected.
|
||||
|
||||
.PP
|
||||
\fIdefault\fP: "☐ "
|
||||
|
||||
.PP
|
||||
\fB\fC-ellipsize-mode\fR (start|middle|end)
|
||||
|
||||
.PP
|
||||
Set ellipsize mode on the listview.
|
||||
|
||||
.PP
|
||||
\fIdefault\fP "end"
|
||||
|
||||
.SH PARSING ROW OPTIONS
|
||||
.PP
|
||||
Extra options for individual rows can be also set. See the \fBrofi-script(5)\fP
|
||||
manpage for details; the syntax and supported features are identical.
|
||||
|
||||
.SH RETURN VALUE
|
||||
.RS
|
||||
.IP \(bu 2
|
||||
\fB0\fP: Row has been selected accepted by user.
|
||||
.IP \(bu 2
|
||||
\fB1\fP: User cancelled the selection.
|
||||
.IP \(bu 2
|
||||
\fB10-28\fP: Row accepted by custom keybinding.
|
||||
|
||||
.RE
|
||||
|
||||
.SH SEE ALSO
|
||||
.PP
|
||||
rofi(1), rofi-sensible-terminal(1), dmenu(1), rofi-theme(5), rofi-script(5),
|
||||
rofi-theme-selector(1), ascii(7)
|
||||
|
||||
.SH AUTHOR
|
||||
.PP
|
||||
Qball Cow qball@gmpclient.org
|
||||
\[la]mailto:qball@gmpclient.org\[ra]
|
||||
|
||||
.PP
|
||||
Rasmus Steinke rasi@xssn.at
|
||||
\[la]mailto:rasi@xssn.at\[ra]
|
||||
|
||||
.PP
|
||||
Morgane Glidic sardemff7+rofi@sardemff7.net
|
||||
\[la]mailto:sardemff7+rofi@sardemff7.net\[ra]
|
||||
|
||||
.PP
|
||||
Original code based on work by: Sean Pringle sean.pringle@gmail.com
|
||||
\[la]mailto:sean.pringle@gmail.com\[ra]
|
||||
|
||||
.PP
|
||||
For a full list of authors, check the AUTHORS file.
|
@@ -1,4 +1,4 @@
|
||||
# ROFI-DMENU 5 rofi-dmenu
|
||||
# rofi-dmenu(5)
|
||||
|
||||
## NAME
|
||||
|
||||
@@ -159,7 +159,7 @@ 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)
|
||||
See [here](https://docs.gtk.org/Pango/pango_markup.html)
|
||||
for details about Pango markup.
|
||||
|
||||
`-multi-select`
|
||||
|
676
doc/rofi-keys.5
676
doc/rofi-keys.5
@@ -1,676 +0,0 @@
|
||||
.nh
|
||||
.TH ROFI-KEYS 5 rofi-keys
|
||||
.SH NAME
|
||||
.PP
|
||||
\fBrofi keys\fP - Rofi Key and Mouse bindings
|
||||
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
\fBrofi\fP supports overriding of any of it key and mouse binding.
|
||||
|
||||
.SH Setting binding
|
||||
.PP
|
||||
Bindings can be done on the commandline (-{bindingname}):
|
||||
|
||||
.PP
|
||||
.RS
|
||||
|
||||
.nf
|
||||
rofi -show run -kb-accept-entry 'Control+Shift+space'
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.PP
|
||||
or via the configuration file:
|
||||
|
||||
.PP
|
||||
.RS
|
||||
|
||||
.nf
|
||||
configuration {
|
||||
kb-accept-entry: "Control+Shift+space";
|
||||
}
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.PP
|
||||
The key can be set by its name (see above) or its keycode:
|
||||
|
||||
.PP
|
||||
.RS
|
||||
|
||||
.nf
|
||||
configuration {
|
||||
kb-accept-entry: "Control+Shift+[65]";
|
||||
}
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.PP
|
||||
An easy way to look up keycode is xev(1).
|
||||
|
||||
.PP
|
||||
Multiple keys can be specified for an action as a comma separated list:
|
||||
|
||||
.PP
|
||||
.RS
|
||||
|
||||
.nf
|
||||
configuration {
|
||||
kb-accept-entry: "Control+Shift+space,Return";
|
||||
}
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.PP
|
||||
By Default \fBrofi\fP reacts on pressing, to act on the release of all keys
|
||||
prepend the binding with \fB\fC!\fR:
|
||||
|
||||
.PP
|
||||
.RS
|
||||
|
||||
.nf
|
||||
configuration {
|
||||
kb-accept-entry: "!Control+Shift+space,Return";
|
||||
}
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.SH Unsetting a binding
|
||||
.PP
|
||||
To unset a binding, pass an empty string.
|
||||
|
||||
.PP
|
||||
.RS
|
||||
|
||||
.nf
|
||||
configuration {
|
||||
kb-clear-line: "";
|
||||
}
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.SH Keyboard Bindings
|
||||
.SS \fBkb-primary-paste\fP:
|
||||
.PP
|
||||
Paste primary selection
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Control+V,Shift+Insert
|
||||
|
||||
.SS \fBkb-secondary-paste\fP
|
||||
.PP
|
||||
Paste clipboard
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Control+v,Insert
|
||||
|
||||
.SS \fBkb-secondary-copy\fP
|
||||
.PP
|
||||
Copy current selection to clipboard
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Control+c
|
||||
|
||||
.SS \fBkb-clear-line\fP
|
||||
.PP
|
||||
Clear input line
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Control+w
|
||||
|
||||
.SS \fBkb-move-front\fP
|
||||
.PP
|
||||
Beginning of line
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Control+a
|
||||
|
||||
.SS \fBkb-move-end\fP
|
||||
.PP
|
||||
End of line
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Control+e
|
||||
|
||||
.SS \fBkb-move-word-back\fP
|
||||
.PP
|
||||
Move back one word
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+b,Control+Left
|
||||
|
||||
.SS \fBkb-move-word-forward\fP
|
||||
.PP
|
||||
Move forward one word
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+f,Control+Right
|
||||
|
||||
.SS \fBkb-move-char-back\fP
|
||||
.PP
|
||||
Move back one char
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Left,Control+b
|
||||
|
||||
.SS \fBkb-move-char-forward\fP
|
||||
.PP
|
||||
Move forward one char
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Right,Control+f
|
||||
|
||||
.SS \fBkb-remove-word-back\fP
|
||||
.PP
|
||||
Delete previous word
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Control+Alt+h,Control+BackSpace
|
||||
|
||||
.SS \fBkb-remove-word-forward\fP
|
||||
.PP
|
||||
Delete next word
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Control+Alt+d
|
||||
|
||||
.SS \fBkb-remove-char-forward\fP
|
||||
.PP
|
||||
Delete next char
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Delete,Control+d
|
||||
|
||||
.SS \fBkb-remove-char-back\fP
|
||||
.PP
|
||||
Delete previous char
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: BackSpace,Shift+BackSpace,Control+h
|
||||
|
||||
.SS \fBkb-remove-to-eol\fP
|
||||
.PP
|
||||
Delete till the end of line
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Control+k
|
||||
|
||||
.SS \fBkb-remove-to-sol\fP
|
||||
.PP
|
||||
Delete till the start of line
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Control+u
|
||||
|
||||
.SS \fBkb-accept-entry\fP
|
||||
.PP
|
||||
Accept entry
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Control+j,Control+m,Return,KP_Enter
|
||||
|
||||
.SS \fBkb-accept-custom\fP
|
||||
.PP
|
||||
Use entered text as command (in ssh/run modes)
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Control+Return
|
||||
|
||||
.SS \fBkb-accept-custom-alt\fP
|
||||
.PP
|
||||
Use entered text as command (in ssh/run modes)
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Control+Shift+Return
|
||||
|
||||
.SS \fBkb-accept-alt\fP
|
||||
.PP
|
||||
Use alternate accept command.
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Shift+Return
|
||||
|
||||
.SS \fBkb-delete-entry\fP
|
||||
.PP
|
||||
Delete entry from history
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Shift+Delete
|
||||
|
||||
.SS \fBkb-mode-next\fP
|
||||
.PP
|
||||
Switch to the next mode.
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Shift+Right,Control+Tab
|
||||
|
||||
.SS \fBkb-mode-previous\fP
|
||||
.PP
|
||||
Switch to the previous mode.
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Shift+Left,Control+ISO_Left_Tab
|
||||
|
||||
.SS \fBkb-mode-complete\fP
|
||||
.PP
|
||||
Start completion for mode.
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Control+l
|
||||
|
||||
.SS \fBkb-row-left\fP
|
||||
.PP
|
||||
Go to the previous column
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Control+Page_Up
|
||||
|
||||
.SS \fBkb-row-right\fP
|
||||
.PP
|
||||
Go to the next column
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Control+Page_Down
|
||||
|
||||
.SS \fBkb-row-up\fP
|
||||
.PP
|
||||
Select previous entry
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Up,Control+p
|
||||
|
||||
.SS \fBkb-row-down\fP
|
||||
.PP
|
||||
Select next entry
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Down,Control+n
|
||||
|
||||
.SS \fBkb-row-tab\fP
|
||||
.PP
|
||||
Go to next row, if one left, accept it, if no left next mode.
|
||||
|
||||
.PP
|
||||
\fBDefault\fP:
|
||||
|
||||
.SS \fBkb-element-next\fP
|
||||
.PP
|
||||
Go to next row.
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Tab
|
||||
|
||||
.SS \fBkb-element-prev\fP
|
||||
.PP
|
||||
Go to previous row.
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: ISO_Left_Tab
|
||||
|
||||
.SS \fBkb-page-prev\fP
|
||||
.PP
|
||||
Go to the previous page
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Page_Up
|
||||
|
||||
.SS \fBkb-page-next\fP
|
||||
.PP
|
||||
Go to the next page
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Page_Down
|
||||
|
||||
.SS \fBkb-row-first\fP
|
||||
.PP
|
||||
Go to the first entry
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Home,KP_Home
|
||||
|
||||
.SS \fBkb-row-last\fP
|
||||
.PP
|
||||
Go to the last entry
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: End,KP_End
|
||||
|
||||
.SS \fBkb-row-select\fP
|
||||
.PP
|
||||
Set selected item as input text
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Control+space
|
||||
|
||||
.SS \fBkb-screenshot\fP
|
||||
.PP
|
||||
Take a screenshot of the rofi window
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+S
|
||||
|
||||
.SS \fBkb-ellipsize\fP
|
||||
.PP
|
||||
Toggle between ellipsize modes for displayed data
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+period
|
||||
|
||||
.SS \fBkb-toggle-case-sensitivity\fP
|
||||
.PP
|
||||
Toggle case sensitivity
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: grave,dead_grave
|
||||
|
||||
.SS \fBkb-toggle-sort\fP
|
||||
.PP
|
||||
Toggle filtered menu sort
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+grave
|
||||
|
||||
.SS \fBkb-cancel\fP
|
||||
.PP
|
||||
Quit rofi
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Escape,Control+g,Control+bracketleft
|
||||
|
||||
.SS \fBkb-custom-1\fP
|
||||
.PP
|
||||
Custom keybinding 1
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+1
|
||||
|
||||
.SS \fBkb-custom-2\fP
|
||||
.PP
|
||||
Custom keybinding 2
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+2
|
||||
|
||||
.SS \fBkb-custom-3\fP
|
||||
.PP
|
||||
Custom keybinding 3
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+3
|
||||
|
||||
.SS \fBkb-custom-4\fP
|
||||
.PP
|
||||
Custom keybinding 4
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+4
|
||||
|
||||
.SS \fBkb-custom-5\fP
|
||||
.PP
|
||||
Custom Keybinding 5
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+5
|
||||
|
||||
.SS \fBkb-custom-6\fP
|
||||
.PP
|
||||
Custom keybinding 6
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+6
|
||||
|
||||
.SS \fBkb-custom-7\fP
|
||||
.PP
|
||||
Custom Keybinding 7
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+7
|
||||
|
||||
.SS \fBkb-custom-8\fP
|
||||
.PP
|
||||
Custom keybinding 8
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+8
|
||||
|
||||
.SS \fBkb-custom-9\fP
|
||||
.PP
|
||||
Custom keybinding 9
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+9
|
||||
|
||||
.SS \fBkb-custom-10\fP
|
||||
.PP
|
||||
Custom keybinding 10
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+0
|
||||
|
||||
.SS \fBkb-custom-11\fP
|
||||
.PP
|
||||
Custom keybinding 11
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+exclam
|
||||
|
||||
.SS \fBkb-custom-12\fP
|
||||
.PP
|
||||
Custom keybinding 12
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+at
|
||||
|
||||
.SS \fBkb-custom-13\fP
|
||||
.PP
|
||||
Custom keybinding 13
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+numbersign
|
||||
|
||||
.SS \fBkb-custom-14\fP
|
||||
.PP
|
||||
Custom keybinding 14
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+dollar
|
||||
|
||||
.SS \fBkb-custom-15\fP
|
||||
.PP
|
||||
Custom keybinding 15
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+percent
|
||||
|
||||
.SS \fBkb-custom-16\fP
|
||||
.PP
|
||||
Custom keybinding 16
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+dead_circumflex
|
||||
|
||||
.SS \fBkb-custom-17\fP
|
||||
.PP
|
||||
Custom keybinding 17
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+ampersand
|
||||
|
||||
.SS \fBkb-custom-18\fP
|
||||
.PP
|
||||
Custom keybinding 18
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+asterisk
|
||||
|
||||
.SS \fBkb-custom-19\fP
|
||||
.PP
|
||||
Custom Keybinding 19
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Alt+parenleft
|
||||
|
||||
.SS \fBkb-select-1\fP
|
||||
.PP
|
||||
Select row 1
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Super+1
|
||||
|
||||
.SS \fBkb-select-2\fP
|
||||
.PP
|
||||
Select row 2
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Super+2
|
||||
|
||||
.SS \fBkb-select-3\fP
|
||||
.PP
|
||||
Select row 3
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Super+3
|
||||
|
||||
.SS \fBkb-select-4\fP
|
||||
.PP
|
||||
Select row 4
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Super+4
|
||||
|
||||
.SS \fBkb-select-5\fP
|
||||
.PP
|
||||
Select row 5
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Super+5
|
||||
|
||||
.SS \fBkb-select-6\fP
|
||||
.PP
|
||||
Select row 6
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Super+6
|
||||
|
||||
.SS \fBkb-select-7\fP
|
||||
.PP
|
||||
Select row 7
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Super+7
|
||||
|
||||
.SS \fBkb-select-8\fP
|
||||
.PP
|
||||
Select row 8
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Super+8
|
||||
|
||||
.SS \fBkb-select-9\fP
|
||||
.PP
|
||||
Select row 9
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Super+9
|
||||
|
||||
.SS \fBkb-select-10\fP
|
||||
.PP
|
||||
Select row 10
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Super+0
|
||||
|
||||
.SS \fBkb-entry-history-up\fP
|
||||
.PP
|
||||
Go up in the entry history.
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Control+Up
|
||||
|
||||
.SS \fBkb-entry-history-down\fP
|
||||
.PP
|
||||
Go down in the entry history.
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Control+Down
|
||||
|
||||
.SH Mouse Bindings
|
||||
.SS \fBml-row-left\fP
|
||||
.PP
|
||||
Go to the previous column
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: ScrollLeft
|
||||
|
||||
.SS \fBml-row-right\fP
|
||||
.PP
|
||||
Go to the next column
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: ScrollRight
|
||||
|
||||
.SS \fBml-row-up\fP
|
||||
.PP
|
||||
Select previous entry
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: ScrollUp
|
||||
|
||||
.SS \fBml-row-down\fP
|
||||
.PP
|
||||
Select next entry
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: ScrollDown
|
||||
|
||||
.SS \fBme-select-entry\fP
|
||||
.PP
|
||||
Select hovered row
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: MousePrimary
|
||||
|
||||
.SS \fBme-accept-entry\fP
|
||||
.PP
|
||||
Accept hovered row
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: MouseDPrimary
|
||||
|
||||
.SS \fBme-accept-custom\fP
|
||||
.PP
|
||||
Accept hovered row with custom action
|
||||
|
||||
.PP
|
||||
\fBDefault\fP: Control+MouseDPrimary
|
||||
|
||||
.SH SEE ALSO
|
||||
.PP
|
||||
rofi(1), rofi-sensible-terminal(1), rofi-theme(5), rofi-script(5)
|
||||
|
||||
.SH AUTHOR
|
||||
.PP
|
||||
Qball Cow qball@gmpclient.org
|
||||
\[la]mailto:qball@gmpclient.org\[ra]
|
||||
|
||||
.PP
|
||||
Rasmus Steinke rasi@xssn.at
|
||||
\[la]mailto:rasi@xssn.at\[ra]
|
||||
|
||||
.PP
|
||||
Morgane Glidic sardemff7+rofi@sardemff7.net
|
||||
\[la]mailto:sardemff7+rofi@sardemff7.net\[ra]
|
||||
|
||||
.PP
|
||||
Original code based on work by: Sean Pringle sean.pringle@gmail.com
|
||||
\[la]mailto:sean.pringle@gmail.com\[ra]
|
||||
|
||||
.PP
|
||||
For a full list of authors, check the AUTHORS file.
|
@@ -1,4 +1,4 @@
|
||||
# ROFI-KEYS 5 rofi-keys
|
||||
# rofi-keys(5)
|
||||
|
||||
## NAME
|
||||
|
||||
@@ -63,481 +63,513 @@ configuration {
|
||||
|
||||
## Keyboard Bindings
|
||||
|
||||
### **kb-primary-paste**:
|
||||
`kb-primary-paste`
|
||||
|
||||
Paste primary selection
|
||||
|
||||
**Default**: Control+V,Shift+Insert
|
||||
Default: Control+V,Shift+Insert
|
||||
|
||||
### **kb-secondary-paste**
|
||||
`kb-secondary-paste`
|
||||
|
||||
Paste clipboard
|
||||
|
||||
**Default**: Control+v,Insert
|
||||
Default: Control+v,Insert
|
||||
|
||||
### **kb-secondary-copy**
|
||||
`kb-secondary-copy`
|
||||
|
||||
Copy current selection to clipboard
|
||||
|
||||
**Default**: Control+c
|
||||
Default: Control+c
|
||||
|
||||
### **kb-clear-line**
|
||||
`kb-clear-line`
|
||||
|
||||
Clear input line
|
||||
|
||||
**Default**: Control+w
|
||||
Default: Control+w
|
||||
|
||||
### **kb-move-front**
|
||||
`kb-move-front`
|
||||
|
||||
Beginning of line
|
||||
|
||||
**Default**: Control+a
|
||||
Default: Control+a
|
||||
|
||||
### **kb-move-end**
|
||||
`kb-move-end`
|
||||
|
||||
End of line
|
||||
|
||||
**Default**: Control+e
|
||||
Default: Control+e
|
||||
|
||||
### **kb-move-word-back**
|
||||
`kb-move-word-back`
|
||||
|
||||
Move back one word
|
||||
|
||||
**Default**: Alt+b,Control+Left
|
||||
Default: Alt+b,Control+Left
|
||||
|
||||
### **kb-move-word-forward**
|
||||
`kb-move-word-forward`
|
||||
|
||||
Move forward one word
|
||||
|
||||
**Default**: Alt+f,Control+Right
|
||||
Default: Alt+f,Control+Right
|
||||
|
||||
### **kb-move-char-back**
|
||||
`kb-move-char-back`
|
||||
|
||||
Move back one char
|
||||
|
||||
**Default**: Left,Control+b
|
||||
Default: Left,Control+b
|
||||
|
||||
### **kb-move-char-forward**
|
||||
`kb-move-char-forward`
|
||||
|
||||
Move forward one char
|
||||
|
||||
**Default**: Right,Control+f
|
||||
Default: Right,Control+f
|
||||
|
||||
### **kb-remove-word-back**
|
||||
`kb-remove-word-back`
|
||||
|
||||
Delete previous word
|
||||
|
||||
**Default**: Control+Alt+h,Control+BackSpace
|
||||
Default: Control+Alt+h,Control+BackSpace
|
||||
|
||||
### **kb-remove-word-forward**
|
||||
`kb-remove-word-forward`
|
||||
|
||||
Delete next word
|
||||
|
||||
**Default**: Control+Alt+d
|
||||
Default: Control+Alt+d
|
||||
|
||||
### **kb-remove-char-forward**
|
||||
`kb-remove-char-forward`
|
||||
|
||||
Delete next char
|
||||
|
||||
**Default**: Delete,Control+d
|
||||
Default: Delete,Control+d
|
||||
|
||||
### **kb-remove-char-back**
|
||||
`kb-remove-char-back`
|
||||
|
||||
Delete previous char
|
||||
|
||||
**Default**: BackSpace,Shift+BackSpace,Control+h
|
||||
Default: BackSpace,Shift+BackSpace,Control+h
|
||||
|
||||
### **kb-remove-to-eol**
|
||||
`kb-remove-to-eol`
|
||||
|
||||
Delete till the end of line
|
||||
|
||||
**Default**: Control+k
|
||||
Default: Control+k
|
||||
|
||||
### **kb-remove-to-sol**
|
||||
`kb-remove-to-sol`
|
||||
|
||||
Delete till the start of line
|
||||
|
||||
**Default**: Control+u
|
||||
Default: Control+u
|
||||
|
||||
### **kb-accept-entry**
|
||||
`kb-accept-entry`
|
||||
|
||||
Accept entry
|
||||
|
||||
**Default**: Control+j,Control+m,Return,KP\_Enter
|
||||
Default: Control+j,Control+m,Return,KP\_Enter
|
||||
|
||||
### **kb-accept-custom**
|
||||
`kb-accept-custom`
|
||||
|
||||
Use entered text as command (in ssh/run modes)
|
||||
|
||||
**Default**: Control+Return
|
||||
Default: Control+Return
|
||||
|
||||
### **kb-accept-custom-alt**
|
||||
`kb-accept-custom-alt`
|
||||
|
||||
Use entered text as command (in ssh/run modes)
|
||||
|
||||
**Default**: Control+Shift+Return
|
||||
Default: Control+Shift+Return
|
||||
|
||||
### **kb-accept-alt**
|
||||
`kb-accept-alt`
|
||||
|
||||
Use alternate accept command.
|
||||
|
||||
**Default**: Shift+Return
|
||||
Default: Shift+Return
|
||||
|
||||
### **kb-delete-entry**
|
||||
`kb-delete-entry`
|
||||
|
||||
Delete entry from history
|
||||
|
||||
**Default**: Shift+Delete
|
||||
Default: Shift+Delete
|
||||
|
||||
### **kb-mode-next**
|
||||
`kb-mode-next`
|
||||
|
||||
Switch to the next mode.
|
||||
|
||||
**Default**: Shift+Right,Control+Tab
|
||||
Default: Shift+Right,Control+Tab
|
||||
|
||||
### **kb-mode-previous**
|
||||
`kb-mode-previous`
|
||||
|
||||
Switch to the previous mode.
|
||||
|
||||
**Default**: Shift+Left,Control+ISO\_Left\_Tab
|
||||
Default: Shift+Left,Control+ISO\_Left\_Tab
|
||||
|
||||
### **kb-mode-complete**
|
||||
`kb-mode-complete`
|
||||
|
||||
Start completion for mode.
|
||||
|
||||
**Default**: Control+l
|
||||
Default: Control+l
|
||||
|
||||
### **kb-row-left**
|
||||
`kb-row-left`
|
||||
|
||||
Go to the previous column
|
||||
|
||||
**Default**: Control+Page\_Up
|
||||
Default: Control+Page\_Up
|
||||
|
||||
### **kb-row-right**
|
||||
`kb-row-right`
|
||||
|
||||
Go to the next column
|
||||
|
||||
**Default**: Control+Page\_Down
|
||||
Default: Control+Page\_Down
|
||||
|
||||
### **kb-row-up**
|
||||
`kb-row-up`
|
||||
|
||||
Select previous entry
|
||||
|
||||
**Default**: Up,Control+p
|
||||
Default: Up,Control+p
|
||||
|
||||
### **kb-row-down**
|
||||
`kb-row-down`
|
||||
|
||||
Select next entry
|
||||
|
||||
**Default**: Down,Control+n
|
||||
Default: Down,Control+n
|
||||
|
||||
### **kb-row-tab**
|
||||
`kb-row-tab`
|
||||
|
||||
Go to next row, if one left, accept it, if no left next mode.
|
||||
|
||||
**Default**:
|
||||
Default:
|
||||
|
||||
### **kb-element-next**
|
||||
`kb-element-next`
|
||||
|
||||
Go to next row.
|
||||
|
||||
**Default**: Tab
|
||||
Default: Tab
|
||||
|
||||
### **kb-element-prev**
|
||||
`kb-element-prev`
|
||||
|
||||
Go to previous row.
|
||||
|
||||
**Default**: ISO\_Left\_Tab
|
||||
Default: ISO\_Left\_Tab
|
||||
|
||||
### **kb-page-prev**
|
||||
`kb-page-prev`
|
||||
|
||||
Go to the previous page
|
||||
|
||||
**Default**: Page\_Up
|
||||
Default: Page\_Up
|
||||
|
||||
### **kb-page-next**
|
||||
`kb-page-next`
|
||||
|
||||
Go to the next page
|
||||
|
||||
**Default**: Page\_Down
|
||||
Default: Page\_Down
|
||||
|
||||
### **kb-row-first**
|
||||
`kb-row-first`
|
||||
|
||||
Go to the first entry
|
||||
|
||||
**Default**: Home,KP\_Home
|
||||
Default: Home,KP\_Home
|
||||
|
||||
### **kb-row-last**
|
||||
`kb-row-last`
|
||||
|
||||
Go to the last entry
|
||||
|
||||
**Default**: End,KP\_End
|
||||
Default: End,KP\_End
|
||||
|
||||
### **kb-row-select**
|
||||
`kb-row-select`
|
||||
|
||||
Set selected item as input text
|
||||
|
||||
**Default**: Control+space
|
||||
Default: Control+space
|
||||
|
||||
### **kb-screenshot**
|
||||
`kb-screenshot`
|
||||
|
||||
Take a screenshot of the rofi window
|
||||
|
||||
**Default**: Alt+S
|
||||
Default: Alt+S
|
||||
|
||||
### **kb-ellipsize**
|
||||
`kb-ellipsize`
|
||||
|
||||
Toggle between ellipsize modes for displayed data
|
||||
|
||||
**Default**: Alt+period
|
||||
Default: Alt+period
|
||||
|
||||
### **kb-toggle-case-sensitivity**
|
||||
`kb-toggle-case-sensitivity`
|
||||
|
||||
Toggle case sensitivity
|
||||
|
||||
**Default**: grave,dead\_grave
|
||||
Default: grave,dead\_grave
|
||||
|
||||
### **kb-toggle-sort**
|
||||
`kb-toggle-sort`
|
||||
|
||||
Toggle filtered menu sort
|
||||
|
||||
**Default**: Alt+grave
|
||||
Default: Alt+grave
|
||||
|
||||
### **kb-cancel**
|
||||
`kb-cancel`
|
||||
|
||||
Quit rofi
|
||||
|
||||
**Default**: Escape,Control+g,Control+bracketleft
|
||||
Default: Escape,Control+g,Control+bracketleft
|
||||
|
||||
### **kb-custom-1**
|
||||
`kb-custom-1`
|
||||
|
||||
Custom keybinding 1
|
||||
|
||||
**Default**: Alt+1
|
||||
Default: Alt+1
|
||||
|
||||
### **kb-custom-2**
|
||||
`kb-custom-2`
|
||||
|
||||
Custom keybinding 2
|
||||
|
||||
**Default**: Alt+2
|
||||
Default: Alt+2
|
||||
|
||||
### **kb-custom-3**
|
||||
`kb-custom-3`
|
||||
|
||||
Custom keybinding 3
|
||||
|
||||
**Default**: Alt+3
|
||||
Default: Alt+3
|
||||
|
||||
### **kb-custom-4**
|
||||
`kb-custom-4`
|
||||
|
||||
Custom keybinding 4
|
||||
|
||||
**Default**: Alt+4
|
||||
Default: Alt+4
|
||||
|
||||
### **kb-custom-5**
|
||||
`kb-custom-5`
|
||||
|
||||
Custom Keybinding 5
|
||||
|
||||
**Default**: Alt+5
|
||||
Default: Alt+5
|
||||
|
||||
### **kb-custom-6**
|
||||
`kb-custom-6`
|
||||
|
||||
Custom keybinding 6
|
||||
|
||||
**Default**: Alt+6
|
||||
Default: Alt+6
|
||||
|
||||
### **kb-custom-7**
|
||||
`kb-custom-7`
|
||||
|
||||
Custom Keybinding 7
|
||||
|
||||
**Default**: Alt+7
|
||||
Default: Alt+7
|
||||
|
||||
### **kb-custom-8**
|
||||
`kb-custom-8`
|
||||
|
||||
Custom keybinding 8
|
||||
|
||||
**Default**: Alt+8
|
||||
Default: Alt+8
|
||||
|
||||
### **kb-custom-9**
|
||||
`kb-custom-9`
|
||||
|
||||
Custom keybinding 9
|
||||
|
||||
**Default**: Alt+9
|
||||
Default: Alt+9
|
||||
|
||||
### **kb-custom-10**
|
||||
`kb-custom-10`
|
||||
|
||||
Custom keybinding 10
|
||||
|
||||
**Default**: Alt+0
|
||||
Default: Alt+0
|
||||
|
||||
### **kb-custom-11**
|
||||
`kb-custom-11`
|
||||
|
||||
Custom keybinding 11
|
||||
|
||||
**Default**: Alt+exclam
|
||||
Default: Alt+exclam
|
||||
|
||||
### **kb-custom-12**
|
||||
`kb-custom-12`
|
||||
|
||||
Custom keybinding 12
|
||||
|
||||
**Default**: Alt+at
|
||||
Default: Alt+at
|
||||
|
||||
### **kb-custom-13**
|
||||
`kb-custom-13`
|
||||
|
||||
Custom keybinding 13
|
||||
|
||||
**Default**: Alt+numbersign
|
||||
Default: Alt+numbersign
|
||||
|
||||
### **kb-custom-14**
|
||||
`kb-custom-14`
|
||||
|
||||
Custom keybinding 14
|
||||
|
||||
**Default**: Alt+dollar
|
||||
Default: Alt+dollar
|
||||
|
||||
### **kb-custom-15**
|
||||
`kb-custom-15`
|
||||
|
||||
Custom keybinding 15
|
||||
|
||||
**Default**: Alt+percent
|
||||
Default: Alt+percent
|
||||
|
||||
### **kb-custom-16**
|
||||
`kb-custom-16`
|
||||
|
||||
Custom keybinding 16
|
||||
|
||||
**Default**: Alt+dead\_circumflex
|
||||
Default: Alt+dead\_circumflex
|
||||
|
||||
### **kb-custom-17**
|
||||
`kb-custom-17`
|
||||
|
||||
Custom keybinding 17
|
||||
|
||||
**Default**: Alt+ampersand
|
||||
Default: Alt+ampersand
|
||||
|
||||
### **kb-custom-18**
|
||||
`kb-custom-18`
|
||||
|
||||
Custom keybinding 18
|
||||
|
||||
**Default**: Alt+asterisk
|
||||
Default: Alt+asterisk
|
||||
|
||||
### **kb-custom-19**
|
||||
`kb-custom-19`
|
||||
|
||||
Custom Keybinding 19
|
||||
|
||||
**Default**: Alt+parenleft
|
||||
Default: Alt+parenleft
|
||||
|
||||
### **kb-select-1**
|
||||
`kb-select-1`
|
||||
|
||||
Select row 1
|
||||
|
||||
**Default**: Super+1
|
||||
Default: Super+1
|
||||
|
||||
### **kb-select-2**
|
||||
`kb-select-2`
|
||||
|
||||
Select row 2
|
||||
|
||||
**Default**: Super+2
|
||||
Default: Super+2
|
||||
|
||||
### **kb-select-3**
|
||||
`kb-select-3`
|
||||
|
||||
Select row 3
|
||||
|
||||
**Default**: Super+3
|
||||
Default: Super+3
|
||||
|
||||
### **kb-select-4**
|
||||
`kb-select-4`
|
||||
|
||||
Select row 4
|
||||
|
||||
**Default**: Super+4
|
||||
Default: Super+4
|
||||
|
||||
### **kb-select-5**
|
||||
`kb-select-5`
|
||||
|
||||
Select row 5
|
||||
|
||||
**Default**: Super+5
|
||||
Default: Super+5
|
||||
|
||||
### **kb-select-6**
|
||||
`kb-select-6`
|
||||
|
||||
Select row 6
|
||||
|
||||
**Default**: Super+6
|
||||
Default: Super+6
|
||||
|
||||
### **kb-select-7**
|
||||
`kb-select-7`
|
||||
|
||||
Select row 7
|
||||
|
||||
**Default**: Super+7
|
||||
Default: Super+7
|
||||
|
||||
### **kb-select-8**
|
||||
`kb-select-8`
|
||||
|
||||
Select row 8
|
||||
|
||||
**Default**: Super+8
|
||||
Default: Super+8
|
||||
|
||||
### **kb-select-9**
|
||||
`kb-select-9`
|
||||
|
||||
Select row 9
|
||||
|
||||
**Default**: Super+9
|
||||
Default: Super+9
|
||||
|
||||
### **kb-select-10**
|
||||
`kb-select-10`
|
||||
|
||||
Select row 10
|
||||
|
||||
**Default**: Super+0
|
||||
Default: Super+0
|
||||
|
||||
### **kb-entry-history-up**
|
||||
`kb-entry-history-up`
|
||||
|
||||
Go up in the entry history.
|
||||
|
||||
**Default**: Control+Up
|
||||
Default: Control+Up
|
||||
|
||||
### **kb-entry-history-down**
|
||||
`kb-entry-history-down`
|
||||
|
||||
Go down in the entry history.
|
||||
|
||||
**Default**: Control+Down
|
||||
Default: Control+Down
|
||||
|
||||
`kb-matcher-up`
|
||||
|
||||
Select the next matcher.
|
||||
|
||||
Default: Super+equal
|
||||
|
||||
`kb-matcher-down`
|
||||
|
||||
Select the previous matcher.
|
||||
|
||||
Default: Super+minus
|
||||
|
||||
## Mouse Bindings
|
||||
|
||||
### **ml-row-left**
|
||||
`ml-row-left`
|
||||
|
||||
Go to the previous column
|
||||
|
||||
**Default**: ScrollLeft
|
||||
Default: ScrollLeft
|
||||
|
||||
### **ml-row-right**
|
||||
`ml-row-right`
|
||||
|
||||
Go to the next column
|
||||
|
||||
**Default**: ScrollRight
|
||||
Default: ScrollRight
|
||||
|
||||
### **ml-row-up**
|
||||
`ml-row-up`
|
||||
|
||||
Select previous entry
|
||||
|
||||
**Default**: ScrollUp
|
||||
Default: ScrollUp
|
||||
|
||||
### **ml-row-down**
|
||||
`ml-row-down`
|
||||
|
||||
Select next entry
|
||||
|
||||
**Default**: ScrollDown
|
||||
Default: ScrollDown
|
||||
|
||||
### **me-select-entry**
|
||||
`me-select-entry`
|
||||
|
||||
Select hovered row
|
||||
|
||||
**Default**: MousePrimary
|
||||
Default: MousePrimary
|
||||
|
||||
### **me-accept-entry**
|
||||
`me-accept-entry`
|
||||
|
||||
Accept hovered row
|
||||
|
||||
**Default**: MouseDPrimary
|
||||
Default: MouseDPrimary
|
||||
|
||||
### **me-accept-custom**
|
||||
`me-accept-custom`
|
||||
|
||||
Accept hovered row with custom action
|
||||
|
||||
**Default**: Control+MouseDPrimary
|
||||
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
|
||||
|
||||
|
@@ -1,277 +0,0 @@
|
||||
.nh
|
||||
.TH ROFI-SCRIPT 5 rofi-script
|
||||
.SH NAME
|
||||
.PP
|
||||
\fBrofi script mode\fP - Rofi format for scriptable mode.
|
||||
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
\fBrofi\fP 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.
|
||||
|
||||
.SH USAGE
|
||||
.PP
|
||||
To specify a script mode, set a mode with the following syntax:
|
||||
"{name}:{executable}"
|
||||
|
||||
.PP
|
||||
For example:
|
||||
|
||||
.PP
|
||||
.RS
|
||||
|
||||
.nf
|
||||
rofi -show fb -modes "fb:file_browser.sh"
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.PP
|
||||
The name should be unique.
|
||||
|
||||
.SH API
|
||||
.PP
|
||||
Rofi calls the executable without arguments on startup. This should generate a
|
||||
list of options, separated by a newline (\fB\fC\\n\fR) (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.
|
||||
|
||||
.PP
|
||||
A simple script would be:
|
||||
|
||||
.PP
|
||||
.RS
|
||||
|
||||
.nf
|
||||
#!/usr/bin/env bash
|
||||
|
||||
if [ x"$@" = x"quit" ]
|
||||
then
|
||||
exit 0
|
||||
fi
|
||||
echo "reload"
|
||||
echo "quit"
|
||||
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.PP
|
||||
This shows two entries, reload and quit. When the quit entry is selected, rofi
|
||||
closes.
|
||||
|
||||
.SH Environment
|
||||
.PP
|
||||
Rofi sets the following environment variable when executing the script:
|
||||
|
||||
.SS \fB\fCROFI_RETV\fR
|
||||
.PP
|
||||
An integer number with the current state:
|
||||
|
||||
.RS
|
||||
.IP \(bu 2
|
||||
\fB0\fP: Initial call of script.
|
||||
.IP \(bu 2
|
||||
\fB1\fP: Selected an entry.
|
||||
.IP \(bu 2
|
||||
\fB2\fP: Selected a custom entry.
|
||||
.IP \(bu 2
|
||||
\fB10-28\fP: Custom keybinding 1-19 ( need to be explicitly enabled by script ).
|
||||
|
||||
.RE
|
||||
|
||||
.SS \fB\fCROFI_INFO\fR
|
||||
.PP
|
||||
Environment get set when selected entry get set with the property value of the
|
||||
'info' row option, if set.
|
||||
|
||||
.SS \fB\fCROFI_DATA\fR
|
||||
.PP
|
||||
Environment get set when script sets \fB\fCdata\fR option in header.
|
||||
|
||||
.SH Passing mode options
|
||||
.PP
|
||||
Extra options, like setting the prompt, can be set by the script. Extra options
|
||||
are lines that start with a NULL character (\fB\fC\\0\fR) followed by a key, separator
|
||||
(\fB\fC\\x1f\fR) and value.
|
||||
|
||||
.PP
|
||||
For example to set the prompt:
|
||||
|
||||
.PP
|
||||
.RS
|
||||
|
||||
.nf
|
||||
echo -en "\\0prompt\\x1fChange prompt\\n"
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.PP
|
||||
The following extra options exists:
|
||||
|
||||
.RS
|
||||
.IP \(bu 2
|
||||
\fBprompt\fP: Update the prompt text.
|
||||
.IP \(bu 2
|
||||
\fBmessage\fP: Update the message text.
|
||||
.IP \(bu 2
|
||||
\fBmarkup-rows\fP: If 'true' renders markup in the row.
|
||||
.IP \(bu 2
|
||||
\fBurgent\fP: Mark rows as urgent. (for syntax see the urgent option in
|
||||
dmenu mode)
|
||||
.IP \(bu 2
|
||||
\fBactive\fP: Mark rows as active. (for syntax see the active option in
|
||||
dmenu mode)
|
||||
.IP \(bu 2
|
||||
\fBdelim\fP: 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.
|
||||
.IP \(bu 2
|
||||
\fBno-custom\fP: If set to 'true'; only accept listed entries, ignore custom
|
||||
input.
|
||||
.IP \(bu 2
|
||||
\fBuse-hot-keys\fP: If set to true, it enabled the Custom keybindings for
|
||||
script. Warning this breaks the normal rofi flow.
|
||||
.IP \(bu 2
|
||||
\fBkeep-selection\fP: If set, the selection is not moved to the first entry,
|
||||
but the current position is maintained. The filter is cleared.
|
||||
.IP \(bu 2
|
||||
\fBnew-selection\fP: If \fB\fCkeep-selection\fR is set, this allows you to override
|
||||
the selected entry (absolute position).
|
||||
.IP \(bu 2
|
||||
\fBdata\fP: Passed data to the next execution of the script via
|
||||
\fBROFI_DATA\fP\&.
|
||||
.IP \(bu 2
|
||||
\fBtheme\fP: Small theme snippet to f.e. change the background color of
|
||||
a widget.
|
||||
|
||||
.RE
|
||||
|
||||
.PP
|
||||
The \fBtheme\fP 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.
|
||||
|
||||
.SH Parsing row options
|
||||
.PP
|
||||
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.
|
||||
|
||||
.PP
|
||||
For example:
|
||||
|
||||
.PP
|
||||
.RS
|
||||
|
||||
.nf
|
||||
echo -en "aap\\0icon\\x1ffolder\\n"
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.PP
|
||||
The following options are supported:
|
||||
|
||||
.RS
|
||||
.IP \(bu 2
|
||||
\fBicon\fP: Set the icon for that row.
|
||||
.IP \(bu 2
|
||||
\fBdisplay\fP: Replace the displayed string. (Original string will still be used for filtering)
|
||||
.IP \(bu 2
|
||||
\fBmeta\fP: Specify invisible search terms used for filtering.
|
||||
.IP \(bu 2
|
||||
\fBnonselectable\fP: If true the row cannot activated.
|
||||
.IP \(bu 2
|
||||
\fBinfo\fP: Info that, on selection, gets placed in the \fB\fCROFI_INFO\fR
|
||||
environment variable. This entry does not get searched for filtering.
|
||||
.IP \(bu 2
|
||||
\fBurgent\fP: Set urgent flag on entry (true/false)
|
||||
.IP \(bu 2
|
||||
\fBactive\fP: Set active flag on entry (true/false)
|
||||
|
||||
.RE
|
||||
|
||||
.PP
|
||||
multiple entries can be passed using the \fB\fC\\x1f\fR separator.
|
||||
|
||||
.PP
|
||||
.RS
|
||||
|
||||
.nf
|
||||
echo -en "aap\\0icon\\x1ffolder\\x1finfo\\x1ftest\\n"
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.SH Executing external program
|
||||
.PP
|
||||
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).
|
||||
|
||||
.PP
|
||||
In bash the best way to do this is using \fB\fCcoproc\fR\&.
|
||||
|
||||
.PP
|
||||
.RS
|
||||
|
||||
.nf
|
||||
coproc ( myApp > /dev/null 2>&1 )
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.SH DASH shell
|
||||
.PP
|
||||
If you use the \fB\fCdash\fR shell for your script, take special care with how dash
|
||||
handles escaped values for the separators. See issue #1201 on github.
|
||||
|
||||
.SH Script locations
|
||||
.PP
|
||||
To specify a script there are the following options:
|
||||
|
||||
.RS
|
||||
.IP \(bu 2
|
||||
Specify an absolute path to the script.
|
||||
.IP \(bu 2
|
||||
The script is executable and located in your $PATH
|
||||
|
||||
.RE
|
||||
|
||||
.PP
|
||||
Scripts located in the following location are loaded on startup:
|
||||
|
||||
.RS
|
||||
.IP \(bu 2
|
||||
The script is in \fB\fC$XDG_CONFIG_PATH/rofi/scripts/\fR, this is usually
|
||||
\fB\fC~/.config/rofi/scripts/\fR\&.
|
||||
|
||||
.RE
|
||||
|
||||
.SH SEE ALSO
|
||||
.PP
|
||||
rofi(1), rofi-sensible-terminal(1), dmenu(1), rofi-theme(5),
|
||||
rofi-theme-selector(1)
|
||||
|
||||
.SH AUTHOR
|
||||
.PP
|
||||
Qball Cow qball@gmpclient.org
|
||||
\[la]mailto:qball@gmpclient.org\[ra]
|
||||
|
||||
.PP
|
||||
Rasmus Steinke rasi@xssn.at
|
||||
\[la]mailto:rasi@xssn.at\[ra]
|
||||
|
||||
.PP
|
||||
Morgane Glidic sardemff7+rofi@sardemff7.net
|
||||
\[la]mailto:sardemff7+rofi@sardemff7.net\[ra]
|
||||
|
||||
.PP
|
||||
Original code based on work by: Sean Pringle sean.pringle@gmail.com
|
||||
\[la]mailto:sean.pringle@gmail.com\[ra]
|
||||
|
||||
.PP
|
||||
For a full list of authors, check the AUTHORS file.
|
@@ -1,4 +1,4 @@
|
||||
# ROFI-SCRIPT 5 rofi-script
|
||||
# rofi-script(5)
|
||||
|
||||
## NAME
|
||||
|
||||
@@ -59,6 +59,7 @@ An integer number with the current state:
|
||||
- **0**: Initial call of script.
|
||||
- **1**: Selected an entry.
|
||||
- **2**: Selected a custom entry.
|
||||
- **3**: Deleted an entry.
|
||||
- **10-28**: Custom keybinding 1-19 ( need to be explicitly enabled by script ).
|
||||
|
||||
### `ROFI_INFO`
|
||||
@@ -109,6 +110,8 @@ The following extra options exists:
|
||||
- **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).
|
||||
|
||||
@@ -143,6 +146,8 @@ The following options are supported:
|
||||
|
||||
- **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.
|
||||
|
||||
@@ -180,11 +185,20 @@ 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:
|
||||
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_PATH/rofi/scripts/`, this is usually
|
||||
- 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),
|
||||
|
@@ -1,73 +0,0 @@
|
||||
.nh
|
||||
.TH rofi-sensible-terminal 1 rofi-sensible-terminal
|
||||
.SH NAME
|
||||
.PP
|
||||
\fBrofi-sensible-terminal\fP - launches $TERMINAL with fallbacks
|
||||
|
||||
.SH SYNOPSIS
|
||||
.PP
|
||||
rofi-sensible-terminal [arguments]
|
||||
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
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.
|
||||
|
||||
.PP
|
||||
It tries to start one of the following (in that order):
|
||||
|
||||
.RS
|
||||
.IP \(bu 2
|
||||
\fB\fC$TERMINAL\fR (this is a non-standard variable)
|
||||
.IP \(bu 2
|
||||
x-terminal-emulator
|
||||
.IP \(bu 2
|
||||
urxvt
|
||||
.IP \(bu 2
|
||||
rxvt
|
||||
.IP \(bu 2
|
||||
st
|
||||
.IP \(bu 2
|
||||
terminology
|
||||
.IP \(bu 2
|
||||
qterminal
|
||||
.IP \(bu 2
|
||||
Eterm
|
||||
.IP \(bu 2
|
||||
aterm
|
||||
.IP \(bu 2
|
||||
uxterm
|
||||
.IP \(bu 2
|
||||
xterm
|
||||
.IP \(bu 2
|
||||
roxterm
|
||||
.IP \(bu 2
|
||||
xfce4-terminal.wrapper
|
||||
.IP \(bu 2
|
||||
mate-terminal
|
||||
.IP \(bu 2
|
||||
lxterminal
|
||||
.IP \(bu 2
|
||||
konsole
|
||||
.IP \(bu 2
|
||||
alacritty
|
||||
.IP \(bu 2
|
||||
kitty
|
||||
.IP \(bu 2
|
||||
wezterm
|
||||
|
||||
.RE
|
||||
|
||||
.SH SEE ALSO
|
||||
.PP
|
||||
rofi(1)
|
||||
|
||||
.SH AUTHORS
|
||||
.PP
|
||||
Dave Davenport and contributors
|
||||
|
||||
.PP
|
||||
Copied script from i3:
|
||||
Michael Stapelberg and contributors
|
@@ -1,4 +1,4 @@
|
||||
# rofi-sensible-terminal 1 rofi-sensible-terminal
|
||||
# rofi-sensible-terminal(1)
|
||||
|
||||
## NAME
|
||||
|
||||
@@ -36,6 +36,7 @@ It tries to start one of the following (in that order):
|
||||
* alacritty
|
||||
* kitty
|
||||
* wezterm
|
||||
* foot
|
||||
|
||||
|
||||
## SEE ALSO
|
||||
|
@@ -1,46 +0,0 @@
|
||||
.nh
|
||||
.TH rofi-theme-selector 1 rofi-theme-selector
|
||||
.SH NAME
|
||||
.PP
|
||||
\fBrofi-theme-selector\fP - Preview and apply themes for \fBrofi\fP
|
||||
|
||||
.SH DESCRIPTION
|
||||
.PP
|
||||
\fBrofi-theme-selector\fP is a bash/rofi script to preview and apply themes for
|
||||
\fBrofi\fP\&. It's part of any installation of \fBrofi\fP\&.
|
||||
|
||||
.SH USAGE
|
||||
.SS Running rofi-theme-selector
|
||||
.PP
|
||||
\fBrofi-theme-selector\fP shows a list of all available themes in a \fBrofi\fP
|
||||
window. It lets you preview each theme with the Enter key and apply the theme
|
||||
to your \fBrofi\fP configuration file with Alt+a.
|
||||
|
||||
.SH Theme directories
|
||||
.PP
|
||||
\fBrofi-theme-selector\fP searches the following directories for themes:
|
||||
|
||||
.RS
|
||||
.IP \(bu 2
|
||||
${PREFIX}/share/rofi/themes
|
||||
.IP \(bu 2
|
||||
$XDG_CONFIG_HOME/rofi/themes
|
||||
.IP \(bu 2
|
||||
$XDG_DATA_HOME/share/rofi/themes
|
||||
|
||||
.RE
|
||||
|
||||
.PP
|
||||
${PREFIX} reflects the install location of rofi. In most cases this will be
|
||||
"/usr".
|
||||
$XDG_CONFIG_HOME is normally unset. Default path is "$HOME/.config".
|
||||
$XDG_DATA_HOME is normally unset. Default path is "$HOME/.local/share".
|
||||
|
||||
.SH SEE ALSO
|
||||
.PP
|
||||
rofi(1)
|
||||
|
||||
.SH AUTHORS
|
||||
.PP
|
||||
Qball Cow qball@gmpclient.org
|
||||
Rasmus Steinke rasi@xssn.at
|
@@ -1,4 +1,4 @@
|
||||
# rofi-theme-selector 1 rofi-theme-selector
|
||||
# rofi-theme-selector(1)
|
||||
|
||||
## NAME
|
||||
|
||||
|
@@ -1,4 +1,4 @@
|
||||
# ROFI-THEME 5 rofi-theme
|
||||
# rofi-theme(5)
|
||||
|
||||
## NAME
|
||||
|
||||
@@ -132,18 +132,18 @@ element-text {
|
||||
└─────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
We can also specify the color and width of the cursor. You could, for example,
|
||||
create a crimson block cursor like this:
|
||||
We can also customize the cursor's color, width, and choose to hide it when the input box is empty. You could, for example, create a crimson block cursor that only appears when text is entered, like this:
|
||||
|
||||
```css
|
||||
entry {
|
||||
cursor-color: rgb(220,20,60);
|
||||
cursor-width: 8px;
|
||||
hide-cursor-on-empty: true;
|
||||
}
|
||||
```
|
||||
|
||||
By default, the `cursor-color` will be the same as the `text-color`. The
|
||||
`cursor-width` will always default to 2 pixels.
|
||||
`cursor-width` will always default to 2 pixels and `hide-cursor-on-empty` is set to false.
|
||||
|
||||
If you want to see the complete theme, including the modification you can run:
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -896,22 +899,28 @@ These are appended after the name or class of the widget.
|
||||
|
||||
#### Example
|
||||
|
||||
`button selected.normal { }`
|
||||
```
|
||||
button selected.normal { }
|
||||
|
||||
`element selected.urgent { }`
|
||||
element selected.urgent { }
|
||||
```
|
||||
|
||||
Currently only the entrybox and scrollbar have states:
|
||||
|
||||
#### Entrybox
|
||||
|
||||
`{visible modifier}.{state}`
|
||||
```
|
||||
{visible modifier}.{state}
|
||||
```
|
||||
|
||||
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
|
||||
@@ -955,6 +964,11 @@ The following properties are currently supported:
|
||||
|
||||
- **border-radius**: padding
|
||||
Sets a radius on the corners of the borders.
|
||||
- border-aa: boolean
|
||||
Disable aliasing on the border line. Disabling fixes some drawing issues because of nvidia broken driver workaround.
|
||||
|
||||
- border-disable-nvidia-workaround: boolean
|
||||
Disable work-around for nvidia driver breaking.
|
||||
|
||||
- **background-color**: color
|
||||
Background color
|
||||
@@ -1002,6 +1016,7 @@ The following properties are currently supported:
|
||||
- **handle-width**: distance
|
||||
- **handle-color**: color
|
||||
- **border-color**: color
|
||||
- **handle-rounded-corners**: boolean for rounded scrollbar
|
||||
|
||||
### box
|
||||
|
||||
@@ -1059,6 +1074,9 @@ The following properties are currently supported:
|
||||
|
||||
- **cursor-color**: The color used to draw the cursor.
|
||||
|
||||
- **hide-cursor-on-empty**: Hides the cursor when the search field is empty.
|
||||
(Boolean)
|
||||
|
||||
- **cursor-outline**: Enable a border (outline) around the cursor.
|
||||
(Boolean)
|
||||
|
||||
@@ -1075,6 +1093,7 @@ The following properties are currently supported:
|
||||
- **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
|
||||
@@ -1108,6 +1127,10 @@ The following properties are currently supported:
|
||||
- **require-input**: boolean Listview requires user input to be unhidden.
|
||||
The list is still present and hitting accept will activate the first entry.
|
||||
|
||||
### Overlay widget
|
||||
|
||||
- **timeout**: The time the widget is visible when showing a temporary message.
|
||||
|
||||
## Listview widget
|
||||
|
||||
The listview widget is special container widget.
|
||||
@@ -1211,6 +1234,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
|
||||
@@ -1551,7 +1575,9 @@ From the pango manpage:
|
||||
|
||||
The string must have the form
|
||||
|
||||
`\[FAMILY-LIST] \[STYLE-OPTIONS] \[SIZE] \[VARIATIONS]`,
|
||||
```text
|
||||
\[FAMILY-LIST] \[STYLE-OPTIONS] \[SIZE] \[VARIATIONS]
|
||||
```
|
||||
|
||||
where FAMILY-LIST is a comma-separated list of families optionally terminated
|
||||
by a comma, STYLE\_OPTIONS is a whitespace-separated list of words where each
|
||||
@@ -1612,6 +1638,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.
|
||||
|
||||
@@ -1641,7 +1668,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
|
||||
|
||||
|
85
doc/rofi-thumbnails.5.markdown
Normal file
85
doc/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.
|
1813
doc/rofi.1
1813
doc/rofi.1
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
# ROFI 1 rofi
|
||||
# rofi(1)
|
||||
|
||||
## NAME
|
||||
|
||||
@@ -246,6 +246,12 @@ exec command. For that case, `#` can be used as a separator.
|
||||
Start in case-sensitive mode. This option can be changed at run-time using the
|
||||
`-kb-toggle-case-sensitivity` key binding.
|
||||
|
||||
`-case-smart`
|
||||
|
||||
Start in case-smart mode behave like vim's `smartcase`, which determines
|
||||
case-sensitivity by input. When enabled, this will suppress `-case-sensitive`
|
||||
config.
|
||||
|
||||
`-cycle`
|
||||
|
||||
Cycle through the result list. Default is 'true'.
|
||||
@@ -302,6 +308,12 @@ Use Pango markup to format output wherever possible.
|
||||
Make **rofi** react like a normal application window. Useful for scripts like
|
||||
Clerk that are basically an application.
|
||||
|
||||
`-transient-window`
|
||||
|
||||
Make **rofi** react like a modal dialog that is transient to the currently
|
||||
focused window. Useful when you use a keyboard shortcut to run and show
|
||||
on the window you are working with.
|
||||
|
||||
`-[no-]steal-focus`
|
||||
|
||||
Make rofi steal focus on launch and restore close to window that held it when
|
||||
@@ -323,6 +335,7 @@ configuration {
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Example
|
||||
|
||||
```css
|
||||
@@ -348,6 +361,9 @@ Currently, the following methods are supported:
|
||||
|
||||
Default: *normal*
|
||||
|
||||
Multiple matching methods can be specified in a comma separated list.
|
||||
The matching up/down keybinding allows cycling through at runtime.
|
||||
|
||||
Note: glob matching might be slow for larger lists
|
||||
|
||||
`-tokenize`
|
||||
@@ -358,6 +374,10 @@ Tokenize the input.
|
||||
|
||||
Only show desktop files that are present in the listed categories.
|
||||
|
||||
`-drun-exclude-categories` *category1*,*category2*
|
||||
|
||||
Exclude desktop files that are present in the listed categories.
|
||||
|
||||
`-drun-match-fields` *field1*,*field2*,...
|
||||
|
||||
When using `drun`, match only with the specified Desktop entry fields.
|
||||
@@ -385,7 +405,7 @@ The format string for the `drun` dialog:
|
||||
|
||||
Pango markup can be used to formatting the output.
|
||||
|
||||
Default: {name} [<span weight='light' size='small'><i>({generic})</i></span>]
|
||||
Default: `{name} [<span weight='light' size='small'><i>({generic})</i></span>]`
|
||||
|
||||
Note: Only fields enabled in `-drun-match-fields` can be used in the format
|
||||
string.
|
||||
@@ -417,17 +437,16 @@ For Wayland, the list of accepted fields is different:
|
||||
|
||||
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: '-'
|
||||
|
||||
### Filtered menu sort
|
||||
|
||||
`-sort` to enable
|
||||
`-no-sort` to disable
|
||||
`-[no]-sort`
|
||||
|
||||
Enable, disable sort for filtered menu.
|
||||
This setting can be changed at runtime (see `-kb-toggle-sort`).
|
||||
@@ -498,10 +517,7 @@ Default: *1*
|
||||
|
||||
When one entry is left, automatically select it.
|
||||
|
||||
`-m` *num*
|
||||
`-m` *name*
|
||||
`-monitor` *num*
|
||||
`-monitor` *name*
|
||||
`-m` *num*, `-m` *name*, `-monitor` *num*, `-monitor` *name*
|
||||
|
||||
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
|
||||
@@ -595,8 +611,7 @@ Parse the `/etc/hosts` file for entries.
|
||||
|
||||
Default: *disabled*
|
||||
|
||||
`-parse-known-hosts`
|
||||
`-no-parse-known-hosts`
|
||||
`-[no-]parse-known-hosts`
|
||||
|
||||
Parse the `~/.ssh/known_hosts` file for entries.
|
||||
|
||||
@@ -675,6 +690,7 @@ configuration {
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
You can hide the currently active window with the 'hide-active-window' setting:
|
||||
|
||||
```css
|
||||
@@ -730,10 +746,9 @@ Note: This setting is ignored if `combi-hide-mode-prefix` is enabled.
|
||||
|
||||
### History
|
||||
|
||||
`-disable-history`
|
||||
`-no-disable-history` (re-enable history)
|
||||
`-[no-]disable-history`
|
||||
|
||||
Disable history
|
||||
Disable or re-enable history
|
||||
|
||||
`-max-history-size` *number*
|
||||
|
||||
@@ -861,13 +876,20 @@ configuration {
|
||||
}
|
||||
```
|
||||
|
||||
`-click-to-exit`
|
||||
`-no-click-to-exit`
|
||||
`-[no-]click-to-exit`
|
||||
|
||||
Click the mouse outside the **rofi** window to exit.
|
||||
|
||||
Default: *enabled*
|
||||
|
||||
`-global-kb`
|
||||
`-no-global-kb`
|
||||
|
||||
(wayland) Override the compositor's keybindings, so that **rofi** can re-use them.
|
||||
|
||||
Default: *disabled*
|
||||
|
||||
|
||||
`-xserver-i300-workaround`
|
||||
|
||||
Workaround for bug in Xserver. See issue #611 and #1642 on the rofi issue
|
||||
@@ -1007,9 +1029,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
|
||||
|
1297
doc/rofi.doxy.in
1297
doc/rofi.doxy.in
File diff suppressed because it is too large
Load Diff
@@ -28,6 +28,7 @@
|
||||
#ifndef ROFI_DISPLAY_INTERNAL_H
|
||||
#define ROFI_DISPLAY_INTERNAL_H
|
||||
|
||||
#include "display.h"
|
||||
#include "helper.h"
|
||||
#include "nkutils-bindings.h"
|
||||
#include <glib.h>
|
||||
@@ -48,8 +49,8 @@ typedef struct _display_proxy {
|
||||
|
||||
void (*set_input_focus)(guint window);
|
||||
void (*revert_input_focus)(void);
|
||||
char *(*get_clipboard_data)(int type);
|
||||
void (*set_fullscreen_mode)();
|
||||
void (*get_clipboard_data)(int type, ClipboardCb callback, void *user_data);
|
||||
void (*set_fullscreen_mode)(void);
|
||||
|
||||
guint (*scale)(void);
|
||||
|
||||
|
@@ -127,7 +127,8 @@ enum clipboard_type {
|
||||
CLIPBOARD_PRIMARY,
|
||||
};
|
||||
|
||||
char *display_get_clipboard_data(enum clipboard_type);
|
||||
typedef void (* ClipboardCb)(char *clipboard_data, void *user_data);
|
||||
void display_get_clipboard_data(enum clipboard_type, ClipboardCb callback, void* user_data);
|
||||
|
||||
void display_set_fullscreen_mode(void);
|
||||
|
||||
|
@@ -200,13 +200,15 @@ char *rofi_expand_path(const char *input);
|
||||
* @param needlelen The length of the needle
|
||||
* @param haystack The string to match against
|
||||
* @param haystacklen The length of the haystack
|
||||
* @param case_sensitive Whether case is significant.
|
||||
*
|
||||
* UTF-8 aware levenshtein distance calculation
|
||||
*
|
||||
* @returns the levenshtein distance between needle and haystack
|
||||
*/
|
||||
unsigned int levenshtein(const char *needle, const glong needlelen,
|
||||
const char *haystack, const glong haystacklen);
|
||||
const char *haystack, const glong haystacklen,
|
||||
const int case_sensitive);
|
||||
|
||||
/**
|
||||
* @param data the unvalidated character array holding possible UTF-8 data
|
||||
@@ -234,6 +236,7 @@ char *rofi_latin_to_utf8_strdup(const char *input, gssize length);
|
||||
* @param plen Pattern length.
|
||||
* @param str The input to match against pattern.
|
||||
* @param slen Length of str.
|
||||
* @param case_sensitive Whether case is significant.
|
||||
*
|
||||
* rofi_scorer_fuzzy_evaluate implements a global sequence alignment algorithm
|
||||
* to find the maximum accumulated score by aligning `pattern` to `str`. It
|
||||
@@ -263,7 +266,7 @@ char *rofi_latin_to_utf8_strdup(const char *input, gssize length);
|
||||
* @returns the sorting weight.
|
||||
*/
|
||||
int rofi_scorer_fuzzy_evaluate(const char *pattern, glong plen, const char *str,
|
||||
glong slen);
|
||||
glong slen, const int case_sensitive);
|
||||
/*@}*/
|
||||
|
||||
/**
|
||||
@@ -319,7 +322,9 @@ gboolean helper_execute(const char *wd, char **args, const char *error_precmd,
|
||||
* @param wd The work directory (optional)
|
||||
* @param cmd The cmd to execute
|
||||
* @param run_in_term Indicate if command should be run in a terminal
|
||||
* @param context The startup notification context, if any
|
||||
* @param startup_notify True if the command is expected to notify on startup
|
||||
* @param context Additional information about the application, such as its
|
||||
* app_id. May be NULL.
|
||||
*
|
||||
* Execute command.
|
||||
* If needed members of context are NULL, they will be filled.
|
||||
@@ -328,6 +333,7 @@ gboolean helper_execute(const char *wd, char **args, const char *error_precmd,
|
||||
*/
|
||||
gboolean helper_execute_command(const char *wd, const char *cmd,
|
||||
gboolean run_in_term,
|
||||
gboolean startup_notify,
|
||||
RofiHelperExecuteContext *context);
|
||||
|
||||
/**
|
||||
@@ -353,6 +359,13 @@ cairo_surface_t *cairo_image_surface_create_from_svg(const gchar *file,
|
||||
*/
|
||||
void parse_ranges(char *input, rofi_range_pair **list, unsigned int *length);
|
||||
|
||||
/**
|
||||
* @param input String to parse
|
||||
*
|
||||
* @returns String matching should be case sensitive or insensitive
|
||||
*/
|
||||
int parse_case_sensitivity(const char *input);
|
||||
|
||||
/**
|
||||
* @param format The format string used. See below for possible syntax.
|
||||
* @param string The selected entry.
|
||||
@@ -396,6 +409,9 @@ char *helper_string_replace_if_exists(char *string, ...);
|
||||
* @param ext NULL terminated array of file extension passed to option.
|
||||
* @param parent_dir The file that was used to import this file, or NULL.
|
||||
*
|
||||
* Get the full path to the theme, trying to resolve it over the possible
|
||||
* locations.
|
||||
*
|
||||
* @returns path to theme or copy of filename if not found.
|
||||
*/
|
||||
char *helper_get_theme_path(const char *file, const char **ext,
|
||||
@@ -429,6 +445,32 @@ ConfigEntry *rofi_config_find_widget(const char *name, const char *state,
|
||||
*/
|
||||
Property *rofi_theme_find_property(ConfigEntry *widget, PropertyType type,
|
||||
const char *property, gboolean exact);
|
||||
|
||||
/**
|
||||
* @returns get a human readable string with the current matching method.
|
||||
*/
|
||||
const char *helper_get_matching_mode_str(void);
|
||||
/**
|
||||
* Switch to the next matching method.
|
||||
*/
|
||||
void helper_select_next_matching_mode(void);
|
||||
/**
|
||||
* Switch to the previous matching method.
|
||||
*/
|
||||
void helper_select_previous_matching_mode(void);
|
||||
|
||||
/**
|
||||
* Method to indicate fallthrough. This will help
|
||||
* gcc/llvm warning/static code analysis.
|
||||
*/
|
||||
#if __has_attribute(__fallthrough__)
|
||||
#define rofi_fallthrough __attribute__((__fallthrough__))
|
||||
#else
|
||||
#define rofi_fallthrough \
|
||||
do { \
|
||||
} while (0) /* fallthrough */
|
||||
#endif
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
/**@} */
|
||||
|
@@ -145,6 +145,8 @@ typedef enum {
|
||||
SELECT_ELEMENT_10,
|
||||
ENTRY_HISTORY_UP,
|
||||
ENTRY_HISTORY_DOWN,
|
||||
MATCHER_UP,
|
||||
MATCHER_DOWN
|
||||
} KeyBindingAction;
|
||||
|
||||
/**
|
||||
|
@@ -31,9 +31,6 @@
|
||||
#include <gmodule.h>
|
||||
G_BEGIN_DECLS
|
||||
|
||||
/** ABI version to check if loaded plugin is compatible. */
|
||||
#define ABI_VERSION 7u
|
||||
|
||||
/**
|
||||
* Indicator what type of mode this is.
|
||||
* For now it can be the classic switcher, or also implement a completer.
|
||||
|
@@ -29,7 +29,12 @@
|
||||
#define ROFI_MODE_H
|
||||
#include "rofi-types.h"
|
||||
#include <cairo.h>
|
||||
#include <gmodule.h>
|
||||
G_BEGIN_DECLS
|
||||
|
||||
/** ABI version to check if loaded plugin is compatible. */
|
||||
#define ABI_VERSION 7u
|
||||
|
||||
/**
|
||||
* @defgroup MODE Mode
|
||||
*
|
||||
@@ -277,6 +282,28 @@ ModeMode mode_completer_result(Mode *sw, int menu_retv, char **input,
|
||||
* @returns TRUE if mode can be used as completer.
|
||||
*/
|
||||
gboolean mode_is_completer(const Mode *sw);
|
||||
|
||||
/**
|
||||
* @param mode The mode to query
|
||||
*
|
||||
* @returns the modes ABI version.
|
||||
*/
|
||||
int mode_get_abi_version(Mode *const mode);
|
||||
|
||||
/**
|
||||
* @param mode The mode to query
|
||||
* @param mod The GModule used to load the mode
|
||||
*
|
||||
* Set GModule used to load this plugin, this is used to
|
||||
* unload it on shutdown.
|
||||
*/
|
||||
void mode_plugin_set_module(Mode *mode, GModule *mod);
|
||||
/**
|
||||
* @param mode The mode to query
|
||||
*
|
||||
* @returns the GModule used to load this plugin. NULL if not a plugin.
|
||||
*/
|
||||
GModule *mode_plugin_get_module(Mode *mode);
|
||||
/**@}*/
|
||||
G_END_DECLS
|
||||
#endif
|
||||
|
@@ -27,6 +27,9 @@ typedef struct {
|
||||
/** non-selectable */
|
||||
gboolean nonselectable;
|
||||
|
||||
/** permanent */
|
||||
gboolean permanent;
|
||||
|
||||
/** urgent */
|
||||
gboolean urgent;
|
||||
/** active */
|
||||
|
@@ -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 */
|
||||
@@ -370,6 +366,7 @@ typedef struct rofi_int_matcher_t {
|
||||
*/
|
||||
typedef struct _thread_state {
|
||||
void (*callback)(struct _thread_state *t, gpointer data);
|
||||
void (*free)(void *);
|
||||
int priority;
|
||||
} thread_state;
|
||||
|
||||
|
@@ -40,7 +40,8 @@ typedef enum {
|
||||
MM_REGEX = 1,
|
||||
MM_GLOB = 2,
|
||||
MM_FUZZY = 3,
|
||||
MM_PREFIX = 4
|
||||
MM_PREFIX = 4,
|
||||
MM_NUM_MATCHERS = 5
|
||||
} MatchingMethod;
|
||||
|
||||
/**
|
||||
@@ -66,6 +67,21 @@ typedef struct {
|
||||
/** Whether to load and show icons */
|
||||
gboolean show_icons;
|
||||
|
||||
/** Custom command to generate preview icons */
|
||||
char *preview_cmd;
|
||||
|
||||
/** Custom command to call when menu selection changes */
|
||||
char *on_selection_changed;
|
||||
/** Custom command to call when menu mode changes */
|
||||
char *on_mode_changed;
|
||||
/** Custom command to call when menu entry is accepted */
|
||||
char *on_entry_accepted;
|
||||
/** Custom command to call when menu is canceled */
|
||||
char *on_menu_canceled;
|
||||
/** Custom command to call when menu finds errors */
|
||||
char *on_menu_error;
|
||||
/** Custom command to call when menu screenshot is taken */
|
||||
char *on_screenshot_taken;
|
||||
/** Terminal to use */
|
||||
char *terminal_emulator;
|
||||
/** SSH client to use */
|
||||
@@ -111,6 +127,8 @@ typedef struct {
|
||||
char *drun_match_fields;
|
||||
/** Only show entries in this category */
|
||||
char *drun_categories;
|
||||
/** Exclude entries in this category */
|
||||
char *drun_exclude_categories;
|
||||
/** Desktop entry show actions */
|
||||
unsigned int drun_show_actions;
|
||||
/** Desktop format display */
|
||||
@@ -120,6 +138,8 @@ typedef struct {
|
||||
|
||||
/** Search case sensitivity */
|
||||
unsigned int case_sensitive;
|
||||
/** Smart case sensitivity like vim */
|
||||
unsigned int case_smart;
|
||||
/** Cycle through in the element list */
|
||||
unsigned int cycle;
|
||||
/** Height of an element in number of rows */
|
||||
@@ -155,6 +175,9 @@ typedef struct {
|
||||
/** Click outside the window to exit */
|
||||
int click_to_exit;
|
||||
|
||||
/** Try to take over compositor's global bindings (on Wayland) */
|
||||
gboolean global_kb;
|
||||
|
||||
char *theme;
|
||||
/** Path where plugins can be found. */
|
||||
char *plugin_path;
|
||||
@@ -194,6 +217,8 @@ typedef struct {
|
||||
gboolean xserver_i300_workaround;
|
||||
/** completer mode */
|
||||
char *completer_mode;
|
||||
/** Whether to enable imdkit, see #2123 */
|
||||
gboolean enable_imdkit;
|
||||
} Settings;
|
||||
|
||||
/** Default number of lines in the list view */
|
||||
|
@@ -27,9 +27,11 @@
|
||||
|
||||
#ifndef ROFI_VIEW_INTERNAL_H
|
||||
#define ROFI_VIEW_INTERNAL_H
|
||||
#include "display.h"
|
||||
#include "keyb.h"
|
||||
#include "mode.h"
|
||||
#include "theme.h"
|
||||
#include "view.h"
|
||||
#include "widgets/box.h"
|
||||
#include "widgets/container.h"
|
||||
#include "widgets/icon.h"
|
||||
@@ -99,6 +101,8 @@ struct RofiViewState {
|
||||
int skip_absorb;
|
||||
/** The selected line (in the unfiltered list) */
|
||||
unsigned int selected_line;
|
||||
/** The previously selected line (in the unfiltered list) */
|
||||
unsigned int previous_line;
|
||||
/** The return state of the view */
|
||||
MenuReturn retv;
|
||||
/** Monitor #workarea the view is displayed on */
|
||||
@@ -157,26 +161,27 @@ struct RofiViewState {
|
||||
|
||||
/** Regexs used for matching */
|
||||
rofi_int_matcher **tokens;
|
||||
/** For case-sensitivity */
|
||||
gboolean case_sensitive;
|
||||
};
|
||||
/** @} */
|
||||
|
||||
typedef struct _view_proxy {
|
||||
void (*update)(RofiViewState *state, gboolean qr);
|
||||
void (*maybe_update)(RofiViewState *state);
|
||||
void (*temp_configure_notify)(RofiViewState *state,
|
||||
void (*update)(struct RofiViewState *state, gboolean qr);
|
||||
void (*temp_configure_notify)(struct RofiViewState *state,
|
||||
xcb_configure_notify_event_t *xce);
|
||||
void (*temp_click_to_exit)(RofiViewState *state, xcb_window_t target);
|
||||
void (*temp_click_to_exit)(struct RofiViewState *state, xcb_window_t target);
|
||||
void (*frame_callback)(void);
|
||||
|
||||
void (*queue_redraw)(void);
|
||||
|
||||
void (*set_window_title)(const char *title);
|
||||
void (*calculate_window_position)(RofiViewState *state);
|
||||
void (*calculate_window_width)(RofiViewState *state);
|
||||
int (*calculate_window_height)(RofiViewState *state);
|
||||
void (*window_update_size)(RofiViewState *state);
|
||||
void (*calculate_window_position)(struct RofiViewState *state);
|
||||
void (*calculate_window_width)(struct RofiViewState *state);
|
||||
int (*calculate_window_height)(struct RofiViewState *state);
|
||||
void (*window_update_size)(struct RofiViewState *state);
|
||||
void (*set_cursor)(RofiCursorType type);
|
||||
void (*ping_mouse)(RofiViewState *state);
|
||||
void (*ping_mouse)(struct RofiViewState *state);
|
||||
|
||||
void (*cleanup)(void);
|
||||
void (*hide)(void);
|
||||
@@ -187,10 +192,10 @@ typedef struct _view_proxy {
|
||||
void (*get_current_monitor)(int *width, int *height);
|
||||
void (*capture_screenshot)(void);
|
||||
|
||||
void (*set_size)(RofiViewState *state, gint width, gint height);
|
||||
void (*get_size)(RofiViewState *state, gint *width, gint *height);
|
||||
void (*set_size)(struct RofiViewState *state, gint width, gint height);
|
||||
void (*get_size)(struct RofiViewState *state, gint *width, gint *height);
|
||||
|
||||
void (*pool_refresh)();
|
||||
void (*pool_refresh)(void);
|
||||
} view_proxy;
|
||||
|
||||
typedef struct {
|
||||
@@ -220,6 +225,8 @@ struct _rofi_view_cache_state {
|
||||
gboolean delayed_mode;
|
||||
/** timeout handling */
|
||||
guint user_timeout;
|
||||
/** timeout overlay */
|
||||
guint overlay_timeout;
|
||||
/** Entry box */
|
||||
gboolean entry_history_enable;
|
||||
/** Array with history entriy input. */
|
||||
|
@@ -60,6 +60,8 @@ typedef enum {
|
||||
MENU_NORMAL_WINDOW = 2,
|
||||
/** ERROR dialog */
|
||||
MENU_ERROR_DIALOG = 4,
|
||||
/** Create transient window. */
|
||||
MENU_TRANSIENT_WINDOW = 8,
|
||||
} MenuFlags;
|
||||
|
||||
/**
|
||||
@@ -285,6 +287,14 @@ void rofi_view_switch_mode(RofiViewState *state, Mode *mode);
|
||||
* Overlays text over the current view. Passing NULL for text hides the overlay.
|
||||
*/
|
||||
void rofi_view_set_overlay(RofiViewState *state, const char *text);
|
||||
/**
|
||||
* @param state The handle to the view
|
||||
* @param text An UTF-8 encoded character array with the text to overlay.
|
||||
*
|
||||
* Overlays text over the current view. Passing NULL for text hides the overlay.
|
||||
* This message is automatically removed after X seconds.
|
||||
*/
|
||||
void rofi_view_set_overlay_timeout (RofiViewState *state, const char *text);
|
||||
|
||||
/**
|
||||
* @param state The handle to the view.
|
||||
|
@@ -14,6 +14,7 @@ typedef enum {
|
||||
WAYLAND_GLOBAL_COMPOSITOR,
|
||||
WAYLAND_GLOBAL_SHM,
|
||||
WAYLAND_GLOBAL_LAYER_SHELL,
|
||||
WAYLAND_GLOBAL_KEYBOARD_SHORTCUTS_INHIBITOR,
|
||||
WAYLAND_GLOBAL_CURSOR_SHAPE,
|
||||
_WAYLAND_GLOBAL_SIZE,
|
||||
} wayland_global_name;
|
||||
@@ -33,6 +34,10 @@ typedef struct {
|
||||
|
||||
typedef struct _wayland_seat wayland_seat;
|
||||
|
||||
typedef struct {
|
||||
void *offer;
|
||||
} clipboard_data;
|
||||
|
||||
typedef struct {
|
||||
GMainLoop *main_loop;
|
||||
GWaterWaylandSource *main_loop_source;
|
||||
@@ -51,6 +56,8 @@ typedef struct {
|
||||
|
||||
struct zwlr_layer_shell_v1 *layer_shell;
|
||||
|
||||
struct zwp_keyboard_shortcuts_inhibit_manager_v1 *kb_shortcuts_inhibit_manager;
|
||||
|
||||
struct wl_shm *shm;
|
||||
size_t buffer_count;
|
||||
struct {
|
||||
@@ -74,8 +81,7 @@ typedef struct {
|
||||
int32_t scale;
|
||||
NkBindingsSeat *bindings_seat;
|
||||
|
||||
char *clipboard_default_data;
|
||||
char *clipboard_primary_data;
|
||||
clipboard_data clipboards[2];
|
||||
|
||||
uint32_t layer_width;
|
||||
uint32_t layer_height;
|
||||
@@ -103,26 +109,28 @@ struct _wayland_seat {
|
||||
struct wl_data_device *data_device;
|
||||
struct zwp_primary_selection_device_v1 *primary_selection_device;
|
||||
|
||||
enum wl_pointer_axis_source axis_source;
|
||||
widget_button_event button;
|
||||
widget_motion_event motion;
|
||||
struct {
|
||||
gint vertical;
|
||||
gint horizontal;
|
||||
} wheel;
|
||||
struct {
|
||||
double vertical;
|
||||
double horizontal;
|
||||
} wheel_continuous;
|
||||
};
|
||||
|
||||
/* Supported interface versions */
|
||||
#define WL_COMPOSITOR_INTERFACE_VERSION 3
|
||||
#define WL_SHM_INTERFACE_VERSION 1
|
||||
#define WL_SEAT_INTERFACE_VERSION 5
|
||||
#define WL_LAYER_SHELL_INTERFACE_VERSION 1
|
||||
#define WL_SEAT_INTERFACE_MIN_VERSION 5
|
||||
#define WL_SEAT_INTERFACE_MAX_VERSION 8
|
||||
#define WL_OUTPUT_INTERFACE_MIN_VERSION 2
|
||||
|
||||
#ifdef WL_OUTPUT_NAME_SINCE_VERSION
|
||||
#define WL_OUTPUT_INTERFACE_MAX_VERSION WL_OUTPUT_NAME_SINCE_VERSION
|
||||
#else
|
||||
#define WL_OUTPUT_INTERFACE_MAX_VERSION 2
|
||||
#endif
|
||||
#define WL_OUTPUT_INTERFACE_MAX_VERSION 4
|
||||
#define WL_LAYER_SHELL_INTERFACE_VERSION 1
|
||||
#define WL_KEYBOARD_SHORTCUTS_INHIBITOR_INTERFACE_VERSION 1
|
||||
|
||||
extern wayland_stuff *wayland;
|
||||
|
||||
|
@@ -59,9 +59,9 @@ icon *icon_create(widget *parent, const char *name);
|
||||
void icon_set_size(widget *icon, const int size);
|
||||
|
||||
/**
|
||||
* @param icon The icon widget handle.
|
||||
* @param icon_widget The icon widget handle.
|
||||
* @param surf The surface to display.
|
||||
*/
|
||||
void icon_set_surface(icon *icon, cairo_surface_t *surf);
|
||||
void icon_set_surface(icon *icon_widget, cairo_surface_t *surf);
|
||||
/**@}*/
|
||||
#endif // ROFI_ICON_H
|
||||
|
@@ -84,10 +84,18 @@ typedef void (*listview_selection_changed_callback)(listview *lv,
|
||||
*/
|
||||
typedef void (*listview_mouse_activated_cb)(listview *, gboolean, void *);
|
||||
|
||||
|
||||
/**
|
||||
* Callback when current page is changed.
|
||||
*/
|
||||
typedef void (*listview_page_changed_cb)(void);
|
||||
|
||||
|
||||
/**
|
||||
* @param parent The widget's parent.
|
||||
* @param name The name of the to be created widget.
|
||||
* @param cb The update callback.
|
||||
* @param page_cb The page change callback.
|
||||
* @param udata The user data to pass to the callback
|
||||
* @param eh The height of one element
|
||||
* @param reverse Reverse the listview order.
|
||||
@@ -95,7 +103,8 @@ typedef void (*listview_mouse_activated_cb)(listview *, gboolean, void *);
|
||||
* @returns a new listview
|
||||
*/
|
||||
listview *listview_create(widget *parent, const char *name,
|
||||
listview_update_callback cb, void *udata,
|
||||
listview_update_callback cb,
|
||||
listview_page_changed_cb page_cb, void *udata,
|
||||
unsigned int eh, gboolean reverse);
|
||||
|
||||
/**
|
||||
|
@@ -80,7 +80,9 @@ typedef struct {
|
||||
TBFontConfig *tbfc;
|
||||
|
||||
PangoEllipsizeMode emode;
|
||||
//
|
||||
|
||||
const char *password_mask_char;
|
||||
|
||||
const char *theme_name;
|
||||
} textbox;
|
||||
|
||||
|
@@ -83,6 +83,12 @@ struct _widget {
|
||||
gboolean expand;
|
||||
/** Place widget at end of parent */
|
||||
gboolean end;
|
||||
|
||||
/** enable/disable border aliasing. */
|
||||
gboolean border_antialiasing;
|
||||
/** enable/disable nvisia workaround. */
|
||||
gboolean border_disable_nvidia_workaround;
|
||||
|
||||
/** Parent widget */
|
||||
struct _widget *parent;
|
||||
/** Internal */
|
||||
|
@@ -83,7 +83,7 @@ typedef enum {
|
||||
} WidgetTriggerActionResult;
|
||||
|
||||
/**
|
||||
* @param widget The container widget itself
|
||||
* @param wid The container widget itself
|
||||
* @param type The widget type searched for
|
||||
* @param x The X coordination of the mouse event relative to #widget
|
||||
* @param y The Y coordination of the mouse event relative to #widget
|
||||
@@ -93,11 +93,11 @@ typedef enum {
|
||||
*
|
||||
* @returns A child widget if found, NULL otherwise
|
||||
*/
|
||||
typedef widget *(*widget_find_mouse_target_cb)(widget *widget, WidgetType type,
|
||||
typedef widget *(*widget_find_mouse_target_cb)(widget *wid, WidgetType type,
|
||||
gint x, gint y);
|
||||
|
||||
/**
|
||||
* @param widget The target widget
|
||||
* @param wid The target widget
|
||||
* @param action The action value (which enum it is depends on the widget type)
|
||||
* @param x The X coordination of the mouse event relative to #widget
|
||||
* @param y The Y coordination of the mouse event relative to #widget
|
||||
@@ -108,7 +108,7 @@ typedef widget *(*widget_find_mouse_target_cb)(widget *widget, WidgetType type,
|
||||
*
|
||||
* @returns Whether the action was handled or not, see enum values for details
|
||||
*/
|
||||
typedef WidgetTriggerActionResult (*widget_trigger_action_cb)(widget *widget,
|
||||
typedef WidgetTriggerActionResult (*widget_trigger_action_cb)(widget *wid,
|
||||
guint action,
|
||||
gint x, gint y,
|
||||
void *user_data);
|
||||
@@ -117,7 +117,7 @@ typedef WidgetTriggerActionResult (*widget_trigger_action_cb)(widget *widget,
|
||||
#define WIDGET(a) ((widget *)(a))
|
||||
|
||||
/**
|
||||
* @param widget The widget to check
|
||||
* @param wid The widget to check
|
||||
* @param x The X position relative to parent window
|
||||
* @param y the Y position relative to parent window
|
||||
*
|
||||
@@ -125,65 +125,63 @@ typedef WidgetTriggerActionResult (*widget_trigger_action_cb)(widget *widget,
|
||||
*
|
||||
* @return TRUE if x,y falls within the widget
|
||||
*/
|
||||
int widget_intersect(const widget *widget, int x, int y);
|
||||
int widget_intersect(const widget *wid, int x, int y);
|
||||
|
||||
/**
|
||||
* @param widget The widget to move
|
||||
* @param wid The widget to move
|
||||
* @param x The new X position relative to parent window
|
||||
* @param y The new Y position relative to parent window
|
||||
*
|
||||
* Moves the widget.
|
||||
*/
|
||||
void widget_move(widget *widget, short x, short y);
|
||||
void widget_move(widget *wid, short x, short y);
|
||||
|
||||
/**
|
||||
* @param widget Handle to widget
|
||||
* @param wid Handle to widget
|
||||
* @param type The widget type.
|
||||
*
|
||||
* Set the widget type.
|
||||
*/
|
||||
void widget_set_type(widget *widget, WidgetType type);
|
||||
void widget_set_type(widget *wid, WidgetType type);
|
||||
|
||||
/**
|
||||
* @param widget Handle to widget
|
||||
* @param wid Handle to widget
|
||||
*
|
||||
* Check if widget is enabled.
|
||||
* @returns TRUE when widget is enabled.
|
||||
*/
|
||||
gboolean widget_enabled(widget *widget);
|
||||
gboolean widget_enabled(widget *wid);
|
||||
|
||||
/**
|
||||
* @param widget Handle to widget
|
||||
* @param wid Handle to widget
|
||||
* @param enabled The new state
|
||||
*
|
||||
* Disable the widget.
|
||||
*/
|
||||
void widget_set_enabled(widget *widget, gboolean enabled);
|
||||
void widget_set_enabled(widget *wid, gboolean enabled);
|
||||
|
||||
/**
|
||||
* @param widget Handle to widget
|
||||
* @param wid Handle to widget
|
||||
*
|
||||
* Disable the widget.
|
||||
*/
|
||||
static inline void widget_disable(widget *widget) {
|
||||
widget_set_enabled(widget, FALSE);
|
||||
static inline void widget_disable(widget *wid) {
|
||||
widget_set_enabled(wid, FALSE);
|
||||
}
|
||||
/**
|
||||
* @param widget Handle to widget
|
||||
* @param wid Handle to widget
|
||||
*
|
||||
* Enable the widget.
|
||||
*/
|
||||
static inline void widget_enable(widget *widget) {
|
||||
widget_set_enabled(widget, TRUE);
|
||||
}
|
||||
static inline void widget_enable(widget *wid) { widget_set_enabled(wid, TRUE); }
|
||||
|
||||
/**
|
||||
* @param widget widget Handle to the widget
|
||||
* @param wid widget Handle to the widget
|
||||
* @param d The cairo object used to draw itself.
|
||||
*
|
||||
* Render the textbox.
|
||||
*/
|
||||
void widget_draw(widget *widget, cairo_t *d);
|
||||
void widget_draw(widget *wid, cairo_t *d);
|
||||
|
||||
/**
|
||||
* @param wid Handle to the widget
|
||||
@@ -193,58 +191,58 @@ void widget_draw(widget *widget, cairo_t *d);
|
||||
void widget_free(widget *wid);
|
||||
|
||||
/**
|
||||
* @param widget The widget toresize
|
||||
* @param wid The widget toresize
|
||||
* @param w The new width
|
||||
* @param h The new height
|
||||
*
|
||||
* Resizes the widget.
|
||||
*/
|
||||
void widget_resize(widget *widget, short w, short h);
|
||||
void widget_resize(widget *wid, short w, short h);
|
||||
|
||||
/**
|
||||
* @param widget The widget handle
|
||||
* @param wid The widget handle
|
||||
*
|
||||
* @returns the height of the widget.
|
||||
*/
|
||||
int widget_get_height(widget *widget);
|
||||
int widget_get_height(widget *wid);
|
||||
|
||||
/**
|
||||
* @param widget The widget handle
|
||||
* @param wid The widget handle
|
||||
*
|
||||
* @returns the width of the widget.
|
||||
*/
|
||||
int widget_get_width(widget *widget);
|
||||
int widget_get_width(widget *wid);
|
||||
|
||||
/**
|
||||
* @param widget The widget handle
|
||||
* @param wid The widget handle
|
||||
*
|
||||
* @returns the y position of the widget relative to its parent.
|
||||
*/
|
||||
int widget_get_y_pos(widget *widget);
|
||||
int widget_get_y_pos(widget *wid);
|
||||
|
||||
/**
|
||||
* @param widget The widget handle
|
||||
* @param wid The widget handle
|
||||
*
|
||||
* @returns the x position of the widget relative to its parent.
|
||||
*/
|
||||
int widget_get_x_pos(widget *widget);
|
||||
int widget_get_x_pos(widget *wid);
|
||||
|
||||
/**
|
||||
* @param widget The widget handle
|
||||
* @param wid The widget handle
|
||||
* @param x A pointer to the absolute X coordinates
|
||||
* @param y A pointer to the absolute Y coordinates
|
||||
*
|
||||
* Will modify param x and param y to make them relative to param widget .
|
||||
* Will modify param x and param y to make them relative to param wid .
|
||||
*/
|
||||
void widget_xy_to_relative(widget *widget, gint *x, gint *y);
|
||||
void widget_xy_to_relative(widget *wid, gint *x, gint *y);
|
||||
|
||||
/**
|
||||
* @param widget The widget handle
|
||||
* @param wid The widget handle
|
||||
*
|
||||
* Update the widget, and its parent recursively.
|
||||
* This should be called when size of widget changes.
|
||||
*/
|
||||
void widget_update(widget *widget);
|
||||
void widget_update(widget *wid);
|
||||
/**
|
||||
* @param wid The widget handle
|
||||
*
|
||||
|
@@ -36,6 +36,7 @@
|
||||
#include <libgwater-xcb.h>
|
||||
#include <xcb/xcb.h>
|
||||
#include <xcb/xcb_ewmh.h>
|
||||
#include <xcb/xcb_keysyms.h>
|
||||
|
||||
#include <nkutils-bindings.h>
|
||||
|
||||
@@ -49,6 +50,7 @@ struct _xcb_stuff {
|
||||
#ifdef XCB_IMDKIT
|
||||
xcb_xic_t ic;
|
||||
xcb_xim_t *im;
|
||||
xcb_key_symbols_t *syms;
|
||||
#endif
|
||||
xcb_ewmh_connection_t ewmh;
|
||||
xcb_screen_t *screen;
|
||||
|
@@ -98,18 +98,6 @@ extern const char *netatom_names[];
|
||||
/** atoms */
|
||||
extern xcb_atom_t netatoms[NUM_NETATOMS];
|
||||
|
||||
/**
|
||||
* @param w rofis window
|
||||
*
|
||||
* Stores old input focus for reverting and set focus to rofi.
|
||||
*/
|
||||
void rofi_xcb_set_input_focus(xcb_window_t w);
|
||||
|
||||
/**
|
||||
* IF set, revert the focus back to the original applications.
|
||||
*/
|
||||
void rofi_xcb_revert_input_focus(void);
|
||||
|
||||
/**
|
||||
* Depth of visual
|
||||
*/
|
||||
@@ -177,8 +165,6 @@ typedef enum {
|
||||
WM_DO_NOT_CHANGE_CURRENT_DESKTOP = 1,
|
||||
/** PANGO WORKSPACE NAMES */
|
||||
WM_PANGO_WORKSPACE_NAMES = 2,
|
||||
/** Root window offset (for bspwm) */
|
||||
WM_ROOT_WINDOW_OFFSET = 4,
|
||||
} WindowManagerQuirk;
|
||||
|
||||
/**
|
||||
@@ -207,7 +193,7 @@ cairo_surface_t *x11_helper_get_screenshot_surface_window(xcb_window_t window,
|
||||
*
|
||||
* Blur the content of the surface with radius and deviation.
|
||||
*/
|
||||
void cairo_image_surface_blur(cairo_surface_t *surface, double radius,
|
||||
void cairo_image_surface_blur(cairo_surface_t *surface, int radius,
|
||||
double deviation);
|
||||
|
||||
#ifdef XCB_IMDKIT
|
||||
|
@@ -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 {
|
||||
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);
|
||||
|
@@ -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"
|
||||
@@ -362,13 +361,13 @@ t_entry_list T_CONFIGURATION T_BOPEN t_config_property_list_optional T_BCLOSE {
|
||||
| t_entry_list t_name_prefix_optional t_entry_name_path_selectors T_BOPEN t_property_list_optional T_BCLOSE
|
||||
{
|
||||
for ( GList *liter = g_list_first ( $3); liter; liter = g_list_next ( liter ) ) {
|
||||
ThemeWidget *widget = $1;
|
||||
for ( GList *iter = g_list_first ( (GList*)liter->data ); widget && iter ; iter = g_list_next ( iter ) ) {
|
||||
widget = rofi_theme_find_or_create_name ( widget, iter->data );
|
||||
ThemeWidget *wid = $1;
|
||||
for ( GList *iter = g_list_first ( (GList*)liter->data ); wid && iter ; iter = g_list_next ( iter ) ) {
|
||||
wid = rofi_theme_find_or_create_name ( wid, iter->data );
|
||||
}
|
||||
g_list_free_full ( (GList*)liter->data, g_free );
|
||||
widget->set = TRUE;
|
||||
rofi_theme_widget_add_properties ( widget, $5);
|
||||
wid->set = TRUE;
|
||||
rofi_theme_widget_add_properties ( wid, $5);
|
||||
}
|
||||
if ( $5 ) {
|
||||
g_hash_table_destroy ( $5 );
|
||||
@@ -376,78 +375,78 @@ t_entry_list T_CONFIGURATION T_BOPEN t_config_property_list_optional T_BCLOSE {
|
||||
g_list_free ( $3 );
|
||||
}
|
||||
| t_entry_list T_PDEFAULTS T_BOPEN t_property_list_optional T_BCLOSE {
|
||||
ThemeWidget *widget = rofi_theme_find_or_create_name ( $1, "*" );
|
||||
rofi_theme_widget_add_properties (widget, $4);
|
||||
ThemeWidget *wid = rofi_theme_find_or_create_name ( $1, "*" );
|
||||
rofi_theme_widget_add_properties (wid, $4);
|
||||
if ( $4 ) {
|
||||
g_hash_table_destroy ( $4 );
|
||||
}
|
||||
}
|
||||
| t_entry_list T_MEDIA T_PARENT_LEFT T_MEDIA_TYPE T_PSEP t_property_number T_PARENT_RIGHT T_BOPEN t_entry_list T_BCLOSE {
|
||||
gchar *name = g_strdup_printf("@media ( %s: %f )",$4, $6);
|
||||
ThemeWidget *widget = rofi_theme_find_or_create_name ( $1, name );
|
||||
widget->set = TRUE;
|
||||
widget->media = g_slice_new0(ThemeMedia);
|
||||
widget->media->type = rofi_theme_parse_media_type ( $4 );
|
||||
widget->media->value = $6;
|
||||
ThemeWidget *wid = rofi_theme_find_or_create_name ( $1, name );
|
||||
wid->set = TRUE;
|
||||
wid->media = g_slice_new0(ThemeMedia);
|
||||
wid->media->type = rofi_theme_parse_media_type ( $4 );
|
||||
wid->media->value = $6;
|
||||
for ( unsigned int i = 0; i < $9->num_widgets; i++ ) {
|
||||
ThemeWidget *d = $9->widgets[i];
|
||||
rofi_theme_parse_merge_widgets(widget, d);
|
||||
rofi_theme_parse_merge_widgets(wid, d);
|
||||
}
|
||||
g_free ( $4 );
|
||||
g_free ( name );
|
||||
}
|
||||
| t_entry_list T_MEDIA T_PARENT_LEFT T_MEDIA_TYPE T_PSEP T_INT T_UNIT_PX T_PARENT_RIGHT T_BOPEN t_entry_list T_BCLOSE {
|
||||
gchar *name = g_strdup_printf("@media ( %s: %d px )",$4, $6);
|
||||
ThemeWidget *widget = rofi_theme_find_or_create_name ( $1, name );
|
||||
widget->set = TRUE;
|
||||
widget->media = g_slice_new0(ThemeMedia);
|
||||
widget->media->type = rofi_theme_parse_media_type ( $4 );
|
||||
widget->media->value = (double)$6;
|
||||
ThemeWidget *wid = rofi_theme_find_or_create_name ( $1, name );
|
||||
wid->set = TRUE;
|
||||
wid->media = g_slice_new0(ThemeMedia);
|
||||
wid->media->type = rofi_theme_parse_media_type ( $4 );
|
||||
wid->media->value = (double)$6;
|
||||
for ( unsigned int i = 0; i < $10->num_widgets; i++ ) {
|
||||
ThemeWidget *d = $10->widgets[i];
|
||||
rofi_theme_parse_merge_widgets(widget, d);
|
||||
rofi_theme_parse_merge_widgets(wid, d);
|
||||
}
|
||||
g_free ( $4 );
|
||||
g_free ( name );
|
||||
}
|
||||
| t_entry_list T_MEDIA T_PARENT_LEFT T_MEDIA_TYPE T_PSEP T_BOOLEAN T_PARENT_RIGHT T_BOPEN t_entry_list T_BCLOSE {
|
||||
gchar *name = g_strdup_printf("@media ( %s: %s )",$4, $6?"true":"false");
|
||||
ThemeWidget *widget = rofi_theme_find_or_create_name ( $1, name );
|
||||
widget->set = TRUE;
|
||||
widget->media = g_slice_new0(ThemeMedia);
|
||||
widget->media->type = rofi_theme_parse_media_type ( $4 );
|
||||
widget->media->boolv = $6;
|
||||
ThemeWidget *wid = rofi_theme_find_or_create_name ( $1, name );
|
||||
wid->set = TRUE;
|
||||
wid->media = g_slice_new0(ThemeMedia);
|
||||
wid->media->type = rofi_theme_parse_media_type ( $4 );
|
||||
wid->media->boolv = $6;
|
||||
for ( unsigned int i = 0; i < $9->num_widgets; i++ ) {
|
||||
ThemeWidget *d = $9->widgets[i];
|
||||
rofi_theme_parse_merge_widgets(widget, d);
|
||||
rofi_theme_parse_merge_widgets(wid, d);
|
||||
}
|
||||
g_free ( $4 );
|
||||
g_free ( name );
|
||||
}
|
||||
| t_entry_list T_MEDIA T_PARENT_LEFT T_MEDIA_TYPE T_PSEP T_ENV_START T_PARENT_LEFT T_BOOLEAN T_COMMA T_BOOLEAN T_PARENT_RIGHT T_PARENT_RIGHT T_BOPEN t_entry_list T_BCLOSE {
|
||||
gchar *name = g_strdup_printf("@media ( %s: %s )",$4, $8?"true":"false");
|
||||
ThemeWidget *widget = rofi_theme_find_or_create_name ( $1, name );
|
||||
widget->set = TRUE;
|
||||
widget->media = g_slice_new0(ThemeMedia);
|
||||
widget->media->type = rofi_theme_parse_media_type ( $4 );
|
||||
widget->media->boolv = $8;
|
||||
ThemeWidget *wid = rofi_theme_find_or_create_name ( $1, name );
|
||||
wid->set = TRUE;
|
||||
wid->media = g_slice_new0(ThemeMedia);
|
||||
wid->media->type = rofi_theme_parse_media_type ( $4 );
|
||||
wid->media->boolv = $8;
|
||||
for ( unsigned int i = 0; i < $14->num_widgets; i++ ) {
|
||||
ThemeWidget *d = $14->widgets[i];
|
||||
rofi_theme_parse_merge_widgets(widget, d);
|
||||
rofi_theme_parse_merge_widgets(wid, d);
|
||||
}
|
||||
g_free ( $4 );
|
||||
g_free ( name );
|
||||
}
|
||||
| t_entry_list T_MEDIA T_PARENT_LEFT T_MEDIA_TYPE T_PSEP T_ENV_START T_PARENT_LEFT T_COMMA T_BOOLEAN T_PARENT_RIGHT T_PARENT_RIGHT T_BOPEN t_entry_list T_BCLOSE {
|
||||
gchar *name = g_strdup_printf("@media ( %s: %s )",$4, $9?"true":"false");
|
||||
ThemeWidget *widget = rofi_theme_find_or_create_name ( $1, name );
|
||||
widget->set = TRUE;
|
||||
widget->media = g_slice_new0(ThemeMedia);
|
||||
widget->media->type = rofi_theme_parse_media_type ( $4 );
|
||||
widget->media->boolv = $9;
|
||||
ThemeWidget *wid = rofi_theme_find_or_create_name ( $1, name );
|
||||
wid->set = TRUE;
|
||||
wid->media = g_slice_new0(ThemeMedia);
|
||||
wid->media->type = rofi_theme_parse_media_type ( $4 );
|
||||
wid->media->boolv = $9;
|
||||
for ( unsigned int i = 0; i < $13->num_widgets; i++ ) {
|
||||
ThemeWidget *d = $13->widgets[i];
|
||||
rofi_theme_parse_merge_widgets(widget, d);
|
||||
rofi_theme_parse_merge_widgets(wid, d);
|
||||
}
|
||||
g_free ( $4 );
|
||||
g_free ( name );
|
||||
@@ -487,10 +486,10 @@ t_config_property
|
||||
{
|
||||
|
||||
for ( GList *iter = g_list_first( $1) ; iter; iter = g_list_next(iter)){
|
||||
ThemeWidget *widget = rofi_configuration;
|
||||
widget = rofi_theme_find_or_create_name ( widget, iter->data );
|
||||
widget->set = TRUE;
|
||||
rofi_theme_widget_add_properties ( widget, $3);
|
||||
ThemeWidget *wid = rofi_configuration;
|
||||
wid = rofi_theme_find_or_create_name ( wid, iter->data );
|
||||
wid->set = TRUE;
|
||||
rofi_theme_widget_add_properties ( wid, $3);
|
||||
}
|
||||
if ( $3 ) {
|
||||
g_hash_table_destroy ( $3 );
|
||||
@@ -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;
|
||||
@@ -672,11 +667,11 @@ t_property_scale_type
|
||||
|
||||
t_color_list
|
||||
: t_property_color {
|
||||
$$ = g_list_append ( NULL, g_memdup ( (gconstpointer)&($1), sizeof ( ThemeColor )));
|
||||
$$ = g_list_append ( NULL, g_memdup2 ( (gconstpointer)&($1), sizeof ( ThemeColor )));
|
||||
}
|
||||
| t_color_list T_COMMA t_property_color {
|
||||
|
||||
$$ = g_list_append ($1, g_memdup ( (gconstpointer)&($3), sizeof ( ThemeColor )));
|
||||
$$ = g_list_append ($1, g_memdup2 ( (gconstpointer)&($3), sizeof ( ThemeColor )));
|
||||
}
|
||||
;
|
||||
|
||||
|
23
meson-dist-script
Normal file
23
meson-dist-script
Normal file
@@ -0,0 +1,23 @@
|
||||
#!/bin/sh
|
||||
|
||||
set -eu
|
||||
|
||||
cd "${MESON_DIST_ROOT}"
|
||||
|
||||
# deploy docs
|
||||
mkdir build
|
||||
meson setup build -Dprefix=/usr
|
||||
ninja -C build
|
||||
cp build/doc/*.1 doc
|
||||
cp build/doc/*.5 doc
|
||||
rm -rf build
|
||||
|
||||
# configure script
|
||||
autoreconf -i
|
||||
rm -rf autom4te.cache
|
||||
|
||||
# remove unwanted files in submodules
|
||||
# (.gitattributes only applies to the root repo)
|
||||
rm -f subprojects/*/.mailmap
|
||||
rm -f subprojects/*/.gitignore
|
||||
rm -f subprojects/*/.travis.yml
|
38
meson.build
38
meson.build
@@ -1,6 +1,6 @@
|
||||
project('rofi', 'c',
|
||||
version: '1.7.5+wayland2-dev',
|
||||
meson_version: '>=0.47.0',
|
||||
version: '1.7.9+wayland1',
|
||||
meson_version: '>=0.59.0',
|
||||
license: [ 'MIT' ],
|
||||
default_options: [
|
||||
'c_std=c99',
|
||||
@@ -11,19 +11,22 @@ project('rofi', 'c',
|
||||
c_compiler = meson.get_compiler('c')
|
||||
|
||||
add_project_arguments(
|
||||
'-I@0@'.format(meson.build_root()),
|
||||
'-I@0@'.format(join_paths(meson.source_root(), 'include')),
|
||||
'-I@0@'.format(meson.project_build_root()),
|
||||
'-I@0@'.format(join_paths(meson.project_source_root(), 'include')),
|
||||
'-D_DEFAULT_SOURCE=1',
|
||||
language: 'c'
|
||||
)
|
||||
|
||||
meson.add_dist_script('meson-dist-script')
|
||||
|
||||
flags = [
|
||||
'-Wparentheses',
|
||||
'-Winline',
|
||||
'-Wunreachable-code',
|
||||
'-Werror=missing-prototypes',
|
||||
'-Wno-overlength-strings',
|
||||
'-Wno-inline' # A bit too noisy with Bison…
|
||||
'-Wno-inline', # A bit too noisy with Bison…
|
||||
'-Wshadow'
|
||||
]
|
||||
foreach f : flags
|
||||
if c_compiler.has_argument(f)
|
||||
@@ -43,7 +46,7 @@ desktop_install_dir = join_paths(get_option('datadir'), 'applications')
|
||||
icondir = join_paths(get_option('datadir'), 'icons','hicolor', 'scalable', 'apps')
|
||||
|
||||
glib_min_major=2
|
||||
glib_min_minor=40
|
||||
glib_min_minor=72
|
||||
glib_min_version='@0@.@1@'.format(glib_min_major, glib_min_minor)
|
||||
plugins_deps = [
|
||||
dependency('glib-2.0', version: '>= @0@'.format(glib_min_version)),
|
||||
@@ -84,6 +87,7 @@ if xcb_enabled
|
||||
dependency('xcb-randr'),
|
||||
dependency('xcb-cursor'),
|
||||
dependency('xcb-xinerama'),
|
||||
dependency('xcb-keysyms'),
|
||||
dependency('cairo-xcb'),
|
||||
dependency('libstartup-notification-1.0'),
|
||||
]
|
||||
@@ -152,7 +156,7 @@ config_h = configure_file(output: 'config.h', configuration: header_conf)
|
||||
|
||||
nk_options = [
|
||||
'bindings=true',
|
||||
'git-work-tree=@0@'.format(meson.source_root()),
|
||||
'git-work-tree=@0@'.format(meson.project_source_root()),
|
||||
]
|
||||
nk = subproject('libnkutils', default_options: nk_options)
|
||||
nk_subproject_options = nk.get_variable('nk_options')
|
||||
@@ -285,11 +289,13 @@ theme_lexer = flex.process(theme_lexer_sources)
|
||||
theme_parser = bison.process(theme_parser_sources)
|
||||
|
||||
if wayland_enabled
|
||||
wayland_sys_protocols_dir = wayland_protocols.get_pkgconfig_variable('pkgdatadir')
|
||||
fs = import('fs')
|
||||
wayland_sys_protocols_dir = wayland_protocols.get_variable(pkgconfig: 'pkgdatadir')
|
||||
wayland_scanner = find_program('wayland-scanner')
|
||||
protocols = files(
|
||||
wayland_sys_protocols_dir + '/stable/xdg-shell/xdg-shell.xml',
|
||||
wayland_sys_protocols_dir + '/unstable/primary-selection/primary-selection-unstable-v1.xml',
|
||||
wayland_sys_protocols_dir + '/unstable/keyboard-shortcuts-inhibit/keyboard-shortcuts-inhibit-unstable-v1.xml',
|
||||
'protocols/wlr-foreign-toplevel-management-unstable-v1.xml',
|
||||
'protocols/wlr-layer-shell-unstable-v1.xml',
|
||||
)
|
||||
@@ -306,13 +312,13 @@ if wayland_enabled
|
||||
proto_headers = []
|
||||
foreach p : protocols
|
||||
proto_srcs += custom_target(
|
||||
'@0@'.format(p).underscorify() + '_protocol_c',
|
||||
fs.stem(p).underscorify() + '_protocol_c',
|
||||
input: p,
|
||||
output: '@BASENAME@-protocol.c',
|
||||
command: [wayland_scanner, 'public-code', '@INPUT@', '@OUTPUT@'],
|
||||
)
|
||||
proto_headers += custom_target(
|
||||
'@0@'.format(p).underscorify() + '_protocol_h',
|
||||
fs.stem(p).underscorify() + '_protocol_h',
|
||||
input: p,
|
||||
output: '@BASENAME@-protocol.h',
|
||||
command: [wayland_scanner, 'client-header', '@INPUT@', '@OUTPUT@'],
|
||||
@@ -344,16 +350,6 @@ rofi = executable('rofi', rofi_sources + [
|
||||
)
|
||||
|
||||
subdir('doc')
|
||||
install_man(
|
||||
'doc/rofi.1',
|
||||
'doc/rofi-theme-selector.1',
|
||||
'doc/rofi-sensible-terminal.1',
|
||||
'doc/rofi-script.5',
|
||||
'doc/rofi-theme.5',
|
||||
'doc/rofi-debugging.5',
|
||||
'doc/rofi-dmenu.5',
|
||||
'doc/rofi-keys.5',
|
||||
)
|
||||
|
||||
install_data(
|
||||
'themes/Adapta-Nokto.rasi',
|
||||
@@ -615,7 +611,7 @@ if cppcheck.found()
|
||||
'--enable=all',
|
||||
'-Uerror_dialog',
|
||||
'--inconclusive',
|
||||
'-I@0@'.format(join_paths(meson.source_root(), 'include')),
|
||||
'-I@0@'.format(join_paths(meson.project_source_root(), 'include')),
|
||||
rofi_sources
|
||||
],
|
||||
)
|
||||
|
@@ -1,6 +1,6 @@
|
||||
option('drun', type: 'boolean', value: true, description: 'Desktop file mode')
|
||||
option('window', type: 'boolean', value: true, description: 'Window switcher mode')
|
||||
option('check', type: 'feature', description: 'Build and run libcheck-based tests')
|
||||
option('imdkit', type: 'boolean', value: true, description: 'IMDKit support')
|
||||
option('wayland', type: 'feature', value: 'enabled', description: 'Build with wayland support')
|
||||
option('xcb', type: 'feature', value: 'enabled', description: 'Build with X11/xcb support')
|
||||
option('imdkit', type: 'boolean', value: false, description: 'IMDKit support')
|
||||
|
@@ -158,6 +158,13 @@ Force **rofi** mode to first read all data from stdin before showing the selecti
|
||||
Note: the default asynchronous mode will also be automatically disabled if used with conflicting options,
|
||||
such as `-dump`, `-only-match` or `-auto-select`.
|
||||
|
||||
`-async-pre-read` *number*
|
||||
|
||||
Reads the first *number* entries blocking, then switches to async mode.
|
||||
This makes it feel more 'snappy'.
|
||||
|
||||
*default*: 25
|
||||
|
||||
`-window-title` *title*
|
||||
|
||||
Set name used for the window title. Will be shown as Rofi - *title*
|
||||
@@ -170,37 +177,6 @@ Position **rofi** over the window with the given X11 window ID.
|
||||
|
||||
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
|
||||
|
||||
@@ -211,7 +187,7 @@ Extra options for individual rows can be also set. See the **rofi-script(5)** ma
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
rofi(1), rofi-sensible-terminal(1), dmenu(1), rofi-theme(5), rofi-script(5), rofi-theme-selector(1), ascii(7)
|
||||
rofi(1), rofi-sensible-terminal(1), dmenu(1), rofi-theme(5), rofi-script(5), rofi-theme-selector(1)
|
||||
|
||||
## AUTHOR
|
||||
|
||||
|
@@ -52,15 +52,6 @@ configuration {
|
||||
}
|
||||
```
|
||||
|
||||
## Unsetting a binding
|
||||
|
||||
To unset a binding, pass an empty string.
|
||||
|
||||
```css
|
||||
configuration {
|
||||
kb-clear-line: "";
|
||||
}
|
||||
```
|
||||
|
||||
## Keyboard Bindings
|
||||
|
||||
@@ -74,12 +65,6 @@ Paste clipboard
|
||||
|
||||
**Default**: Control+v,Insert
|
||||
|
||||
### **kb-secondary-copy**
|
||||
|
||||
Copy current selection to clipboard
|
||||
|
||||
**Default**: Control+c
|
||||
|
||||
### **kb-clear-line**
|
||||
Clear input line
|
||||
|
||||
@@ -151,12 +136,12 @@ Accept entry
|
||||
**Default**: Control+j,Control+m,Return,KP_Enter
|
||||
|
||||
### **kb-accept-custom**
|
||||
Use entered text as command (in ssh/run modes)
|
||||
Use entered text as command (in ssh/run modi)
|
||||
|
||||
**Default**: Control+Return
|
||||
|
||||
### **kb-accept-custom-alt**
|
||||
Use entered text as command (in ssh/run modes)
|
||||
Use entered text as command (in ssh/run modi)
|
||||
|
||||
**Default**: Control+Shift+Return
|
||||
|
||||
@@ -198,7 +183,7 @@ Go to the next column
|
||||
### **kb-row-up**
|
||||
Select previous entry
|
||||
|
||||
**Default**: Up,Control+p
|
||||
**Default**: Up,Control+p,ISO_Left_Tab
|
||||
|
||||
### **kb-row-down**
|
||||
Select next entry
|
||||
@@ -208,18 +193,8 @@ Select next entry
|
||||
### **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
|
||||
|
||||
|
@@ -2,14 +2,13 @@
|
||||
|
||||
## NAME
|
||||
|
||||
**rofi script mode** - Rofi format for scriptable mode.
|
||||
**rofi script mode** - Rofi format for scriptable modi.
|
||||
|
||||
|
||||
## 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.
|
||||
**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
|
||||
@@ -19,18 +18,17 @@ To specify a script mode, set a mode with the following syntax: "{name}:{executa
|
||||
For example:
|
||||
|
||||
```
|
||||
rofi -show fb -modes "fb:file_browser.sh"
|
||||
rofi -show fb -modi "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.
|
||||
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:
|
||||
|
||||
@@ -65,10 +63,6 @@ An integer number with the current state:
|
||||
|
||||
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.
|
||||
@@ -90,10 +84,6 @@ The following extra options exists:
|
||||
* **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.
|
||||
* **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.
|
||||
|
||||
## Parsing row options
|
||||
|
||||
|
@@ -4,165 +4,19 @@
|
||||
|
||||
**rofi-theme** - Rofi theme format files
|
||||
|
||||
## GETTING STARTED WITH THEMING
|
||||
|
||||
The easiest way to get started theming rofi is by modifying your existing theme.
|
||||
|
||||
Themes can be modified/tweaked by adding theming elements to the end of the
|
||||
config file. The default location of this file is `~/.config/rofi/config.rasi`,
|
||||
if the file does not exists, you can create it.
|
||||
|
||||
A basic config:
|
||||
|
||||
```css
|
||||
configuration {
|
||||
modes: [ combi ];
|
||||
combi-modes: [ window, drun, run ];
|
||||
}
|
||||
|
||||
@theme "gruvbox-light"
|
||||
|
||||
/* Insert theme modifications after this */
|
||||
```
|
||||
|
||||
|
||||
For example if we want to change the `Type to filter` text in the entry box we
|
||||
append the following:
|
||||
|
||||
```css
|
||||
entry {
|
||||
placeholder: "Type here";
|
||||
}
|
||||
```
|
||||
|
||||
In the above section, `entry` indicates the widget, `placeholder` is the
|
||||
property we want to modify and we set it to the string `"Type here"`.
|
||||
To find the commonly available widgets in rofi, see the 'Basic structure' section.
|
||||
|
||||
To change the mouse over cursor to a pointer, add:
|
||||
|
||||
```css
|
||||
entry {
|
||||
placeholder: "Type here";
|
||||
cursor: pointer;
|
||||
}
|
||||
```
|
||||
|
||||
For the next modification, we want to add the icon after each text element and
|
||||
increase the size. First we start by modifying the `element` widget:
|
||||
|
||||
```css
|
||||
|
||||
element {
|
||||
orientation: horizontal;
|
||||
children: [ element-text, element-icon ];
|
||||
spacing: 5px;
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
Resulting in the following packing:
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────┐
|
||||
│ element │
|
||||
│ ┌─────────────────────────────────────────────┐ ┌─────────────────┐ │
|
||||
│ │element─text │ │ element─icon │ │
|
||||
│ └─────────────────────────────────────────────┘ └─────────────────┘ │
|
||||
└─────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
The `element` (container) widget hold each entry in the `listview`, we add the
|
||||
two pre-defined children in the order we want to show. We also specify the
|
||||
packing direction (`orientation`) and the spacing between the children
|
||||
(`spacing`). We specify the space between the two children in absolute pixels
|
||||
(`px`).
|
||||
|
||||
To increase the icon-size, we need to modify the `element-icon` widget.
|
||||
|
||||
```css
|
||||
element-icon {
|
||||
size: 2.5em;
|
||||
}
|
||||
```
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────┐
|
||||
│ element │
|
||||
│ ┌─────────────────────────────────────────────┐ ┌─────────────────┐ │
|
||||
│ │element─text │ │ element │ │
|
||||
│ │ │ │ ─ │ │
|
||||
│ │ │ │ icon │ │
|
||||
│ └─────────────────────────────────────────────┘ └─────────────────┘ │
|
||||
└─────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
In this example we specify the size in the [em](https://www.w3.org/Style/LieBos3e/em) unit.
|
||||
|
||||
Now lets change the text color of both the `entry` and the `element-text` widget to red and background to blue.
|
||||
|
||||
```css
|
||||
entry, element-text {
|
||||
text-color: red;
|
||||
background-color: rgb(0,0,255);
|
||||
}
|
||||
```
|
||||
|
||||
Here we use two different methods of writing down the color, for `text-color`
|
||||
we used a named color, for `background-color` we specify it in `rgb`.
|
||||
We also specify the property for multiple widgets by passing a comma separated
|
||||
list of widget names.
|
||||
|
||||
If you want to center the text relative to the icon, we can set this:
|
||||
|
||||
```css
|
||||
element-text {
|
||||
vertical-align: 0.5;
|
||||
}
|
||||
```
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────────┐
|
||||
│ element │
|
||||
│ ┌─────────────────────────────────────────────┐ ┌─────────────────┐ │
|
||||
│ │ │ │ element │ │
|
||||
│ │element-text │ │ ─ │ │
|
||||
│ │ │ │ icon │ │
|
||||
│ └─────────────────────────────────────────────┘ └─────────────────┘ │
|
||||
└─────────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
We can also specify the color and width of the cursor. You could, for example,
|
||||
create a crimson block cursor like this:
|
||||
|
||||
```css
|
||||
entry {
|
||||
cursor-color: rgb(220,20,60);
|
||||
cursor-width: 8px;
|
||||
}
|
||||
```
|
||||
|
||||
By default, the `cursor-color` will be the same as the `text-color`. The `cursor-width` will always default to 2 pixels.
|
||||
|
||||
If you want to see the complete theme, including the modification you can run:
|
||||
|
||||
```bash
|
||||
rofi -dump-theme
|
||||
```
|
||||
|
||||
## DEFAULT THEME LOADING
|
||||
|
||||
By default, rofi loads the default theme. This theme is **always** loaded.
|
||||
The default configuration contains:
|
||||
In the default (always loaded) configuration it does:
|
||||
|
||||
```css
|
||||
@theme "default"
|
||||
```
|
||||
|
||||
To unload the default theme, and load another theme, add the `@theme` statement
|
||||
to your `config.rasi` file.
|
||||
To unload the default theme, and load another theme, add `@theme` to your
|
||||
`config.rasi` file.
|
||||
|
||||
If you have a theme loaded via `@theme` or use the default theme, you can tweak
|
||||
If you have a theme loaded by `@theme` or use the default theme, you can tweak
|
||||
it by adding overriding elements at the end of your `config.rasi` file.
|
||||
|
||||
For the difference between `@import` and `@theme` see the `Multiple file
|
||||
@@ -185,7 +39,7 @@ user-friendly way. Therefore, a new file format has been created, replacing the
|
||||
|
||||
## Encoding
|
||||
|
||||
The encoding of the file is UTF-8. Both unix (`\n`) and windows (`\r\n`) newlines format are supported. But unix is
|
||||
The encoding of the file is utf-8. Both unix (`\n`) and windows (`\r\n`) newlines format are supported. But unix is
|
||||
preferred.
|
||||
|
||||
## Comments
|
||||
@@ -193,7 +47,7 @@ preferred.
|
||||
C and C++ file comments are supported.
|
||||
|
||||
* Anything after `// ` and before a newline is considered a comment.
|
||||
* Everything between `/*` and `*/` is a comment, this comment can span multiple lines.
|
||||
* Everything between `/*` and `*/` is a comment.
|
||||
|
||||
Comments can be nested and the C comments can be inline.
|
||||
|
||||
@@ -237,7 +91,7 @@ abbreviation for **r**ofi **a**dvanced **s**tyle **i**nformation.
|
||||
## Basic Structure
|
||||
|
||||
Each element has a section with defined properties. Global properties can be defined in section `* { }`.
|
||||
Sub-section names begin with an optional hash symbol `#`.
|
||||
Sub-section names begin with a hash symbol `#`.
|
||||
|
||||
It is advised to define the *global properties section* on top of the file to
|
||||
make inheritance of properties clearer.
|
||||
@@ -277,8 +131,8 @@ A theme can have multiple element theme sections.
|
||||
|
||||
The element path can consist of multiple names separated by whitespace or dots.
|
||||
Each element may contain any number of letters, numbers and `-`'s.
|
||||
The first element in the element path can optionally start with a `#` (for
|
||||
historic reasons). Multiple elements can be specified by a `,`.
|
||||
The first element in the element path should always start with a `#`.
|
||||
Multiple elements can be specified by a `,`.
|
||||
|
||||
This is a valid element name:
|
||||
|
||||
@@ -299,8 +153,8 @@ element normal normal, button {
|
||||
}
|
||||
```
|
||||
|
||||
Each section inherits the global properties. Properties can be explicitly
|
||||
inherited from their parent with the `inherit` keyword.
|
||||
Each section inherits the global properties. Properties can be explicitly inherited from their parent with the
|
||||
`inherit` keyword.
|
||||
In the following example:
|
||||
|
||||
```css
|
||||
@@ -316,8 +170,7 @@ mainbox {
|
||||
}
|
||||
```
|
||||
|
||||
The element `mainbox` will have the following set of properties (if `mainbox`
|
||||
is a child of `window`):
|
||||
The element `mainbox` will have the following set of properties (if `mainbox` is a child of `window`):
|
||||
|
||||
```css
|
||||
a: 1;
|
||||
@@ -381,15 +234,7 @@ For example:
|
||||
font: "Awasome 12";
|
||||
```
|
||||
|
||||
The string must be valid UTF-8, special characters can be escaped:
|
||||
|
||||
```css
|
||||
text {
|
||||
content: "Line one\n\tIndented line two";
|
||||
}
|
||||
```
|
||||
|
||||
The following special characters can be escaped: `\b`, `\f`, `\n`, `\r`, `\t`, `\v`, `\` and `"`.
|
||||
The string must be valid UTF-8.
|
||||
|
||||
## Integer
|
||||
|
||||
@@ -510,18 +355,8 @@ should be applied.
|
||||
|
||||
* `bold`: make the text thicker then the surrounding text.
|
||||
* `italic`: put the highlighted text in script type (slanted).
|
||||
* `underline`: put a line under the text.
|
||||
* `strikethrough`: put a line through the text.
|
||||
|
||||
The following options are available on pango 1.50.0 and up:
|
||||
|
||||
* `uppercase`: Uppercase the text.
|
||||
* `lowercase`: Lowercase the text.
|
||||
|
||||
The following option is disabled as pango crashes on this if there is eel
|
||||
upsizing or wrapping. This will be re-enabled once fixed:
|
||||
|
||||
* `capitalize`: Capitalize the text.
|
||||
* `underline`: put a line under the highlighted text.
|
||||
* `strikethrough`: put a line through the highlighted text.
|
||||
|
||||
## Line style
|
||||
|
||||
@@ -566,19 +401,15 @@ Rofi supports some maths in calculating sizes. For this it uses the CSS syntax:
|
||||
width: calc( 100% - 37px );
|
||||
```
|
||||
|
||||
```css
|
||||
width: calc( 20% min 512 );
|
||||
```
|
||||
|
||||
It supports the following operations:
|
||||
|
||||
* `+` : Add
|
||||
* `-` : Subtract
|
||||
* `/` : Divide
|
||||
* `*` : Multiply
|
||||
* `%` : Modulo
|
||||
* `min` : Minimum of lvalue or rvalue;
|
||||
* `max` : Maximum of lvalue or rvalue;
|
||||
* `%` : Multiply
|
||||
* `min` : Minimum of l or rvalue;
|
||||
* `max` : Maximum of l 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
|
||||
@@ -625,28 +456,24 @@ style property.
|
||||
|
||||
Indicate a place on the window/monitor.
|
||||
|
||||
```
|
||||
┌─────────────┬─────────────┬─────────────┐
|
||||
│ north west │ north │ north east │
|
||||
├─────────────┼─────────────┼─────────────┤
|
||||
│ west │ center │ east │
|
||||
├─────────────┼─────────────┼─────────────┤
|
||||
│ south west │ south │ south east │
|
||||
└─────────────┴─────────────┴─────────────┘
|
||||
* Format: `(center|east|north|west|south|north east|north west|south west|south east)`
|
||||
|
||||
```
|
||||
|
||||
* Format: `(center|east|north|west|south|north east|north west|south west|south east)`
|
||||
north west | north | north east
|
||||
-------------|-------------|------------
|
||||
west | center | east
|
||||
-------------|-------------|------------
|
||||
south west | south | south east
|
||||
```
|
||||
|
||||
## Visibility
|
||||
|
||||
It is possible to hide widgets:
|
||||
|
||||
```css
|
||||
inputbar {
|
||||
enabled: false;
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Reference
|
||||
|
||||
@@ -795,8 +622,6 @@ The current widgets available in **rofi**:
|
||||
* `entry`: the main entry @textbox
|
||||
* `num-rows`: Shows the total number of rows.
|
||||
* `num-filtered-rows`: Shows the total number of rows after filtering.
|
||||
* `textbox-current-entry`: Shows the text of the currently selected entry.
|
||||
* `icon-current-entry`: Shows the icon of the currently selected entry.
|
||||
* `listview`: The listview.
|
||||
* `scrollbar`: the listview scrollbar
|
||||
* `element`: a box in the listview holding the entries
|
||||
@@ -868,7 +693,7 @@ The following properties are currently supported:
|
||||
|
||||
### all widgets:
|
||||
|
||||
* **enabled**: enable/disable rendering of the widget
|
||||
* **enabled**: enable/disable the widget
|
||||
* **padding**: padding
|
||||
Padding on the inside of the widget
|
||||
* **margin**: padding
|
||||
@@ -930,18 +755,16 @@ The following properties are currently supported:
|
||||
* **background-color**: color
|
||||
* **border-color**: the color used for the border around the widget.
|
||||
* **font**: the font used by this textbox (string).
|
||||
* **str**/**content**: the string to display by this textbox (string).
|
||||
* **str**: the string to display by this textbox (string).
|
||||
* **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 (left) and 1 (right).
|
||||
* **text-color**: the text color to use.
|
||||
* **text-transform**: text style {color} for the whole text.
|
||||
* **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.
|
||||
* **content**: Set the displayed text (String).
|
||||
* **placeholder**: Set the displayed text (String) when nothing is entered.
|
||||
* **placeholder-markup**: If true, placeholder text supports pango markup for stylizing.
|
||||
* **placeholder-color**: Color of the placeholder text.
|
||||
* **blink**: Enable/Disable blinking on an input textbox (Boolean).
|
||||
* **markup**: Force markup on, beware that only valid pango markup strings are shown.
|
||||
@@ -949,14 +772,6 @@ The following properties are currently supported:
|
||||
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-color**: The color used to draw the cursor.
|
||||
* **cursor-outline**: Enable a border (outline) around the cursor. (Boolean)
|
||||
* **cursor-outline-width**: The width of the border around the cursor. (Double)
|
||||
* **cursor-outline-color**: The color to use for the cursor outline. (Color)
|
||||
* **text-outline**: Enable a border (outline) around the text. (Boolean)
|
||||
* **text-outline-width**: The width of the border around the text. (Double)
|
||||
* **text-outline-color**: The color to use for the text outline. (Color)
|
||||
|
||||
### listview:
|
||||
* **columns**: integer
|
||||
@@ -979,13 +794,8 @@ The following properties are currently supported:
|
||||
Indicate how elements are stacked. Horizontal implements the dmenu style.
|
||||
* **reverse**: boolean
|
||||
Reverse the ordering (top down to bottom up).
|
||||
* **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 number of visible elements is not enough to fill them all.
|
||||
* **require-input**: boolean
|
||||
Listview requires user input to be unhidden. The list is still present and
|
||||
hitting accept will activate the first entry.
|
||||
|
||||
Each element is a `box` called `element`. Each `element` can contain an `element-icon` and `element-text`.
|
||||
|
||||
@@ -1026,42 +836,42 @@ The box can be vertical or horizontal. This is loosely inspired by [GTK](http://
|
||||
The current layout of **rofi** is structured as follows:
|
||||
|
||||
```
|
||||
┌────────────────────────────────────────────────────────────────────────────────────┐
|
||||
│ window {BOX:vertical} │
|
||||
│ ┌───────────────────────────────────────────────────────────────────────────────┐ │
|
||||
│ │ mainbox {BOX:vertical} │ │
|
||||
│ │ ┌───────────────────────────────────────────────────────────────────────────┐ │ │
|
||||
│ │ │ inputbar {BOX:horizontal} │ │ │
|
||||
│ │ │ ┌─────────┐ ┌─┐ ┌───────────────────────────────┐ ┌───┐ ┌───┐ ┌───┐ ┌───┐ │ │ │
|
||||
│ │ │ │ prompt │ │:│ │ entry │ │#fr│ │ / │ │#ns│ │ci │ │ │ │
|
||||
│ │ │ └─────────┘ └─┘ └───────────────────────────────┘ └───┘ └───┘ └───┘ └───┘ │ │ │
|
||||
│ │ └───────────────────────────────────────────────────────────────────────────┘ │ │
|
||||
│ │ │ │
|
||||
│ │ ┌───────────────────────────────────────────────────────────────────────────┐ │ │
|
||||
│ │ │ message │ │ │
|
||||
│ │ │ ┌───────────────────────────────────────────────────────────────────────┐ │ │ │
|
||||
│ │ │ │ textbox │ │ │ │
|
||||
│ │ │ └───────────────────────────────────────────────────────────────────────┘ │ │ │
|
||||
│ │ └───────────────────────────────────────────────────────────────────────────┘ │ │
|
||||
│ │ │ │
|
||||
│ │ ┌───────────────────────────────────────────────────────────────────────────┐ │ │
|
||||
│ │ │ listview │ │ │
|
||||
│ │ │ ┌─────────────────────────────────────────────────────────────────────┐ │ │ │
|
||||
│ │ │ │ element │ │ │ │
|
||||
│ │ │ │ ┌─────────────────┐ ┌─────────────────────────────────────────────┐ │ │ │ │
|
||||
│ │ │ │ │element─icon │ │element─text │ │ │ │ │
|
||||
│ │ │ │ └─────────────────┘ └─────────────────────────────────────────────┘ │ │ │ │
|
||||
│ │ │ └─────────────────────────────────────────────────────────────────────┘ │ │ │
|
||||
│ │ └───────────────────────────────────────────────────────────────────────────┘ │ │
|
||||
│ │ │ │
|
||||
│ │ ┌───────────────────────────────────────────────────────────────────────────┐ │ │
|
||||
│ │ │ mode─switcher {BOX:horizontal} │ │ │
|
||||
│ │ │ ┌───────────────┐ ┌───────────────┐ ┌──────────────┐ ┌───────────────┐ │ │ │
|
||||
│ │ │ │ Button │ │ Button │ │ Button │ │ Button │ │ │ │
|
||||
│ │ │ └───────────────┘ └───────────────┘ └──────────────┘ └───────────────┘ │ │ │
|
||||
│ │ └───────────────────────────────────────────────────────────────────────────┘ │ │
|
||||
│ └───────────────────────────────────────────────────────────────────────────────┘ │
|
||||
└────────────────────────────────────────────────────────────────────────────────────┘
|
||||
|------------------------------------------------------------------------------------|
|
||||
| window {BOX:vertical} |
|
||||
| |-------------------------------------------------------------------------------| |
|
||||
| | mainbox {BOX:vertical} | |
|
||||
| | |---------------------------------------------------------------------------| | |
|
||||
| | | inputbar {BOX:horizontal} | | |
|
||||
| | | |---------| |-| |---------------------------------|---| |---| |---| |---| | | |
|
||||
| | | | prompt | |:| | entry |#fr| | / | |#ns| |ci | | | |
|
||||
| | | |---------| |_| |---------------------------------|---| |---| |---| |---| | | |
|
||||
| | |---------------------------------------------------------------------------| | |
|
||||
| | | |
|
||||
| | |---------------------------------------------------------------------------| | |
|
||||
| | | message | | |
|
||||
| | | |-----------------------------------------------------------------------| | | |
|
||||
| | | | textbox | | | |
|
||||
| | | |-----------------------------------------------------------------------| | | |
|
||||
| | |---------------------------------------------------------------------------| | |
|
||||
| | | |
|
||||
| | |-----------------------------------------------------------------------------| |
|
||||
| | | listview | |
|
||||
| | | |------------------------------------------------------------------------] | |
|
||||
| | | | element | | |
|
||||
| | | | |-----------------| |------------------------------------------------] | | |
|
||||
| | | | |element-icon | |element-text | | | |
|
||||
| | | | |-----------------| |------------------------------------------------| | | |
|
||||
| | | |------------------------------------------------------------------------] | |
|
||||
| | |-----------------------------------------------------------------------------| |
|
||||
| | | |
|
||||
| | |---------------------------------------------------------------------------| | |
|
||||
| | | mode-switcher {BOX:horizontal} | | |
|
||||
| | | |---------------| |---------------| |--------------| |---------------| | | |
|
||||
| | | | Button | | Button | | Button | | Button | | | |
|
||||
| | | |---------------| |---------------| |--------------| |---------------| | | |
|
||||
| | |---------------------------------------------------------------------------| | |
|
||||
| |-------------------------------------------------------------------------------| |
|
||||
|------------------------------------------------------------------------------------|
|
||||
|
||||
|
||||
```
|
||||
@@ -1072,15 +882,16 @@ The current layout of **rofi** is structured as follows:
|
||||
### Error message structure
|
||||
|
||||
```
|
||||
┌──────────────────────────────────────────────────────────────────────────────────┐
|
||||
│ window {BOX:vertical} │
|
||||
│ ┌─────────────────────────────────────────────────────────────────────────────┐ │
|
||||
│ │ error─message {BOX:vertical} │ │
|
||||
│ │ ┌────────────────────────────────────────────────────────────────────────┐ │ │
|
||||
│ │ │ textbox │ │ │
|
||||
│ │ └────────────────────────────────────────────────────────────────────────┘ │ │
|
||||
│ └─────────────────────────────────────────────────────────────────────────────┘ │
|
||||
└──────────────────────────────────────────────────────────────────────────────────┘
|
||||
|-----------------------------------------------------------------------------------|
|
||||
| window {BOX:vertical} |
|
||||
| |------------------------------------------------------------------------------| |
|
||||
| | error-message {BOX:vertical} | |
|
||||
| | |-------------------------------------------------------------------------| | |
|
||||
| | | textbox | | |
|
||||
| | |-------------------------------------------------------------------------| | |
|
||||
| |------------------------------------------------------------------------------| |
|
||||
|-----------------------------------------------------------------------------------|
|
||||
|
||||
|
||||
```
|
||||
|
||||
@@ -1224,18 +1035,18 @@ element selected {
|
||||
Just like CSS, **rofi** uses the box model for each widget.
|
||||
|
||||
```
|
||||
┌──────────────────────────────────────────────────────────────────┐
|
||||
│ margin │
|
||||
│ ┌────────────────────────────────────────────────────────────┐ │
|
||||
│ │ border │ │
|
||||
│ │ ┌────────────────────────────────────────────────────────┐ │ │
|
||||
│ │ │ padding │ │ │
|
||||
│ │ │ ┌────────────────────────────────────────────────────┐ │ │ │
|
||||
│ │ │ │ content │ │ │ │
|
||||
│ │ │ └────────────────────────────────────────────────────┘ │ │ │
|
||||
│ │ └────────────────────────────────────────────────────────┘ │ │
|
||||
│ └────────────────────────────────────────────────────────────┘ │
|
||||
└──────────────────────────────────────────────────────────────────┘
|
||||
|-------------------------------------------------------------------|
|
||||
| margin |
|
||||
| |-------------------------------------------------------------| |
|
||||
| | border | |
|
||||
| | |---------------------------------------------------------| | |
|
||||
| | | padding | | |
|
||||
| | | |-----------------------------------------------------| | | |
|
||||
| | | | content | | | |
|
||||
| | | |-----------------------------------------------------| | | |
|
||||
| | |---------------------------------------------------------| | |
|
||||
| |-------------------------------------------------------------| |
|
||||
|-------------------------------------------------------------------|
|
||||
```
|
||||
|
||||
Explanation of the different parts:
|
||||
@@ -1259,15 +1070,15 @@ Widgets that can pack more then one child widget (currently box and listview) ha
|
||||
This property sets the distance between the packed widgets (both horizontally and vertically).
|
||||
|
||||
```
|
||||
┌───────────────────────────────────────┐
|
||||
│ ┌────────┐ s ┌────────┐ s ┌────────┐ │
|
||||
│ │ child │ p │ child │ p │ child │ │
|
||||
│ │ │ a │ │ a │ │ │
|
||||
│ │ │ c │ │ c │ │ │
|
||||
│ │ │ i │ │ i │ │ │
|
||||
│ │ │ n │ │ n │ │ │
|
||||
│ └────────┘ g └────────┘ g └────────┘ │
|
||||
└───────────────────────────────────────┘
|
||||
|---------------------------------------|
|
||||
| |--------| s |--------| s |-------| |
|
||||
| | child | p | child | p | child | |
|
||||
| | | a | | a | | |
|
||||
| | | c | | c | | |
|
||||
| | | i | | i | | |
|
||||
| | | n | | n | | |
|
||||
| |--------| g |--------| g |-------| |
|
||||
|---------------------------------------|
|
||||
```
|
||||
|
||||
### Advanced box packing
|
||||
@@ -1275,15 +1086,15 @@ This property sets the distance between the packed widgets (both horizontally an
|
||||
More dynamic spacing can be achieved by adding dummy widgets, for example to make one widget centered:
|
||||
|
||||
```
|
||||
┌────────────────────────────────────────────────────┐
|
||||
│ ┌───────────────┐ ┌────────┐ ┌───────────────┐ │
|
||||
│ │ dummy │ │ child │ │ dummy │ │
|
||||
│ │ expand: true; │ │ │ │ expand: true; │ │
|
||||
│ │ │ │ │ │ │ │
|
||||
│ │ │ │ │ │ │ │
|
||||
│ │ │ │ │ │ │ │
|
||||
│ └───────────────┘ └────────┘ └───────────────┘ │
|
||||
└────────────────────────────────────────────────────┘
|
||||
|----------------------------------------------------|
|
||||
| |---------------| |--------| |---------------| |
|
||||
| | dummy | | child | | dummy | |
|
||||
| | expand: true; | | | | expand: true; | |
|
||||
| | | | | | | |
|
||||
| | | | | | | |
|
||||
| | | | | | | |
|
||||
| |---------------| |--------| |---------------| |
|
||||
|----------------------------------------------------|
|
||||
```
|
||||
|
||||
If both dummy widgets are set to expand, `child` will be centered. Depending on the `expand` flag of child the
|
||||
@@ -1343,7 +1154,6 @@ It supports the following keys as constraint:
|
||||
* `min-aspect-ratio` load when aspect ratio is over value.
|
||||
* `max-aspect-ratio`: load when aspect ratio is under value.
|
||||
* `monitor-id`: The monitor id, see rofi -help for id's.
|
||||
* `enabled`: Boolean option to enable. Supports environment variable.
|
||||
|
||||
@media takes an integer number or a fraction, for integer number `px` can be added.
|
||||
|
||||
@@ -1354,12 +1164,6 @@ It supports the following keys as constraint:
|
||||
}
|
||||
```
|
||||
|
||||
```
|
||||
@media ( enabled: env(DO_LIGHT, false ) {
|
||||
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Font Parsing
|
||||
|
||||
@@ -1377,34 +1181,6 @@ Or
|
||||
FontAwesome 22
|
||||
```
|
||||
|
||||
## Icon Handling
|
||||
|
||||
Rofi supports 3 ways of specifying an icon:
|
||||
|
||||
* Filename
|
||||
* icon-name, this is looked up via the icon-theme.
|
||||
* Markup String. It renders a string as an icon.
|
||||
|
||||
|
||||
For the first two options, GdkPixbuf is used to open and render the icons.
|
||||
This in general gives support for most required image formats.
|
||||
For the string option it uses Pango to render the string. The string needs to
|
||||
start with a `<span` tag, that allows you to set color and font.
|
||||
|
||||
Markup string:
|
||||
|
||||
```bash
|
||||
echo -en "testing\0icon\x1f<span color='red'>⏻</span>" | ./rofi -dmenu
|
||||
```
|
||||
|
||||
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.
|
||||
|
||||
## Multiple file handling
|
||||
|
||||
The rasi file format offers two methods of including other files.
|
||||
|
@@ -11,45 +11,30 @@
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
**rofi** is an X11 pop-up window switcher, run dialog, dmenu replacement, and
|
||||
more. It focuses on being fast to use and have minimal distraction. It supports
|
||||
keyboard and mouse navigation, type to filter, tokenized search and more.
|
||||
**rofi** is an X11 pop-up window switcher, run dialog, dmenu replacement, and more. It focuses on
|
||||
being fast to use and have minimal distraction. It supports keyboard and mouse navigation, type to
|
||||
filter, tokenized search and more.
|
||||
|
||||
|
||||
## USAGE
|
||||
|
||||
**rofi**'s main functionality is to assist in your workflow, allowing you to
|
||||
quickly switch between windows, start applications or log into a remote machine
|
||||
via `ssh`. There are different *modes* for different types of actions. **rofi**
|
||||
is a standalone application and should not be integrated into scripts. For
|
||||
integration into scripts it has a special mode that functions as a (drop-in)
|
||||
replacement for **dmenu(1)**. See emulating dmenu below.
|
||||
**rofi**'s main functionality is to assist in your workflow, allowing you to quickly switch
|
||||
between windows, start applications or log into a remote machine via `ssh`.
|
||||
There are different *modi* for different types of actions.
|
||||
**rofi** is a standalone application and should not be integrated into scripts.
|
||||
For integration into scripts it has a special mode that functions as a
|
||||
(drop-in) replacement for **dmenu(1)**. See emulating dmenu below.
|
||||
|
||||
### Running rofi
|
||||
|
||||
To launch **rofi** directly in a certain mode, specify a mode with `rofi -show <mode>`.
|
||||
To show the `drun` dialog:
|
||||
|
||||
```bash
|
||||
rofi -show drun
|
||||
```
|
||||
|
||||
A very useful setup in minimalistic window managers is to combine `drun`, `run`
|
||||
with `window` mode:
|
||||
|
||||
```bash
|
||||
rofi -show combi -modes combi -combi-modes "window,drun,run"
|
||||
```
|
||||
|
||||
In this setup it first list all open applications, then all installed
|
||||
applications. So if you type firefox and hit return, it will switch to the
|
||||
running firefox, or launch it when it is not running.
|
||||
To show the `run` dialog:
|
||||
|
||||
rofi -show run
|
||||
|
||||
### Emulating dmenu
|
||||
|
||||
**rofi** can emulate **dmenu(1)** (a dynamic menu for X11) when launched with
|
||||
the `-dmenu` flag.
|
||||
**rofi** can emulate **dmenu(1)** (a dynamic menu for X11) when launched with the `-dmenu` flag.
|
||||
|
||||
For more information see **rofi-dmenu(5)**.
|
||||
|
||||
@@ -75,29 +60,6 @@ To get a template config file, run: `rofi -dump-config > config.rasi`
|
||||
|
||||
This will contain (commented) all current configuration options, modified options are uncommented.
|
||||
|
||||
To get a template config file that sets the icon-theme run: `rofi -icon-theme hicolor -dump-config`.
|
||||
|
||||
It is **strongly** recommended to use this as a starting point for your configuration.
|
||||
|
||||
An empty configuration section in the config file looks like:
|
||||
|
||||
```css
|
||||
configuration {
|
||||
// set config options here
|
||||
}
|
||||
```
|
||||
|
||||
Most of the configuration options mentioned below (beside options like `-show`,
|
||||
`-dump-config` that apply to a single run) can be set here.
|
||||
|
||||
For example to set the dpi value to 72:
|
||||
|
||||
```css
|
||||
configuration {
|
||||
dpi: 72;
|
||||
}
|
||||
```
|
||||
|
||||
The configuration system supports the following types:
|
||||
|
||||
* string
|
||||
@@ -123,8 +85,8 @@ Below is a list of the most important options:
|
||||
|
||||
`-help`
|
||||
|
||||
The help option shows the full list of command-line options and the current set
|
||||
values. These include dynamic (run-time generated) options.
|
||||
The help option shows the full list of command-line options and the current set values.
|
||||
These include dynamic (run-time generated) options.
|
||||
|
||||
`-version`
|
||||
|
||||
@@ -143,11 +105,6 @@ Dump the current active theme, in rasi format, to stdout and exit.
|
||||
|
||||
Try to parse the file and return 0 when successful, non-zero when failed.
|
||||
|
||||
`-list-keybindings`
|
||||
|
||||
List all known keybindings without trying to parse them. This can be used to
|
||||
look for duplicate bindings.
|
||||
|
||||
`-threads` *num*
|
||||
|
||||
Specify the number of threads **rofi** should use:
|
||||
@@ -174,45 +131,41 @@ Or get the options from a script:
|
||||
|
||||
~/my_script.sh | rofi -dmenu
|
||||
|
||||
See the **rofi-dmenu(5)** manpage for more information.
|
||||
|
||||
`-show` *mode*
|
||||
|
||||
Open **rofi** in a certain mode. Available modes are `window`, `run`, `drun`,
|
||||
`ssh`, `combi`. The special argument `keys` can be used to open a searchable
|
||||
list of supported key bindings
|
||||
(see the **rofi-keys(5)** manpage)
|
||||
Open **rofi** in a certain mode. Available modes are `window`, `run`, `drun`, `ssh`, `combi`.
|
||||
The special argument `keys` can be used to open a searchable list of supported key bindings
|
||||
(see *KEY BINDINGS*)
|
||||
|
||||
To show the run-dialog:
|
||||
|
||||
rofi -show run
|
||||
|
||||
If `-show` is the last option passed to rofi, the first enabled modes is shown.
|
||||
If `-show` is the last option passed to rofi, the first enabled modi is shown.
|
||||
|
||||
`-modes` *mode1,mode2*
|
||||
`-modi` *mode1,mode2*
|
||||
|
||||
Specify an ordered, comma-separated list of modes to enable.
|
||||
Enabled modes can be changed at runtime. Default key is `Ctrl+Tab`.
|
||||
If no modes are specified, all configured modes will be enabled.
|
||||
To only show the `run` and `ssh` launcher:
|
||||
|
||||
rofi -modes "run,ssh" -show run
|
||||
rofi -modi "run,ssh" -show run
|
||||
|
||||
Custom modes can be added using the internal `script` mode. Each such mode has
|
||||
two parameters:
|
||||
Custom modes can be added using the internal `script` mode. Each such mode has two parameters:
|
||||
|
||||
<name>:<script>
|
||||
|
||||
Example: Have a mode called 'Workspaces' using the `i3_switch_workspaces.sh` script:
|
||||
|
||||
rofi -modes "window,run,ssh,Workspaces:i3_switch_workspaces.sh" -show Workspaces
|
||||
rofi -modi "window,run,ssh,Workspaces:i3_switch_workspaces.sh" -show Workspaces
|
||||
|
||||
Notes: The i3 window manager dislikes commas in the command when specifying an
|
||||
exec command. For that case, `#` can be used as a separator.
|
||||
Notes: The i3 window manager dislikes commas in the command when specifying an exec command.
|
||||
For that case, `#` can be used as a separator.
|
||||
|
||||
**TIP**: The name is allowed to contain spaces:
|
||||
|
||||
rofi -modes "My File Browser:fb.sh" -show "My File Browser"
|
||||
rofi -modi "My File Browser:fb.sh" -show "My File Browser"
|
||||
|
||||
`-case-sensitive`
|
||||
|
||||
@@ -266,6 +219,10 @@ Specify icon theme to be used.
|
||||
If not specified default theme from DE is used, *Adwaita* and *gnome* themes act as
|
||||
fallback themes.
|
||||
|
||||
`-application-fallback-icon`
|
||||
|
||||
Specify an icon to be used when the application icon in run/drun are not yet loaded or is not available.
|
||||
|
||||
`-markup`
|
||||
|
||||
Use Pango markup to format output wherever possible.
|
||||
@@ -278,33 +235,6 @@ Make **rofi** react like a normal application window. Useful for scripts like Cl
|
||||
|
||||
Make rofi steal focus on launch and restore close to window that held it when launched.
|
||||
|
||||
`-refilter-timeout-limit`
|
||||
|
||||
The time (in ms) boundary filter may take before switch from instant to delayed filter mode.
|
||||
|
||||
Default: 300
|
||||
|
||||
A fallback icon can be specified for each mode:
|
||||
|
||||
```css
|
||||
configuration {
|
||||
<mode>{
|
||||
fallback-icon: "<icon name>";
|
||||
}
|
||||
}
|
||||
```
|
||||
Example
|
||||
|
||||
```css
|
||||
configuration {
|
||||
run,drun {
|
||||
fallback-icon: "application-x-addon";
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
|
||||
### Matching
|
||||
|
||||
`-matching` *method*
|
||||
@@ -417,7 +347,7 @@ Keep a fixed number of visible lines.
|
||||
`-sidebar-mode`
|
||||
|
||||
Open in sidebar-mode. In this mode, a list of all enabled modes is shown at the bottom.
|
||||
(See `-modes` option)
|
||||
(See `-modi` option)
|
||||
To show sidebar, use:
|
||||
|
||||
rofi -show run -sidebar-mode
|
||||
@@ -543,12 +473,6 @@ See *PATTERN*.
|
||||
|
||||
Default: *{cmd}*
|
||||
|
||||
Example to run applications in a dedicated cgroup with systemd. Requires a shell to escape and interpolate the unit name correctly.
|
||||
|
||||
```
|
||||
"bash -c 'systemd-run --user --unit=app-rofi-\$(systemd-escape {cmd})-\$RANDOM {cmd}'"
|
||||
```
|
||||
|
||||
`-run-shell-command` *cmd*
|
||||
|
||||
Set command to execute when running an application in a shell.
|
||||
@@ -578,7 +502,7 @@ Format what is being displayed for windows.
|
||||
* **r**: role
|
||||
* **c**: class
|
||||
|
||||
*len*: maximum field length (0 for auto-size). If length is negative, the entry will be unchanged.
|
||||
*len*: maximum field length (0 for auto-size). If length and window *width* are negative, field length is *width - len*.
|
||||
If length is positive, the entry will be truncated or padded to fill that length.
|
||||
|
||||
|
||||
@@ -606,39 +530,16 @@ configuration {
|
||||
}
|
||||
}
|
||||
```
|
||||
You can hide the currently active window with the 'hide-active-window' setting:
|
||||
|
||||
```css
|
||||
configuration {
|
||||
window {
|
||||
hide-active-window: true;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
or pass `-window-hide-active-window true` on command line.
|
||||
|
||||
You can prefer the icon theme above the window set icon with the 'prefer-icon-theme' setting:
|
||||
|
||||
```css
|
||||
configuration {
|
||||
window {
|
||||
prefer-icon-theme: true;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
or pass `-window-prefer-icon-theme true` on command line.
|
||||
|
||||
### Combi settings
|
||||
|
||||
`-combi-modes ` *mode1*,*mode2*
|
||||
`-combi-modi` *mode1*,*mode2*
|
||||
|
||||
The modes to combine in combi mode.
|
||||
For syntax to `-combi-modes`, see `-modes`.
|
||||
The modi to combine in combi mode.
|
||||
For syntax to `-combi-modi`, see `-modi`.
|
||||
To get one merge view, of `window`,`run`, and `ssh`:
|
||||
|
||||
rofi -show combi -combi-modes "window,run,ssh" -modes combi
|
||||
rofi -show combi -combi-modi "window,run,ssh" -modi combi
|
||||
|
||||
**NOTE**: The i3 window manager dislikes commas in the command when specifying an exec command.
|
||||
For that case, `#` can be used as a separator.
|
||||
@@ -654,7 +555,7 @@ Pango markup can be used to formatting the output.
|
||||
|
||||
Default: {mode} {text}
|
||||
|
||||
Note: This setting is ignored if `combi-hide-mode-prefix` is enabled.
|
||||
Note: This setting is ignored if `combi-hide-mode-prefix` is eanbled.
|
||||
|
||||
|
||||
### History and Sorting
|
||||
@@ -708,14 +609,10 @@ configuration {
|
||||
sorting-method: "name";
|
||||
/** Group directories before files. */
|
||||
directories-first: true;
|
||||
/** Show hidden files. */
|
||||
show-hidden: false;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
The `show-hidden` can also be triggered with the `kb-delete-entry` keybinding.
|
||||
|
||||
### Other
|
||||
|
||||
`-drun-use-desktop-cache`
|
||||
@@ -760,12 +657,6 @@ Click the mouse outside the **rofi** window to exit.
|
||||
|
||||
Default: *enabled*
|
||||
|
||||
`-xserver-i300-workaround`
|
||||
|
||||
Workaround for bug in Xserver. See issue #611 and #1642 on the rofi issue tracker.
|
||||
|
||||
Default: *disabled*
|
||||
|
||||
## PATTERN
|
||||
|
||||
To launch commands (for example, when using the ssh launcher), the user can enter the used command-line. The following keys can be used that will be replaced at runtime:
|
||||
@@ -783,10 +674,54 @@ Please see **rofi-theme(5)** manpage for more information on theming.
|
||||
|
||||
## KEY BINDINGS
|
||||
|
||||
Please see the **rofi-keys(5)** manpage for the keybindings and how to set them up.
|
||||
**rofi** has the following key bindings:
|
||||
|
||||
The keybinding can also be used for actions, when the action is executed the
|
||||
mentioned keystroke is inserted:
|
||||
* `Control-v, Insert`: Paste from clipboard
|
||||
* `Control-Shift-v, Shift-Insert`: Paste primary selection
|
||||
* `Control-u`: Clear the line
|
||||
* `Control-a`: Beginning of line
|
||||
* `Control-e`: End of line
|
||||
* `Control-f, Right`: Forward one character
|
||||
* `Alt-f, Control-Right`: Forward one word
|
||||
* `Control-b, Left`: Back one character
|
||||
* `Alt-b, Control-Left`: Back one word
|
||||
* `Control-d, Delete`: Delete character
|
||||
* `Control-Alt-d`: Delete word
|
||||
* `Control-h, Backspace, Shift-Backspace`: Backspace (delete previous character)
|
||||
* `Control-Alt-h`: Delete previous word
|
||||
* `Control-j,Control-m,Enter`: Accept entry
|
||||
* `Control-n,Down`: Select next entry
|
||||
* `Control-p,Up`: Select previous entry
|
||||
* `Page Up`: Go to previous page
|
||||
* `Page Down`: Go to next page
|
||||
* `Control-Page Up`: Go to previous column
|
||||
* `Control-Page Down`: Go to next column
|
||||
* `Control-Enter`: Use entered text as a command (in `ssh/run modi`)
|
||||
* `Shift-Enter`: Launch the application in a terminal (in run mode)
|
||||
* `Control-Shift-Enter`: As Control-Enter and run the command in terminal (in run mode)
|
||||
* `Shift-Enter`: Return the selected entry and move to the next item while keeping **rofi** open. (in dmenu)
|
||||
* `Shift-Right`: Switch to the next mode. The list can be customized with the `-modi` argument.
|
||||
* `Shift-Left`: Switch to the previous mode. The list can be customized with the `-modi` argument.
|
||||
* `Control-Tab`: Switch to the next mode. The list can be customized with the `-modi` argument.
|
||||
* `Control-Shift-Tab`: Switch to the previous mode. The list can be customized with the `-modi` argument.
|
||||
* `Control-space`: Set selected item as input text.
|
||||
* `Shift-Del`: Delete entry from history.
|
||||
* `grave`: Toggle case sensitivity.
|
||||
* `Alt-grave`: Toggle sorting.
|
||||
* `Alt-Shift-S`: Take a screenshot and store it in the Pictures directory.
|
||||
* `Control-l`: File complete for run dialog.
|
||||
|
||||
This list might not be complete, to get a full list of all key bindings
|
||||
supported in your rofi, see `rofi -h`. The options starting with `-kb` are keybindings.
|
||||
|
||||
Key bindings can be modified using the configuration systems. Multiple keys can be bound
|
||||
to one action by comma separating them. For example `-kb-primary-paste "Conctrol+v,Insert"`
|
||||
|
||||
To get a searchable list of key bindings, run `rofi -show keys`.
|
||||
|
||||
A key binding starting with `!` will act when all keys have been released.
|
||||
|
||||
You can bind certain events to key-actions:
|
||||
|
||||
### Timeout
|
||||
|
||||
@@ -815,7 +750,9 @@ configuration {
|
||||
}
|
||||
```
|
||||
|
||||
## Available Modes
|
||||
For a full list of bindings, see the **rofi-keys(5)** manpage.
|
||||
|
||||
## Available Modi
|
||||
|
||||
### window
|
||||
|
||||
@@ -888,25 +825,25 @@ Shows a searchable list of key bindings.
|
||||
|
||||
### script
|
||||
|
||||
Allows custom scripted Modes to be added, see the **rofi-script(5)** manpage for more information.
|
||||
Allows custom scripted Modi to be added, see the **rofi-script(5)** manpage for more information.
|
||||
|
||||
### combi
|
||||
|
||||
Combines multiple modes in one list. Specify which modes are included with the `-combi-modes` option.
|
||||
Combines multiple modi in one list. Specify which modi are included with the `-combi-modi` option.
|
||||
|
||||
When using the combi mode, a *!bang* can be used to filter the results by modes.
|
||||
All modes that match the bang as a prefix are included.
|
||||
For example, say you have specified `-combi-modes run,window,windowcd`. If your
|
||||
When using the combi mode, a *!bang* can be used to filter the results by modi.
|
||||
All modi that match the bang as a prefix are included.
|
||||
For example, say you have specified `-combi-modi run,window,windowcd`. If your
|
||||
query begins with the bang `!w`, only results from the `window` and `windowcd`
|
||||
modes are shown, even if the rest of the input text would match results from `run`.
|
||||
modi are shown, even if the rest of the input text would match results from `run`.
|
||||
|
||||
If no match, the input is handled by the first combined modes.
|
||||
If no match, the input is handled by the first combined modi.
|
||||
|
||||
## FAQ
|
||||
|
||||
### The text in the window switcher is not nicely aligned.
|
||||
|
||||
Try using a mono-space font or tabs + the tab-stops setting..
|
||||
Try using a mono-space font.
|
||||
|
||||
### The window is completely black.
|
||||
|
||||
@@ -936,19 +873,19 @@ Some basic usage examples of **rofi**:
|
||||
|
||||
Show the run dialog:
|
||||
|
||||
rofi -modes run -show run
|
||||
rofi -modi run -show run
|
||||
|
||||
Show the run dialog, and allow switching to Desktop File run dialog (`drun`):
|
||||
|
||||
rofi -modes run,drun -show run
|
||||
rofi -modi run,drun -show run
|
||||
|
||||
Combine the run and Desktop File run dialog (`drun`):
|
||||
|
||||
rofi -modes combi -show combi -combi-modes run,drun
|
||||
rofi -modi combi -show combi -combi-modi run,drun
|
||||
|
||||
Combine the run and Desktop File run dialog (`drun`), and allow switching to window switcher:
|
||||
|
||||
rofi -modes combi,window -show combi -combi-modes run,drun
|
||||
rofi -modi combi,window -show combi -combi-modi run,drun
|
||||
|
||||
Pop up a text message claiming that this is the end:
|
||||
|
||||
@@ -962,6 +899,10 @@ Show all key bindings:
|
||||
|
||||
rofi -show keys
|
||||
|
||||
Use `qalc` to get a simple calculator in **rofi**:
|
||||
|
||||
rofi -show calc -modi "calc:qalc +u8 -nocurrencies"
|
||||
|
||||
## i3
|
||||
|
||||
In [i3](http://i3wm.org/) you want to bind **rofi** to be launched on key release. Otherwise, it cannot grab the keyboard.
|
||||
@@ -996,28 +937,66 @@ been released.
|
||||
|
||||
## WEBSITE
|
||||
|
||||
**rofi** website can be found [here](https://github.com/davatorium/rofi/)
|
||||
**rofi** website can be found [here](https://davedavenport.github.io/rofi/)
|
||||
|
||||
## SUPPORT
|
||||
|
||||
**rofi** support can be obtained:
|
||||
* [GitHub Discussions](https://github.com/davatorium/rofi/discussions)
|
||||
* [Forum (Reddit)](https://reddit.com/r/qtools//)
|
||||
* [IRC](irc://irc.libera.chat:6697/#rofi) (#rofi on irc.libera.chat),
|
||||
|
||||
## DEBUGGING
|
||||
|
||||
For more information see **rofi-debugging(5)** manpage.
|
||||
To debug, it is smart to first try disabling your custom configuration:
|
||||
`-no-config`
|
||||
|
||||
Disable parsing of configuration. This runs rofi in *stock* mode.
|
||||
|
||||
If you run custom C plugins, you can disable them using:
|
||||
|
||||
`-no-plugins`
|
||||
|
||||
Disables the loading of plugins.
|
||||
|
||||
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.
|
||||
* Dialogs.DMenu: The dmenu mode.
|
||||
* Dialogs.Run: The run mode.
|
||||
* Dialogs.DRun: The desktop file run mode.
|
||||
* Dialogs.Window: The window mode.
|
||||
* Dialogs.Script: The script mode.
|
||||
* Dialogs.Combi: The script mode.
|
||||
* Dialogs.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.
|
||||
|
||||
The output of this can provide useful information when writing an issue.
|
||||
|
||||
More information (possibly outdated) see [this](https://github.com/DaveDavenport/rofi/wiki/Debugging%20Rofi) wiki entry.
|
||||
|
||||
## ISSUE TRACKER
|
||||
|
||||
The **rofi** issue tracker can be found [here](https://github.com/davatorium/rofi/issues)
|
||||
Before creating an issue, consider posting a question on the [discussion forum](https://github.com/davatorium/rofi/discussions) first.
|
||||
When creating an issue, please read [this](https://github.com/davatorium/rofi/blob/master/.github/CONTRIBUTING.md)
|
||||
The **rofi** issue tracker can be found [here](https://github.com/DaveDavenport/rofi/issues)
|
||||
|
||||
When creating an issue, please read [this](https://github.com/DaveDavenport/rofi/blob/master/.github/CONTRIBUTING.md)
|
||||
first.
|
||||
|
||||
## SEE ALSO
|
||||
|
||||
**rofi-sensible-terminal(1)**, **dmenu(1)**, **rofi-debugging(5)**, **rofi-theme(5)**, **rofi-script(5)**, **rofi-keys(5)**,**rofi-theme-selector(1)**,**rofi-dmenu(5)**
|
||||
**rofi-sensible-terminal(1)**, **dmenu(1)**, **rofi-theme(5)**, **rofi-script(5)**, **rofi-keys(5)**,**rofi-theme-selector(1)**
|
||||
|
||||
## AUTHOR
|
||||
|
||||
|
@@ -1,73 +1,50 @@
|
||||
.nh
|
||||
.TH ROFI DEBUGGING 5 rofi debugging
|
||||
.SH NAME
|
||||
.PP
|
||||
# rofi-debugging(5)
|
||||
|
||||
## NAME
|
||||
|
||||
Debugging rofi.
|
||||
|
||||
.PP
|
||||
When reporting an issue with rofi crashing, or misbehaving. It helps to do some
|
||||
small test to help pin-point the problem.
|
||||
|
||||
.PP
|
||||
First try disabling your custom configuration: \fB\fC-no-config\fR
|
||||
First try disabling your custom configuration: `-no-config`
|
||||
|
||||
.PP
|
||||
This disables the parsing of the configuration files. This runs rofi in \fIstock\fP
|
||||
This disables the parsing of the configuration files. This runs rofi in *stock*
|
||||
mode.
|
||||
|
||||
.PP
|
||||
If you run custom C plugins, you can disable the plugins using: \fB\fC-no-plugins\fR
|
||||
If you run custom C plugins, you can disable the plugins using: `-no-plugins`
|
||||
|
||||
## Get the relevant information for an issue
|
||||
|
||||
.SH Get the relevant information for an issue
|
||||
.PP
|
||||
Please pastebin the output of the following commands:
|
||||
|
||||
.PP
|
||||
.RS
|
||||
|
||||
.nf
|
||||
```bash
|
||||
rofi -help
|
||||
rofi -dump-config
|
||||
rofi -dump-theme
|
||||
```
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.PP
|
||||
\fB\fCrofi -help\fR provides us with the configuration files parsed, the exact
|
||||
`rofi -help` provides us with the configuration files parsed, the exact
|
||||
version, monitor layout and more useful information.
|
||||
|
||||
.PP
|
||||
The \fB\fCrofi -dump-config\fR and \fB\fCrofi -dump-theme\fR output gives us \fB\fCrofi\fR
|
||||
The `rofi -dump-config` and `rofi -dump-theme` output gives us `rofi`
|
||||
interpretation of your configuration and theme.
|
||||
|
||||
.PP
|
||||
Please check the output for identifiable information and remove this.
|
||||
|
||||
.SH Timing traces
|
||||
.PP
|
||||
To get a timing trace, enable the \fBTimings\fP debug domain.
|
||||
## Timing traces
|
||||
|
||||
.PP
|
||||
.RS
|
||||
To get a timing trace, enable the **Timings** debug domain.
|
||||
|
||||
.nf
|
||||
```bash
|
||||
G_MESSAGES_DEBUG=Timings rofi -show drun
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.PP
|
||||
```
|
||||
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.
|
||||
|
||||
.PP
|
||||
Example trace:
|
||||
|
||||
.PP
|
||||
.RS
|
||||
|
||||
.nf
|
||||
```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
|
||||
@@ -118,139 +95,83 @@ Example trace:
|
||||
(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
|
||||
```
|
||||
|
||||
.fi
|
||||
.RE
|
||||
## Debug domains
|
||||
|
||||
.SH Debug domains
|
||||
.PP
|
||||
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,
|
||||
G\_MESSAGES\_DEBUG environment variable. At the time of creation of this page,
|
||||
the following debug domains exist:
|
||||
|
||||
.RS
|
||||
.IP \(bu 2
|
||||
all: Show debug information from all domains.
|
||||
.IP \(bu 2
|
||||
X11Helper: The X11 Helper functions.
|
||||
.IP \(bu 2
|
||||
View: The main window view functions.
|
||||
.IP \(bu 2
|
||||
Widgets.Box: The Box widget.
|
||||
.IP \(bu 2
|
||||
Modes.DMenu: The dmenu mode.
|
||||
.IP \(bu 2
|
||||
Modes.Run: The run mode.
|
||||
.IP \(bu 2
|
||||
Modes.DRun: The desktop file run mode.
|
||||
.IP \(bu 2
|
||||
Modes.Window: The window mode.
|
||||
.IP \(bu 2
|
||||
Modes.Script: The script mode.
|
||||
.IP \(bu 2
|
||||
Modes.Combi: The script mode.
|
||||
.IP \(bu 2
|
||||
Modes.Ssh: The ssh mode.
|
||||
.IP \(bu 2
|
||||
Rofi: The main application.
|
||||
.IP \(bu 2
|
||||
Timings: Get timing output.
|
||||
.IP \(bu 2
|
||||
Theme: Theme engine debug output. (warning lots of output).
|
||||
.IP \(bu 2
|
||||
Widgets.Icon: The Icon widget.
|
||||
.IP \(bu 2
|
||||
Widgets.Box: The box widget.
|
||||
.IP \(bu 2
|
||||
Widgets.Container: The container widget.
|
||||
.IP \(bu 2
|
||||
Widgets.Window: The window widget.
|
||||
.IP \(bu 2
|
||||
Helpers.IconFetcher: Information about icon lookup.
|
||||
- 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.
|
||||
|
||||
.RE
|
||||
For full list see `man rofi`.
|
||||
|
||||
.PP
|
||||
For full list see \fB\fCman rofi\fR\&.
|
||||
|
||||
.PP
|
||||
Example: \fB\fCG_MESSAGES_DEBUG=Dialogs.DRun rofi -show drun\fR To get specific output
|
||||
Example: `G_MESSAGES_DEBUG=Dialogs.DRun rofi -show drun` To get specific output
|
||||
from the Desktop file run dialog.
|
||||
|
||||
.PP
|
||||
To redirect the debug output to a file (\fB\fC~/rofi.log\fR) add:
|
||||
To redirect the debug output to a file (`~/rofi.log`) add:
|
||||
|
||||
.PP
|
||||
.RS
|
||||
|
||||
.nf
|
||||
```bash
|
||||
rofi -show drun -log ~/rofi.log
|
||||
```
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.PP
|
||||
Specifying the logfile automatically enabled all log domains.
|
||||
This can be useful when rofi is launched from a window manager.
|
||||
|
||||
.SH Creating a backtrace
|
||||
.PP
|
||||
First make sure you compile \fBrofi\fP with debug symbols:
|
||||
## Creating a backtrace
|
||||
|
||||
.PP
|
||||
.RS
|
||||
First make sure you compile **rofi** with debug symbols:
|
||||
|
||||
.nf
|
||||
```bash
|
||||
make CFLAGS="-O0 -g3" clean rofi
|
||||
```
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.PP
|
||||
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.
|
||||
|
||||
.PP
|
||||
.RS
|
||||
|
||||
.nf
|
||||
```bash
|
||||
gdb rofi core
|
||||
```
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.PP
|
||||
Then type inside gdb:
|
||||
|
||||
.PP
|
||||
.RS
|
||||
|
||||
.nf
|
||||
```bash
|
||||
thread apply all bt
|
||||
```
|
||||
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.PP
|
||||
The output trace is useful when reporting crashes.
|
||||
|
||||
.PP
|
||||
Some distribution have \fB\fCsystemd-coredump\fR, this way you can easily get a
|
||||
backtrace via \fB\fCcoredumpctl\fR\&.
|
||||
Some distribution have `systemd-coredump`, this way you can easily get a
|
||||
backtrace via `coredumpctl`.
|
||||
|
||||
.SH SEE ALSO
|
||||
.PP
|
||||
rofi-sensible-terminal(1), dmenu(1), rofi-debugging(5), rofi-theme(5),
|
||||
## SEE ALSO
|
||||
|
||||
rofi-sensible-terminal(1), dmenu(1), rofi-theme(5),
|
||||
rofi-script(5), rofi-keys(5),rofi-theme-selector(1)
|
||||
|
||||
.SH AUTHOR
|
||||
.RS
|
||||
.IP \(bu 2
|
||||
Qball Cow qball@blame.services
|
||||
\[la]mailto:qball@blame.services\[ra]
|
||||
## AUTHOR
|
||||
|
||||
.RE
|
||||
* Qball Cow <qball@blame.services>
|
245
mkdocs/docs/1.7.6/rofi-dmenu.5.markdown
Normal file
245
mkdocs/docs/1.7.6/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.6/rofi-keys.5.markdown
Normal file
576
mkdocs/docs/1.7.6/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.6/rofi-script.5.markdown
Normal file
216
mkdocs/docs/1.7.6/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.6/rofi-sensible-terminal.1.markdown
Normal file
50
mkdocs/docs/1.7.6/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.6/rofi-theme-selector.1.markdown
Normal file
40
mkdocs/docs/1.7.6/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
|
1660
mkdocs/docs/1.7.6/rofi-theme.5.markdown
Normal file
1660
mkdocs/docs/1.7.6/rofi-theme.5.markdown
Normal file
File diff suppressed because it is too large
Load Diff
85
mkdocs/docs/1.7.6/rofi-thumbnails.5.markdown
Normal file
85
mkdocs/docs/1.7.6/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.
|
1183
mkdocs/docs/1.7.6/rofi.1.markdown
Normal file
1183
mkdocs/docs/1.7.6/rofi.1.markdown
Normal file
File diff suppressed because it is too large
Load Diff
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
|
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
89
mkdocs/docs/1.7.9/rofi-actions.5.markdown
Normal file
89
mkdocs/docs/1.7.9/rofi-actions.5.markdown
Normal file
@@ -0,0 +1,89 @@
|
||||
# rofi-actions(5)
|
||||
|
||||
## NAME
|
||||
|
||||
**rofi-actions** - Custom commands following interaction with rofi menus
|
||||
|
||||
## DESCRIPTION
|
||||
|
||||
**rofi** allows to set custom commands or scripts to be executed when some actions are performed in the menu, such as changing selection, accepting an entry or canceling.
|
||||
|
||||
This makes it possible for example to play sound effects or read aloud menu entries on selection.
|
||||
|
||||
## USAGE
|
||||
|
||||
Following is the list of rofi flags for specifying custom commands or scripts to execute on supported actions:
|
||||
|
||||
`-on-selection-changed` *cmd*
|
||||
|
||||
Command or script to run when the current selection changes. Selected text is forwarded to the command replacing the pattern *{entry}*.
|
||||
|
||||
`-on-entry-accepted` *cmd*
|
||||
|
||||
Command or script to run when a menu entry is accepted. Accepted text is forwarded to the command replacing the pattern *{entry}*.
|
||||
|
||||
`-on-mode-changed` *cmd*
|
||||
|
||||
Command or script to run when the menu mode (e.g. drun,window,ssh...) is changed.
|
||||
|
||||
`-on-menu-canceled` *cmd*
|
||||
|
||||
Command or script to run when the menu is canceled.
|
||||
|
||||
`-on-menu-error` *cmd*
|
||||
|
||||
Command or script to run when an error menu is shown (e.g. `rofi -e "error message"`). Error text is forwarded to the command replacing the pattern *{error}*.
|
||||
|
||||
`-on-screenshot-taken` *cmd*
|
||||
|
||||
Command or script to run when a screenshot of rofi is taken. Screenshot path is forwarded to the command replacing the pattern *{path}*.
|
||||
|
||||
### Example usage
|
||||
|
||||
Rofi command line:
|
||||
|
||||
```bash
|
||||
rofi -on-selection-changed "/path/to/select.sh {entry}" \
|
||||
-on-entry-accepted "/path/to/accept.sh {entry}" \
|
||||
-on-menu-canceled "/path/to/exit.sh" \
|
||||
-on-mode-changed "/path/to/change.sh" \
|
||||
-on-menu-error "/path/to/error.sh {error}" \
|
||||
-on-screenshot-taken "/path/to/camera.sh {path}" \
|
||||
-show drun
|
||||
```
|
||||
|
||||
Rofi config file:
|
||||
|
||||
```css
|
||||
configuration {
|
||||
on-selection-changed: "/path/to/select.sh {entry}";
|
||||
on-entry-accepted: "/path/to/accept.sh {entry}";
|
||||
on-menu-canceled: "/path/to/exit.sh";
|
||||
on-mode-changed: "/path/to/change.sh";
|
||||
on-menu-error: "/path/to/error.sh {error}";
|
||||
on-screenshot-taken: "/path/to/camera.sh {path}";
|
||||
}
|
||||
```
|
||||
|
||||
### Play sound effects
|
||||
|
||||
Here's an example bash script that plays a sound effect using `aplay` when the current selection is changed:
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
coproc aplay -q $HOME/Music/selecting_an_item.wav
|
||||
```
|
||||
|
||||
The use of `coproc` for playing sounds is suggested, otherwise the rofi process will wait for sounds to end playback before exiting.
|
||||
|
||||
### Read aloud
|
||||
|
||||
Here's an example bash script that reads aloud currently selected entries using `espeak`:
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
|
||||
killall espeak
|
||||
echo "selected: $@" | espeak
|
||||
```
|
177
mkdocs/docs/1.7.9/rofi-debugging.5.markdown
Normal file
177
mkdocs/docs/1.7.9/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.9/rofi-dmenu.5.markdown
Normal file
245
mkdocs/docs/1.7.9/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://docs.gtk.org/Pango/pango_markup.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.
|
588
mkdocs/docs/1.7.9/rofi-keys.5.markdown
Normal file
588
mkdocs/docs/1.7.9/rofi-keys.5.markdown
Normal file
@@ -0,0 +1,588 @@
|
||||
# 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
|
||||
|
||||
`kb-matcher-up`
|
||||
|
||||
Select the next matcher.
|
||||
|
||||
Default: Super+equal
|
||||
|
||||
`kb-matcher-down`
|
||||
|
||||
Select the previous matcher.
|
||||
|
||||
Default: Super+minus
|
||||
|
||||
## 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.
|
217
mkdocs/docs/1.7.9/rofi-script.5.markdown
Normal file
217
mkdocs/docs/1.7.9/rofi-script.5.markdown
Normal file
@@ -0,0 +1,217 @@
|
||||
# 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.
|
||||
- **3**: Deleted an 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.
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user