razor-agent.conf

package: razor

title: razor-agent.conf(5)

summary: Configuration file for Razor Agents

text:
# razor-agent.conf(5)

## NAME
"razor-agent.conf" - Configuration file for Razor Agents

## DESCRIPTION
"razor-agent.conf" is a configuration file read by the razor agents, which include razor-check(1), razor-admin(1), razor-report(1), and razor-revoke(1). The format is "attribute = value" pairs, one pair per line. Lines that begin with `#' are treated as comments.

## ATTRIBUTES
Following attributes can be specified:

razorhome

Directory where Razor Agents look for files. All files in "razor-agent.conf" without a full path will be relative to "razorhome". The default is "/etc/razor/" for root, and "~/.razor/" for every other user. If "razorhome" does not exist, it will be created.

logfile

Log file for the Razor Agents. The default is "razor-agent.log".

debuglevel

Controls the amount of messages written to logfile. It is an integer between 0 and 20. For Example, a value of 1 logs only startup and error messages, 5 includes every transaction with the server, and 14 is extremely verbose information intended for debugging use only. NOTE: 15 and higher create debug files on your filesystem -- do not use unless you know what you are doing. The default is 5.

identity

Specify an identify file to use for storing a newly registered identity during razor-admin(1). For razor-report(1) and razor-revoke(1), use this identity when authenticating with Razor Servers. If not specified, "<razorhome>/identity-<user>" is used.

listfile_nomination

File where Razor Nomination Servers are listed, in order of closest TCP ping time. Nomination Servers are used by razor-report(1) and razor-revoke(1). This file is created automatically. The default is "servers.nomination.lst".

listfile_catalogue

File where Razor Catalogue Servers are listed, in order of closest TCP ping time. Catalogue Servers are used by razor-check(1). This file is created automatically. The default is "servers.catalogue.lst".

listfile_discovery

File where Razor Discovery Servers are listed, in random order. This file is created automatically using DNS. The default is "servers.discovery.lst".

rediscovery_wait_dns

Max time in seconds Razor Agents will wait before computing a new "listfile_discovery" using DNS. The default is 604800, which is 7 days.

rediscovery_wait

Max time in seconds Razor Agents will wait before computing a new "listfile_nomination" and a new "listfile_catalogue". The default is 172800, which is 2 days.

turn_off_discovery

Turns off closest host discovery. When set to 1, "listfile_catalogue" and "listfile_nomination" will not be updated and "listfile_discovery" is not read or updated. The default is 0.

ignorelist

Automatically ignore mailing list posts. If set to 0, mailing list posts will be handled like all other mail. The default is 0.

whitelist

Name of whitelist file. Razor Agents can consult a whitelist of addresses and SHA1 hashes before checking a mail with Razor Servers. If the address/hash is found on the whitelist, the mail is marked `not spam', without checking against the server. The format of the whitelist can be found in razor-whitelist(5) manpage. The default is "razor-whitelist".

min_cf

When checking spam, the server optionally returns a spam confidence value ranging from 0 (not confident) to 100 (absolutely or 100% confident). To be considered spam, the server's spam confidence value must be greater than or equal to "min_cf". "min_cf" can be a number or an expression containing ac, the average confidence published by a Razor Server. Examples: 0, 60, 100, ac, ac + 10, ac - 20. If an expression evaluates to less than 0 it becomes 0, likewise those greater than 100 become 100. The default is "ac".

report_headers

When reporting spam, the entire email (headers and body) is sent to a Razor Nomination Server. When set to 0, all the headers are removed except headers beginning with "Content-" before sending, and a special header beginning with "X-Razor2" is added to note this action. The default is 1.

## AUTHORS
Vipul Ved Prakash, <mail@vipul.net> and Chad Norwood <chad@samo.org>

## SEE ALSO
razor-agents(1), razor-check(1), razor-admin(1), razor-report(1), razor-revoke(1), razor-whitelist(5)


razor-agents

title: razor-agents(5)

text:
# razor-agents(5)

## NAME
Razor-Agents - Collection of files for checking, reporting, and revoking spam

## DESCRIPTION
Vipul's Razor is a distributed, collaborative, spam detection, reporting, and filtering network. The primary focus of the system is to identify and remove all email spam from the internet. Visit the website at http://razor.sourceforge.net/.

## USAGE
First a razorhome directory should be created where log, conf, and cached server information will live. This is done via "-create" option to razor-admin(1). See man page for details.

You can immediately check spam using razor-check(1). See man page for details.

To report spam, an identity must be registered. This is done via "-register" option to razor-admin(1). After that, razor-report(1) and razor-revoke(1) will work flawlessly.

## CONFIGURATION
All Razor-Agents share a configuration file. The contents of the configuration file are detailed in the razor-agent.conf(5) manpage.

Config file is computed before razorhome, in the following order:

```
 -conf=/path/file.conf           used if readable, else
 <home>/.razor/razor-agent.conf  used if readable, else
 /etc/razor/razor-agent.conf     used if readable, else
 all defaults are used.
```

To see configuration defaults, do

razor-admin -create -conf=/tmp/razor2-defaults.conf

## RAZORHOME
All Razor-Agents also share a razorhome directory, where identity, logging, and cached information about servers is stored. Razorhome is computed after configuration file, in the following order.

```
 -home=/tmp/razor/                     used if readable, else
 'razorhome' from configuration file   used if readable, else
 <home>/.razor/                        used if readable, else
 <home>/.razor/                        is created.  if that fails,
                                       no razorhome.
 NOTE: If there is no razorhome, razor-report and razor-revoke will
       not work unless you specify  -ident=/path/identity
       razor-check will still work.
```

## FILES
Besides those listed at the end with their own manpages, Razor Agents also has the following files.

razorhome/identity

Usually a symlink to identity file containing user+pass. Used by razor-report(1) and razor-revoke(1).

razorhome/razor-agent.log

Default log file. To change, edit razor-agent.conf(5).

razorhome/servers.*.lst

Cached list of Razor Servers. If more than one, they are ordered by closest ping time.

razorhome/server.<name>.lst

Cached info for <name> server. The "srl" key in this file is compared against the server greeting, and if server's is greater, new cache info is retrieved from the server.

## EXAMPLES
razor-check -d -debuglevel=9 mbox

Checks spam in mbox. prints numbers for those found to be spam. -d logs to stdout, -debuglevel=9 is verbose logging

razor-admin -create -home=/home/chad/.razor -d -s

Creates razorhome in /home/chad/.razor, log to stdout, does not connect to server (-s simulate).

razor-report spam -debuglevel=0

sends spam to server, with no log msgs.

## AUTHORS
Vipul Ved Prakash, <mail@vipul.net> and Chad Norwood <chad@samo.org>

## SEE ALSO
razor-agent.conf(5), razor-check(1), razor-admin(1), razor-report(1), razor-revoke(1), razor-whitelist(5)


razor-whitelist

title: razor-whitelist(5)

summary: Format for Vipul's Razor Whitelist

text:
# razor-whitelist(5)

## NAME
"razor-whitelist" - Format for Vipul's Razor Whitelist

## DESCRIPTION
The razor whitelist is a list of email addresses and body signatures. Emails that match the whitelist are not processed by any of the Razor Agents. That is, They are not checked, reported, or revoked. In the case of razor-check(1), they are instantly marked as non-spam.

## LOCATION
The razor whitelist is usually "<razorhome>/razor-whitelist". The "whitelist" parameter in razor-agent.conf(5) should point to this file. If the "whitelist" parameter in razor-agent.conf(5) is missing, "whitelist" is not used.

## FORMAT
Each whitelist rule is placed on a line of its own. Lines that begin in a `#' character are considered to be comments and are ignored by the parser. A rule contains the name of a header and the string to match against the header, separated by whitespace. Here are some examples:

```
 to bugtraq@securityfocus.com
 cc a.list@somewhere.net
```

These rules imply that when a mail contains "bugtraq@securityfocus.com" in its `to' and `cc' headers, it should be whitelisted. It's worth noting that a match occurs if the address string matches any part of the address.

```
 from @mydomain.com
```

A special rule called `sha1' can be used for whitelisting signatures. For example:

```
 sha1 75f8bcc2357366bbfa9c6ab0b6e5648ed0cf7083
```

whitelists a message with the body of `test'.

## AUTHORS
Vipul Ved Prakash <mail@vipul.net>, and Chad Norwood <chad@samo.org>

## SEE ALSO
razor-agents(1), razor-agent.conf(5), razor-check(1), razor-admin(1), razor-report(1), razor-revoke(1)

## LICENSE
This is free software, distributed under the Artistic License 2.0.


rcsfile

package: rcs

title: rcsfile(5)

summary: format of RCS file

text:
# rcsfile(5)

## NAME
rcsfile - format of RCS file

## DESCRIPTION
An RCS file's contents are described by the grammar below.

The text is free format: space, backspace, tab, newline, vertical tab, form feed, and carriage return (collectively, white space) have no significance except in strings. However, white space cannot appear within an id, num, or sym, and an RCS file must end with a newline.

Strings are enclosed by @. If a string contains a @, it must be doubled; otherwise, strings can contain arbitrary binary data.

The meta syntax uses the following conventions: `|' (bar) separates alternatives; `{' and `}' enclose optional phrases; `{' and `}*' enclose phrases that can be repeated zero or more times; `{' and '}+' enclose phrases that must appear at least once and can be repeated; Terminal symbols are in boldface; nonterminal symbols are in italics.

```
rcstext	::=	admin {delta}* desc {deltatext}*
```

```
admin	::=	head	{num};
		{ branch	{num}; }
		access	{id}*;
		symbols	{sym : num}*;
		locks	{id : num}*;  {strict  ;}
		{ comment	{string}; }
		{ expand	{string}; }
		{ newphrase }*
```

```
delta	::=	num
		date	num;
		author	id;
		state	{id};
		branches	{num}*;
		next	{num};
		{ newphrase }*
```

```
desc	::=	desc	string
```

```
deltatext	::=	num
		log	string
		{ newphrase }*
		text	string
```

```
num	::=	{digit | .}+
```

```
digit	::=	0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
```

```
id	::=	{num} idchar {idchar | num}*
```

```
sym	::=	{digit}* idchar {idchar | digit}*
```

```
idchar	::=	any visible graphic character except special
```

```
special	::=	$ | , | . | : | ; | @
```

```
string	::=	@{any character, with @ doubled}*@
```

```
newphrase	::=	id word* ;
```

```
word	::=	id | num | string | :
```

Identifiers are case sensitive. Keywords are in lower case only. The sets of keywords and identifiers can overlap. In most environments RCS uses the ISO 8859/1 encoding: visible graphic characters are codes 041-176 and 240-377, and white space characters are codes 010-015 and 040.

Dates, which appear after the date keyword, are of the form Y.mm.dd.hh.mm.ss, where Y is the year, mm the month (01-12), dd the day (01-31), hh the hour (00-23), mm the minute (00-59), and ss the second (00-60). Y contains just the last two digits of the year for years from 1900 through 1999, and all the digits of years thereafter. Dates use the Gregorian calendar; times use UTC.

The newphrase productions in the grammar are reserved for future extensions to the format of RCS files. No newphrase will begin with any keyword already in use.

The delta nodes form a tree. All nodes whose numbers consist of a single pair (e.g., 2.3, 2.1, 1.3, etc.) are on the trunk, and are linked through the next field in order of decreasing numbers. The head field in the admin node points to the head of that sequence (i.e., contains the highest pair). The branch node in the admin node indicates the default branch (or revision) for most RCS operations. If empty, the default branch is the highest branch on the trunk.

All delta nodes whose numbers consist of 2n fields (n≥2) (e.g., 3.1.1.1, 2.1.2.2, etc.) are linked as follows. All nodes whose first 2n-1 number fields are identical are linked through the next field in order of increasing numbers. For each such sequence, the delta node whose number is identical to the first 2n-2 number fields of the deltas on that sequence is called the branchpoint. The branches field of a node contains a list of the numbers of the first nodes of all sequences for which it is a branchpoint. This list is ordered in increasing numbers.

The following diagram shows an example of an RCS file's organization.

```
                           Head

                             |

                             |

                             v                        / \

                         ---------                   /   \

   / \          / \      |       |      / \         /     \

  /   \        /   \     |  2.1  |     /   \       /       \

 /     \      /     \    |       |    /     \     /         \
/1.2.1.3\    /1.3.1.1\   |       |   /1.2.2.2\   /1.2.2.1.1.1\
---------    ---------   ---------   ---------   -------------

    ^            ^           |           ^             ^

    |            |           |           |             |

    |            |           v           |             |

   / \           |       ---------      / \            |

  /   \          |       \  1.3  /     /   \           |

 /     \         ---------\     /     /     \-----------
/1.2.1.1\                  \   /     /1.2.2.1\
---------                   \ /      ---------

    ^                        |           ^

    |                        |           |

    |                        v           |

    |                    ---------       |

    |                    \  1.2  /       |

    ----------------------\     /---------

                           \   /

                            \ /

                             |

                             |

                             v

                         ---------

                         \  1.1  /

                          \     /

                           \   /

                            \ /
```

## IDENTIFICATION
Author: Walter F. Tichy, Purdue University, West Lafayette, IN, 47907.

Manual Page Revision: 5.6; Release Date: 1995/06/05.

Copyright © 1982, 1988, 1989 Walter F. Tichy.

Copyright © 1990, 1991, 1992, 1993, 1994, 1995 Paul Eggert.

## SEE ALSO
rcsintro(1), ci(1), co(1), ident(1), rcs(1), rcsclean(1), rcsdiff(1), rcsmerge(1), rlog(1)

Walter F. Tichy, RCS--A System for Version Control, Software--Practice & Experience 15, 7 (July 1985), 637-654.


realmd.conf

package: realmd

title: realmd.conf(5)

summary: Tweak behavior of realmd

text:
# realmd.conf(5)

## NAME
realmd.conf - Tweak behavior of realmd

## CONFIGURATION FILE
realmd can be tweaked by network administrators to act in specific ways. This is done by placing settings in a /etc/realmd.conf. This file does not exist by default. The syntax of this file is the same as an INI file or Desktop Entry file. If the file is changed and realmd is running realmd must be restarted to read the new values.

In general, settings in this file only apply at the point of joining a domain or realm. Once the realm has been setup the settings have no effect. You may choose to configure SSSD[1] or Winbind[2] directly.

Only specify the settings you wish to override in the /etc/realmd.conf file. Settings not specified will be loaded from their packaged defaults which can be found in /usr/lib/realmd/realmd-defaults.conf and /usr/lib/realmd/realmd-distro.conf. Only override the settings below. You may find other settings if you look through the realmd source code. However these are not guaranteed to remain stable.

There are various sections in the config file. Some sections are global topic sections, and are listed below. Other sections are specific to a given realm. These realm specific sections should always contain the domain name in lower case as their section header.

Examples of each setting is found below, including the header of the section it should be placed in. However in the resulting file only include each section once, and combine the various section setting together as lines underneath the section. For example

```
[users]
default-home = /home/%U
default-shell = /bin/bash
```

## ACTIVE-DIRECTORY
These options should go in an [active-directory] section of the /etc/realmd.conf file. Only specify the settings you wish to override.

default-client

Specify the default-client setting in order to control which client software is the preferred default for use with Active Directory.

```
[active-directory]
default-client = sssd
# default-client = winbind
```

The default setting for this is sssd which uses SSSD[1] as the Active Directory client. You can also specify winbind to use Samba Winbind[2]. Some callers of realmd such as the realm command line tool allow specifying which client software should be used. Others, such as GNOME Control Center, simplify choose the default.

You can verify the preferred default client softawre by running the following command. The realm with the preferred client software will be listed first.

```
$ realm discover domain.example.com
domain.example.com

  configured: no

  server-software: active-directory

  client-software: sssd

  type: kerberos

  realm-name: AD.THEWALTER.LAN

  domain-name: ad.thewalter.lan
domain.example.com

  configured: no

  server-software: active-directory

  client-software: winbind

  type: kerberos

  realm-name: AD.THEWALTER.LAN

  domain-name: ad.thewalter.lan
```

use-ldaps

Use the ldaps port when connecting to AD where possible. In general this option is not needed because realmd itself only read public information from the Active Directory domain controller which is available anonymously. The supported membership software products will use encrypted connections protected with GSS-SPNEGO/GSSAPI which offers a comparable level of security than ldaps. This option is only needed if the standard LDAP port (389/tcp) is blocked by a firewall and only the LDAPS port (636/tcp) is available. If this option is set to yes realmd will use the ldaps port when reading the rootDSE and call the adcli membership software with the option --use-ldaps. The Samba base membership currently offers only deprecated ways to enable ldaps. Support will be added in realmd when a new way is available.

os-name

(see below)

os-version

Specify the os-name and/or os-version settings to control the values that are placed in the computer account operatingSystem and operatingSystemVersion attributes. This is an Active Directory specific option.

It is also possible to use the --os-name or --os-version argument of the realm command to override the default values.

```
[active-directory]
os-name = Gentoo Linux
os-version = 9.9.9.9.9
```

## SERVICE
These options should go in an [service] section of the /etc/realmd.conf file. Only specify the settings you wish to override.

automatic-install

Set this to no to disable automatic installation of packages via package-kit.

```
[service]
automatic-install = no
# automatic-install = yes
```

legacy-samba-config

Set this to yes to create a Samba configuration file with id-mapping options used by Samba-3.5 and earlier version.

```
[service]
legacy-samba-config = no
# legacy-samba-config = yes
```

## USERS
These options should go in an [users] section of the /etc/realmd.conf file. Only specify the settings you wish to override.

default-home

Specify the default-home setting in order to control how to set the home directory for accounts that have no home directory explicitly set.

```
[users]
default-home = /home/%U@%D
# default-home = /nfs/home/%D-%U
# default-home = /home/%D/%U
```

The default setting for this is /home/%U@%D. The %D format is replaced by the domain name. The %U format is replaced by the user name. You can verify the home directory for a user by running the following command.

```
$ getent passwd 'DOMAIN/User'
DOMAIN\user:*:13445:13446:Name:/home/DOMAIN/user:/bin/bash
```

Note that in the case of IPA domains, most users already have a home directory configured in the domain. Therefore this configuration setting may rarely show through.

default-shell

Specify the default-shell setting in order to control how to set the Unix shell for accounts that have no shell explicitly set.

```
[users]
default-shell = /bin/bash
# default-shell = /bin/sh
```

The default setting for this is /bin/bash shell. The shell should be a valid shell if you expect the domain users be able to log in. For example it should exist in the /etc/shells file. You can verify the shell for a user by running the following command.

```
$ getent passwd 'DOMAIN/User'
DOMAIN\user:*:13445:13446:Name:/home/DOMAIN/user:/bin/bash
```

Note that in the case of IPA domains, most users already have a shell configured in the domain. Therefore this configuration setting may rarely show through.

## PATHS
These options should go in an [paths] section of the /etc/realmd.conf file. Only specify the settings you wish to override.

krb5.conf

Path to the Kerberos configuration file, typically /etc/krb5.conf. It can also be the path of a file included by /etc/krb5.conf, e.g. /etc/krb5.conf.d/realmd_settings, if the file does not exist if will be created.

```
[paths]
krb5.conf = /etc/krb5.conf.d/realmd_settings
```

When joining an Active Directory domain realmd will set the default_realm and udp_preference_limit options in the Kerberos configuration:

```
default_realm = DOMAIN.EXAMPLE.COM
udp_preference_limit = 0
```

The default_realm option is e.g. needed when trying to resolve enterprise principals and makes it more convenient to request Kerberos tickets for users of the default realm. Instead of specifying the whole principal just kinit username can be used. With udp_preference_limit = 0 always TCP will be used to send Kerberos request to domain controller. This is useful in Active Directory environments because Kerberos will typically switch to TCP after initially starting with UDP because AD Kerberos tickets are often larger than UDP can handle. Using TCP by default will avoid those extra UDP round trips. Additionally it helps to avoid issues with password changes when the DC does not reply soon enough and the client will send a second UDP request. The DC might reply with a reply error to the second request although the original password change request was successful and the client will no know if the request was successful or not. When using TCP this cannot happen because the client will never send a second request but waits on the connection until the server replies.

Please note that realmd will not remove those options while leaving the domain since they are useful in general. When joining a new domain realmd will of course overwrite default_realm.

## REALM SPECIFIC SETTINGS
These options should go in an section with the same name as the realm in the /etc/realmd.conf file. For example for the domain.example.com domain the section would be called [domain.example.com]. To figure out the canonical name for a realm use the realm command:

```
$ realm discover --name-only DOMAIN.example.com
domain.example.com
...
```

Only specify the settings you wish to override.

computer-ou

Specify this option to create directory computer accounts in a location other than the default. This currently only works with Active Directory domains.

```
[domain.example.com]
computer-ou = OU=Linux Computers,DC=domain,DC=example,DC=com
# computer-ou = OU=Linux Computers,
```

Specify the OU as an LDAP DN. It can be relative to the Root DSE, or a complete LDAP DN. Obviously the OU must exist in the directory. It is also possible to use the --computer-ou argument of the realm command to create a computer account at a specific OU.

computer-name

This option only applied to Active Directory realms. Specify this option to override the default name used when creating the computer account. The system's FQDN will still be saved in the dNSHostName attribute.

```
[domain.example.com]
computer-name = SERVER01
```

Specify the name as a string of 15 or fewer characters that is a valid NetBIOS computer name. It is also possible to use the --computer-name argument of the realm command to override the default computer account name.

user-principal

Set the user-principal to yes to create userPrincipalName attribute for the computer accounts in the realm. The exact value depends on the defaults of the used membership software. To have full control over the value please use the --user-principal option of the realm command, see realm(8) for details.

```
[domain.example.com]
user-principal = yes
```

automatic-join

This option only applies to Active Directory realms. This option is off by default. In Active Directory domains, a computer account can be preset with a known computer account password. This can be used for automatic joins without authentication. When automatic joins are used there is no mutual authentication between the machine and the domain during the join process.

```
[domain.example.com]
automatic-join = yes
```

automatic-id-mapping

This option is on by default for Active Directory realms. Turn it off to use UID and GID information stored in the directory (as-per RFC2307) rather than automatically generating UID and GID numbers. This option only makes sense for Active Directory realms.

```
[domain.example.com]
automatic-id-mapping = no
# automatic-id-mapping = yes
```

manage-system

This option is on by default. Normally joining a realm affects many aspects of the configuration and management of the system. Turning this off limits the interaction with the realm or domain to authentication and identity.

```
[domain.example.com]
manage-system = no
# manage-system = yes
```

When this option is turned on realmd defaults to using domain policy to control who can log into this machine. Further adjustments to login policy can be made with the realm permit command.

fully-qualified-names

This option is on by default. If turned off then realm user and group names are not qualified their name. This may cause them to conflict with local user and group names.

```
[domain.example.com]
fully-qualified-names = no
# fully-qualified-names = yes
```

## SEE ALSO
realm(8)

## AUTHOR
Stef Walter <stef@thewalter.net>

Maintainer

## NOTES
1.

SSSD

https://fedorahosted.org/sssd/

2.

Winbind

http://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/winbind.html


recoll.conf

package: recoll

title: recoll.conf(5)

text:
# recoll.conf(5)

## NAME
recoll.conf - main personal configuration file for Recoll

## DESCRIPTION
This file defines the index configuration for the Recoll full-text search system.

The system-wide configuration file is normally located inside /usr/[local]/share/recoll/examples. Any parameter set in the common file may be overridden by setting it in the personal configuration file, by default: $HOME/.recoll/recoll.conf

Please note while I try to keep this manual page reasonably up to date, it will frequently lag the current state of the software. The best source of information about the configuration are the comments in the system-wide configuration file or the user manual which you can access from the recoll GUI help menu or on the recoll web site.

A short extract of the file might look as follows:

```
# Space-separated list of directories to index.
topdirs =  ~/docs /usr/share/doc
[~/somedirectory-with-utf8-txt-files]
defaultcharset = utf-8

```

There are three kinds of lines:

- Comment or empty

- Parameter affectation

- Section definition

Empty lines or lines beginning with # are ignored.

Affectation lines are in the form 'name = value'.

Section lines allow redefining a parameter for a directory subtree. Some of the parameters used for indexing are looked up hierarchically from the more to the less specific. Not all parameters can be meaningfully redefined, this is specified for each in the next section.

The tilde character (~) is expanded in file names to the name of the user's home directory.

Where values are lists, white space is used for separation, and elements with embedded spaces can be quoted with double-quotes.

## OPTIONS
topdirs = string

Space-separated list of files or directories to recursively index. Default to ~ (indexes $HOME). You can use symbolic links in the list, they will be followed, independently of the value of the followLinks variable.

monitordirs = string

Space-separated list of files or directories to monitor for updates. When running the real-time indexer, this allows monitoring only a subset of the whole indexed area. The elements must be included in the tree defined by the 'topdirs' members.

skippedNames = string

Files and directories which should be ignored. White space separated list of wildcard patterns (simple ones, not paths, must contain no / ), which will be tested against file and directory names. The list in the default configuration does not exclude hidden directories (names beginning with a dot), which means that it may index quite a few things that you do not want. On the other hand, email user agents like Thunderbird usually store messages in hidden directories, and you probably want this indexed. One possible solution is to have ".*" in "skippedNames", and add things like "~/.thunderbird" "~/.evolution" to "topdirs". Not even the file names are indexed for patterns in this list, see the "noContentSuffixes" variable for an alternative approach which indexes the file names. Can be redefined for any subtree.

skippedNames- = string

List of name endings to remove from the default skippedNames list.

skippedNames+ = string

List of name endings to add to the default skippedNames list.

onlyNames = string

Regular file name filter patterns If this is set, only the file names not in skippedNames and matching one of the patterns will be considered for indexing. Can be redefined per subtree. Does not apply to directories.

noContentSuffixes = string

List of name endings (not necessarily dot-separated suffixes) for which we don't try MIME type identification, and don't uncompress or index content. Only the names will be indexed. This complements the now obsoleted recoll_noindex list from the mimemap file, which will go away in a future release (the move from mimemap to recoll.conf allows editing the list through the GUI). This is different from skippedNames because these are name ending matches only (not wildcard patterns), and the file name itself gets indexed normally. This can be redefined for subdirectories.

noContentSuffixes- = string

List of name endings to remove from the default noContentSuffixes list.

noContentSuffixes+ = string

List of name endings to add to the default noContentSuffixes list.

skippedPaths = string

Absolute paths we should not go into. Space-separated list of wildcard expressions for absolute filesystem paths. Must be defined at the top level of the configuration file, not in a subsection. Can contain files and directories. The database and configuration directories will automatically be added. The expressions are matched using 'fnmatch(3)' with the FNM_PATHNAME flag set by default. This means that '/' characters must be matched explicitly. You can set 'skippedPathsFnmPathname' to 0 to disable the use of FNM_PATHNAME (meaning that '/*/dir3' will match '/dir1/dir2/dir3'). The default value contains the usual mount point for removable media to remind you that it is a bad idea to have Recoll work on these (esp. with the monitor: media gets indexed on mount, all data gets erased on unmount). Explicitly adding '/media/xxx' to the 'topdirs' variable will override this.

skippedPathsFnmPathname = bool

Set to 0 to override use of FNM_PATHNAME for matching skipped paths.

nowalkfn = string

File name which will cause its parent directory to be skipped. Any directory containing a file with this name will be skipped as if it was part of the skippedPaths list. Ex: .recoll-noindex

daemSkippedPaths = string

skippedPaths equivalent specific to real time indexing. This enables having parts of the tree which are initially indexed but not monitored. If daemSkippedPaths is not set, the daemon uses skippedPaths.

zipUseSkippedNames = bool

Use skippedNames inside Zip archives. Fetched directly by the rclzip.py handler. Skip the patterns defined by skippedNames inside Zip archives. Can be redefined for subdirectories. See https://www.recoll.org/faqsandhowtos/FilteringOutZipArchiveMembers.html

zipSkippedNames = string

Space-separated list of wildcard expressions for names that should be ignored inside zip archives. This is used directly by the zip handler. If zipUseSkippedNames is not set, zipSkippedNames defines the patterns to be skipped inside archives. If zipUseSkippedNames is set, the two lists are concatenated and used. Can be redefined for subdirectories. See https://www.recoll.org/faqsandhowtos/FilteringOutZipArchiveMembers.html

followLinks = bool

Follow symbolic links during indexing. The default is to ignore symbolic links to avoid multiple indexing of linked files. No effort is made to avoid duplication when this option is set to true. This option can be set individually for each of the 'topdirs' members by using sections. It can not be changed below the 'topdirs' level. Links in the 'topdirs' list itself are always followed.

indexedmimetypes = string

Restrictive list of indexed mime types. Normally not set (in which case all supported types are indexed). If it is set, only the types from the list will have their contents indexed. The names will be indexed anyway if indexallfilenames is set (default). MIME type names should be taken from the mimemap file (the values may be different from xdg-mime or file -i output in some cases). Can be redefined for subtrees.

excludedmimetypes = string

List of excluded MIME types. Lets you exclude some types from indexing. MIME type names should be taken from the mimemap file (the values may be different from xdg-mime or file -i output in some cases) Can be redefined for subtrees.

nomd5types = string

Don't compute md5 for these types. md5 checksums are used only for deduplicating results, and can be very expensive to compute on multimedia or other big files. This list lets you turn off md5 computation for selected types. It is global (no redefinition for subtrees). At the moment, it only has an effect for external handlers (exec and execm). The file types can be specified by listing either MIME types (e.g. audio/mpeg) or handler names (e.g. rclaudio.py).

compressedfilemaxkbs = int

Size limit for compressed files. We need to decompress these in a temporary directory for identification, which can be wasteful in some cases. Limit the waste. Negative means no limit. 0 results in no processing of any compressed file. Default 50 MB.

textfilemaxmbs = int

Size limit for text files. Mostly for skipping monster logs. Default 20 MB.

indexallfilenames = bool

Index the file names of unprocessed files Index the names of files the contents of which we don't index because of an excluded or unsupported MIME type.

usesystemfilecommand = bool

Use a system command for file MIME type guessing as a final step in file type identification This is generally useful, but will usually cause the indexing of many bogus 'text' files. See 'systemfilecommand' for the command used.

systemfilecommand = string

Command used to guess MIME types if the internal methods fails This should be a "file -i" workalike. The file path will be added as a last parameter to the command line. "xdg-mime" works better than the traditional "file" command, and is now the configured default (with a hard-coded fallback to "file")

processwebqueue = bool

Decide if we process the Web queue. The queue is a directory where the Recoll Web browser plugins create the copies of visited pages.

textfilepagekbs = int

Page size for text files. If this is set, text/plain files will be divided into documents of approximately this size. Will reduce memory usage at index time and help with loading data in the preview window at query time. Particularly useful with very big files, such as application or system logs. Also see textfilemaxmbs and compressedfilemaxkbs.

membermaxkbs = int

Size limit for archive members. This is passed to the filters in the environment as RECOLL_FILTER_MAXMEMBERKB.

indexStripChars = bool

Decide if we store character case and diacritics in the index. If we do, searches sensitive to case and diacritics can be performed, but the index will be bigger, and some marginal weirdness may sometimes occur. The default is a stripped index. When using multiple indexes for a search, this parameter must be defined identically for all. Changing the value implies an index reset.

indexStoreDocText = bool

Decide if we store the documents' text content in the index. Storing the text allows extracting snippets from it at query time, instead of building them from index position data. Newer Xapian index formats have rendered our use of positions list unacceptably slow in some cases. The last Xapian index format with good performance for the old method is Chert, which is default for 1.2, still supported but not default in 1.4 and will be dropped in 1.6. The stored document text is translated from its original format to UTF-8 plain text, but not stripped of upper-case, diacritics, or punctuation signs. Storing it increases the index size by 10-20% typically, but also allows for nicer snippets, so it may be worth enabling it even if not strictly needed for performance if you can afford the space. The variable only has an effect when creating an index, meaning that the xapiandb directory must not exist yet. Its exact effect depends on the Xapian version. For Xapian 1.4, if the variable is set to 0, the Chert format will be used, and the text will not be stored. If the variable is 1, Glass will be used, and the text stored. For Xapian 1.2, and for versions after 1.5 and newer, the index format is always the default, but the variable controls if the text is stored or not, and the abstract generation method. With Xapian 1.5 and later, and the variable set to 0, abstract generation may be very slow, but this setting may still be useful to save space if you do not use abstract generation at all.

nonumbers = bool

Decides if terms will be generated for numbers. For example "123", "1.5e6", 192.168.1.4, would not be indexed if nonumbers is set ("value123" would still be). Numbers are often quite interesting to search for, and this should probably not be set except for special situations, ie, scientific documents with huge amounts of numbers in them, where setting nonumbers will reduce the index size. This can only be set for a whole index, not for a subtree.

dehyphenate = bool

Determines if we index 'coworker' also when the input is 'co-worker'. This is new in version 1.22, and on by default. Setting the variable to off allows restoring the previous behaviour.

backslashasletter = bool

Process backslash as normal letter. This may make sense for people wanting to index TeX commands as such but is not of much general use.

underscoreasletter = bool

Process underscore as normal letter. This makes sense in so many cases that one wonders if it should not be the default.

maxtermlength = int

Maximum term length. Words longer than this will be discarded. The default is 40 and used to be hard-coded, but it can now be adjusted. You need an index reset if you change the value.

nocjk = bool

Decides if specific East Asian (Chinese Korean Japanese) characters/word splitting is turned off. This will save a small amount of CPU if you have no CJK documents. If your document base does include such text but you are not interested in searching it, setting nocjk may be a significant time and space saver.

cjkngramlen = int

This lets you adjust the size of n-grams used for indexing CJK text. The default value of 2 is probably appropriate in most cases. A value of 3 would allow more precision and efficiency on longer words, but the index will be approximately twice as large.

indexstemminglanguages = string

Languages for which to create stemming expansion data. Stemmer names can be found by executing 'recollindex -l', or this can also be set from a list in the GUI. The values are full language names, e.g. english, french...

defaultcharset = string

Default character set. This is used for files which do not contain a character set definition (e.g.: text/plain). Values found inside files, e.g. a 'charset' tag in HTML documents, will override it. If this is not set, the default character set is the one defined by the NLS environment ($LC_ALL, $LC_CTYPE, $LANG), or ultimately iso-8859-1 (cp-1252 in fact). If for some reason you want a general default which does not match your LANG and is not 8859-1, use this variable. This can be redefined for any sub-directory.

unac_except_trans = string

A list of characters, encoded in UTF-8, which should be handled specially when converting text to unaccented lowercase. For example, in Swedish, the letter a with diaeresis has full alphabet citizenship and should not be turned into an a. Each element in the space-separated list has the special character as first element and the translation following. The handling of both the lowercase and upper-case versions of a character should be specified, as appartenance to the list will turn-off both standard accent and case processing. The value is global and affects both indexing and querying. Examples:

Swedish:

unac_except_trans = ää Ää öö Öö üü Üü ßss œoe Œoe æae Æae ﬀff ﬁfi ﬂfl åå Åå

German:

unac_except_trans = ää Ää öö Öö üü Üü ßss œoe Œoe æae Æae ﬀff ﬁfi ﬂfl

French: you probably want to decompose oe and ae and nobody would type a German ß

unac_except_trans = ßss œoe Œoe æae Æae ﬀff ﬁfi ﬂfl

The default for all until someone protests follows. These decompositions are not performed by unac, but it is unlikely that someone would type the composed forms in a search.

unac_except_trans = ßss œoe Œoe æae Æae ﬀff ﬁfi ﬂfl

maildefcharset = string

Overrides the default character set for email messages which don't specify one. This is mainly useful for readpst (libpst) dumps, which are utf-8 but do not say so.

localfields = string

Set fields on all files (usually of a specific fs area). Syntax is the usual: name = value ; attr1 = val1 ; [...] value is empty so this needs an initial semi-colon. This is useful, e.g., for setting the rclaptg field for application selection inside mimeview.

testmodifusemtime = bool

Use mtime instead of ctime to test if a file has been modified. The time is used in addition to the size, which is always used. Setting this can reduce re-indexing on systems where extended attributes are used (by some other application), but not indexed, because changing extended attributes only affects ctime. Notes: - This may prevent detection of change in some marginal file rename cases (the target would need to have the same size and mtime). - You should probably also set noxattrfields to 1 in this case, except if you still prefer to perform xattr indexing, for example if the local file update pattern makes it of value (as in general, there is a risk for pure extended attributes updates without file modification to go undetected). Perform a full index reset after changing this.

noxattrfields = bool

Disable extended attributes conversion to metadata fields. This probably needs to be set if testmodifusemtime is set.

metadatacmds = string

Define commands to gather external metadata, e.g. tmsu tags. There can be several entries, separated by semi-colons, each defining which field name the data goes into and the command to use. Don't forget the initial semi-colon. All the field names must be different. You can use aliases in the "field" file if necessary. As a not too pretty hack conceded to convenience, any field name beginning with "rclmulti" will be taken as an indication that the command returns multiple field values inside a text blob formatted as a recoll configuration file ("fieldname = fieldvalue" lines). The rclmultixx name will be ignored, and field names and values will be parsed from the data. Example: metadatacmds = ; tags = tmsu tags %f; rclmulti1 = cmdOutputsConf %f

cachedir = dfn

Top directory for Recoll data. Recoll data directories are normally located relative to the configuration directory (e.g. ~/.recoll/xapiandb, ~/.recoll/mboxcache). If 'cachedir' is set, the directories are stored under the specified value instead (e.g. if cachedir is ~/.cache/recoll, the default dbdir would be ~/.cache/recoll/xapiandb). This affects dbdir, webcachedir, mboxcachedir, aspellDicDir, which can still be individually specified to override cachedir. Note that if you have multiple configurations, each must have a different cachedir, there is no automatic computation of a subpath under cachedir.

maxfsoccuppc = int

Maximum file system occupation over which we stop indexing. The value is a percentage, corresponding to what the "Capacity" df output column shows. The default value is 0, meaning no checking.

dbdir = dfn

Xapian database directory location. This will be created on first indexing. If the value is not an absolute path, it will be interpreted as relative to cachedir if set, or the configuration directory (-c argument or $RECOLL_CONFDIR). If nothing is specified, the default is then ~/.recoll/xapiandb/

idxstatusfile = fn

Name of the scratch file where the indexer process updates its status. Default: idxstatus.txt inside the configuration directory.

mboxcachedir = dfn

Directory location for storing mbox message offsets cache files. This is normally 'mboxcache' under cachedir if set, or else under the configuration directory, but it may be useful to share a directory between different configurations.

mboxcacheminmbs = int

Minimum mbox file size over which we cache the offsets. There is really no sense in caching offsets for small files. The default is 5 MB.

mboxmaxmsgmbs = int

Maximum mbox member message size in megabytes. Size over which we assume that the mbox format is bad or we misinterpreted it, at which point we just stop processing the file.

webcachedir = dfn

Directory where we store the archived web pages. This is only used by the web history indexing code Default: cachedir/webcache if cachedir is set, else $RECOLL_CONFDIR/webcache

webcachemaxmbs = int

Maximum size in MB of the Web archive. This is only used by the web history indexing code. Default: 40 MB. Reducing the size will not physically truncate the file.

webqueuedir = fn

The path to the Web indexing queue. This used to be hard-coded in the old plugin as ~/.recollweb/ToIndex so there would be no need or possibility to change it, but the WebExtensions plugin now downloads the files to the user Downloads directory, and a script moves them to webqueuedir. The script reads this value from the config so it has become possible to change it.

webdownloadsdir = fn

The path to browser downloads directory. This is where the new browser add-on extension has to create the files. They are then moved by a script to webqueuedir.

aspellDicDir = dfn

Aspell dictionary storage directory location. The aspell dictionary (aspdict.(lang).rws) is normally stored in the directory specified by cachedir if set, or under the configuration directory.

filtersdir = dfn

Directory location for executable input handlers. If RECOLL_FILTERSDIR is set in the environment, we use it instead. Defaults to $prefix/share/recoll/filters. Can be redefined for subdirectories.

iconsdir = dfn

Directory location for icons. The only reason to change this would be if you want to change the icons displayed in the result list. Defaults to $prefix/share/recoll/images

idxflushmb = int

Threshold (megabytes of new data) where we flush from memory to disk index. Setting this allows some control over memory usage by the indexer process. A value of 0 means no explicit flushing, which lets Xapian perform its own thing, meaning flushing every $XAPIAN_FLUSH_THRESHOLD documents created, modified or deleted: as memory usage depends on average document size, not only document count, the Xapian approach is is not very useful, and you should let Recoll manage the flushes. The program compiled value is 0. The configured default value (from this file) is now 50 MB, and should be ok in many cases. You can set it as low as 10 to conserve memory, but if you are looking for maximum speed, you may want to experiment with values between 20 and 200. In my experience, values beyond this are always counterproductive. If you find otherwise, please drop me a note.

filtermaxseconds = int

Maximum external filter execution time in seconds. Default 1200 (20mn). Set to 0 for no limit. This is mainly to avoid infinite loops in postscript files (loop.ps)

filtermaxmbytes = int

Maximum virtual memory space for filter processes (setrlimit(RLIMIT_AS)), in megabytes. Note that this includes any mapped libs (there is no reliable Linux way to limit the data space only), so we need to be a bit generous here. Anything over 2000 will be ignored on 32 bits machines. The previous default value of 2000 would prevent java pdftk to work when executed from Python rclpdf.py.

thrQSizes = string

Stage input queues configuration. There are three internal queues in the indexing pipeline stages (file data extraction, terms generation, index update). This parameter defines the queue depths for each stage (three integer values). If a value of -1 is given for a given stage, no queue is used, and the thread will go on performing the next stage. In practise, deep queues have not been shown to increase performance. Default: a value of 0 for the first queue tells Recoll to perform autoconfiguration based on the detected number of CPUs (no need for the two other values in this case). Use thrQSizes = -1 -1 -1 to disable multithreading entirely.

thrTCounts = string

Number of threads used for each indexing stage. The three stages are: file data extraction, terms generation, index update). The use of the counts is also controlled by some special values in thrQSizes: if the first queue depth is 0, all counts are ignored (autoconfigured); if a value of -1 is used for a queue depth, the corresponding thread count is ignored. It makes no sense to use a value other than 1 for the last stage because updating the Xapian index is necessarily single-threaded (and protected by a mutex).

loglevel = int

Log file verbosity 1-6. A value of 2 will print only errors and warnings. 3 will print information like document updates, 4 is quite verbose and 6 very verbose.

logfilename = fn

Log file destination. Use 'stderr' (default) to write to the console.

idxloglevel = int

Override loglevel for the indexer.

idxlogfilename = fn

Override logfilename for the indexer.

daemloglevel = int

Override loglevel for the indexer in real time mode. The default is to use the idx... values if set, else the log... values.

daemlogfilename = fn

Override logfilename for the indexer in real time mode. The default is to use the idx... values if set, else the log... values.

pyloglevel = int

Override loglevel for the python module.

pylogfilename = fn

Override logfilename for the python module.

orgidxconfdir = dfn

Original location of the configuration directory. This is used exclusively for movable datasets. Locating the configuration directory inside the directory tree makes it possible to provide automatic query time path translations once the data set has moved (for example, because it has been mounted on another location).

curidxconfdir = dfn

Current location of the configuration directory. Complement orgidxconfdir for movable datasets. This should be used if the configuration directory has been copied from the dataset to another location, either because the dataset is readonly and an r/w copy is desired, or for performance reasons. This records the original moved location before copy, to allow path translation computations. For example if a dataset originally indexed as '/home/me/mydata/config' has been mounted to '/media/me/mydata', and the GUI is running from a copied configuration, orgidxconfdir would be '/home/me/mydata/config', and curidxconfdir (as set in the copied configuration) would be '/media/me/mydata/config'.

idxrundir = dfn

Indexing process current directory. The input handlers sometimes leave temporary files in the current directory, so it makes sense to have recollindex chdir to some temporary directory. If the value is empty, the current directory is not changed. If the value is (literal) tmp, we use the temporary directory as set by the environment (RECOLL_TMPDIR else TMPDIR else /tmp). If the value is an absolute path to a directory, we go there.

checkneedretryindexscript = fn

Script used to heuristically check if we need to retry indexing files which previously failed. The default script checks the modified dates on /usr/bin and /usr/local/bin. A relative path will be looked up in the filters dirs, then in the path. Use an absolute path to do otherwise.

recollhelperpath = string

Additional places to search for helper executables. This is only used on Windows for now.

idxabsmlen = int

Length of abstracts we store while indexing. Recoll stores an abstract for each indexed file. The text can come from an actual 'abstract' section in the document or will just be the beginning of the document. It is stored in the index so that it can be displayed inside the result lists without decoding the original file. The idxabsmlen parameter defines the size of the stored abstract. The default value is 250 bytes. The search interface gives you the choice to display this stored text or a synthetic abstract built by extracting text around the search terms. If you always prefer the synthetic abstract, you can reduce this value and save a little space.

idxmetastoredlen = int

Truncation length of stored metadata fields. This does not affect indexing (the whole field is processed anyway), just the amount of data stored in the index for the purpose of displaying fields inside result lists or previews. The default value is 150 bytes which may be too low if you have custom fields.

idxtexttruncatelen = int

Truncation length for all document texts. Only index the beginning of documents. This is not recommended except if you are sure that the interesting keywords are at the top and have severe disk space issues.

aspellLanguage = string

Language definitions to use when creating the aspell dictionary. The value must match a set of aspell language definition files. You can type "aspell dicts" to see a list The default if this is not set is to use the NLS environment to guess the value. The values are the 2-letter language codes (e.g. 'en', 'fr'...)

aspellAddCreateParam = string

Additional option and parameter to aspell dictionary creation command. Some aspell packages may need an additional option (e.g. on Debian Jessie: --local-data-dir=/usr/lib/aspell). See Debian bug 772415.

aspellKeepStderr = bool

Set this to have a look at aspell dictionary creation errors. There are always many, so this is mostly for debugging.

noaspell = bool

Disable aspell use. The aspell dictionary generation takes time, and some combinations of aspell version, language, and local terms, result in aspell crashing, so it sometimes makes sense to just disable the thing.

monauxinterval = int

Auxiliary database update interval. The real time indexer only updates the auxiliary databases (stemdb, aspell) periodically, because it would be too costly to do it for every document change. The default period is one hour.

monixinterval = int

Minimum interval (seconds) between processings of the indexing queue. The real time indexer does not process each event when it comes in, but lets the queue accumulate, to diminish overhead and to aggregate multiple events affecting the same file. Default 30 S.

mondelaypatterns = string

Timing parameters for the real time indexing. Definitions for files which get a longer delay before reindexing is allowed. This is for fast-changing files, that should only be reindexed once in a while. A list of wildcardPattern:seconds pairs. The patterns are matched with fnmatch(pattern, path, 0) You can quote entries containing white space with double quotes (quote the whole entry, not the pattern). The default is empty. Example: mondelaypatterns = *.log:20 "*with spaces.*:30"

idxniceprio = int

"nice" process priority for the indexing processes. Default: 19 (lowest) Appeared with 1.26.5. Prior versions were fixed at 19.

monioniceclass = int

ionice class for the indexing process. Despite the misleading name, and on platforms where this is supported, this affects all indexing processes, not only the real time/monitoring ones. The default value is 3 (use lowest "Idle" priority).

monioniceclassdata = string

ionice class level parameter if the class supports it. The default is empty, as the default "Idle" class has no levels.

autodiacsens = bool

auto-trigger diacritics sensitivity (raw index only). IF the index is not stripped, decide if we automatically trigger diacritics sensitivity if the search term has accented characters (not in unac_except_trans). Else you need to use the query language and the "D" modifier to specify diacritics sensitivity. Default is no.

autocasesens = bool

auto-trigger case sensitivity (raw index only). IF the index is not stripped (see indexStripChars), decide if we automatically trigger character case sensitivity if the search term has upper-case characters in any but the first position. Else you need to use the query language and the "C" modifier to specify character-case sensitivity. Default is yes.

maxTermExpand = int

Maximum query expansion count for a single term (e.g.: when using wildcards). This only affects queries, not indexing. We used to not limit this at all (except for filenames where the limit was too low at 1000), but it is unreasonable with a big index. Default 10000.

maxXapianClauses = int

Maximum number of clauses we add to a single Xapian query. This only affects queries, not indexing. In some cases, the result of term expansion can be multiplicative, and we want to avoid eating all the memory. Default 50000.

snippetMaxPosWalk = int

Maximum number of positions we walk while populating a snippet for the result list. The default of 1,000,000 may be insufficient for very big documents, the consequence would be snippets with possibly meaning-altering missing words.

pdfocr = bool

Attempt OCR of PDF files with no text content. This can be defined in subdirectories. The default is off because OCR is so very slow.

pdfattach = bool

Enable PDF attachment extraction by executing pdftk (if available). This is normally disabled, because it does slow down PDF indexing a bit even if not one attachment is ever found.

pdfextrameta = string

Extract text from selected XMP metadata tags. This is a space-separated list of qualified XMP tag names. Each element can also include a translation to a Recoll field name, separated by a '|' character. If the second element is absent, the tag name is used as the Recoll field names. You will also need to add specifications to the "fields" file to direct processing of the extracted data.

pdfextrametafix = fn

Define name of XMP field editing script. This defines the name of a script to be loaded for editing XMP field values. The script should define a 'MetaFixer' class with a metafix() method which will be called with the qualified tag name and value of each selected field, for editing or erasing. A new instance is created for each document, so that the object can keep state for, e.g. eliminating duplicate values.

ocrprogs = string

OCR modules to try. The top OCR script will try to load the corresponding modules in order and use the first which reports being capable of performing OCR on the input file. Modules for tesseract (tesseract) and ABBYY FineReader (abbyy) are present in the standard distribution. For compatibility with the previous version, if this is not defined at all, the default value is "tesseract". Use an explicit empty value if needed. A value of "abbyy tesseract" will try everything.

ocrcachedir = dfn

Location for caching OCR data. The default if this is empty or undefined is to store the cached OCR data under $RECOLL_CONFDIR/ocrcache.

tesseractlang = string

Language to assume for tesseract OCR. Important for improving the OCR accuracy. This can also be set through the contents of a file in the currently processed directory. See the rclocrtesseract.py script. Example values: eng, fra... See the tesseract documentation.

tesseractcmd = fn

Path for the tesseract command. Do not quote. This is mostly useful on Windows, or for specifying a non-default tesseract command. E.g. on Windows. tesseractcmd = C:/Program Files (x86)/Tesseract-OCR/tesseract.exe

abbyylang = string

Language to assume for abbyy OCR. Important for improving the OCR accuracy. This can also be set through the contents of a file in the currently processed directory. See the rclocrabbyy.py script. Typical values: English, French... See the ABBYY documentation.

abbyycmd = fn

Path for the abbyy command The ABBY directory is usually not in the path, so you should set this.

mhmboxquirks = string

Enable thunderbird/mozilla-seamonkey mbox format quirks Set this for the directory where the email mbox files are stored.

## SEE ALSO
recollindex(1) recoll(1)


reportbug.conf

package: reportbug-debian

title: reportbug.conf(5)

text:
# reportbug.conf(5)

## NAME
reportbug.conf - The configuration file for reportbug

## SYNOPSIS
/etc/reportbug.conf - The configuration file for reportbug, a program designed to report bugs in the Debian distribution

## DESCRIPTION
This manual page describes the layout of the reportbug and querybts configuration file and the available configuration options. The default location of the file is /etc/reportbug.conf and the options may be overriding in $HOME/.reportbugrc (which follows the same format as reportbug.conf).

Please note that any configuration file has to be a valid UTF-8 document, and not in a different locale; this is particularly important in situations where localized characters have to be used (like for realname).

## FILE FORMAT
Configuration options can be specified in the form

option-name option-value

True/False (boolean) options can be specified as

boolean-option

(if it's present, it's a True).

Usually, no-option will disable option if option is boolean.

Options can be specified in any order.

## OPTIONS
The summary of possible options (in alphabetical order) is as follows:

bts

The bug tracking system to use, see reportbug --bts=help for a list of currently supported BTSes.

cc (boolean)

Whether the reporter should be Cc:ed on the bug report.

check-available (boolean)

Whether packages.debian.org should be queried for newer releases of the package. In advanced and expert mode, incoming.debian.org and http://ftp-master.debian.org/new.html are also checked.

compress (boolean)

Whether modified configuration files included in the bug report should be stripped down.

config-files (boolean)

Whether modified configuration files should be included with the bug report.

editor

The editor to use to edit the bug report. Example: editor "emacs -nw"

email

Default From address of the bug email (override with environment variables, see reportbug(1)). Example: email "humberto@example.com"

envelopefrom

Specify the Envelope From mail header (also known as Return-path); by default it's the From address but it can be selected a different one in case the MTA doesn't canonicalize local users to public addresses.

list-cc-me (boolean)

Send a carbon copy of the report to your automatically detected email address after a report number is assigned, like the --list-cc-me option.

mbox_reader_cmd

Specify a command to open the bug reports mbox file. You can use %s to substitute the mbox file to be used, and %% to insert a literal percent sign. If no %s is specified, the mbox file name is supplied at the end of the argument list. Example: mbox_reader_cmd "mutt -f %s"

header

Additional headers to add to the bug email. Like: header "X-Debbugs-CC: debian-qa@lists.debian.org"

header "X-Silly-Header: I haven't edited my /etc/reportbug.conf"

header "X-Debbugs-No-Ack: please" # to suppress acknowledgments

Note that setting additional headers may not work reliably if the bug email is passed to an external MUA for submission.

http_proxy

Default HTTP proxy used to query the BTS (override with environment variables, see reportbug(1)). Example: http_proxy http://proxy.example.com:3128/

justification

The justification in case of a Release Critical bug (severity either 'critical', 'serious' or 'grave'). Example: justification "text here"

keyid

The GPG key to use, if different from the default one on the system. Example: keyid 12345678

maintonly

See the --maintonly entry in reportbug(1).

max_attachment_size

The max size any attachment can have. Example: max_attachment_size 5000000

mh

Use the mh mailer.

mirror

The address of a BTS mirror. Example: mirror http://mirror.address/

mode [novice|standard|advanced|expert]

The default operating mode for reportbug(1).

mta

The path to the MTA used. Any SMTP server on Debian should be OK with the default: mta /usr/sbin/sendmail

mua

The mail user agent to use (the default is empty, to use an internal mailer). Example: mua 'mutt -H'

mutt

Use the mutt mailer.

nmh

Use the nmh mailer.

no-check-uid (boolean)

Disables checking whether the UIDs are outside admin range (root is still checked).

no-debconf (boolean)

Disables adding the debconf-show output to the bug report.

no-query-source (boolean)

Disables querying the source packages for bugs.

offline

Disables all external queries.

outfile

Output the full email contents (including headers) to the specified file instead of sending it. Example: outfile "~/reportbug_report"

paranoid

Paranoid mode: print the whole email envelope before sending it.

printonly

Print the report on screen, don't sent it.

query-bts (boolean)

Whether the BTS should be queried for existing bug reports.

quiet

See the --report-quiet entry in reportbug(1).

realname

The default real-name in the From address of the bug email (override with environment variables, see reportbug(1)). Example: realname "Humberto Flores III"

replyto

The default Reply-To in the bug email (override with environment variables, see reportbug(1). Example: replyto "Humberto Flores <humflores@example.org>"

severity [critical|grave|serious|important|normal|minor|wishlist]

The default severity level of the bug reported. Setting this in the configuration file will disable prompting while running reportbug.

sign [gpg|pgp|gnupg|none]

Program used to digitally sign bug reports automatically ('none' to disable it).

smtphost

Use an MTA different from /usr/sbin/sendmail. A port number other than 25 can also be specified. Example: smtphost mail.example.com:2525

Use "smtphost localhost" to enable the internal MTA.

smtppasswd

The password to use for SMTP. Example: smtppasswd f10r35

smtpuser

The username to use for SMTP. Example: smtpuser hflores

smtptls

Enables TLS encryption for the SMTP connection, using STARTTLS. This setting is ignored if you connect to port 465, in which case SSL/TLS will always be used.

submit

Use submit as the bug submission address.

template

Use the template mode, bypasses all prompts and the output it sent to stdout.

ui [text|urwid|gtk]

The user interface that querybts(1) and reportbug(1) should use.

verify

Enables automatic verification of package installation before reporting using debsums, if available.

## SEE ALSO
reportbug(1), querybts(1)

## AUTHOR
reportbug was written by Chris Lawrence <lawrencc@debian.org> and it's now maintained by Sandro Tosi <morph@debian.org>.

This manual page was written by Y Giridhar Appaji Nag <giridhar@appaji.net> for the Debian project, but may be used by others.


rofi-debugging

package: rofi

title: rofi-debugging(5)

text:
# rofi-debugging(5)

## NAME
Debugging rofi.

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

First try disabling your custom configuration: -no-config

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

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

## Get the relevant information for an issue
Please pastebin the output of the following commands:

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

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

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

Please check the output for identifiable information and remove this.

## Timing traces
To get a timing trace, enable the Timings debug domain.

```
G_MESSAGES_DEBUG=Timings rofi -show drun
```

It will show a trace with (useful) timing information at relevant points during the execution. This will help debugging when rofi is slow to start.

Example trace:

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

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

- all: Show debug information from all domains.

- X11Helper: The X11 Helper functions.

- View: The main window view functions.

- Widgets.Box: The Box widget.

- Modes.DMenu: The dmenu mode.

- Modes.Run: The run mode.

- Modes.DRun: The desktop file run mode.

- Modes.Window: The window mode.

- Modes.Script: The script mode.

- Modes.Combi: The script mode.

- Modes.Ssh: The ssh mode.

- Rofi: The main application.

- Timings: Get timing output.

- Theme: Theme engine debug output. (warning lots of output).

- Widgets.Icon: The Icon widget.

- Widgets.Box: The box widget.

- Widgets.Container: The container widget.

- Widgets.Window: The window widget.

- Helpers.IconFetcher: Information about icon lookup.

For full list see man rofi.

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

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

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

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

## Creating a backtrace.
First make sure you compile rofi with debug symbols:

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

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

```
gdb rofi core
```

Then type inside gdb:

```
thread apply all bt
```

The output trace is useful when reporting crashes.

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

## SEE ALSO
rofi-sensible-terminal(1), dmenu(1), rofi-debugging(5), rofi-theme(5), rofi-script(5), rofi-keys(5),rofi-theme-selector(1)

## AUTHOR
•

Qball Cow qball@blame.services ⟨mailto:qball@blame.services⟩


rofi-dmenu

title: rofi-dmenu(5)

text:
# rofi-dmenu(5)

## NAME
rofi dmenu mode - Rofi dmenu emulation

## DESCRIPTION
To integrate rofi into scripts as simple selection dialogs, rofi supports emulating dmenu(1) (A dynamic menu for X11).

The website for dmenu can be found here ⟨http://tools.suckless.org/dmenu/⟩.

rofi does not aim to be 100% compatible with dmenu. There are simply too many flavors of dmenu. The idea is that the basic usage command-line flags are obeyed, theme-related flags are not. Besides, rofi offers some extended features (like multi-select, highlighting, message bar, extra key bindings).

## BASIC CONCEPT
In dmenu mode, rofi reads data from standard in, splits them into separate entries and displays them. If the user selects an row, this is printed out to standard out, allow the script to process it further.

By default separation of rows is done on new lines, making it easy to pipe the output a one application into rofi and the output of rofi into the next.

## USAGE
By launching rofi with the -dmenu flag it will go into dmenu emulation mode.

```
ls | rofi -dmenu
```

### DMENU DROP-IN REPLACEMENT
If argv[0] (calling command) is dmenu, rofi will start in dmenu mode. This way, it can be used as a drop-in replacement for dmenu. Just copy or symlink rofi to dmenu in $PATH.

```
ln -s /usr/bin/rofi /usr/bin/dmenu
```

### DMENU VS SCRIPT MODE
Script mode is used to extend rofi, dmenu mode is used to extend a script. The two do share much of the same input format. Please see the rofi-script(5) manpage for more information.

### DMENU SPECIFIC COMMANDLINE FLAGS
A lot of these options can also be modified by the script using special input. See the rofi-script(5) manpage for more information about this syntax.

-sep separator

Separator for dmenu. Example: To show a list of 'a' to 'e' with '|' as a separator:

```
echo "a|b|c|d|e" | rofi -sep '|' -dmenu
```

-p prompt

Specify the prompt to show in dmenu mode. For example, select 'monkey', a,b,c,d, or e.

```
echo "a|b|c|d|e" | rofi -sep '|' -dmenu -p "monkey"
```

Default: dmenu

-l number of lines to show

Maximum number of lines the menu may show before scrolling.

```
rofi -dmenu -l 25
```

Default: 15

-i

Makes dmenu searches case-insensitive

-a X

Active row, mark X as active. Where X is a comma-separated list of python(1)-style indices and ranges, e.g. indices start at 0, -1 refers to the last row with -2 preceding it, ranges are left-open and right-close, and so on. You can specify:

- A single row: '5'

- A range of (last 3) rows: '-3:'

- 4 rows starting from row 7: '7:11' (or in legacy notation: '7-10')

- A set of rows: '2,0,-9'

- Or any combination: '5,-3:,7:11,2,0,-9'

-u X

Urgent row, mark X as urgent. See -a option for details.

-only-match

Only return a selected item, do not allow custom entry. This mode always returns an entry. It will not return if no matching entry is selected.

-no-custom

Only return a selected item, do not allow custom entry. This mode returns directly when no entries given.

-format format

Allows the output of dmenu to be customized (N is the total number of input entries):

- 's' selected string

- 'i' index (0 - (N-1))

- 'd' index (1 - N)

- 'q' quote string

- 'p' Selected string stripped from Pango markup (Needs to be a valid string)

- 'f' filter string (user input)

- 'F' quoted filter string (user input)

Default: 's'

-select string

Select first line that matches the given string

-mesg string

Add a message line below the filter entry box. Supports Pango markup. For more information on supported markup, see here ⟨https://docs.gtk.org/Pango/pango_markup.html⟩

-dump

Dump the filtered list to stdout and quit. This can be used to get the list as rofi would filter it. Use together with -filter command.

-input file

Reads from file instead of stdin.

-password

Hide the input text. This should not be considered secure!

-markup-rows

Tell rofi that DMenu input is Pango markup encoded, and should be rendered. See here ⟨https://developer.gnome.org/pygtk/stable/pango-markup-language.html⟩ for details about Pango markup.

-multi-select

Allow multiple lines to be selected. Adds a small selection indicator to the left of each entry.

-sync

Force rofi mode to first read all data from stdin before showing the selection window. This is original dmenu behavior.

Note: the default asynchronous mode will also be automatically disabled if used with conflicting options, such as -dump, -only-match or -auto-select.

-window-title title

Set name used for the window title. Will be shown as Rofi - title

-w windowid

Position rofi over the window with the given X11 window ID.

-keep-right

Set ellipsize mode to start. So, the end of the string is visible.

-display-columns

A comma seperated list of columns to show.

-display-column-separator

The column separator. This is a regex.

default: '\t'

-ballot-selected-str string

When multi-select is enabled, prefix this string when element is selected.

default: "☑ "

-ballot-unselected-str string

When multi-select is enabled, prefix this string when element is not selected.

default: "☐ "

## RETURN VALUE

- 0: Row has been selected accepted by user.

- 1: User cancelled the selection.

- 10-28: Row accepted by custom keybinding.

## SEE ALSO
rofi(1), rofi-sensible-terminal(1), dmenu(1), rofi-theme(5), rofi-script(5), rofi-theme-selector(1), ascii(7)

## AUTHOR
Qball Cow qball@gmpclient.org ⟨mailto:qball@gmpclient.org⟩

Rasmus Steinke rasi@xssn.at ⟨mailto:rasi@xssn.at⟩

Morgane Glidic sardemff7+rofi@sardemff7.net ⟨mailto:sardemff7+rofi@sardemff7.net⟩

Original code based on work by: Sean Pringle sean.pringle@gmail.com ⟨mailto:sean.pringle@gmail.com⟩

For a full list of authors, check the AUTHORS file.


rofi-keys

title: rofi-keys(5)

text:
# rofi-keys(5)

## NAME
rofi keys - Rofi Key and Mouse bindings

## DESCRIPTION
rofi supports overriding of any of it key and mouse binding.

## Setting binding
Bindings can be done on the commandline (-{bindingname}):

```
rofi -show run -kb-accept-entry 'Control+Shift+space'
```

or via the configuration file:

```
configuration {

  kb-accept-entry: "Control+Shift+space";
}
```

The key can be set by its name (see above) or its keycode:

```
configuration {

  kb-accept-entry: "Control+Shift+[65]";
}
```

An easy way to look up keycode is xev(1).

Multiple keys can be specified for an action as a comma separated list:

```
configuration {

  kb-accept-entry: "Control+Shift+space,Return";
}
```

By Default rofi reacts on pressing, to act on the release of all keys prepend the binding with !:

```
configuration {

  kb-accept-entry: "!Control+Shift+space,Return";
}
```

## Keyboard Bindings

### kb-primary-paste:
Paste primary selection

Default: Control+V,Shift+Insert

### kb-secondary-paste
Paste clipboard

Default: Control+v,Insert

### kb-secondary-copy
Copy current selection to clipboard

Default: Control+c

### kb-clear-line
Clear input line

Default: Control+w

### kb-move-front
Beginning of line

Default: Control+a

### kb-move-end
End of line

Default: Control+e

### kb-move-word-back
Move back one word

Default: Alt+b,Control+Left

### kb-move-word-forward
Move forward one word

Default: Alt+f,Control+Right

### kb-move-char-back
Move back one char

Default: Left,Control+b

### kb-move-char-forward
Move forward one char

Default: Right,Control+f

### kb-remove-word-back
Delete previous word

Default: Control+Alt+h,Control+BackSpace

### kb-remove-word-forward
Delete next word

Default: Control+Alt+d

### kb-remove-char-forward
Delete next char

Default: Delete,Control+d

### kb-remove-char-back
Delete previous char

Default: BackSpace,Shift+BackSpace,Control+h

### kb-remove-to-eol
Delete till the end of line

Default: Control+k

### kb-remove-to-sol
Delete till the start of line

Default: Control+u

### kb-accept-entry
Accept entry

Default: Control+j,Control+m,Return,KP_Enter

### kb-accept-custom
Use entered text as command (in ssh/run modes)

Default: Control+Return

### kb-accept-custom-alt
Use entered text as command (in ssh/run modes)

Default: Control+Shift+Return

### kb-accept-alt
Use alternate accept command.

Default: Shift+Return

### kb-delete-entry
Delete entry from history

Default: Shift+Delete

### kb-mode-next
Switch to the next mode.

Default: Shift+Right,Control+Tab

### kb-mode-previous
Switch to the previous mode.

Default: Shift+Left,Control+ISO_Left_Tab

### kb-mode-complete
Start completion for mode.

Default: Control+l

### kb-row-left
Go to the previous column

Default: Control+Page_Up

### kb-row-right
Go to the next column

Default: Control+Page_Down

### kb-row-up
Select previous entry

Default: Up,Control+p

### kb-row-down
Select next entry

Default: Down,Control+n

### kb-row-tab
Go to next row, if one left, accept it, if no left next mode.

Default:

### kb-element-next
Go to next row.

Default: Tab

### kb-element-prev
Go to previous row.

Default: ISO_Left_Tab

### kb-page-prev
Go to the previous page

Default: Page_Up

### kb-page-next
Go to the next page

Default: Page_Down

### kb-row-first
Go to the first entry

Default: Home,KP_Home

### kb-row-last
Go to the last entry

Default: End,KP_End

### kb-row-select
Set selected item as input text

Default: Control+space

### kb-screenshot
Take a screenshot of the rofi window

Default: Alt+S

### kb-ellipsize
Toggle between ellipsize modes for displayed data

Default: Alt+period

### kb-toggle-case-sensitivity
Toggle case sensitivity

Default: grave,dead_grave

### kb-toggle-sort
Toggle sort

Default: Alt+grave

### kb-cancel
Quit rofi

Default: Escape,Control+g,Control+bracketleft

### kb-custom-1
Custom keybinding 1

Default: Alt+1

### kb-custom-2
Custom keybinding 2

Default: Alt+2

### kb-custom-3
Custom keybinding 3

Default: Alt+3

### kb-custom-4
Custom keybinding 4

Default: Alt+4

### kb-custom-5
Custom Keybinding 5

Default: Alt+5

### kb-custom-6
Custom keybinding 6

Default: Alt+6

### kb-custom-7
Custom Keybinding 7

Default: Alt+7

### kb-custom-8
Custom keybinding 8

Default: Alt+8

### kb-custom-9
Custom keybinding 9

Default: Alt+9

### kb-custom-10
Custom keybinding 10

Default: Alt+0

### kb-custom-11
Custom keybinding 11

Default: Alt+exclam

### kb-custom-12
Custom keybinding 12

Default: Alt+at

### kb-custom-13
Custom keybinding 13

Default: Alt+numbersign

### kb-custom-14
Custom keybinding 14

Default: Alt+dollar

### kb-custom-15
Custom keybinding 15

Default: Alt+percent

### kb-custom-16
Custom keybinding 16

Default: Alt+dead_circumflex

### kb-custom-17
Custom keybinding 17

Default: Alt+ampersand

### kb-custom-18
Custom keybinding 18

Default: Alt+asterisk

### kb-custom-19
Custom Keybinding 19

Default: Alt+parenleft

### kb-select-1
Select row 1

Default: Super+1

### kb-select-2
Select row 2

Default: Super+2

### kb-select-3
Select row 3

Default: Super+3

### kb-select-4
Select row 4

Default: Super+4

### kb-select-5
Select row 5

Default: Super+5

### kb-select-6
Select row 6

Default: Super+6

### kb-select-7
Select row 7

Default: Super+7

### kb-select-8
Select row 8

Default: Super+8

### kb-select-9
Select row 9

Default: Super+9

### kb-select-10
Select row 10

Default: Super+0

## Mouse Bindings

### ml-row-left
Go to the previous column

Default: ScrollLeft

### ml-row-right
Go to the next column

Default: ScrollRight

### ml-row-up
Select previous entry

Default: ScrollUp

### ml-row-down
Select next entry

Default: ScrollDown

### me-select-entry
Select hovered row

Default: MousePrimary

### me-accept-entry
Accept hovered row

Default: MouseDPrimary

### me-accept-custom
Accept hovered row with custom action

Default: Control+MouseDPrimary

## SEE ALSO
rofi(1), rofi-sensible-terminal(1), rofi-theme(5), rofi-script(5)

## AUTHOR
Qball Cow qball@gmpclient.org ⟨mailto:qball@gmpclient.org⟩

Rasmus Steinke rasi@xssn.at ⟨mailto:rasi@xssn.at⟩

Morgane Glidic sardemff7+rofi@sardemff7.net ⟨mailto:sardemff7+rofi@sardemff7.net⟩

Original code based on work by: Sean Pringle sean.pringle@gmail.com ⟨mailto:sean.pringle@gmail.com⟩

For a full list of authors, check the AUTHORS file.


rofi-script

title: rofi-script(5)

text:
# rofi-script(5)

## NAME
rofi script mode - Rofi format for scriptable mode.

## DESCRIPTION
rofi supports modes that use simple scripts in the background to generate a list and process the result from user actions. This provide a simple interface to make simple extensions to rofi.

## USAGE
To specify a script mode, set a mode with the following syntax: "{name}:{executable}"

For example:

```
rofi -show fb -modes "fb:file_browser.sh"
```

The name should be unique.

## API
Rofi calls the executable without arguments on startup. This should generate a list of options, separated by a newline (\n) (This can be changed by the script). If the user selects an option, rofi calls the executable with the text of that option as the first argument. If the script returns no entries, rofi quits.

A simple script would be:

```
#!/usr/bin/env bash
if [ x"$@" = x"quit" ]
then

    exit 0
fi
echo "reload"
echo "quit"
```

This shows two entries, reload and quit. When the quit entry is selected, rofi closes.

## Environment
Rofi sets the following environment variable when executing the script:

### ROFI_RETV
An integer number with the current state:

- 0: Initial call of script.

- 1: Selected an entry.

- 2: Selected a custom entry.

- 10-28: Custom keybinding 1-19 ( need to be explicitly enabled by script ).

### ROFI_INFO
Environment get set when selected entry get set with the property value of the 'info' row option, if set.

### ROFI_DATA
Environment get set when script sets data option in header.

## Passing mode options
Extra options, like setting the prompt, can be set by the script. Extra options are lines that start with a NULL character (\0) followed by a key, separator (\x1f) and value.

For example to set the prompt:

```
    echo -en "\0prompt\x1fChange prompt\n"
```

The following extra options exists:

- prompt: Update the prompt text.

- message: Update the message text.

- markup-rows: If 'true' renders markup in the row.

- urgent: Mark rows as urgent. (for syntax see the urgent option in dmenu mode)

- active: Mark rows as active. (for syntax see the active option in dmenu mode)

- delim: Set the delimiter for for next rows. Default is '\n' and this option should finish with this. Only call this on first call of script, it is remembered for consecutive calls.

- no-custom: If set to 'true'; only accept listed entries, ignore custom input.

- use-hot-keys: If set to true, it enabled the Custom keybindings for script. Warning this breaks the normal rofi flow.

- keep-selection: If set, the selection is not moved to the first entry, but the current position is maintained. The filter is cleared.

- new-selection: If keep-selection is set, this allows you to override the selected entry (absolute position).

- data: Passed data to the next execution of the script via ROFI_DATA.

- theme: Small theme snippet to f.e. change the background color of a widget.

## Parsing row options
Extra options for individual rows can be set. The extra option can be specified following the same syntax as mode option, but following the entry.

For example:

```
    echo -en "aap\0icon\x1ffolder\n"
```

The following options are supported:

- icon: Set the icon for that row.

- meta: Specify invisible search terms.

- nonselectable: If true the row cannot activated.

- info: Info that, on selection, gets placed in the ROFI_INFO environment variable. This entry does not get searched.

multiple entries can be passed using the \x1f separator.

```
    echo -en "aap\0icon\x1ffolder\x1finfo\x1ftest\n"
```

## Executing external program
If you want to launch an external program from the script, you need to make sure it is launched in the background. If not rofi will wait for its output (to display).

In bash the best way to do this is using coproc.

```
 coproc ( myApp  > /dev/null  2>&1 )
```

## DASH shell
If you use the dash shell for your script, take special care with how dash handles escaped values for the separators. See issue #1201 on github.

## SEE ALSO
rofi(1), rofi-sensible-terminal(1), dmenu(1), rofi-theme(5), rofi-theme-selector(1)

## AUTHOR
Qball Cow qball@gmpclient.org ⟨mailto:qball@gmpclient.org⟩

Rasmus Steinke rasi@xssn.at ⟨mailto:rasi@xssn.at⟩

Morgane Glidic sardemff7+rofi@sardemff7.net ⟨mailto:sardemff7+rofi@sardemff7.net⟩

Original code based on work by: Sean Pringle sean.pringle@gmail.com ⟨mailto:sean.pringle@gmail.com⟩

For a full list of authors, check the AUTHORS file.