[Window] Add -window-prefer-icon-theme option.

Fixes: #1702
This commit is contained in:
Dave Davenport 2022-10-22 11:03:11 +02:00
parent baba41cbd2
commit 96a69a54c3
12 changed files with 858 additions and 784 deletions

View file

@ -1,3 +1,4 @@
.nh
.TH ROFI DEBUGGING 5 rofi debugging .TH ROFI DEBUGGING 5 rofi debugging
.SH NAME .SH NAME
.PP .PP
@ -5,16 +6,16 @@ Debugging rofi.
.PP .PP
When reporting an issue with rofi crashing, or misbehaving. It helps to do some small test When reporting an issue with rofi crashing, or misbehaving. It helps to do some small test
to help pin\-point the problem. to help pin-point the problem.
.PP .PP
First try disabling your custom configuration: \fB\fC\-no\-config\fR First try disabling your custom configuration: \fB\fC-no-config\fR
.PP .PP
This disables the parsing of the configuration files. This runs rofi in \fIstock\fP mode. This disables the parsing of the configuration files. This runs rofi in \fIstock\fP mode.
.PP .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: \fB\fC-no-plugins\fR
.SH Get the relevant information for an issue .SH Get the relevant information for an issue
.PP .PP
@ -24,19 +25,19 @@ Please pastebin the output of the following commands:
.RS .RS
.nf .nf
rofi \-help rofi -help
rofi \-dump\-config rofi -dump-config
rofi \-dump\-theme rofi -dump-theme
.fi .fi
.RE .RE
.PP .PP
\fB\fCrofi \-help\fR provides us with the configuration files parsed, the exact version, monitor layout \fB\fCrofi -help\fR provides us with the configuration files parsed, the exact version, monitor layout
and more useful information. and more useful information.
.PP .PP
The \fB\fCrofi \-dump\-config\fR and \fB\fCrofi \-dump\-theme\fR output gives us \fB\fCrofi\fR The \fB\fCrofi -dump-config\fR and \fB\fCrofi -dump-theme\fR output gives us \fB\fCrofi\fR
interpretation of your configuration and theme. interpretation of your configuration and theme.
.PP .PP
@ -50,7 +51,7 @@ To get a timing trace, enable the \fBTimings\fP debug domain.
.RS .RS
.nf .nf
G\_MESSAGES\_DEBUG=Timings rofi \-show drun G_MESSAGES_DEBUG=Timings rofi -show drun
.fi .fi
.RE .RE
@ -66,56 +67,56 @@ Example trace:
.RS .RS
.nf .nf
(process:14942): Timings\-DEBUG: 13:47:39.335: 0.000000 (0.000000): Started (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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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.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 (process:14942): Timings-DEBUG: 13:47:39.428: 0.092864 (0.006741): ../source/view.c:rofi_view_update:1008 widgets
.fi .fi
.RE .RE
@ -123,7 +124,7 @@ Example trace:
.SH Debug domains .SH Debug domains
.PP .PP
To further debug the plugin, you can get a trace with (lots of) debug information. This debug output can be enabled for 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 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: environment variable. At the time of creation of this page, the following debug domains exist:
.RS .RS
@ -172,16 +173,16 @@ Helpers.IconFetcher: Information about icon lookup.
For full list see \fB\fCman rofi\fR\&. For full list see \fB\fCman rofi\fR\&.
.PP .PP
Example: \fB\fCG\_MESSAGES\_DEBUG=Dialogs.DRun rofi \-show drun\fR To get specific output from the Desktop file run dialog. Example: \fB\fCG_MESSAGES_DEBUG=Dialogs.DRun rofi -show drun\fR To get specific output from the Desktop file run dialog.
.PP .PP
To redirect the debug output to a file (\fB\fC\~/rofi.log\fR) add: To redirect the debug output to a file (\fB\fC~/rofi.log\fR) add:
.PP .PP
.RS .RS
.nf .nf
rofi \-show drun \-log \~/rofi.log rofi -show drun -log ~/rofi.log
.fi .fi
.RE .RE
@ -198,7 +199,7 @@ First make sure you compile \fBrofi\fP with debug symbols:
.RS .RS
.nf .nf
make CFLAGS="\-O0 \-g3" clean rofi make CFLAGS="-O0 -g3" clean rofi
.fi .fi
.RE .RE
@ -206,7 +207,7 @@ make CFLAGS="\-O0 \-g3" clean rofi
.PP .PP
Getting a backtrace using GDB is not very handy. Because if rofi get stuck, it grabs keyboard and 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. 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 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. can then load the core in GDB.
.PP .PP
@ -234,16 +235,16 @@ thread apply all bt
The output trace is useful when reporting crashes. The output trace is useful when reporting crashes.
.PP .PP
Some distribution have \fB\fCsystemd\-coredump\fR, this way you can easily get a backtrace via \fB\fCcoredumpctl\fR\&. Some distribution have \fB\fCsystemd-coredump\fR, this way you can easily get a backtrace via \fB\fCcoredumpctl\fR\&.
.SH SEE ALSO .SH SEE ALSO
.PP .PP
\fBrofi\-sensible\-terminal(1)\fP, \fBdmenu(1)\fP, \fBrofi\-debugging(5)\fP, \fBrofi\-theme(5)\fP, \fBrofi\-script(5)\fP, \fBrofi\-keys(5)\fP,\fBrofi\-theme\-selector(1)\fP \fBrofi-sensible-terminal(1)\fP, \fBdmenu(1)\fP, \fBrofi-debugging(5)\fP, \fBrofi-theme(5)\fP, \fBrofi-script(5)\fP, \fBrofi-keys(5)\fP,\fBrofi-theme-selector(1)\fP
.SH AUTHOR .SH AUTHOR
.RS .RS
.IP \(bu 2 .IP \(bu 2
Qball Cow Qball Cow qball@blame.services
\[la]qball@blame.services\[ra] \[la]mailto:qball@blame.services\[ra]
.RE .RE

View file

@ -1,7 +1,8 @@
.TH ROFI\-DMENU 5 rofi\-dmenu .nh
.TH ROFI-DMENU 5 rofi-dmenu
.SH NAME .SH NAME
.PP .PP
\fBrofi dmenu mode\fP \- Rofi dmenu emulation \fBrofi dmenu mode\fP - Rofi dmenu emulation
.SH DESCRIPTION .SH DESCRIPTION
.PP .PP
@ -14,8 +15,8 @@ The website for \fB\fCdmenu\fR can be found here
.PP .PP
\fBrofi\fP does not aim to be 100% compatible with \fB\fCdmenu\fR\&. There are simply too many flavors of \fB\fCdmenu\fR\&. \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. 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). Besides, \fBrofi\fP offers some extended features (like multi-select, highlighting, message bar, extra key bindings).
.SH BASIC CONCEPT .SH BASIC CONCEPT
.PP .PP
@ -28,27 +29,27 @@ By default separation of rows is done on new lines, making it easy to pipe the o
.SH USAGE .SH USAGE
.PP .PP
By launching \fBrofi\fP with the \fB\fC\-dmenu\fR flag it will go into dmenu emulation mode. By launching \fBrofi\fP with the \fB\fC-dmenu\fR flag it will go into dmenu emulation mode.
.PP .PP
.RS .RS
.nf .nf
ls | rofi \-dmenu ls | rofi -dmenu
.fi .fi
.RE .RE
.SS DMENU DROP\-IN REPLACEMENT .SS DMENU DROP-IN REPLACEMENT
.PP .PP
If \fB\fCargv[0]\fR (calling command) is dmenu, \fBrofi\fP will start in dmenu mode. 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\&. 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 .PP
.RS .RS
.nf .nf
ln \-s /usr/bin/rofi /usr/bin/dmenu ln -s /usr/bin/rofi /usr/bin/dmenu
.fi .fi
.RE .RE
@ -56,15 +57,15 @@ ln \-s /usr/bin/rofi /usr/bin/dmenu
.SS DMENU VS SCRIPT MODE .SS DMENU VS SCRIPT MODE
.PP .PP
Script mode is used to extend \fBrofi\fP, dmenu mode is used to extend a script. 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. 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 .SS DMENU SPECIFIC COMMANDLINE FLAGS
.PP .PP
A lot of these options can also be modified by the script using special input. See the \fBrofi\-script(5)\fP manpage 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. for more information about this syntax.
.PP .PP
\fB\fC\-sep\fR \fIseparator\fP \fB\fC-sep\fR \fIseparator\fP
.PP .PP
Separator for \fB\fCdmenu\fR\&. Example: To show a list of 'a' to 'e' with '|' as a separator: Separator for \fB\fCdmenu\fR\&. Example: To show a list of 'a' to 'e' with '|' as a separator:
@ -73,13 +74,13 @@ Separator for \fB\fCdmenu\fR\&. Example: To show a list of 'a' to 'e' with '|' a
.RS .RS
.nf .nf
echo "a|b|c|d|e" | rofi \-sep '|' \-dmenu echo "a|b|c|d|e" | rofi -sep '|' -dmenu
.fi .fi
.RE .RE
.PP .PP
\fB\fC\-p\fR \fIprompt\fP \fB\fC-p\fR \fIprompt\fP
.PP .PP
Specify the prompt to show in \fB\fCdmenu\fR mode. For example, select 'monkey', a,b,c,d, or e. Specify the prompt to show in \fB\fCdmenu\fR mode. For example, select 'monkey', a,b,c,d, or e.
@ -88,7 +89,7 @@ Specify the prompt to show in \fB\fCdmenu\fR mode. For example, select 'monkey',
.RS .RS
.nf .nf
echo "a|b|c|d|e" | rofi \-sep '|' \-dmenu \-p "monkey" echo "a|b|c|d|e" | rofi -sep '|' -dmenu -p "monkey"
.fi .fi
.RE .RE
@ -97,7 +98,7 @@ echo "a|b|c|d|e" | rofi \-sep '|' \-dmenu \-p "monkey"
Default: \fIdmenu\fP Default: \fIdmenu\fP
.PP .PP
\fB\fC\-l\fR \fInumber of lines to show\fP \fB\fC-l\fR \fInumber of lines to show\fP
.PP .PP
Maximum number of lines the menu may show before scrolling. Maximum number of lines the menu may show before scrolling.
@ -106,7 +107,7 @@ Maximum number of lines the menu may show before scrolling.
.RS .RS
.nf .nf
rofi \-dmenu \-l 25 rofi -dmenu -l 25
.fi .fi
.RE .RE
@ -115,39 +116,39 @@ rofi \-dmenu \-l 25
Default: \fI15\fP Default: \fI15\fP
.PP .PP
\fB\fC\-i\fR \fB\fC-i\fR
.PP .PP
Makes \fB\fCdmenu\fR searches case\-insensitive Makes \fB\fCdmenu\fR searches case-insensitive
.PP .PP
\fB\fC\-a\fR \fIX\fP \fB\fC-a\fR \fIX\fP
.PP .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: 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 .RS
.IP \(bu 2 .IP \(bu 2
A single row: '5' A single row: '5'
.IP \(bu 2 .IP \(bu 2
A range of (last 3) rows: '\-3:' A range of (last 3) rows: '-3:'
.IP \(bu 2 .IP \(bu 2
4 rows starting from row 7: '7:11' (or in legacy notation: '7\-10') 4 rows starting from row 7: '7:11' (or in legacy notation: '7-10')
.IP \(bu 2 .IP \(bu 2
A set of rows: '2,0,\-9' A set of rows: '2,0,-9'
.IP \(bu 2 .IP \(bu 2
Or any combination: '5,\-3:,7:11,2,0,\-9' Or any combination: '5,-3:,7:11,2,0,-9'
.RE .RE
.PP .PP
\fB\fC\-u\fR \fIX\fP \fB\fC-u\fR \fIX\fP
.PP .PP
Urgent row, mark \fIX\fP as urgent. See \fB\fC\-a\fR option for details. Urgent row, mark \fIX\fP as urgent. See \fB\fC-a\fR option for details.
.PP .PP
\fB\fC\-only\-match\fR \fB\fC-only-match\fR
.PP .PP
Only return a selected item, do not allow custom entry. Only return a selected item, do not allow custom entry.
@ -155,14 +156,14 @@ This mode always returns an entry. It will not return if no matching entry is
selected. selected.
.PP .PP
\fB\fC\-no\-custom\fR \fB\fC-no-custom\fR
.PP .PP
Only return a selected item, do not allow custom entry. Only return a selected item, do not allow custom entry.
This mode returns directly when no entries given. This mode returns directly when no entries given.
.PP .PP
\fB\fC\-format\fR \fIformat\fP \fB\fC-format\fR \fIformat\fP
.PP .PP
Allows the output of dmenu to be customized (N is the total number of input entries): Allows the output of dmenu to be customized (N is the total number of input entries):
@ -171,9 +172,9 @@ Allows the output of dmenu to be customized (N is the total number of input entr
.IP \(bu 2 .IP \(bu 2
\&'s' selected string \&'s' selected string
.IP \(bu 2 .IP \(bu 2
\&'i' index (0 \-\& (N\-\&1)) \&'i' index (0 - (N-1))
.IP \(bu 2 .IP \(bu 2
\&'d' index (1 \-\& N) \&'d' index (1 - N)
.IP \(bu 2 .IP \(bu 2
\&'q' quote string \&'q' quote string
.IP \(bu 2 .IP \(bu 2
@ -189,13 +190,13 @@ Allows the output of dmenu to be customized (N is the total number of input entr
Default: 's' Default: 's'
.PP .PP
\fB\fC\-select\fR \fIstring\fP \fB\fC-select\fR \fIstring\fP
.PP .PP
Select first line that matches the given string Select first line that matches the given string
.PP .PP
\fB\fC\-mesg\fR \fIstring\fP \fB\fC-mesg\fR \fIstring\fP
.PP .PP
Add a message line below the filter entry box. Supports Pango markup. Add a message line below the filter entry box. Supports Pango markup.
@ -203,27 +204,27 @@ For more information on supported markup, see here
\[la]https://docs.gtk.org/Pango/pango_markup.html\[ra] \[la]https://docs.gtk.org/Pango/pango_markup.html\[ra]
.PP .PP
\fB\fC\-dump\fR \fB\fC-dump\fR
.PP .PP
Dump the filtered list to stdout and quit. Dump the filtered list to stdout and quit.
This can be used to get the list as \fBrofi\fP would filter it. This can be used to get the list as \fBrofi\fP would filter it.
Use together with \fB\fC\-filter\fR command. Use together with \fB\fC-filter\fR command.
.PP .PP
\fB\fC\-input\fR \fIfile\fP \fB\fC-input\fR \fIfile\fP
.PP .PP
Reads from \fIfile\fP instead of stdin. Reads from \fIfile\fP instead of stdin.
.PP .PP
\fB\fC\-password\fR \fB\fC-password\fR
.PP .PP
Hide the input text. This should not be considered secure! Hide the input text. This should not be considered secure!
.PP .PP
\fB\fC\-markup\-rows\fR \fB\fC-markup-rows\fR
.PP .PP
Tell \fBrofi\fP that DMenu input is Pango markup encoded, and should be rendered. Tell \fBrofi\fP that DMenu input is Pango markup encoded, and should be rendered.
@ -231,47 +232,47 @@ See here
\[la]https://developer.gnome.org/pygtk/stable/pango-markup-language.html\[ra] for details about Pango markup. \[la]https://developer.gnome.org/pygtk/stable/pango-markup-language.html\[ra] for details about Pango markup.
.PP .PP
\fB\fC\-multi\-select\fR \fB\fC-multi-select\fR
.PP .PP
Allow multiple lines to be selected. Adds a small selection indicator to the left of each entry. Allow multiple lines to be selected. Adds a small selection indicator to the left of each entry.
.PP .PP
\fB\fC\-sync\fR \fB\fC-sync\fR
.PP .PP
Force \fBrofi\fP mode to first read all data from stdin before showing the selection window. This is original dmenu behavior. Force \fBrofi\fP mode to first read all data from stdin before showing the selection window. This is original dmenu behavior.
.PP .PP
Note: the default asynchronous mode will also be automatically disabled if used with conflicting options, 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\&. such as \fB\fC-dump\fR, \fB\fC-only-match\fR or \fB\fC-auto-select\fR\&.
.PP .PP
\fB\fC\-window\-title\fR \fItitle\fP \fB\fC-window-title\fR \fItitle\fP
.PP .PP
Set name used for the window title. Will be shown as Rofi \- \fItitle\fP Set name used for the window title. Will be shown as Rofi - \fItitle\fP
.PP .PP
\fB\fC\-w\fR \fIwindowid\fP \fB\fC-w\fR \fIwindowid\fP
.PP .PP
Position \fBrofi\fP over the window with the given X11 window ID. Position \fBrofi\fP over the window with the given X11 window ID.
.PP .PP
\fB\fC\-keep\-right\fR \fB\fC-keep-right\fR
.PP .PP
Set ellipsize mode to start. So, the end of the string is visible. Set ellipsize mode to start. So, the end of the string is visible.
.PP .PP
\fB\fC\-display\-columns\fR \fB\fC-display-columns\fR
.PP .PP
A comma seperated list of columns to show. A comma seperated list of columns to show.
.PP .PP
\fB\fC\-display\-column\-separator\fR \fB\fC-display-column-separator\fR
.PP .PP
The column separator. This is a regex. The column separator. This is a regex.
@ -280,19 +281,19 @@ The column separator. This is a regex.
\fIdefault\fP: '\\t' \fIdefault\fP: '\\t'
.PP .PP
\fB\fC\-ballot\-selected\-str\fR \fIstring\fP \fB\fC-ballot-selected-str\fR \fIstring\fP
.PP .PP
When multi\-select is enabled, prefix this string when element is selected. When multi-select is enabled, prefix this string when element is selected.
.PP .PP
\fIdefault\fP: "☑ " \fIdefault\fP: "☑ "
.PP .PP
\fB\fC\-ballot\-unselected\-str\fR \fIstring\fP \fB\fC-ballot-unselected-str\fR \fIstring\fP
.PP .PP
When multi\-select is enabled, prefix this string when element is not selected. When multi-select is enabled, prefix this string when element is not selected.
.PP .PP
\fIdefault\fP: "☐ " \fIdefault\fP: "☐ "
@ -304,30 +305,30 @@ When multi\-select is enabled, prefix this string when element is not selected.
.IP \(bu 2 .IP \(bu 2
\fB1\fP: User cancelled the selection. \fB1\fP: User cancelled the selection.
.IP \(bu 2 .IP \(bu 2
\fB10\-28\fP: Row accepted by custom keybinding. \fB10-28\fP: Row accepted by custom keybinding.
.RE .RE
.SH SEE ALSO .SH SEE ALSO
.PP .PP
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), ascii(7)
.SH AUTHOR .SH AUTHOR
.PP .PP
Qball Cow Qball Cow qball@gmpclient.org
\[la]qball@gmpclient.org\[ra] \[la]mailto:qball@gmpclient.org\[ra]
.PP .PP
Rasmus Steinke Rasmus Steinke rasi@xssn.at
\[la]rasi@xssn.at\[ra] \[la]mailto:rasi@xssn.at\[ra]
.PP .PP
Morgane Glidic Morgane Glidic sardemff7+rofi@sardemff7.net
\[la]sardemff7+rofi@sardemff7.net\[ra] \[la]mailto:sardemff7+rofi@sardemff7.net\[ra]
.PP .PP
Original code based on work by: Sean Pringle Original code based on work by: Sean Pringle sean.pringle@gmail.com
\[la]sean.pringle@gmail.com\[ra] \[la]mailto:sean.pringle@gmail.com\[ra]
.PP .PP
For a full list of authors, check the AUTHORS file. For a full list of authors, check the AUTHORS file.

View file

@ -1,7 +1,8 @@
.TH ROFI\-KEYS 5 rofi\-keys .nh
.TH ROFI-KEYS 5 rofi-keys
.SH NAME .SH NAME
.PP .PP
\fBrofi keys\fP \- Rofi Key and Mouse bindings \fBrofi keys\fP - Rofi Key and Mouse bindings
.SH DESCRIPTION .SH DESCRIPTION
.PP .PP
@ -9,13 +10,13 @@
.SH Setting binding .SH Setting binding
.PP .PP
Bindings can be done on the commandline (\-{bindingname}): Bindings can be done on the commandline (-{bindingname}):
.PP .PP
.RS .RS
.nf .nf
rofi \-show run \-kb\-accept\-entry 'Control+Shift+space' rofi -show run -kb-accept-entry 'Control+Shift+space'
.fi .fi
.RE .RE
@ -28,7 +29,7 @@ or via the configuration file:
.nf .nf
configuration { configuration {
kb\-accept\-entry: "Control+Shift+space"; kb-accept-entry: "Control+Shift+space";
} }
.fi .fi
@ -42,7 +43,7 @@ The key can be set by its name (see above) or its keycode:
.nf .nf
configuration { configuration {
kb\-accept\-entry: "Control+Shift+[65]"; kb-accept-entry: "Control+Shift+[65]";
} }
.fi .fi
@ -59,7 +60,7 @@ Multiple keys can be specified for an action as a comma separated list:
.nf .nf
configuration { configuration {
kb\-accept\-entry: "Control+Shift+space,Return"; kb-accept-entry: "Control+Shift+space,Return";
} }
.fi .fi
@ -74,7 +75,7 @@ prepend the binding with \fB\fC!\fR:
.nf .nf
configuration { configuration {
kb\-accept\-entry: "!Control+Shift+space,Return"; kb-accept-entry: "!Control+Shift+space,Return";
} }
.fi .fi
@ -89,573 +90,573 @@ To unset a binding, pass an empty string.
.nf .nf
configuration { configuration {
kb\-clear\-line: ""; kb-clear-line: "";
} }
.fi .fi
.RE .RE
.SH Keyboard Bindings .SH Keyboard Bindings
.SS \fBkb\-primary\-paste\fP: .SS \fBkb-primary-paste\fP:
.PP .PP
Paste primary selection Paste primary selection
.PP .PP
\fBDefault\fP: Control+V,Shift+Insert \fBDefault\fP: Control+V,Shift+Insert
.SS \fBkb\-secondary\-paste\fP .SS \fBkb-secondary-paste\fP
.PP .PP
Paste clipboard Paste clipboard
.PP .PP
\fBDefault\fP: Control+v,Insert \fBDefault\fP: Control+v,Insert
.SS \fBkb\-secondary\-copy\fP .SS \fBkb-secondary-copy\fP
.PP .PP
Copy current selection to clipboard Copy current selection to clipboard
.PP .PP
\fBDefault\fP: Control+c \fBDefault\fP: Control+c
.SS \fBkb\-clear\-line\fP .SS \fBkb-clear-line\fP
.PP .PP
Clear input line Clear input line
.PP .PP
\fBDefault\fP: Control+w \fBDefault\fP: Control+w
.SS \fBkb\-move\-front\fP .SS \fBkb-move-front\fP
.PP .PP
Beginning of line Beginning of line
.PP .PP
\fBDefault\fP: Control+a \fBDefault\fP: Control+a
.SS \fBkb\-move\-end\fP .SS \fBkb-move-end\fP
.PP .PP
End of line End of line
.PP .PP
\fBDefault\fP: Control+e \fBDefault\fP: Control+e
.SS \fBkb\-move\-word\-back\fP .SS \fBkb-move-word-back\fP
.PP .PP
Move back one word Move back one word
.PP .PP
\fBDefault\fP: Alt+b,Control+Left \fBDefault\fP: Alt+b,Control+Left
.SS \fBkb\-move\-word\-forward\fP .SS \fBkb-move-word-forward\fP
.PP .PP
Move forward one word Move forward one word
.PP .PP
\fBDefault\fP: Alt+f,Control+Right \fBDefault\fP: Alt+f,Control+Right
.SS \fBkb\-move\-char\-back\fP .SS \fBkb-move-char-back\fP
.PP .PP
Move back one char Move back one char
.PP .PP
\fBDefault\fP: Left,Control+b \fBDefault\fP: Left,Control+b
.SS \fBkb\-move\-char\-forward\fP .SS \fBkb-move-char-forward\fP
.PP .PP
Move forward one char Move forward one char
.PP .PP
\fBDefault\fP: Right,Control+f \fBDefault\fP: Right,Control+f
.SS \fBkb\-remove\-word\-back\fP .SS \fBkb-remove-word-back\fP
.PP .PP
Delete previous word Delete previous word
.PP .PP
\fBDefault\fP: Control+Alt+h,Control+BackSpace \fBDefault\fP: Control+Alt+h,Control+BackSpace
.SS \fBkb\-remove\-word\-forward\fP .SS \fBkb-remove-word-forward\fP
.PP .PP
Delete next word Delete next word
.PP .PP
\fBDefault\fP: Control+Alt+d \fBDefault\fP: Control+Alt+d
.SS \fBkb\-remove\-char\-forward\fP .SS \fBkb-remove-char-forward\fP
.PP .PP
Delete next char Delete next char
.PP .PP
\fBDefault\fP: Delete,Control+d \fBDefault\fP: Delete,Control+d
.SS \fBkb\-remove\-char\-back\fP .SS \fBkb-remove-char-back\fP
.PP .PP
Delete previous char Delete previous char
.PP .PP
\fBDefault\fP: BackSpace,Shift+BackSpace,Control+h \fBDefault\fP: BackSpace,Shift+BackSpace,Control+h
.SS \fBkb\-remove\-to\-eol\fP .SS \fBkb-remove-to-eol\fP
.PP .PP
Delete till the end of line Delete till the end of line
.PP .PP
\fBDefault\fP: Control+k \fBDefault\fP: Control+k
.SS \fBkb\-remove\-to\-sol\fP .SS \fBkb-remove-to-sol\fP
.PP .PP
Delete till the start of line Delete till the start of line
.PP .PP
\fBDefault\fP: Control+u \fBDefault\fP: Control+u
.SS \fBkb\-accept\-entry\fP .SS \fBkb-accept-entry\fP
.PP .PP
Accept entry Accept entry
.PP .PP
\fBDefault\fP: Control+j,Control+m,Return,KP\_Enter \fBDefault\fP: Control+j,Control+m,Return,KP_Enter
.SS \fBkb\-accept\-custom\fP .SS \fBkb-accept-custom\fP
.PP .PP
Use entered text as command (in ssh/run modes) Use entered text as command (in ssh/run modes)
.PP .PP
\fBDefault\fP: Control+Return \fBDefault\fP: Control+Return
.SS \fBkb\-accept\-custom\-alt\fP .SS \fBkb-accept-custom-alt\fP
.PP .PP
Use entered text as command (in ssh/run modes) Use entered text as command (in ssh/run modes)
.PP .PP
\fBDefault\fP: Control+Shift+Return \fBDefault\fP: Control+Shift+Return
.SS \fBkb\-accept\-alt\fP .SS \fBkb-accept-alt\fP
.PP .PP
Use alternate accept command. Use alternate accept command.
.PP .PP
\fBDefault\fP: Shift+Return \fBDefault\fP: Shift+Return
.SS \fBkb\-delete\-entry\fP .SS \fBkb-delete-entry\fP
.PP .PP
Delete entry from history Delete entry from history
.PP .PP
\fBDefault\fP: Shift+Delete \fBDefault\fP: Shift+Delete
.SS \fBkb\-mode\-next\fP .SS \fBkb-mode-next\fP
.PP .PP
Switch to the next mode. Switch to the next mode.
.PP .PP
\fBDefault\fP: Shift+Right,Control+Tab \fBDefault\fP: Shift+Right,Control+Tab
.SS \fBkb\-mode\-previous\fP .SS \fBkb-mode-previous\fP
.PP .PP
Switch to the previous mode. Switch to the previous mode.
.PP .PP
\fBDefault\fP: Shift+Left,Control+ISO\_Left\_Tab \fBDefault\fP: Shift+Left,Control+ISO_Left_Tab
.SS \fBkb\-mode\-complete\fP .SS \fBkb-mode-complete\fP
.PP .PP
Start completion for mode. Start completion for mode.
.PP .PP
\fBDefault\fP: Control+l \fBDefault\fP: Control+l
.SS \fBkb\-row\-left\fP .SS \fBkb-row-left\fP
.PP .PP
Go to the previous column Go to the previous column
.PP .PP
\fBDefault\fP: Control+Page\_Up \fBDefault\fP: Control+Page_Up
.SS \fBkb\-row\-right\fP .SS \fBkb-row-right\fP
.PP .PP
Go to the next column Go to the next column
.PP .PP
\fBDefault\fP: Control+Page\_Down \fBDefault\fP: Control+Page_Down
.SS \fBkb\-row\-up\fP .SS \fBkb-row-up\fP
.PP .PP
Select previous entry Select previous entry
.PP .PP
\fBDefault\fP: Up,Control+p \fBDefault\fP: Up,Control+p
.SS \fBkb\-row\-down\fP .SS \fBkb-row-down\fP
.PP .PP
Select next entry Select next entry
.PP .PP
\fBDefault\fP: Down,Control+n \fBDefault\fP: Down,Control+n
.SS \fBkb\-row\-tab\fP .SS \fBkb-row-tab\fP
.PP .PP
Go to next row, if one left, accept it, if no left next mode. Go to next row, if one left, accept it, if no left next mode.
.PP .PP
\fBDefault\fP: \fBDefault\fP:
.SS \fBkb\-element\-next\fP .SS \fBkb-element-next\fP
.PP .PP
Go to next row. Go to next row.
.PP .PP
\fBDefault\fP: Tab \fBDefault\fP: Tab
.SS \fBkb\-element\-prev\fP .SS \fBkb-element-prev\fP
.PP .PP
Go to previous row. Go to previous row.
.PP .PP
\fBDefault\fP: ISO\_Left\_Tab \fBDefault\fP: ISO_Left_Tab
.SS \fBkb\-page\-prev\fP .SS \fBkb-page-prev\fP
.PP .PP
Go to the previous page Go to the previous page
.PP .PP
\fBDefault\fP: Page\_Up \fBDefault\fP: Page_Up
.SS \fBkb\-page\-next\fP .SS \fBkb-page-next\fP
.PP .PP
Go to the next page Go to the next page
.PP .PP
\fBDefault\fP: Page\_Down \fBDefault\fP: Page_Down
.SS \fBkb\-row\-first\fP .SS \fBkb-row-first\fP
.PP .PP
Go to the first entry Go to the first entry
.PP .PP
\fBDefault\fP: Home,KP\_Home \fBDefault\fP: Home,KP_Home
.SS \fBkb\-row\-last\fP .SS \fBkb-row-last\fP
.PP .PP
Go to the last entry Go to the last entry
.PP .PP
\fBDefault\fP: End,KP\_End \fBDefault\fP: End,KP_End
.SS \fBkb\-row\-select\fP .SS \fBkb-row-select\fP
.PP .PP
Set selected item as input text Set selected item as input text
.PP .PP
\fBDefault\fP: Control+space \fBDefault\fP: Control+space
.SS \fBkb\-screenshot\fP .SS \fBkb-screenshot\fP
.PP .PP
Take a screenshot of the rofi window Take a screenshot of the rofi window
.PP .PP
\fBDefault\fP: Alt+S \fBDefault\fP: Alt+S
.SS \fBkb\-ellipsize\fP .SS \fBkb-ellipsize\fP
.PP .PP
Toggle between ellipsize modes for displayed data Toggle between ellipsize modes for displayed data
.PP .PP
\fBDefault\fP: Alt+period \fBDefault\fP: Alt+period
.SS \fBkb\-toggle\-case\-sensitivity\fP .SS \fBkb-toggle-case-sensitivity\fP
.PP .PP
Toggle case sensitivity Toggle case sensitivity
.PP .PP
\fBDefault\fP: grave,dead\_grave \fBDefault\fP: grave,dead_grave
.SS \fBkb\-toggle\-sort\fP .SS \fBkb-toggle-sort\fP
.PP .PP
Toggle sort Toggle sort
.PP .PP
\fBDefault\fP: Alt+grave \fBDefault\fP: Alt+grave
.SS \fBkb\-cancel\fP .SS \fBkb-cancel\fP
.PP .PP
Quit rofi Quit rofi
.PP .PP
\fBDefault\fP: Escape,Control+g,Control+bracketleft \fBDefault\fP: Escape,Control+g,Control+bracketleft
.SS \fBkb\-custom\-1\fP .SS \fBkb-custom-1\fP
.PP .PP
Custom keybinding 1 Custom keybinding 1
.PP .PP
\fBDefault\fP: Alt+1 \fBDefault\fP: Alt+1
.SS \fBkb\-custom\-2\fP .SS \fBkb-custom-2\fP
.PP .PP
Custom keybinding 2 Custom keybinding 2
.PP .PP
\fBDefault\fP: Alt+2 \fBDefault\fP: Alt+2
.SS \fBkb\-custom\-3\fP .SS \fBkb-custom-3\fP
.PP .PP
Custom keybinding 3 Custom keybinding 3
.PP .PP
\fBDefault\fP: Alt+3 \fBDefault\fP: Alt+3
.SS \fBkb\-custom\-4\fP .SS \fBkb-custom-4\fP
.PP .PP
Custom keybinding 4 Custom keybinding 4
.PP .PP
\fBDefault\fP: Alt+4 \fBDefault\fP: Alt+4
.SS \fBkb\-custom\-5\fP .SS \fBkb-custom-5\fP
.PP .PP
Custom Keybinding 5 Custom Keybinding 5
.PP .PP
\fBDefault\fP: Alt+5 \fBDefault\fP: Alt+5
.SS \fBkb\-custom\-6\fP .SS \fBkb-custom-6\fP
.PP .PP
Custom keybinding 6 Custom keybinding 6
.PP .PP
\fBDefault\fP: Alt+6 \fBDefault\fP: Alt+6
.SS \fBkb\-custom\-7\fP .SS \fBkb-custom-7\fP
.PP .PP
Custom Keybinding 7 Custom Keybinding 7
.PP .PP
\fBDefault\fP: Alt+7 \fBDefault\fP: Alt+7
.SS \fBkb\-custom\-8\fP .SS \fBkb-custom-8\fP
.PP .PP
Custom keybinding 8 Custom keybinding 8
.PP .PP
\fBDefault\fP: Alt+8 \fBDefault\fP: Alt+8
.SS \fBkb\-custom\-9\fP .SS \fBkb-custom-9\fP
.PP .PP
Custom keybinding 9 Custom keybinding 9
.PP .PP
\fBDefault\fP: Alt+9 \fBDefault\fP: Alt+9
.SS \fBkb\-custom\-10\fP .SS \fBkb-custom-10\fP
.PP .PP
Custom keybinding 10 Custom keybinding 10
.PP .PP
\fBDefault\fP: Alt+0 \fBDefault\fP: Alt+0
.SS \fBkb\-custom\-11\fP .SS \fBkb-custom-11\fP
.PP .PP
Custom keybinding 11 Custom keybinding 11
.PP .PP
\fBDefault\fP: Alt+exclam \fBDefault\fP: Alt+exclam
.SS \fBkb\-custom\-12\fP .SS \fBkb-custom-12\fP
.PP .PP
Custom keybinding 12 Custom keybinding 12
.PP .PP
\fBDefault\fP: Alt+at \fBDefault\fP: Alt+at
.SS \fBkb\-custom\-13\fP .SS \fBkb-custom-13\fP
.PP .PP
Custom keybinding 13 Custom keybinding 13
.PP .PP
\fBDefault\fP: Alt+numbersign \fBDefault\fP: Alt+numbersign
.SS \fBkb\-custom\-14\fP .SS \fBkb-custom-14\fP
.PP .PP
Custom keybinding 14 Custom keybinding 14
.PP .PP
\fBDefault\fP: Alt+dollar \fBDefault\fP: Alt+dollar
.SS \fBkb\-custom\-15\fP .SS \fBkb-custom-15\fP
.PP .PP
Custom keybinding 15 Custom keybinding 15
.PP .PP
\fBDefault\fP: Alt+percent \fBDefault\fP: Alt+percent
.SS \fBkb\-custom\-16\fP .SS \fBkb-custom-16\fP
.PP .PP
Custom keybinding 16 Custom keybinding 16
.PP .PP
\fBDefault\fP: Alt+dead\_circumflex \fBDefault\fP: Alt+dead_circumflex
.SS \fBkb\-custom\-17\fP .SS \fBkb-custom-17\fP
.PP .PP
Custom keybinding 17 Custom keybinding 17
.PP .PP
\fBDefault\fP: Alt+ampersand \fBDefault\fP: Alt+ampersand
.SS \fBkb\-custom\-18\fP .SS \fBkb-custom-18\fP
.PP .PP
Custom keybinding 18 Custom keybinding 18
.PP .PP
\fBDefault\fP: Alt+asterisk \fBDefault\fP: Alt+asterisk
.SS \fBkb\-custom\-19\fP .SS \fBkb-custom-19\fP
.PP .PP
Custom Keybinding 19 Custom Keybinding 19
.PP .PP
\fBDefault\fP: Alt+parenleft \fBDefault\fP: Alt+parenleft
.SS \fBkb\-select\-1\fP .SS \fBkb-select-1\fP
.PP .PP
Select row 1 Select row 1
.PP .PP
\fBDefault\fP: Super+1 \fBDefault\fP: Super+1
.SS \fBkb\-select\-2\fP .SS \fBkb-select-2\fP
.PP .PP
Select row 2 Select row 2
.PP .PP
\fBDefault\fP: Super+2 \fBDefault\fP: Super+2
.SS \fBkb\-select\-3\fP .SS \fBkb-select-3\fP
.PP .PP
Select row 3 Select row 3
.PP .PP
\fBDefault\fP: Super+3 \fBDefault\fP: Super+3
.SS \fBkb\-select\-4\fP .SS \fBkb-select-4\fP
.PP .PP
Select row 4 Select row 4
.PP .PP
\fBDefault\fP: Super+4 \fBDefault\fP: Super+4
.SS \fBkb\-select\-5\fP .SS \fBkb-select-5\fP
.PP .PP
Select row 5 Select row 5
.PP .PP
\fBDefault\fP: Super+5 \fBDefault\fP: Super+5
.SS \fBkb\-select\-6\fP .SS \fBkb-select-6\fP
.PP .PP
Select row 6 Select row 6
.PP .PP
\fBDefault\fP: Super+6 \fBDefault\fP: Super+6
.SS \fBkb\-select\-7\fP .SS \fBkb-select-7\fP
.PP .PP
Select row 7 Select row 7
.PP .PP
\fBDefault\fP: Super+7 \fBDefault\fP: Super+7
.SS \fBkb\-select\-8\fP .SS \fBkb-select-8\fP
.PP .PP
Select row 8 Select row 8
.PP .PP
\fBDefault\fP: Super+8 \fBDefault\fP: Super+8
.SS \fBkb\-select\-9\fP .SS \fBkb-select-9\fP
.PP .PP
Select row 9 Select row 9
.PP .PP
\fBDefault\fP: Super+9 \fBDefault\fP: Super+9
.SS \fBkb\-select\-10\fP .SS \fBkb-select-10\fP
.PP .PP
Select row 10 Select row 10
.PP .PP
\fBDefault\fP: Super+0 \fBDefault\fP: Super+0
.SH Mouse Bindings .SH Mouse Bindings
.SS \fBml\-row\-left\fP .SS \fBml-row-left\fP
.PP .PP
Go to the previous column Go to the previous column
.PP .PP
\fBDefault\fP: ScrollLeft \fBDefault\fP: ScrollLeft
.SS \fBml\-row\-right\fP .SS \fBml-row-right\fP
.PP .PP
Go to the next column Go to the next column
.PP .PP
\fBDefault\fP: ScrollRight \fBDefault\fP: ScrollRight
.SS \fBml\-row\-up\fP .SS \fBml-row-up\fP
.PP .PP
Select previous entry Select previous entry
.PP .PP
\fBDefault\fP: ScrollUp \fBDefault\fP: ScrollUp
.SS \fBml\-row\-down\fP .SS \fBml-row-down\fP
.PP .PP
Select next entry Select next entry
.PP .PP
\fBDefault\fP: ScrollDown \fBDefault\fP: ScrollDown
.SS \fBme\-select\-entry\fP .SS \fBme-select-entry\fP
.PP .PP
Select hovered row Select hovered row
.PP .PP
\fBDefault\fP: MousePrimary \fBDefault\fP: MousePrimary
.SS \fBme\-accept\-entry\fP .SS \fBme-accept-entry\fP
.PP .PP
Accept hovered row Accept hovered row
.PP .PP
\fBDefault\fP: MouseDPrimary \fBDefault\fP: MouseDPrimary
.SS \fBme\-accept\-custom\fP .SS \fBme-accept-custom\fP
.PP .PP
Accept hovered row with custom action Accept hovered row with custom action
.PP .PP
\fBDefault\fP: Control+MouseDPrimary \fBDefault\fP: Control+MouseDPrimary
.SH SEE ALSO .SH SEE ALSO
.PP .PP
rofi(1), rofi\-sensible\-terminal(1), rofi\-theme(5), rofi\-script(5) rofi(1), rofi-sensible-terminal(1), rofi-theme(5), rofi-script(5)
.SH AUTHOR .SH AUTHOR
.PP .PP
Qball Cow Qball Cow qball@gmpclient.org
\[la]qball@gmpclient.org\[ra] \[la]mailto:qball@gmpclient.org\[ra]
.PP .PP
Rasmus Steinke Rasmus Steinke rasi@xssn.at
\[la]rasi@xssn.at\[ra] \[la]mailto:rasi@xssn.at\[ra]
.PP .PP
Morgane Glidic Morgane Glidic sardemff7+rofi@sardemff7.net
\[la]sardemff7+rofi@sardemff7.net\[ra] \[la]mailto:sardemff7+rofi@sardemff7.net\[ra]
.PP .PP
Original code based on work by: Sean Pringle Original code based on work by: Sean Pringle sean.pringle@gmail.com
\[la]sean.pringle@gmail.com\[ra] \[la]mailto:sean.pringle@gmail.com\[ra]
.PP .PP
For a full list of authors, check the AUTHORS file. For a full list of authors, check the AUTHORS file.

View file

@ -1,7 +1,8 @@
.TH ROFI\-SCRIPT 5 rofi\-script .nh
.TH ROFI-SCRIPT 5 rofi-script
.SH NAME .SH NAME
.PP .PP
\fBrofi script mode\fP \- Rofi format for scriptable mode. \fBrofi script mode\fP - Rofi format for scriptable mode.
.SH DESCRIPTION .SH DESCRIPTION
.PP .PP
@ -20,7 +21,7 @@ For example:
.RS .RS
.nf .nf
rofi \-show fb \-modes "fb:file\_browser.sh" rofi -show fb -modes "fb:file_browser.sh"
.fi .fi
.RE .RE
@ -63,7 +64,7 @@ This shows two entries, reload and quit. When the quit entry is selected, rofi c
.PP .PP
Rofi sets the following environment variable when executing the script: Rofi sets the following environment variable when executing the script:
.SS \fB\fCROFI\_RETV\fR .SS \fB\fCROFI_RETV\fR
.PP .PP
An integer number with the current state: An integer number with the current state:
@ -75,15 +76,15 @@ An integer number with the current state:
.IP \(bu 2 .IP \(bu 2
\fB2\fP: Selected a custom entry. \fB2\fP: Selected a custom entry.
.IP \(bu 2 .IP \(bu 2
\fB10\-28\fP: Custom keybinding 1\-19 ( need to be explicitly enabled by script ). \fB10-28\fP: Custom keybinding 1-19 ( need to be explicitly enabled by script ).
.RE .RE
.SS \fB\fCROFI\_INFO\fR .SS \fB\fCROFI_INFO\fR
.PP .PP
Environment get set when selected entry get set with the property value of the 'info' row option, if set. Environment get set when selected entry get set with the property value of the 'info' row option, if set.
.SS \fB\fCROFI\_DATA\fR .SS \fB\fCROFI_DATA\fR
.PP .PP
Environment get set when script sets \fB\fCdata\fR option in header. Environment get set when script sets \fB\fCdata\fR option in header.
@ -99,7 +100,7 @@ For example to set the prompt:
.RS .RS
.nf .nf
echo \-en "\\0prompt\\x1fChange prompt\\n" echo -en "\\0prompt\\x1fChange prompt\\n"
.fi .fi
.RE .RE
@ -113,7 +114,7 @@ The following extra options exists:
.IP \(bu 2 .IP \(bu 2
\fBmessage\fP: Update the message text. \fBmessage\fP: Update the message text.
.IP \(bu 2 .IP \(bu 2
\fBmarkup\-rows\fP: If 'true' renders markup in the row. \fBmarkup-rows\fP: If 'true' renders markup in the row.
.IP \(bu 2 .IP \(bu 2
\fBurgent\fP: Mark rows as urgent. (for syntax see the urgent option in dmenu mode) \fBurgent\fP: Mark rows as urgent. (for syntax see the urgent option in dmenu mode)
.IP \(bu 2 .IP \(bu 2
@ -121,15 +122,15 @@ The following extra options exists:
.IP \(bu 2 .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. \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 .IP \(bu 2
\fBno\-custom\fP: If set to 'true'; only accept listed entries, ignore custom input. \fBno-custom\fP: If set to 'true'; only accept listed entries, ignore custom input.
.IP \(bu 2 .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. \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 .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. \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 .IP \(bu 2
\fBnew\-selection\fP: If \fB\fCkeep\-selection\fR is set, this allows you to override the selected entry (absolute position). \fBnew-selection\fP: If \fB\fCkeep-selection\fR is set, this allows you to override the selected entry (absolute position).
.IP \(bu 2 .IP \(bu 2
\fBdata\fP: Passed data to the next execution of the script via \fBROFI\_DATA\fP\&. \fBdata\fP: Passed data to the next execution of the script via \fBROFI_DATA\fP\&.
.IP \(bu 2 .IP \(bu 2
\fBtheme\fP: Small theme snippet to f.e. change the background color of a widget. \fBtheme\fP: Small theme snippet to f.e. change the background color of a widget.
@ -147,7 +148,7 @@ For example:
.RS .RS
.nf .nf
echo \-en "aap\\0icon\\x1ffolder\\n" echo -en "aap\\0icon\\x1ffolder\\n"
.fi .fi
.RE .RE
@ -163,7 +164,7 @@ The following options are supported:
.IP \(bu 2 .IP \(bu 2
\fBnonselectable\fP: If true the row cannot activated. \fBnonselectable\fP: If true the row cannot activated.
.IP \(bu 2 .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. \fBinfo\fP: Info that, on selection, gets placed in the \fB\fCROFI_INFO\fR environment variable. This entry does not get searched.
.RE .RE
@ -174,7 +175,7 @@ multiple entries can be passed using the \fB\fC\\x1f\fR separator.
.RS .RS
.nf .nf
echo \-en "aap\\0icon\\x1ffolder\\x1finfo\\x1ftest\\n" echo -en "aap\\0icon\\x1ffolder\\x1finfo\\x1ftest\\n"
.fi .fi
.RE .RE
@ -191,7 +192,7 @@ In bash the best way to do this is using \fB\fCcoproc\fR\&.
.RS .RS
.nf .nf
coproc ( myApp > /dev/null 2>\&1 ) coproc ( myApp > /dev/null 2>&1 )
.fi .fi
.RE .RE
@ -203,24 +204,24 @@ See issue #1201 on github.
.SH SEE ALSO .SH SEE ALSO
.PP .PP
rofi(1), rofi\-sensible\-terminal(1), dmenu(1), rofi\-theme(5), rofi\-theme\-selector(1) rofi(1), rofi-sensible-terminal(1), dmenu(1), rofi-theme(5), rofi-theme-selector(1)
.SH AUTHOR .SH AUTHOR
.PP .PP
Qball Cow Qball Cow qball@gmpclient.org
\[la]qball@gmpclient.org\[ra] \[la]mailto:qball@gmpclient.org\[ra]
.PP .PP
Rasmus Steinke Rasmus Steinke rasi@xssn.at
\[la]rasi@xssn.at\[ra] \[la]mailto:rasi@xssn.at\[ra]
.PP .PP
Morgane Glidic Morgane Glidic sardemff7+rofi@sardemff7.net
\[la]sardemff7+rofi@sardemff7.net\[ra] \[la]mailto:sardemff7+rofi@sardemff7.net\[ra]
.PP .PP
Original code based on work by: Sean Pringle Original code based on work by: Sean Pringle sean.pringle@gmail.com
\[la]sean.pringle@gmail.com\[ra] \[la]mailto:sean.pringle@gmail.com\[ra]
.PP .PP
For a full list of authors, check the AUTHORS file. For a full list of authors, check the AUTHORS file.

View file

@ -1,17 +1,18 @@
.TH rofi\-sensible\-terminal 1 rofi\-sensible\-terminal .nh
.TH rofi-sensible-terminal 1 rofi-sensible-terminal
.SH NAME .SH NAME
.PP .PP
\fBrofi\-sensible\-terminal\fP \- launches $TERMINAL with fallbacks \fBrofi-sensible-terminal\fP - launches $TERMINAL with fallbacks
.SH SYNOPSIS .SH SYNOPSIS
.PP .PP
rofi\-sensible\-terminal [arguments] rofi-sensible-terminal [arguments]
.SH DESCRIPTION .SH DESCRIPTION
.PP .PP
rofi\-sensible\-terminal is invoked in the rofi default config to start a terminal. This 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 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 (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. shipping this script in a way which is appropriate for the distribution.
.PP .PP
@ -19,9 +20,9 @@ It tries to start one of the following (in that order):
.RS .RS
.IP \(bu 2 .IP \(bu 2
\fB\fC$TERMINAL\fR (this is a non\-standard variable) \fB\fC$TERMINAL\fR (this is a non-standard variable)
.IP \(bu 2 .IP \(bu 2
x\-terminal\-emulator x-terminal-emulator
.IP \(bu 2 .IP \(bu 2
urxvt urxvt
.IP \(bu 2 .IP \(bu 2
@ -43,9 +44,9 @@ xterm
.IP \(bu 2 .IP \(bu 2
roxterm roxterm
.IP \(bu 2 .IP \(bu 2
xfce4\-terminal.wrapper xfce4-terminal.wrapper
.IP \(bu 2 .IP \(bu 2
mate\-terminal mate-terminal
.IP \(bu 2 .IP \(bu 2
lxterminal lxterminal
.IP \(bu 2 .IP \(bu 2

View file

@ -1,38 +1,39 @@
.TH rofi\-theme\-selector 1 rofi\-theme\-selector .nh
.TH rofi-theme-selector 1 rofi-theme-selector
.SH NAME .SH NAME
.PP .PP
\fBrofi\-theme\-selector\fP \- Preview and apply themes for \fBrofi\fP \fBrofi-theme-selector\fP - Preview and apply themes for \fBrofi\fP
.SH DESCRIPTION .SH DESCRIPTION
.PP .PP
\fBrofi\-theme\-selector\fP is a bash/rofi script to preview and apply themes for \fBrofi\fP\&. \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\&. It's part of any installation of \fBrofi\fP\&.
.SH USAGE .SH USAGE
.SS Running rofi\-theme\-selector .SS Running rofi-theme-selector
.PP .PP
\fBrofi\-theme\-selector\fP shows a list of all available themes in a \fBrofi\fP window. \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 It lets you preview each theme with the Enter key and apply the theme to your
\fBrofi\fP configuration file with Alt+a. \fBrofi\fP configuration file with Alt+a.
.SH Theme directories .SH Theme directories
.PP .PP
\fBrofi\-theme\-selector\fP searches the following directories for themes: \fBrofi-theme-selector\fP searches the following directories for themes:
.RS .RS
.IP \(bu 2 .IP \(bu 2
${PREFIX}/share/rofi/themes ${PREFIX}/share/rofi/themes
.IP \(bu 2 .IP \(bu 2
$XDG\_CONFIG\_HOME/rofi/themes $XDG_CONFIG_HOME/rofi/themes
.IP \(bu 2 .IP \(bu 2
$XDG\_DATA\_HOME/share/rofi/themes $XDG_DATA_HOME/share/rofi/themes
.RE .RE
.PP .PP
${PREFIX} reflects the install location of rofi. In most cases this will be "/usr".<br> ${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".<br> $XDG_CONFIG_HOME is normally unset. Default path is "$HOME/.config".
$XDG\_DATA\_HOME is normally unset. Default path is "$HOME/.local/share". $XDG_DATA_HOME is normally unset. Default path is "$HOME/.local/share".
.SH SEE ALSO .SH SEE ALSO
.PP .PP
@ -40,5 +41,5 @@ rofi(1)
.SH AUTHORS .SH AUTHORS
.PP .PP
Qball Cow qball@gmpclient.org<br> Qball Cow qball@gmpclient.org
Rasmus Steinke rasi@xssn.at Rasmus Steinke rasi@xssn.at

View file

@ -1,7 +1,8 @@
.TH ROFI\-THEME 5 rofi\-theme .nh
.TH ROFI-THEME 5 rofi-theme
.SH NAME .SH NAME
.PP .PP
\fBrofi\-theme\fP \- Rofi theme format files \fBrofi-theme\fP - Rofi theme format files
.SH GETTING STARTED WITH THEMING .SH GETTING STARTED WITH THEMING
.PP .PP
@ -10,7 +11,7 @@ The easiest way to get started theming rofi is by modifying your existing theme.
.PP .PP
Themes can be modified/tweaked by adding theming elements to the end of the Themes can be modified/tweaked by adding theming elements to the end of the
.br .br
config file. The default location of this file is \fB\fC\~/.config/rofi/config.rasi\fR, config file. The default location of this file is \fB\fC~/.config/rofi/config.rasi\fR,
if the file does not exists, you can create it. if the file does not exists, you can create it.
.PP .PP
@ -22,10 +23,10 @@ A basic config:
.nf .nf
configuration { configuration {
modes: [ combi ]; modes: [ combi ];
combi\-modes: [ window, drun, run ]; combi-modes: [ window, drun, run ];
} }
@theme "gruvbox\-light" @theme "gruvbox-light"
/* Insert theme modifications after this */ /* Insert theme modifications after this */
@ -78,7 +79,7 @@ increase the size. First we start by modifying the \fB\fCelement\fR widget:
element { element {
orientation: horizontal; orientation: horizontal;
children: [ element\-text, element\-icon ]; children: [ element-text, element-icon ];
spacing: 5px; spacing: 5px;
} }
@ -105,19 +106,19 @@ Resulting in the following packing:
.PP .PP
The \fB\fCelement\fR (container) widget hold each entry in the \fB\fClistview\fR, we add the The \fB\fCelement\fR (container) widget hold each entry in the \fB\fClistview\fR, we add the
two pre\-defined children in the order we want to show. We also specify the two pre-defined children in the order we want to show. We also specify the
packing direction (\fB\fCorientation\fR) and the spacing between the children packing direction (\fB\fCorientation\fR) and the spacing between the children
(\fB\fCspacing\fR). We specify the space between the two children in absolute pixels (\fB\fCspacing\fR). We specify the space between the two children in absolute pixels
(\fB\fCpx\fR). (\fB\fCpx\fR).
.PP .PP
To increase the icon\-size, we need to modify the \fB\fCelement\-icon\fR widget. To increase the icon-size, we need to modify the \fB\fCelement-icon\fR widget.
.PP .PP
.RS .RS
.nf .nf
element\-icon { element-icon {
size: 2.5em; size: 2.5em;
} }
@ -145,23 +146,23 @@ In this example we specify the size in the em
\[la]https://www.w3.org/Style/LieBos3e/em\[ra] unit. \[la]https://www.w3.org/Style/LieBos3e/em\[ra] unit.
.PP .PP
Now lets change the text color of both the \fB\fCentry\fR and the \fB\fCelement\-text\fR widget to red and background to blue. Now lets change the text color of both the \fB\fCentry\fR and the \fB\fCelement-text\fR widget to red and background to blue.
.PP .PP
.RS .RS
.nf .nf
entry, element\-text { entry, element-text {
text\-color: red; text-color: red;
background\-color: rgb(0,0,255); background-color: rgb(0,0,255);
} }
.fi .fi
.RE .RE
.PP .PP
Here we use two different methods of writing down the color, for \fB\fCtext\-color\fR Here we use two different methods of writing down the color, for \fB\fCtext-color\fR
we used a named color, for \fB\fCbackground\-color\fR we specify it in \fB\fCrgb\fR\&. we used a named color, for \fB\fCbackground-color\fR we specify it in \fB\fCrgb\fR\&.
We also specify the property for multiple widgets by passing a comma separated We also specify the property for multiple widgets by passing a comma separated
list of widget names. list of widget names.
@ -172,8 +173,8 @@ If you want to center the text relative to the icon, we can set this:
.RS .RS
.nf .nf
element\-text { element-text {
vertical\-align: 0.5; vertical-align: 0.5;
} }
.fi .fi
@ -187,7 +188,7 @@ element\-text {
│ element │ │ element │
│ ┌─────────────────────────────────────────────┐ ┌─────────────────┐ │ │ ┌─────────────────────────────────────────────┐ ┌─────────────────┐ │
│ │ │ │ element │ │ │ │ │ │ element │ │
│ │element\-text │ │ ─ │ │ │ │element-text │ │ ─ │ │
│ │ │ │ icon │ │ │ │ │ │ icon │ │
│ └─────────────────────────────────────────────┘ └─────────────────┘ │ │ └─────────────────────────────────────────────┘ └─────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘ └─────────────────────────────────────────────────────────────────────┘
@ -202,7 +203,7 @@ If you want to see the complete theme, including the modification you can run:
.RS .RS
.nf .nf
rofi \-dump\-theme rofi -dump-theme
.fi .fi
.RE .RE
@ -240,7 +241,7 @@ To see the default theme, run the following command:
.RS .RS
.nf .nf
rofi \-no\-config \-dump\-theme rofi -no-config -dump-theme
.fi .fi
.RE .RE
@ -250,12 +251,12 @@ rofi \-no\-config \-dump\-theme
The need for a new theme format was motivated by the fact that the way rofi handled widgets has changed. From a very The need for a new theme format was motivated by the fact that the way rofi handled widgets has changed. From a very
static drawing of lines and text to a nice structured form of packing widgets. This change made it possible to provide a static drawing of lines and text to a nice structured form of packing widgets. This change made it possible to provide a
more flexible theme framework. The old theme format and config file are not flexible enough to expose these options in a more flexible theme framework. The old theme format and config file are not flexible enough to expose these options in a
user\-friendly way. Therefore, a new file format has been created, replacing the old one. user-friendly way. Therefore, a new file format has been created, replacing the old one.
.SH FORMAT SPECIFICATION .SH FORMAT SPECIFICATION
.SH Encoding .SH Encoding
.PP .PP
The encoding of the file is UTF\-8. Both unix (\fB\fC\\n\fR) and windows (\fB\fC\\r\\n\fR) newlines format are supported. But unix is The encoding of the file is UTF-8. Both unix (\fB\fC\\n\fR) and windows (\fB\fC\\r\\n\fR) newlines format are supported. But unix is
preferred. preferred.
.SH Comments .SH Comments
@ -337,7 +338,7 @@ abbreviation for \fBr\fPofi \fBa\fPdvanced \fBs\fPtyle \fBi\fPnformation.
.SH Basic Structure .SH Basic Structure
.PP .PP
Each element has a section with defined properties. Global properties can be defined in section \fB\fC* { }\fR\&. Each element has a section with defined properties. Global properties can be defined in section \fB\fC* { }\fR\&.
Sub\-section names begin with an optional hash symbol \fB\fC#\fR\&. Sub-section names begin with an optional hash symbol \fB\fC#\fR\&.
.PP .PP
It is advised to define the \fIglobal properties section\fP on top of the file to It is advised to define the \fIglobal properties section\fP on top of the file to
@ -386,7 +387,7 @@ A theme can have multiple element theme sections.
.PP .PP
The element path can consist of multiple names separated by whitespace or dots. The element path can consist of multiple names separated by whitespace or dots.
Each element may contain any number of letters, numbers and \fB\fC\-\fR\&'s. Each element may contain any number of letters, numbers and \fB\fC-\fR\&'s.
The first element in the element path can optionally start with a \fB\fC#\fR (for The first element in the element path can optionally start with a \fB\fC#\fR (for
historic reasons). Multiple elements can be specified by a \fB\fC,\fR\&. historic reasons). Multiple elements can be specified by a \fB\fC,\fR\&.
@ -398,10 +399,10 @@ This is a valid element name:
.nf .nf
element normal.normal { element normal.normal {
background\-color: blue; background-color: blue;
} }
button { button {
background\-color: blue; background-color: blue;
} }
.fi .fi
@ -415,7 +416,7 @@ And is identical to:
.nf .nf
element normal normal, button { element normal normal, button {
background\-color: blue; background-color: blue;
} }
.fi .fi
@ -482,7 +483,7 @@ Both fields are mandatory for a property.
.PP .PP
The \fB\fCidentifier\fR names the specified property. Identifiers can consist of any The \fB\fCidentifier\fR names the specified property. Identifiers can consist of any
combination of numbers, letters and '\-'. It must not contain any whitespace. combination of numbers, letters and '-'. It must not contain any whitespace.
The structure of the \fB\fCvalue\fR defines the type of the property. The current The structure of the \fB\fCvalue\fR defines the type of the property. The current
parser does not define or enforce a certain type of a particular \fB\fCidentifier\fR\&. parser does not define or enforce a certain type of a particular \fB\fCidentifier\fR\&.
When used, values with the wrong type that cannot be converted are ignored. When used, values with the wrong type that cannot be converted are ignored.
@ -558,7 +559,7 @@ font: "Awasome 12";
.RE .RE
.PP .PP
The string must be valid UTF\-8, special characters can be escaped: The string must be valid UTF-8, special characters can be escaped:
.PP .PP
.RS .RS
@ -577,7 +578,7 @@ The following special characters can be escaped: \fB\fC\\b\fR, \fB\fC\\f\fR, \fB
.SH Integer .SH Integer
.RS .RS
.IP \(bu 2 .IP \(bu 2
Format: \fB\fC[\-+]?[:digit:]+\fR Format: \fB\fC[-+]?[:digit:]+\fR
.RE .RE
@ -599,7 +600,7 @@ lines: 12;
.SH Real .SH Real
.RS .RS
.IP \(bu 2 .IP \(bu 2
Format: \fB\fC[\-+]?[:digit:]+(\\.[:digit:]+)?\fR Format: \fB\fC[-+]?[:digit:]+(\\.[:digit:]+)?\fR
.RE .RE
@ -619,7 +620,7 @@ real: 3.4;
.RE .RE
.PP .PP
The following is not valid: \fB\fC\&.3\fR, \fB\fC3.\fR or scientific notation: \fB\fC3.4e\-3\fR\&. The following is not valid: \fB\fC\&.3\fR, \fB\fC3.\fR or scientific notation: \fB\fC3.4e-3\fR\&.
.SH Boolean .SH Boolean
.RS .RS
@ -629,7 +630,7 @@ Format: \fB\fC(true|false)\fR
.RE .RE
.PP .PP
Boolean value is either \fB\fCtrue\fR or \fB\fCfalse\fR\&. This is case\-\&sensitive. Boolean value is either \fB\fCtrue\fR or \fB\fCfalse\fR\&. This is case-sensitive.
.PP .PP
For example: For example:
@ -645,7 +646,7 @@ dynamic: false;
.SH Image .SH Image
.PP .PP
\fBrofi\fP support a limited set of background\-image formats. \fBrofi\fP support a limited set of background-image formats.
.RS .RS
.IP \(bu 2 .IP \(bu 2
@ -654,12 +655,12 @@ Format: url("path to image");
Format: url("path to image", scale); Format: url("path to image", scale);
where scale is: none, both, width, height where scale is: none, both, width, height
.IP \(bu 2 .IP \(bu 2
Format: linear\-gradient(stop color,stop1, color, stop2 color, ...); Format: linear-gradient(stop color,stop1, color, stop2 color, ...);
.IP \(bu 2 .IP \(bu 2
Format: linear\-gradient(to direction, stop color,stop1, color, stop2 color, ...); Format: linear-gradient(to direction, stop color,stop1, color, stop2 color, ...);
where direction is: top,left,right,bottom. where direction is: top,left,right,bottom.
.IP \(bu 2 .IP \(bu 2
Format: linear\-gradient(angle, stop color,stop1, color, stop2 color, ...); Format: linear-gradient(angle, stop color,stop1, color, stop2 color, ...);
Angle in deg,rad,grad (as used in color). Angle in deg,rad,grad (as used in color).
.RE .RE
@ -691,31 +692,27 @@ Format: \fB\fChwb[a]( {ANGLE}, {PERCENTAGE}, {PERCENTAGE} [, {PERCENTAGE}])\fR
.IP \(bu 2 .IP \(bu 2
Format: \fB\fCcmyk( {PERCENTAGE}, {PERCENTAGE}, {PERCENTAGE}, {PERCENTAGE} [, {PERCENTAGE} ])\fR Format: \fB\fCcmyk( {PERCENTAGE}, {PERCENTAGE}, {PERCENTAGE}, {PERCENTAGE} [, {PERCENTAGE} ])\fR
.IP \(bu 2 .IP \(bu 2
Format: \fB\fC{named\-color} [ / {PERCENTAGE} ]\fR Format: \fB\fC{named-color} [ / {PERCENTAGE} ]\fR
.RE .RE
.PP .PP
The white\-space format proposed in CSS4 is also supported. The white-space format proposed in CSS4 is also supported.
.PP .PP
The different values are: The different values are:
.RS .RS
.IP \(bu 2 .IP \(bu 2
\fB\fC{HEX}\fR is a hexadecimal number ('0\-9a\-f' case insensitive). \fB\fC{HEX}\fR is a hexadecimal number ('0-9a-f' case insensitive).
.IP \(bu 2 .IP \(bu 2
\fB\fC{INTEGER}\fR value can be between 0 and 255 or 0\-100 when representing percentage. \fB\fC{INTEGER}\fR value can be between 0 and 255 or 0-100 when representing percentage.
.IP \(bu 2 .IP \(bu 2
\fB\fC{ANGLE}\fR is the angle on the color wheel, can be in \fB\fCdeg\fR, \fB\fCrad\fR, \fB\fCgrad\fR or \fB\fCturn\fR\&. When no unit is specified, degrees is assumed. \fB\fC{ANGLE}\fR is the angle on the color wheel, can be in \fB\fCdeg\fR, \fB\fCrad\fR, \fB\fCgrad\fR or \fB\fCturn\fR\&. When no unit is specified, degrees is assumed.
.IP \(bu 2 .IP \(bu 2
\fB\fC{PERCENTAGE}\fR can be between 0\-1.0, or 0%\-100% \fB\fC{PERCENTAGE}\fR can be between 0-1.0, or 0%-100%
.IP \(bu 2 .IP \(bu 2
\fB\fC{named-color}\fR is one of the following colors:AliceBlue, AntiqueWhite, Aqua, Aquamarine, Azure, Beige, Bisque, Black, BlanchedAlmond, Blue, BlueViolet, Brown,
.PP
\fB\fC{named\-color}\fR is one of the following colors:
.PP
AliceBlue, AntiqueWhite, Aqua, Aquamarine, Azure, Beige, Bisque, Black, BlanchedAlmond, Blue, BlueViolet, Brown,
BurlyWood, CadetBlue, Chartreuse, Chocolate, Coral, CornflowerBlue, Cornsilk, Crimson, Cyan, DarkBlue, DarkCyan, BurlyWood, CadetBlue, Chartreuse, Chocolate, Coral, CornflowerBlue, Cornsilk, Crimson, Cyan, DarkBlue, DarkCyan,
DarkGoldenRod, DarkGray, DarkGrey, DarkGreen, DarkKhaki, DarkMagenta, DarkOliveGreen, DarkOrange, DarkOrchid, DarkRed, DarkGoldenRod, DarkGray, DarkGrey, DarkGreen, DarkKhaki, DarkMagenta, DarkOliveGreen, DarkOrange, DarkOrchid, DarkRed,
DarkSalmon, DarkSeaGreen, DarkSlateBlue, DarkSlateGray, DarkSlateGrey, DarkTurquoise, DarkViolet, DeepPink, DeepSkyBlue, DarkSalmon, DarkSeaGreen, DarkSlateBlue, DarkSlateGray, DarkSlateGrey, DarkTurquoise, DarkViolet, DeepPink, DeepSkyBlue,
@ -739,9 +736,9 @@ For example:
.RS .RS
.nf .nf
background\-color: #FF0000; background-color: #FF0000;
border\-color: rgba(0,0,1, 0.5); border-color: rgba(0,0,1, 0.5);
text\-color: SeaGreen; text-color: SeaGreen;
.fi .fi
.RE .RE
@ -753,8 +750,8 @@ or
.RS .RS
.nf .nf
background\-color: transparent; background-color: transparent;
text\-color: Black; text-color: Black;
.fi .fi
.RE .RE
@ -795,7 +792,7 @@ The following options are available on pango 1.50.0 and up:
.PP .PP
The following option is disabled as pango crashes on this if there is eel The following option is disabled as pango crashes on this if there is eel
upsizing or wrapping. This will be re\-enabled once fixed: upsizing or wrapping. This will be re-enabled once fixed:
.RS .RS
.IP \(bu 2 .IP \(bu 2
@ -863,7 +860,7 @@ For example:
.RE .RE
.PP .PP
On a full\-HD (1920x1080) monitor, it defines a padding of 192 pixels on the left 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. and right side and 108 pixels on the top and bottom.
.SS Calculating sizes .SS Calculating sizes
@ -874,7 +871,7 @@ Rofi supports some maths in calculating sizes. For this it uses the CSS syntax:
.RS .RS
.nf .nf
width: calc( 100% \- 37px ); width: calc( 100% - 37px );
.fi .fi
.RE .RE
@ -895,7 +892,7 @@ It supports the following operations:
.IP \(bu 2 .IP \(bu 2
\fB\fC+\fR : Add \fB\fC+\fR : Add
.IP \(bu 2 .IP \(bu 2
\fB\fC\-\fR : Subtract \fB\fC-\fR : Subtract
.IP \(bu 2 .IP \(bu 2
\fB\fC/\fR : Divide \fB\fC/\fR : Divide
.IP \(bu 2 .IP \(bu 2
@ -943,9 +940,9 @@ The different number of fields in the formats are parsed like:
.IP \(bu 2 .IP \(bu 2
1 field: \fB\fCall\fR 1 field: \fB\fCall\fR
.IP \(bu 2 .IP \(bu 2
2 fields: \fB\fCtop\&bottom\fR \fB\fCleft\&right\fR 2 fields: \fB\fCtop&bottom\fR \fB\fCleft&right\fR
.IP \(bu 2 .IP \(bu 2
3 fields: \fB\fCtop\fR, \fB\fCleft\&right\fR, \fB\fCbottom\fR 3 fields: \fB\fCtop\fR, \fB\fCleft&right\fR, \fB\fCbottom\fR
.IP \(bu 2 .IP \(bu 2
4 fields: \fB\fCtop\fR, \fB\fCright\fR, \fB\fCbottom\fR, \fB\fCleft\fR 4 fields: \fB\fCtop\fR, \fB\fCright\fR, \fB\fCbottom\fR, \fB\fCleft\fR
@ -983,6 +980,7 @@ style property.
.PP .PP
When no unit is specified, pixels are assumed. When no unit is specified, pixels are assumed.
.RE .RE
.SH Position .SH Position
@ -1120,7 +1118,7 @@ Format: \fB\fC[ keyword, keyword ]\fR
.RE .RE
.PP .PP
A list starts with a '[' and ends with a ']'. The entries in the list are comma\-separated. A list starts with a '[' and ends with a ']'. The entries in the list are comma-separated.
The \fB\fCkeyword\fR in the list refers to an widget name. The \fB\fCkeyword\fR in the list refers to an widget name.
.SH List of values .SH List of values
@ -1131,7 +1129,7 @@ Format: \fB\fC[ value, value, ... ]\fR
.RE .RE
.PP .PP
An list starts with a '[' and ends with a ']'. The entries in the list are comma\-separated. An list starts with a '[' and ends with a ']'. The entries in the list are comma-separated.
.SH Environment variable .SH Environment variable
.RS .RS
@ -1142,14 +1140,14 @@ Format: \fB\fC${:alnum:}\fR
.PP .PP
This will parse the environment variable as the property value. (that then can be any of the above types). This will parse the environment variable as the property value. (that then can be any of the above types).
The environment variable should be an alphanumeric string without white\-space. The environment variable should be an alphanumeric string without white-space.
.PP .PP
.RS .RS
.nf .nf
* { * {
background\-color: ${BG}; background-color: ${BG};
} }
.fi .fi
@ -1163,7 +1161,7 @@ Format: \fB\fCenv(ENVIRONMENT, default)\fR
.PP .PP
This will parse the environment variable as the property value. (that then can be any of the above types). This will parse the environment variable as the property value. (that then can be any of the above types).
The environment variable should be an alphanumeric string without white\-space. The environment variable should be an alphanumeric string without white-space.
If the environment value is not found, the default value is used. If the environment value is not found, the default value is used.
.PP .PP
@ -1195,7 +1193,7 @@ Inherits the property from its parent widget.
.nf .nf
mainbox { mainbox {
border\-color: inherit; border-color: inherit;
} }
.fi .fi
@ -1247,7 +1245,6 @@ The current widgets available in \fBrofi\fP:
.RS .RS
.IP \(bu 2 .IP \(bu 2
\fB\fCwindow\fR \fB\fCwindow\fR
.RS .RS
.IP \(bu 2 .IP \(bu 2
\fB\fCoverlay\fR: the overlay widget. \fB\fCoverlay\fR: the overlay widget.
@ -1255,65 +1252,66 @@ The current widgets available in \fBrofi\fP:
\fB\fCmainbox\fR: The mainbox box. \fB\fCmainbox\fR: The mainbox box.
.IP \(bu 2 .IP \(bu 2
\fB\fCinputbar\fR: The input bar box. \fB\fCinputbar\fR: The input bar box.
.RS .RS
.IP \(bu 2 .IP \(bu 2
\fB\fCbox\fR: the horizontal @box packing the widgets \fB\fCbox\fR: the horizontal @box packing the widgets
.IP \(bu 2 .IP \(bu 2
\fB\fCcase\-indicator\fR: the case/sort indicator @textbox \fB\fCcase-indicator\fR: the case/sort indicator @textbox
.IP \(bu 2 .IP \(bu 2
\fB\fCprompt\fR: the prompt @textbox \fB\fCprompt\fR: the prompt @textbox
.IP \(bu 2 .IP \(bu 2
\fB\fCentry\fR: the main entry @textbox \fB\fCentry\fR: the main entry @textbox
.IP \(bu 2 .IP \(bu 2
\fB\fCnum\-rows\fR: Shows the total number of rows. \fB\fCnum-rows\fR: Shows the total number of rows.
.IP \(bu 2 .IP \(bu 2
\fB\fCnum\-filtered\-rows\fR: Shows the total number of rows after filtering. \fB\fCnum-filtered-rows\fR: Shows the total number of rows after filtering.
.IP \(bu 2 .IP \(bu 2
\fB\fCtextbox\-current\-entry\fR: Shows the text of the currently selected entry. \fB\fCtextbox-current-entry\fR: Shows the text of the currently selected entry.
.IP \(bu 2 .IP \(bu 2
\fB\fCicon\-current\-entry\fR: Shows the icon of the currently selected entry. \fB\fCicon-current-entry\fR: Shows the icon of the currently selected entry.
.RE .RE
.IP \(bu 2 .IP \(bu 2
\fB\fClistview\fR: The listview. \fB\fClistview\fR: The listview.
.RS .RS
.IP \(bu 2 .IP \(bu 2
\fB\fCscrollbar\fR: the listview scrollbar \fB\fCscrollbar\fR: the listview scrollbar
.IP \(bu 2 .IP \(bu 2
\fB\fCelement\fR: a box in the listview holding the entries \fB\fCelement\fR: a box in the listview holding the entries
.RS .RS
.IP \(bu 2 .IP \(bu 2
\fB\fCelement\-icon\fR: the widget in the listview's entry showing the (optional) icon \fB\fCelement-icon\fR: the widget in the listview's entry showing the (optional) icon
.IP \(bu 2 .IP \(bu 2
\fB\fCelement\-index\fR: the widget in the listview's entry keybindable index (1,2,3..0) \fB\fCelement-index\fR: the widget in the listview's entry keybindable index (1,2,3..0)
.IP \(bu 2 .IP \(bu 2
\fB\fCelement\-text\fR: the widget in the listview's entry showing the text. \fB\fCelement-text\fR: the widget in the listview's entry showing the text.
.RE .RE
.RE
.IP \(bu 2
\fB\fCmode\-switcher\fR: the main horizontal @box packing the buttons.
.RE
.IP \(bu 2
\fB\fCmode-switcher\fR: the main horizontal @box packing the buttons.
.RS .RS
.IP \(bu 2 .IP \(bu 2
\fB\fCbutton\fR: the buttons @textbox for each mode \fB\fCbutton\fR: the buttons @textbox for each mode
.RE .RE
.IP \(bu 2 .IP \(bu 2
\fB\fCmessage\fR: The container holding the textbox. \fB\fCmessage\fR: The container holding the textbox.
.RS .RS
.IP \(bu 2 .IP \(bu 2
\fB\fCtextbox\fR: the message textbox \fB\fCtextbox\fR: the message textbox
.RE .RE
.RE .RE
.RE .RE
.PP .PP
@ -1367,8 +1365,8 @@ Example:
.nf .nf
nametotextbox selected.active { nametotextbox selected.active {
background\-color: #003642; background-color: #003642;
text\-color: #008ed4; text-color: #008ed4;
} }
.fi .fi
@ -1401,16 +1399,16 @@ Margin on the outside of the widget
\fBborder\fP: border \fBborder\fP: border
Border around the widget (between padding and margin)/ Border around the widget (between padding and margin)/
.IP \(bu 2 .IP \(bu 2
\fBborder\-radius\fP: padding \fBborder-radius\fP: padding
Sets a radius on the corners of the borders. Sets a radius on the corners of the borders.
.IP \(bu 2 .IP \(bu 2
\fBbackground\-color\fP: color \fBbackground-color\fP: color
Background color Background color
.IP \(bu 2 .IP \(bu 2
\fBbackground\-image\fP: image \fBbackground-image\fP: image
Background image Background image
.IP \(bu 2 .IP \(bu 2
\fBborder\-color\fP: color \fBborder-color\fP: color
Color of the border Color of the border
.IP \(bu 2 .IP \(bu 2
\fBcursor\fP: cursor \fBcursor\fP: cursor
@ -1421,47 +1419,31 @@ Type of mouse cursor that is set when the mouse pointer is hovered over the widg
.SS window: .SS window:
.RS .RS
.IP \(bu 2 .IP \(bu 2
.PP
\fBfont\fP: string \fBfont\fP: string
The font used in the window The font used in the window
.IP \(bu 2 .IP \(bu 2
.PP
\fBtransparency\fP: string \fBtransparency\fP: string
Indicating if transparency should be used and what type: Indicating if transparency should be used and what type:
\fBreal\fP \- True transparency. Only works with a compositor. \fBreal\fP - True transparency. Only works with a compositor.
\fBbackground\fP \- Take a screenshot of the background image and use that. \fBbackground\fP - Take a screenshot of the background image and use that.
\fBscreenshot\fP \- Take a screenshot of the screen and use that. \fBscreenshot\fP - Take a screenshot of the screen and use that.
\fBPath\fP to png file \- Use an image. \fBPath\fP to png file - Use an image.
.IP \(bu 2 .IP \(bu 2
.PP
\fBlocation\fP: position \fBlocation\fP: position
The place of the anchor on the monitor The place of the anchor on the monitor
.IP \(bu 2 .IP \(bu 2
.PP
\fBanchor\fP: anchor \fBanchor\fP: anchor
The anchor position on the window The anchor position on the window
.IP \(bu 2 .IP \(bu 2
.PP
\fBfullscreen\fP: boolean \fBfullscreen\fP: boolean
Window is fullscreen. Window is fullscreen.
.IP \(bu 2 .IP \(bu 2
.PP
\fBwidth\fP: distance \fBwidth\fP: distance
The width of the window The width of the window
.IP \(bu 2 .IP \(bu 2
\fBx-offset\fP: distance
.PP
\fBx\-offset\fP: distance
.IP \(bu 2 .IP \(bu 2
\fBy-offset\fP: distance
.PP
\fBy\-offset\fP: distance
The offset of the window to the anchor point, allowing you to push the window left/right/up/down The offset of the window to the anchor point, allowing you to push the window left/right/up/down
.RE .RE
@ -1469,13 +1451,13 @@ The offset of the window to the anchor point, allowing you to push the window le
.SS scrollbar: .SS scrollbar:
.RS .RS
.IP \(bu 2 .IP \(bu 2
\fBbackground\-color\fP: color \fBbackground-color\fP: color
.IP \(bu 2 .IP \(bu 2
\fBhandle\-width\fP: distance \fBhandle-width\fP: distance
.IP \(bu 2 .IP \(bu 2
\fBhandle\-color\fP: color \fBhandle-color\fP: color
.IP \(bu 2 .IP \(bu 2
\fBborder\-color\fP: color \fBborder-color\fP: color
.RE .RE
@ -1493,25 +1475,25 @@ The offset of the window to the anchor point, allowing you to push the window le
.SS textbox: .SS textbox:
.RS .RS
.IP \(bu 2 .IP \(bu 2
\fBbackground\-color\fP: color \fBbackground-color\fP: color
.IP \(bu 2 .IP \(bu 2
\fBborder\-color\fP: the color used for the border around the widget. \fBborder-color\fP: the color used for the border around the widget.
.IP \(bu 2 .IP \(bu 2
\fBfont\fP: the font used by this textbox (string). \fBfont\fP: the font used by this textbox (string).
.IP \(bu 2 .IP \(bu 2
\fBstr\fP/\fBcontent\fP: the string to display by this textbox (string). \fBstr\fP/\fBcontent\fP: the string to display by this textbox (string).
.IP \(bu 2 .IP \(bu 2
\fBvertical\-align\fP: Vertical alignment of the text. A number between 0 (top) and 1 (bottom). \fBvertical-align\fP: Vertical alignment of the text. A number between 0 (top) and 1 (bottom).
.IP \(bu 2 .IP \(bu 2
\fBhorizontal\-align\fP: Horizontal alignment of the text. A number between 0 (left) and 1 (right). \fBhorizontal-align\fP: Horizontal alignment of the text. A number between 0 (left) and 1 (right).
.IP \(bu 2 .IP \(bu 2
\fBtext\-color\fP: the text color to use. \fBtext-color\fP: the text color to use.
.IP \(bu 2 .IP \(bu 2
\fBtext\-transform\fP: text style {color} for the whole text. \fBtext-transform\fP: text style {color} for the whole text.
.IP \(bu 2 .IP \(bu 2
\fBhighlight\fP: text style {color}. \fBhighlight\fP: text style {color}.
color is optional, multiple highlight styles can be added like: bold underline italic #000000; color is optional, multiple highlight styles can be added like: bold underline italic #000000;
This option is only available on the \fB\fCelement\-text\fR widget. This option is only available on the \fB\fCelement-text\fR widget.
.IP \(bu 2 .IP \(bu 2
\fBwidth\fP: override the desired width for the textbox. \fBwidth\fP: override the desired width for the textbox.
.IP \(bu 2 .IP \(bu 2
@ -1519,15 +1501,15 @@ This option is only available on the \fB\fCelement\-text\fR widget.
.IP \(bu 2 .IP \(bu 2
\fBplaceholder\fP: Set the displayed text (String) when nothing is entered. \fBplaceholder\fP: Set the displayed text (String) when nothing is entered.
.IP \(bu 2 .IP \(bu 2
\fBplaceholder\-markup\fP: If true, placeholder text supports pango markup for stylizing. \fBplaceholder-markup\fP: If true, placeholder text supports pango markup for stylizing.
.IP \(bu 2 .IP \(bu 2
\fBplaceholder\-color\fP: Color of the placeholder text. \fBplaceholder-color\fP: Color of the placeholder text.
.IP \(bu 2 .IP \(bu 2
\fBblink\fP: Enable/Disable blinking on an input textbox (Boolean). \fBblink\fP: Enable/Disable blinking on an input textbox (Boolean).
.IP \(bu 2 .IP \(bu 2
\fBmarkup\fP: Force markup on, beware that only valid pango markup strings are shown. \fBmarkup\fP: Force markup on, beware that only valid pango markup strings are shown.
.IP \(bu 2 .IP \(bu 2
\fBtab\-stops\fP: array of distances \fBtab-stops\fP: array of distances
Set the location of tab stops by their distance from the beginning of the line. Set the location of tab stops by their distance from the beginning of the line.
Each distance should be greater than the previous one. 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). The text appears to the right of the tab stop position (other alignments are not supported yet).
@ -1540,7 +1522,7 @@ The text appears to the right of the tab stop position (other alignments are not
\fBcolumns\fP: integer \fBcolumns\fP: integer
Number of columns to show (at least 1) Number of columns to show (at least 1)
.IP \(bu 2 .IP \(bu 2
\fBfixed\-height\fP: boolean \fBfixed-height\fP: boolean
Always show \fB\fClines\fR rows, even if fewer elements are available. Always show \fB\fClines\fR rows, even if fewer elements are available.
.IP \(bu 2 .IP \(bu 2
\fBdynamic\fP: boolean \fBdynamic\fP: boolean
@ -1549,7 +1531,7 @@ Always show \fB\fClines\fR rows, even if fewer elements are available.
\fBscrollbar\fP: boolean \fBscrollbar\fP: boolean
If the scrollbar should be enabled/disabled. If the scrollbar should be enabled/disabled.
.IP \(bu 2 .IP \(bu 2
\fBscrollbar\-width\fP: distance \fBscrollbar-width\fP: distance
Width of the scrollbar Width of the scrollbar
.IP \(bu 2 .IP \(bu 2
\fBcycle\fP: boolean \fBcycle\fP: boolean
@ -1570,23 +1552,23 @@ Reverse the ordering (top down to bottom up).
\fBflow\fP: orientation \fBflow\fP: orientation
The order the elements are layed out. Vertical is the original 'column' view. The order the elements are layed out. Vertical is the original 'column' view.
.IP \(bu 2 .IP \(bu 2
\fBfixed\-columns\fP: boolean \fBfixed-columns\fP: boolean
Do not reduce the number of columns shown when number of visible elements is not enough to fill them all. Do not reduce the number of columns shown when number of visible elements is not enough to fill them all.
.IP \(bu 2 .IP \(bu 2
\fBrequire\-input\fP: boolean \fBrequire-input\fP: boolean
Listview requires user input to show up. Listview requires user input to show up.
.RE .RE
.PP .PP
Each element is a \fB\fCbox\fR called \fB\fCelement\fR\&. Each \fB\fCelement\fR can contain an \fB\fCelement\-icon\fR and \fB\fCelement\-text\fR\&. Each element is a \fB\fCbox\fR called \fB\fCelement\fR\&. Each \fB\fCelement\fR can contain an \fB\fCelement-icon\fR and \fB\fCelement-text\fR\&.
.SS listview text highlight: .SS listview text highlight:
.PP .PP
The \fB\fCelement\-text\fR widget in the \fB\fClistview\fR is the one used to show the text. The \fB\fCelement-text\fR widget in the \fB\fClistview\fR is the one used to show the text.
On this widget set the \fB\fChighlight\fR property (only place this property is used) to change On this widget set the \fB\fChighlight\fR property (only place this property is used) to change
the style of highlighting. the style of highlighting.
The \fB\fChighlight\fR property consist of the \fB\fCtext\-style\fR property and a color. The \fB\fChighlight\fR property consist of the \fB\fCtext-style\fR property and a color.
.PP .PP
To disable highlighting: To disable highlighting:
@ -1595,7 +1577,7 @@ To disable highlighting:
.RS .RS
.nf .nf
element\-text { element-text {
highlight: None; highlight: None;
} }
@ -1609,7 +1591,7 @@ To set to red underlined:
.RS .RS
.nf .nf
element\-text { element-text {
highlight: underline red; highlight: underline red;
} }
@ -1682,11 +1664,11 @@ The current layout of \fBrofi\fP is structured as follows:
.RS .RS
.IP \(bu 2 .IP \(bu 2
ci is the case\-indicator ci is the case-indicator
.IP \(bu 2 .IP \(bu 2
fr is the num\-filtered\-rows fr is the num-filtered-rows
.IP \(bu 2 .IP \(bu 2
ns is the num\-rows ns is the num-rows
.RE .RE
@ -1726,17 +1708,17 @@ entry
.IP \(bu 2 .IP \(bu 2
overlay overlay
.IP \(bu 2 .IP \(bu 2
case\-indicator case-indicator
.IP \(bu 2 .IP \(bu 2
message message
.IP \(bu 2 .IP \(bu 2
listview listview
.IP \(bu 2 .IP \(bu 2
mode\-switcher mode-switcher
.IP \(bu 2 .IP \(bu 2
num\-rows num-rows
.IP \(bu 2 .IP \(bu 2
num\-filtered\-rows num-filtered-rows
.RE .RE
@ -1747,10 +1729,10 @@ These are used in the default theme as depicted in the figure above.
.RS .RS
.IP \(bu 2 .IP \(bu 2
mainbox mainbox
Packs: \fB\fCinputbar, message, listview, mode\-switcher\fR Packs: \fB\fCinputbar, message, listview, mode-switcher\fR
.IP \(bu 2 .IP \(bu 2
inputbar inputbar
Packs: \fB\fCprompt,entry,case\-indicator\fR Packs: \fB\fCprompt,entry,case-indicator\fR
.RE .RE
@ -1762,7 +1744,7 @@ There are several special widgets that can be used by prefixing the name of the
.SS textbox .SS textbox
.PP .PP
This is a read\-only textbox widget. The displayed string can be set with \fB\fCcontent\fR\&. This is a read-only textbox widget. The displayed string can be set with \fB\fCcontent\fR\&.
.PP .PP
Example: Example:
@ -1771,7 +1753,7 @@ Example:
.RS .RS
.nf .nf
textbox\-custom { textbox-custom {
expand: false; expand: false;
content: "My Message"; content: "My Message";
} }
@ -1783,7 +1765,7 @@ textbox\-custom {
.PP .PP
This is an icon widget. The displayed icon can be set with \fB\fCfilename\fR and size with \fB\fCsize\fR\&. This is an icon widget. The displayed icon can be set with \fB\fCfilename\fR and size with \fB\fCsize\fR\&.
If the property \fB\fCaction\fR is set, it acts as a button. If the property \fB\fCaction\fR is set, it acts as a button.
\fB\fCaction\fR can be set to a keybinding name and completes that action. (see rofi \-show keys for a list). \fB\fCaction\fR can be set to a keybinding name and completes that action. (see rofi -show keys for a list).
.PP .PP
If the \fB\fCsquared\fR property is set to \fBfalse\fP the widget height and width are not forced to be equal. If the \fB\fCsquared\fR property is set to \fBfalse\fP the widget height and width are not forced to be equal.
@ -1795,12 +1777,12 @@ Example:
.RS .RS
.nf .nf
icon\-paste { icon-paste {
expand: false; expand: false;
filename: "gtk\-paste"; filename: "gtk-paste";
size: 24; size: 24;
vertical\-align: 0.5; vertical-align: 0.5;
action: "kb\-primary\-paste"; action: "kb-primary-paste";
} }
.fi .fi
@ -1810,17 +1792,17 @@ icon\-paste {
.PP .PP
This is a textbox widget that can have a 'clickable' action. This is a textbox widget that can have a 'clickable' action.
The \fB\fCaction\fR can be set to: The \fB\fCaction\fR can be set to:
\fB\fCkeybinding\fR: accepts a keybinding name and completes that action. (see rofi \-show keys for a list). \fB\fCkeybinding\fR: accepts a keybinding name and completes that action. (see rofi -show keys for a list).
.PP .PP
.RS .RS
.nf .nf
button\-paste { button-paste {
expand: false; expand: false;
content: "My Clickable Message"; content: "My Clickable Message";
vertical\-align: 0.5; vertical-align: 0.5;
action: "kb\-primary\-paste"; action: "kb-primary-paste";
} }
.fi .fi
@ -1836,7 +1818,7 @@ property (this always happens on the \fB\fCbox\fR child, see example below):
.nf .nf
inputbar { inputbar {
children: [prompt,entry,overlay,case\-indicator]; children: [prompt,entry,overlay,case-indicator];
} }
.fi .fi
@ -1853,9 +1835,9 @@ Below is an example of a theme emulating dmenu:
.nf .nf
* { * {
background\-color: Black; background-color: Black;
text\-color: White; text-color: White;
border\-color: White; border-color: White;
font: "Times New Roman 12"; font: "Times New Roman 12";
} }
@ -1887,7 +1869,7 @@ element {
padding: 0px 2px; padding: 0px 2px;
} }
element selected { element selected {
background\-color: SteelBlue; background-color: SteelBlue;
} }
.fi .fi
@ -1922,15 +1904,15 @@ Explanation of the different parts:
.RS .RS
.IP \(bu 2 .IP \(bu 2
Content \- The content of the widget. Content - The content of the widget.
.IP \(bu 2 .IP \(bu 2
Padding \- Clears an area around the widget. Padding - Clears an area around the widget.
The padding shows the background color of the widget. The padding shows the background color of the widget.
.IP \(bu 2 .IP \(bu 2
Border \- A border that goes around the padding and content. Border - A border that goes around the padding and content.
The border use the border\-color of the widget. The border use the border-color of the widget.
.IP \(bu 2 .IP \(bu 2
Margin \- Clears an area outside the border. Margin - Clears an area outside the border.
The margin is transparent. The margin is transparent.
.RE .RE
@ -1998,7 +1980,7 @@ To get debug information from the parser, run rofi like:
.RS .RS
.nf .nf
G\_MESSAGES\_DEBUG=Parser rofi \-show run G_MESSAGES_DEBUG=Parser rofi -show run
.fi .fi
.RE .RE
@ -2013,19 +1995,19 @@ To see the elements queried during running, run:
.RS .RS
.nf .nf
G\_MESSAGES\_DEBUG=Theme rofi \-show run G_MESSAGES_DEBUG=Theme rofi -show run
.fi .fi
.RE .RE
.PP .PP
To test minor changes, part of the theme can be passed on the command line, for example to set it to full\-screen: To test minor changes, part of the theme can be passed on the command line, for example to set it to full-screen:
.PP .PP
.RS .RS
.nf .nf
rofi \-theme\-str 'window { fullscreen:true;}' \-show run rofi -theme-str 'window { fullscreen:true;}' -show run
.fi .fi
.RE .RE
@ -2037,7 +2019,7 @@ Another syntax to modify theme properties is:
.RS .RS
.nf .nf
rofi \-theme+window+fullscreen true \-show run rofi -theme+window+fullscreen true -show run
.fi .fi
.RE .RE
@ -2049,7 +2031,7 @@ To print the current theme, run:
.RS .RS
.nf .nf
rofi \-dump\-theme rofi -dump-theme
.fi .fi
.RE .RE
@ -2062,7 +2044,7 @@ Parts of the theme can be conditionally loaded, like the CSS \fB\fC@media\fR opt
.RS .RS
.nf .nf
@media ( min\-width: 120 ) { @media ( min-width: 120 ) {
} }
@ -2074,19 +2056,19 @@ It supports the following keys as constraint:
.RS .RS
.IP \(bu 2 .IP \(bu 2
\fB\fCmin\-width\fR: load when width is bigger or equal then value. \fB\fCmin-width\fR: load when width is bigger or equal then value.
.IP \(bu 2 .IP \(bu 2
\fB\fCmax\-width\fR: load when width is smaller then value. \fB\fCmax-width\fR: load when width is smaller then value.
.IP \(bu 2 .IP \(bu 2
\fB\fCmin\-height\fR: load when height is bigger or equal then value. \fB\fCmin-height\fR: load when height is bigger or equal then value.
.IP \(bu 2 .IP \(bu 2
\fB\fCmax\-height\fR: load when height is smaller then value. \fB\fCmax-height\fR: load when height is smaller then value.
.IP \(bu 2 .IP \(bu 2
\fB\fCmin\-aspect\-ratio\fR load when aspect ratio is over value. \fB\fCmin-aspect-ratio\fR load when aspect ratio is over value.
.IP \(bu 2 .IP \(bu 2
\fB\fCmax\-aspect\-ratio\fR: load when aspect ratio is under value. \fB\fCmax-aspect-ratio\fR: load when aspect ratio is under value.
.IP \(bu 2 .IP \(bu 2
\fB\fCmonitor\-id\fR: The monitor id, see rofi \-help for id's. \fB\fCmonitor-id\fR: The monitor id, see rofi -help for id's.
.IP \(bu 2 .IP \(bu 2
\fB\fCenabled\fR: Boolean option to enable. Supports environment variable. \fB\fCenabled\fR: Boolean option to enable. Supports environment variable.
@ -2099,7 +2081,7 @@ It supports the following keys as constraint:
.RS .RS
.nf .nf
@media ( min\-width: 120 px ) { @media ( min-width: 120 px ) {
} }
@ -2110,7 +2092,7 @@ It supports the following keys as constraint:
.RS .RS
.nf .nf
@media ( enabled: env(DO\_LIGHT, false ) { @media ( enabled: env(DO_LIGHT, false ) {
} }
@ -2153,7 +2135,7 @@ Rofi supports 3 ways of specifying an icon:
.IP \(bu 2 .IP \(bu 2
Filename Filename
.IP \(bu 2 .IP \(bu 2
icon\-name, this is looked up via the icon\-theme. icon-name, this is looked up via the icon-theme.
.IP \(bu 2 .IP \(bu 2
Markup String. It renders a string as an icon. Markup String. It renders a string as an icon.
@ -2172,7 +2154,7 @@ Markup string:
.RS .RS
.nf .nf
echo \-en "testing\\0icon\\x1f<span color='red'>⏻</span>" | ./rofi \-dmenu echo -en "testing\\0icon\\x1f<span color='red'>⏻</span>" | ./rofi -dmenu
.fi .fi
.RE .RE
@ -2184,7 +2166,7 @@ Getting supported icon formats:
.RS .RS
.nf .nf
G\_MESSAGES\_DEBUG=Helpers.IconFetcher rofi G_MESSAGES_DEBUG=Helpers.IconFetcher rofi
.fi .fi
.RE .RE
@ -2227,11 +2209,11 @@ If a filename is provided, it will try to resolve it in the following order:
.RS .RS
.IP \(bu 2 .IP \(bu 2
\fB\fC${XDG\_CONFIG\_HOME}/rofi/themes/\fR \fB\fC${XDG_CONFIG_HOME}/rofi/themes/\fR
.IP \(bu 2 .IP \(bu 2
\fB\fC${XDG\_CONFIG\_HOME}/rofi/\fR \fB\fC${XDG_CONFIG_HOME}/rofi/\fR
.IP \(bu 2 .IP \(bu 2
\fB\fC${XDG\_DATA\_HOME}/rofi/themes/\fR \fB\fC${XDG_DATA_HOME}/rofi/themes/\fR
.IP \(bu 2 .IP \(bu 2
\fB\fC${INSTALL PREFIX}/share/rofi/themes/\fR \fB\fC${INSTALL PREFIX}/share/rofi/themes/\fR
@ -2247,4 +2229,4 @@ Several examples are installed together with \fBrofi\fP\&. These can be found in
.SH SEE ALSO .SH SEE ALSO
.PP .PP
rofi(1), rofi\-script(5), rofi\-theme\-selector(1) rofi(1), rofi-script(5), rofi-theme-selector(1)

File diff suppressed because it is too large Load diff

View file

@ -612,6 +612,17 @@ configuration {
or pass `-window-hide-active-window true` on command line. 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 settings

View file

@ -63,6 +63,16 @@ uint32_t rofi_icon_fetcher_query_advanced(const char *name, const int wsize,
*/ */
cairo_surface_t *rofi_icon_fetcher_get(const uint32_t uid); cairo_surface_t *rofi_icon_fetcher_get(const uint32_t uid);
/**
* @param uid The unique id representing the matching request.
* @param surface [out] The surface found.
*
* If the surface is used, the user should reference the surface.
*
* @returns false if a query was done and failed.
*/
gboolean rofi_icon_fetcher_get_ex(const uint32_t uid,
cairo_surface_t **surface);
/** /**
* @param path the image path to check. * @param path the image path to check.
* *

View file

@ -127,6 +127,7 @@ typedef struct {
uint32_t icon_fetch_uid; uint32_t icon_fetch_uid;
uint32_t icon_fetch_size; uint32_t icon_fetch_size;
gboolean thumbnail_checked; gboolean thumbnail_checked;
gboolean icon_theme_checked;
} client; } client;
// window lists // window lists
@ -150,6 +151,7 @@ typedef struct {
GRegex *window_regex; GRegex *window_regex;
// Hide current active window // Hide current active window
gboolean hide_active_window; gboolean hide_active_window;
gboolean prefer_icon_theme;
} WindowModePrivateData; } WindowModePrivateData;
winlist *cache_client = NULL; winlist *cache_client = NULL;
@ -688,6 +690,11 @@ static int window_mode_init(Mode *sw) {
if (p && p->type == P_BOOLEAN && p->value.b == TRUE) { if (p && p->type == P_BOOLEAN && p->value.b == TRUE) {
pd->hide_active_window = TRUE; pd->hide_active_window = TRUE;
} }
// prefer icon theme selection
p = rofi_theme_find_property(wid, P_BOOLEAN, "prefer-icon-theme", FALSE);
if (p && p->type == P_BOOLEAN && p->value.b == TRUE) {
pd->prefer_icon_theme = TRUE;
}
pd->window_regex = g_regex_new("{[-\\w]+(:-?[0-9]+)?}", 0, 0, NULL); pd->window_regex = g_regex_new("{[-\\w]+(:-?[0-9]+)?}", 0, 0, NULL);
mode_set_private_data(sw, (void *)pd); mode_set_private_data(sw, (void *)pd);
_window_mode_load_data(sw, FALSE); _window_mode_load_data(sw, FALSE);
@ -1056,24 +1063,56 @@ static cairo_surface_t *_get_icon(const Mode *sw, unsigned int selected_line,
} }
c->thumbnail_checked = FALSE; c->thumbnail_checked = FALSE;
c->icon_checked = FALSE; c->icon_checked = FALSE;
c->icon_theme_checked = FALSE;
} }
if (config.window_thumbnail && c->thumbnail_checked == FALSE) { if (config.window_thumbnail && c->thumbnail_checked == FALSE) {
c->icon = x11_helper_get_screenshot_surface_window(c->window, size); c->icon = x11_helper_get_screenshot_surface_window(c->window, size);
c->thumbnail_checked = TRUE; c->thumbnail_checked = TRUE;
} }
if (c->icon == NULL && c->icon_checked == FALSE) { if (rmpd->prefer_icon_theme == FALSE) {
c->icon = get_net_wm_icon(rmpd->ids->array[selected_line], size); if (c->icon == NULL && c->icon_checked == FALSE) {
c->icon_checked = TRUE; c->icon = get_net_wm_icon(rmpd->ids->array[selected_line], size);
} c->icon_checked = TRUE;
if (c->icon == NULL && c->class) { }
if (c->icon_fetch_uid > 0) { if (c->icon == NULL && c->class && c->icon_theme_checked == FALSE) {
return rofi_icon_fetcher_get(c->icon_fetch_uid); g_warning("icon theme icon: %s %u", c->class, size);
if (c->icon_fetch_uid > 0) {
c->icon_theme_checked =
rofi_icon_fetcher_get_ex(c->icon_fetch_uid, &(c->icon));
if (c->icon) {
cairo_surface_reference(c->icon);
}
return c->icon;
}
char *class_lower = g_utf8_strdown(c->class, -1);
c->icon_fetch_uid = rofi_icon_fetcher_query(class_lower, size);
g_free(class_lower);
c->icon_fetch_size = size;
c->icon_theme_checked =
rofi_icon_fetcher_get_ex(c->icon_fetch_uid, &(c->icon));
if (c->icon) {
cairo_surface_reference(c->icon);
}
return c->icon;
}
} else {
if (c->icon == NULL && c->class && c->icon_theme_checked == FALSE) {
if (c->icon_fetch_uid == 0) {
char *class_lower = g_utf8_strdown(c->class, -1);
c->icon_fetch_uid = rofi_icon_fetcher_query(class_lower, size);
g_free(class_lower);
c->icon_fetch_size = size;
}
c->icon_theme_checked =
rofi_icon_fetcher_get_ex(c->icon_fetch_uid, &(c->icon));
if (c->icon) {
cairo_surface_reference(c->icon);
}
}
if (c->icon == NULL && c->icon_checked == FALSE) {
c->icon = get_net_wm_icon(rmpd->ids->array[selected_line], size);
c->icon_checked = TRUE;
} }
char *class_lower = g_utf8_strdown(c->class, -1);
c->icon_fetch_uid = rofi_icon_fetcher_query(class_lower, size);
g_free(class_lower);
c->icon_fetch_size = size;
return rofi_icon_fetcher_get(c->icon_fetch_uid);
} }
c->icon_fetch_size = size; c->icon_fetch_size = size;
return c->icon; return c->icon;

View file

@ -81,6 +81,7 @@ typedef struct {
int wsize; int wsize;
int hsize; int hsize;
cairo_surface_t *surface; cairo_surface_t *surface;
gboolean query_done;
IconFetcherNameEntry *entry; IconFetcherNameEntry *entry;
} IconFetcherEntry; } IconFetcherEntry;
@ -317,6 +318,7 @@ static void rofi_icon_fetcher_worker(thread_state *sdata,
g_object_unref(layout); g_object_unref(layout);
cairo_destroy(cr); cairo_destroy(cr);
sentry->surface = surface; sentry->surface = surface;
sentry->query_done = TRUE;
rofi_view_reload(); rofi_view_reload();
return; return;
@ -333,6 +335,8 @@ static void rofi_icon_fetcher_worker(thread_state *sdata,
icon_path = helper_get_theme_path(sentry->entry->name, ext); icon_path = helper_get_theme_path(sentry->entry->name, ext);
} }
if (icon_path == NULL) { if (icon_path == NULL) {
sentry->query_done = TRUE;
rofi_view_reload();
return; return;
} }
} else { } else {
@ -344,6 +348,8 @@ static void rofi_icon_fetcher_worker(thread_state *sdata,
const char *suf = strrchr(icon_path, '.'); const char *suf = strrchr(icon_path, '.');
if (suf == NULL) { if (suf == NULL) {
sentry->query_done = TRUE;
rofi_view_reload();
return; return;
} }
@ -363,6 +369,7 @@ static void rofi_icon_fetcher_worker(thread_state *sdata,
sentry->surface = icon_surf; sentry->surface = icon_surf;
g_free(icon_path_); g_free(icon_path_);
sentry->query_done = TRUE;
rofi_view_reload(); rofi_view_reload();
} }
@ -391,6 +398,7 @@ uint32_t rofi_icon_fetcher_query_advanced(const char *name, const int wsize,
sentry->wsize = wsize; sentry->wsize = wsize;
sentry->hsize = hsize; sentry->hsize = hsize;
sentry->entry = entry; sentry->entry = entry;
sentry->query_done = FALSE;
sentry->surface = NULL; sentry->surface = NULL;
entry->sizes = g_list_prepend(entry->sizes, sentry); entry->sizes = g_list_prepend(entry->sizes, sentry);
@ -446,5 +454,19 @@ cairo_surface_t *rofi_icon_fetcher_get(const uint32_t uid) {
if (sentry) { if (sentry) {
return sentry->surface; return sentry->surface;
} }
g_warning("Querying an non-existing uid");
return NULL; return NULL;
} }
gboolean rofi_icon_fetcher_get_ex(const uint32_t uid,
cairo_surface_t **surface) {
IconFetcherEntry *sentry = g_hash_table_lookup(
rofi_icon_fetcher_data->icon_cache_uid, GINT_TO_POINTER(uid));
*surface = NULL;
if (sentry) {
*surface = sentry->surface;
return sentry->query_done;
}
g_warning("Querying an non-existing uid");
return FALSE;
}