PacUI: Bash script providing advanced Pacman and Yay/Pikaur/Aurman/Pakku/Trizen/Pacaur functionality in a simple UI

cli
pacui
aur
pacman
yay

#1

This topic is about all kinds of discussions about PacUI.

PacUI

PacUI provides useful and advanced Pacman and Yay/Pikaur/Aurman/Pakku/Trizen/Pacaur commands in a convenient and easy to use text interface.

PacUI is aimed at experienced/intermediate/advanced users of Arch Linux (and Arch-based distributions, including Manjaro), who have at least basic knowledge of their Linux system, Pacman and Yay/Pikaur/Aurman/Pakku/Trizen/Pacaur. Absolute beginners are probably overwhelmed by the choices PacUI offers.

This fork of an older version of pacli called PacUI follows the KISS principle: The whole script is contained within one file, which consists of easy to read bash code with many helpful comments. PacUI offers many more features over pacli in order to enhance comfort and speed of CLI based package management.

Table of Contents

Screenshots

UI of PacUI:

Installing the package “cantata” from system repositories by entering its name:

Installation

In Manjaro, you can simply install the stable version of PacUI:

sudo pacman -S pacui

Both the stable version and the latest git version of PacUI are available on the AUR:

yaourt -S pacui-git

This will install PacUI including the latest commits on Github. If you ever encounter any bugs, please reinstall (and thereby update) PacUI with the this command and check whether the bug is still there before reporting it.

Execute without prior Installation

For a minimal working version of PacUI, please install its dependencies expac and fzf using Pacman first (if possible). Then, the PacUI file can be downloaded and run without prior installation:

wget https://raw.githubusercontent.com/excalibur1234/pacui/master/pacui
bash pacui/pacui

I find this feature of PacUI invaluable for fixing systems. Here are two examples:

  • A large number of updates broke (parts of) the GUI, e.g. xorg, window manager, or desktop environment. In this case, switching to a tty (with CTRL + ALT + F2), installing PacUI and using “Roll Back System” to roll back all the latest updates can fix the system (temporarily).
  • A broken keyring makes it impossible to apply updates or install any packages. Executing PacUI without prior installation and using “Fix Pacman Errors” (which does not require “expac” or “fzf”) to fix the keyring and all related problems is the easiest and fastest solution I know of.

Usage

Start PacUI with UI

After successful installation, type the following command into your terminal in order to start PacUI with a simple UI:

pacui

Start PacUI without UI: Using Options

Using PacUI without its UI requires less keystrokes and can therefore be much quicker. An overview of all PacUI options is displayed with pacui h.

For example, you want to display the Reverse dependency Tree of a package. Please note the marked letters “R” and “T” in PacUI’s corresponding UI option.
PacUI does not care, whether you use upper or lower case letters as options or whether you use no, one or two dashes in front. Therefore, the following four commands are equivalent:

  • pacui RT
  • pacui rt
  • pacui -rt
  • pacui --rt

This principle can be used with all of PacUI’s options. Here is another random example (of PacUI’s hidden “List Packages by Size” option):

  • pacui LS
  • pacui -LS
  • pacui --LS
  • pacui ls
  • pacui -ls
  • pacui --ls

Start PacUI without UI: Using Options and Package Names

You can also use package names in addition to options. For example, you want to install the package “cantata”. Then, you can use a command like

pacui i cantata

Instead of a list of all available packages, a much shorter already filtered list is displayed. Simply select the “cantata” package you want to install and press ENTER in order to install it.

If an argument contains special characters, it has to be quoted. For example when using regular expressions in order to search package file names starting with “zsh”:

pacui s "^zsh"

Start PacUI without UI: Passing Arguments to AUR helper or Pacman

For advanced use (e.g. in scripting or an alias), PacUI can have a “flag” argument, which gets passed directly to an AUR helper and/or Pacman.
Examples:

  • pacui -r 0ad --flag="--noconfirm"
  • pacui u flag --noconfirm
  • pacui --FLAG --asdeps --i --bash
  • pacui b --flag=--noconfirm

Multiple installed AUR helpers

Please note that PacUI optionally requires at least one of these AUR helpers to enable use of the AUR.: Yay, Pikaur, Aurman, Pakku, Trizen, or Pacaur.

If more than one AUR helper is installed, they are automatically used in the same order as listed above (i.e. Aurman is used with priority while Pacaur is only used as a last resort). A specific AUR helper can be set with the PACUI_AUR_HELPER environment variable.

Alternatively, replacing $PACUI_AUR_HELPER with the name of your preferred AUR helper in the following variable (within /usr/bin/pacui file) works as well. Note that $PACUI_AUR_HELPER needs to be replaced (again) after each PacUI update:

# here, the preferred AUR helper can be set manually by the user. for example, AUR_Helper="trizen" uses Trizen despite any other installed AUR helpers.
AUR_Helper="$PACUI_AUR_HELPER"

Useful Tips and Recommended Settings

It is highly recommended to use an utility, which notifies the user about available updates alongside of PacUI. Such a lightweight utility is for example update-notifier.

Along with PacUI the following settings are recommended by the author:

Fancy List View

A fancy list view for all pacman updates can be enabled by uncommenting the following line in your /etc/pacman.conf file:

#VerbosePkgLists

A very easy way to edit this file by using PacUI is:

pacui c pacman.conf

Alias

If you use PacUI without the UI it is recommended to use an alias for PacUI to reduce the amount of necessary typing. Do this by adding the following line to your ~/.bashrc file (if you use bash):

alias p='pacui'

This will set “p” as an alias to “pacui” within your terminal (after a restart of your shell or computer). For example, you can now update your system using

p u

Search syntax

PacUI uses fuzzy finder (fzf) to display lists of items (such as packages, package groups, logs, patchs, etc.) and by starting to type, you can easily search/filter those lists. Regular expressions can be used to improve the search results, e.g.:

Search Term Description
"sbtrkt" Items that match sbtrkt
"^music" Items that start with music
"git$" Items that end with git
"'wild" Items that include wild
"!fire" Items that do not include fire
"!-git$" Items that do not end with -git

A single bar character term acts as an OR operator. For example, the following query matches entries that start with core or end with go, rb, or py.

"^core|go$|rb$|py$"

Help

Short PacUI Help

For short help, e.g. when using PacUI without UI, use one of the following commands:

  • pacui h
  • pacui -h

Detailed PacUI Help

Choose the “Help” option within PacUI’s UI by entering “00” or “H” or “h” or “help” and pressing “ENTER”.
pacui --help from the terminal will call PacUI’s detailed help page, too.

This help page explains some general stuff such as how to navigate PacUI. It also explains every PacUI option in detail. If you want to look up which commands PacUI uses under the hood and understand them in order to use PacUI correctly, this is the right place for you!

Manjaro Forum Threads

 

 

 


Continuing the discussion from PACLI: CLI Pacman & Yaourt Helper:

i can play around with the GUI again, no problem.
so, what exactly is the problem and how do you propose fixing it?


What's the most useful scipt you've written?
Remove multiple packages and their own dependencies (not required by other packages)
Refresh mirrors
I dont get it...one file vs a lot of files
[solved] Sudo pacman -Rs package wants to remove shared dependencies, so does pamac
Why is yaourt still used as the default AUR helper?
How to find out unused application?
Tips on cleaning up applications you do not use anymore?
Update / pacman / keyring problem
Using PacUI produces output related to end of life kernels
List of upgradable packages using pacman on command line
[SOLVED] Package database file for core does not exist
Post installation guide?
Octopi без AUR
PGP verification fails even after disabling PGP verification
Bash scripting: variable name made partially out of other variable name
Proper (preferred) way to update your system
How do I locate the package containing the "domainname" command and install it?
Pacaur Maintainer/Coder Needed
Is there a way to tell if fstrim is being executed as scheduled?
Can't install packages using pacman [invalid or corrupted package (PGP signature))]
Can't update (Invalid or corrupted package) but not related to keys?
Can't find installed program
Can anybody help with script making
How to --force using pamac
System Upgrade failing PGP signatures
Increased root partition after creating ISOs
Yaourt where the log is?
Package updates
Plasma - log verbosity
How meny Programs/packages are in the AUR
Which AUR helpers do you use and why?
[unstable] manjaro-system holded in pacman.conf?
Pacman -Syyu
Pacman error w/pacman-5.0.1-9
[Unstable Update] 2017-06-06 - Perl, Manjaro-System, eLoginD, Deepin
#2

no problem really… just that the menu does not display nicely on a wide terminal… I could just have it open a separate terminal session apart from the drop-down too…


#3

the relatively narrow form of the GUI was done on purpose.
if you open pacli on a terminal, which is narrower than pacli’s GUI the whole GUI is totally messed up.
despite me not using a ordinary terminal often - i use 95% of the time a drop-down terminal, too - i would like to keep it this way.

but do you have problems because of the hight of pacli’s GUI?
i might be able to do something about that. how high (in pixel) should pacli’s GUI be the most?
would it be ok, if the headline was removed?
how about removing the instructions at the bottom? do you think the GUI is intuitive enough to be handled by most users without that?


#4

it is hard to say definitively because drop down terminals will vary in size based on end user preference. I would imagine that if someone uses PACLI on a daily basis, they would adapt their terminal to fit the present layout… It is not necessary to make a wide version if you do not want to… it is a vanity kind of thing… I am sure some people with wide terminals might like having a wide option.


#5

Qterminal drop down is
[DropMode] Height=50 KeepOpen=false ShortCut=F12 ShowOnStart=true Width=99


#6

ok, but what does this number exactly mean?
50% of the hight of your screen?
how many vertical pixels does your screen have?

also, please answer these questions:

thanks,
ex


#7

I think it’s 50 lines and 99 monospaced chars.


#8

i just shrank the GUI of pacli-simple further. this should make it possible to see pacli’s GUI even on relatively narrow drop down terminals. on my system with a relatively large font, it needs about 350 pixel vertically.

shrinking it even more would involve ripping a part out (e.g. the second box) and creating a separate GUI for it. i would like to avoid that if possible.


#9

at this moment in time, i see pacli-simple as complete.

i do not know about any bugs and all useful features i can think of are integrated. the only possible improvement i can think of is mentioned on the issue tracker on github.


#10

after reading this post by @ayu5h i found the corresponding arch wiki article and incorporated a “set system clock” functionality into pacli-simple’s fix option with the latest commit.
this is important, because importing, synchronizing, and checking keys is time sensitive and requires an almost correct system clock.

i am not 100% satisfied with it, because it does not work on my system. but it should work for most manjaro users out there.


#11

with the latest commit i added a connection check to a reliable manjaro mirror before all keys and most packages get deleted. this should have been done earlier!


#12

i use pacli almost exclusively with terminal commands instead of the UI.
i can enter “pacli r” or “pacli -r” and a filterable list of all installed packages is displayed. this is great, if i do not know the exact name of a (or multiple) package(s) i want to remove. but when i want to remove a single package (e.g. cantata) i intuitively entered “pacli r cantata” or “pacli -r cantata

until now, the same list of all installed packages was displayed. the “cantata” argument was simply ignored. in some cases this was annoying.
in the latest commit i have changed this: now, fzf displays the same list, which is prefiltered for “cantata”. exactly one search result is displayed. i can press ENTER immediately and remove “cantata” from my system!


now, i have again a feeling that pacli-simple is complete. i do not know any possible improvements, except for this one.


#13

with the latest commit, i have added a new conf option:

it displays a list of config files and lets you choose, which one you want to edit with your default text editor.
if somebody knows more important config files, please let me know!


#14

hi
good idea (same as bmenu) but :

  1. no test if i use systemd or openrc ?
  2. /etc/yaourtrc OK for read but $HOME/.config/yaourtrc for write
  3. /etc/systemd/*.conf OK for read but its bad practive to edit this files, good is /etc/systemd/*.conf.d/*
    4 same for /etc/sysctl.d/100-sysctl.conf its /etc/sysctl.d/*.conf
  4. sudoers, same, only for read with simple editor, and i can include some files
  5. no test if exist .bashrc and/or .zshrc
    for me, tests if files exists for make list is a minimum

#15

thanks for your comments!
indeed, i used bmenu and parts of pacli for inspiration.

  1. i think a file check for /etc/systemd/*.conf is enough. when these files do not exist, systemd is not used.
    but i have implemented that test in other parts of my code. now, pacli-simple should work without systemd, too!

    1. i understand. i am not completely sure, whether i want to implement this.
      advantages of using good practice: original file still intact. no danger of deleting original files.
      disadvantages of using good practice: the user does not learn where original config files are. in arch wiki, they always recommend to change the original files.
  2. sorry, i did not understand your comment. what is the path to the original file and what is the path to the copy (=good practice)?
    i do not have a /etc/sysctl.d/sysctl.conf on my system.

  3. i have implemented a check. when sudoers is chosen, visudo will be used to edit it. this is saver!

  4. i have implemented tests for all files before they get displayed. this should be enough.

if you want to implement something, please tell me. then, i can stop working on the code until you finished your work. this way, we do not have to constantly rebase our git branch and such stuff.

edit: i just pushed all the changes i mentioned in this post.


#16

you write /etc/sysctl.d/100-manjaro.conf but by defaut manjaro install nothing (but somes communies : 20-quiet-printk.conf, kde: 50-max_user_watches.conf … me a have a 99-sysctl.conf , only you 100-manjaro.conf ?(not in manjaro-tools-iso-profiles)
all users have different number-name.conf
you can run a ls for make list but, after you cant add a description for each file


no in arch wiki you have the 2, but man journald.conf, man logind.conf etc is clear :

When packages need to customize the configuration, they can install configuration snippets in /usr/lib/systemd/*.conf.d/. Files in /etc/ are reserved for the local administrator, who may use this logic to override the configuration files installed by vendor packages.

for me it is a shame to not propose the best solution (pacli is a litle wiki :wink:)

no problem with .pacnew, is easy to read, in original all is commented, my config 3 files (consol,level,size)
cat /etc/systemd/journald.conf.d/*.conf

[Journal]
#voir le journald en temps réel dans console tty3
ForwardToConsole=yes
TTYPath=/dev/tty3
MaxLevelConsole=notice
[Journal]
#niveau minimum à enregistrer
MaxLevelStore=notice
[Journal]
# taille du journald est de 250M réparti en 5 fichiers de 50Mo
SystemMaxUse=250M
SystemMaxFileSize=50M

#17

@excalibur1234
Many thanks for your work! :+1:

I have an interesting question.
https://wiki.archlinux.org/index.php/AUR_helpers#Comparison_table
Why is everyone used “red” yaourt instead of “green” pacaur / aurutils ?


#18

i will need a little time to research before i answer papajoker.

i do not know about everyone, but i can tell you why i prefer yaourt (after i have tested pacaur for a couple of weeks):

  • it is much easier to enter “yaourt XXXX” than “pacaur -Ss XXXX” when you want to search something.

  • by default, yaourt has some nice looking, colorful pages, e.g. when i do “yaourt -Syua” (reallly nice overview of new package versions and new package updates!) or “yaourt -Qdt” (asks you which orphaned files you want to delete). even when i switch on colors in pacaur, it still does not look as good and it does not give you handy tips!

  • i never had problems with yaourt, except when major pacman updates happen, e.g. during the last update to pacman 5.0.

  • your link makes yaourt look really bad. yes, technically it is insecure. but for normal desktop usage it is secure. a couple of months ago, there was a big discussion that yaourt is insecure. i have tested pacaur shortly afterwards. then, an article (sorry, i never saved it) explained that it is not as bad as we first thought.
    this made me compare yaourt and pacaur on equal basis. and compared on equal basis, pacaur is less comfortable to use and looks worse.


#19

Why I asked? Maybe someone will create in the future a simple bash frontends for “green” AUR helpers. :slight_smile:


#20

you can read What’s so bad with yaourt?
or :