A curses package management tool for Archlinux
C++ Shell



A curses frontend to libalpm.


Package browsing in a curses frontend, including:
 * regexp filtering and searching any package property
 * customizable colorcoding
 * customizable sorting
 * external command execution with package list string replacements
 * user defined macros and hotkeys


Navigation and queue management

The package list and queue can be navigated using the up/down arrows, page
up/down, and the home and end keys. The tab key switches focus between the
package and queue lists.

Adding packages to the queue is done by pressing the right arrow key while the
package list is focused. Left arrow removes the selected package from the


Keybindings are displayed by pressing the 'h' (Help) key in pcurses.

Filtering takes the following syntax:

1 234

1 is a list of field specifiers. These tell pcurses which fields to search.
Field specifiers are the highlighted characters in the field names in the info
pane.  In this example, this means that the Name and Description are searched
for the phrase 'game'. To keep all _non_matching packages instead, append '!'
to the field list..

2 negates the following query, i.e. a filter expression of /nd!:gnome will
return all packages NOT matching 'gnome'.

3 the character ':' separates the field specifier list from the search phrase.
If this character is not present, the entire string is interpreted as the
search phrase.

4 is the actual search phrase. If it contains only alphanumeric characters, a
simple and quick string search is used. Otherwise, it is treated as a regular
expression (which is a bit slower). The search is case INSENSITIVE.

1, 2 and 3 are OPTIONAL.

These searches can be chained. This means that a search for 'n:^a', followed by
'b:2010' will show all packages beginning with the letter 'a' and having a
build date in the year 2010.

Previous filters are cleared by pressing the 'c' key.

Pressing the up and down keys while in input mode will scroll through all
previous history.

Sorting and colorcoding

Colorcoding and sorting use the same syntax as filtering, but only accept a
single field specifier.

Command execution

Command execution can be entered by pressing the '!' key. The token '%p' will
be replaced by the current contents of the package queue. For example, with a
current package selection of pcurses and pacman,

!sudo pacman -S '%p'

will be expanded to 'sudo pacman -S pcurses pacman' and executed with 'bash'.

A few useful commands could be

!pacman -Sy
!sudo pacman -S %p
!sudo pacman -Rs %p

Caution: package infos are not reloaded automatically. After db changes,
trigger a manual reload by pressing 'r'.

Control commands

Control commands may be used to trigger keyboard shortcut actions such as
'scroll up' from macros. Available commands are:

scroll_up, scroll_down, scroll_home, scroll_end, scroll_pageup,scroll_pagedown,
switch_focus, queue_push, queue_pop, queue_clear, help, quit, reload,


Macros are defined in /etc/pcurses.conf using the syntax 'macroname=command'.
Macros can be chained by separating them with a comma. A few examples:

filterupdates=/d:update available


If defined, the macro named 'startup' will be executed on each application
start. Hotkeys can be defined by creating macros named '1', '2', [...], and are
triggered by pressing the corresponding key in pcurses.

All macros can be executed in pcurses by pressing the '@' key and entering the
macro name.


For some of the things I've been thinking about or am planning on doing, read
the CONCEPTS file.


Please report all bugs and feature requests to


Visit the pcurses github page at https://github.com/schuay/pcurses or write me
a mail at jakob.gruber@gmail.com