🖩 Do live calculations in rofi!
A rofi plugin that uses libqalculate's qalc
to parse natural language input and provide results.
Since this uses libqalculate's amazing qalc
you can try natural language queries such 500 + 25%
or 5000 EUR to USD
or 150 to hex
. It can also solve linear equations on the fly. Try 60x + 30 = 50
, for instance.
Run rofi like:
rofi -show calc -modi calc -no-show-match -no-sort
The result of the current input can be selected with Ctrl+Enter
, and history entries can be selected with Enter
. By default this will just output the equation/result.
You need a C compilation toolchain (a cc
, autoconf
, pkg-config
, ...), rofi
(version >= 1.5) as well as libqalculate
(version > 2.0).
You will also need development headers for rofi
and libqalculate
. Depending on your distribution these may be included in different packages:
- Arch, Gentoo: included with
rofi
,libqalculate
- OpenSUSE:
zypper in rofi rofi-devel qalculate
- Debian:
dpkg --install rofi-dev qalc libqalculate-dev libtool
- Ubuntu:
apt install rofi-dev qalc libqalculate-dev libtool
- Solus:
eopkg it rofi-devel libqalculate-devel
- CentOS, Fedora: Install
qalculate
libqalculate-devel
(findrofi-devel
headers yourself) - Others: look it up :)
Some distributions ship an extremely outdated version of libqalculate
so you might have to compile your own. If that is the case, see here.
rofi-calc uses autotools as build system. If installing from git, the following steps should install it:
$ autoreconf -i
$ mkdir build
$ cd build/
$ ../configure
$ make
$ make install
Use the -qalc-binary
option to specify the name or location of qalculate's qalc
binary. Defaults to qalc
.
Use the -terse
option to reduce the output of qalc
to just the result of the input expression.
Use the -calc-command
option to specify a shell command to execute which will be interpolated with the following keys:
{expression}
: the left-side of the equation (currently not available when using-terse
){result}
: the right of the equation
The following example copies the result to the clipboard upon pressing the key combination defined by -kb-accept-custom
(by default Control+Return).
NOTE: {result}
should be quoted since it may contain characters that your shell would otherwise interpret:
rofi -show calc -modi calc -no-show-match -no-sort -calc-command "echo -n '{result}' | xclip"
It's convenient to bind it to a key combination in i3. For instance, you could use:
bindsym $mod+c exec --no-startup-id "rofi -show calc -modi calc -no-show-match -no-sort"
To disable the bold font applied to the results by default, you can use the flag -no-bold
and run rofi like:
rofi -show calc -modi calc -no-show-match -no-sort -no-bold
To disable the history, use -no-history
:
rofi -show calc -modi calc -no-show-match -no-sort -no-history
To enable thousand separators in the output (e.g. 5 * 12 = 6,000
, rather than 6000
) add the following to ~/.config/qalculate/qalc.cfg
For
,
separator:
digit_grouping=2
For space separator:
digit_grouping=1
To use a different output format for numeric representations (for instance, some locales use ,
instead of .
as a decimal separator),
set LC_NUMERIC
to a different value like this:
LC_NUMERIC=de_DE.UTF-8 rofi -show calc -modi calc -no-show-match -no-sort
Make sure the locale is actually available on your system!
If you're developing this, it might be helpful to start rofi directly with a locally compiled plugin like this:
rofi -plugin-path build/.libs -show calc -modi calc -no-show-match -no-sort