Easy Manage Package on Void Linux

Nestero
Bismillahirrahmanirrahim

Xr

Xr, adalah tools sederhana untuk mempermudah manage packages pada Void Linux dengan tampilan yang clean dengan icon dari Nerd Fonts, xr memiliki 2 mode cli dan tui dengan fzf, untuk mode tui hanya bisa untuk menginstall dan melihat informasi dari package. Xr juga sudah ada bash autocomplatenya jadi lebih mudah untuk mencari package di mode cli.

Install

Untuk menginstall xr bisa langsung download di sini untuk versi binarynya, atau bisa mengcompile secara mandiri dengan cara clone repository xr.

Dependencies

Xr memerlukan beberapa package untuk fitur tertentu seperti mode fzf dan mirrors, dan pastikan menginstall salah satu font dari nerd fonts.

xr -i xmirror fzf

Usage

Berikut semua fitur yang ada pada xr.

██╗  ██╗██████╗
╚██╗██╔╝██╔══██╗
 ╚███╔╝ ██████╔╝
 ██╔██╗ ██╔══██╗
██╔╝ ██╗██║  ██║
╚═╝  ╚═╝╚═╝  ╚═╝ v.0.1.0

Simple tool for search and manage package on Void Linux
usage: xr name_package
          [-f full info] [-i install package] [-r remove package]
          [-u update sytem] [-l YYYY-MM-DD  (list by YYYY-MM-DD)]
          [-c clean unused packages] [-k manage old kernel]
          [-t tui mode with fzf] [-m change mirrors repository]
          [--version] [--help]

Basic Info

xr nama_package => akan menampilkan basic info dari package, contoh,

 xr qutebrowser

 󰖟 : https://qutebrowser.org/
  : Keyboard-focused browser with a minimal GUI
  : 1787KB
  : qutebrowser-3.6.1_1
 󰿃 : GPL-3.0-or-later
 󱍰 : Andrew J. Hesford <ajh@sideband.org>
 󰋊 : https://repo-default.voidlinux.org/current
 󰏗 : 󰸞 / 2025-11-14 08:54 WIB

Full Info

untuk menampilkan full info dari package, gunakan option -f, contoh,

xr -f qutebrowser

 󰖟 : https://qutebrowser.org/
  : Keyboard-focused browser with a minimal GUI
  : 1787KB
  : qutebrowser-3.6.1_1
 󰿃 : GPL-3.0-or-later
 󱍰 : Andrew J. Hesford <ajh@sideband.org>
 󰋊 : https://repo-default.voidlinux.org/current
 󰏗 : 󰸞 / 2025-11-14 08:54 WIB

  Dependencies :
====================
 󰏗 python3-Jinja2>=0                     󰏗 python3-yaml>=0
 󰏗 python3-pyqt6-declarative>=0          󰏗 python3-pyqt6-gui>=0
 󰏗 python3-pyqt6-pdf>=0                  󰏗 python3-pyqt6-sql>=0
 󰏗 python3-pyqt6-webengine>=0            󰏗 python3-pyqt6-webchannel>=0
 󰏗 python3-pyqt6-widgets>=0              󰏗 python3-pyqt6-network>=0
 󰏗 python3-pyqt6-dbus>=0                 󰏗 python3-pyqt6-printsupport>=0
 󰏗 qt6-plugin-sqlite>=0

  Shared Library Requires :
==============================
qutebrowser doesn't need any shared library

  Shared Library Provides :
==============================
qutebrowser has no shared library provide

seperti contoh diatas option -f akan memberikan semua info package dari basic info sampai dependecies dan library yang digunakan oleh package tersebut.

Update

untuk mengupdate semua package yang terinstall pada system bisa menggunakan option -u, contoh

xr -u

󰏔 Starting update system...

xr akan menampilkan packages apa saja yang bisa diupdate, tekan enter untuk melanjutkan proses update.

Install / Remove

untuk menginstall atau meremove package bisa dilakukan seperti biasa, gunakan option -i untuk install dan option -r untuk remove package, contoh

xr -i dwm st

󱧕 Install [dwm, st] ? (Y/n) :

tekan enter untuk melanjutkan proses install atau remove package, jika menginstall atau meremove satu package maka akan di tampilkan basic info package tersebut, contoh

 xr -r qutebrowser

 󰖟 : https://qutebrowser.org/
  : Keyboard-focused browser with a minimal GUI
  : 1787KB
  : qutebrowser-3.6.1_1
 󰿃 : GPL-3.0-or-later
 󱍰 : Andrew J. Hesford <ajh@sideband.org>
 󰋊 : https://repo-default.voidlinux.org/current
 󰏗 : 󰸞 / 2025-11-14 08:54 WIB


󱧔 Are you sure you want to remove [qutebrowser] ? (Y/n) :

tekan enter untuk melanjutkan proses install atau remove package.

Remove package orphans

untuk remove package yang sudah tidak digunakan bisa menggunakan option -c, contoh

xr -c

󱧔 Are you sure you want to remove unused packages ? (Y/n) :

tekan enter untuk melanjutkan proses remove unused packages.

List package by date

untuk melihat package apa saja yang diinstall atau diupdate pada tanggal tertentu bisa menggunakan option -l tahun-bulan-tanggal, contoh

xr -l 2025-11-19
 󰏗 Packages installed / updated, on 2025-11-19 :
 󰏗 dialog-1.3.20251001_1    󰏗 firefox-145.0.1_1
 󰏗 fzf-0.66.1_1             󰏗 xmirror-0.4.1_1

Old kernel

untuk manage old kernel bisa menggunakan option -k, pada option -k terdapat 2 sub option ada list dan remove, list digunakan untuk melist old kernel pada sistem, sedangkan remove digunakan untuk menghapus old kernel. contoh

xr -k list

No Old Kernel found in system.

pada contoh diatas tidak terdapat old kernel pada sistem.

xr -k remove 6.12.58_1

No Old Kernel found in system.

untuk penggunaan sub option remove dengan cara xr -k remove kernel_version seperti pada contoh di atas, untuk kernel versionnya bisa mengacu spesifik pada version kernel tertentu seperti di atas, jika seperti contoh di atas maka hanya kernel tersebut yang diremove, tetapi bisa juga secara ** bulk** contoh xr -k remove 6.12.*, maka semua kernel version 6.12 akan diremove, atau bisa juga dengan all contoh xr -k remove all, dengan all maka semua old kerenel yang tidak digunakan akan diremove.

Mirrors

jika serasa mirrors repository yang digunakan sekarang lambat, bisa menggunakan option -m untuk mengganti mirrors repository yang digunakan sekarang, dengan xr -m => akan menampilkan dialog pada terminal untuk mengarahkan memilih mirrors yang baru.

Fzf mode

mode tui atau fzf bisa menggunakan option -t, dengan xr -t => akan menampilkan tampilan tui fzf, terdapat dua panel, panel sebelah kiri berisi list packages dan panel sebelah kanan menampilkan info dari package yang dipilih dari panel sebelah kiri. mode ini suport dengan live search jadi bisa langsung mencari package yang diinginkan, untuk menginstall packge dari mode ini dengan cara tekan enter pada package yang dipilih apabila menginstall satu package saja tetapi jika ingin menginstall lebih dari satu package dengan cara tekan tab untuk menandai package apa saja yang ingin diinstall terkahir tekan enter untuk menginstall semua package yang dipilih.

Autocomplate

Berikut fungsi bash autocomplate untuk xr

_x_install() {
    local cur prev prev2 options
    COMPREPLY=()
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    prev2="${COMP_WORDS[COMP_CWORD-2]}"

    local help_flags="--help"

    # $prev
    case "${prev}" in
        -t|-m|-c|-u)
            return 0
            ;;
        -k)
            # sub option kernel
            COMPREPLY=( $(compgen -W "list remove" -- "${cur}") )
            return 0
            ;;
        -l)
            # today
            local current_date=$(date +%Y-%m-%d)
            COMPREPLY=( $(compgen -W "${current_date}" -- "${cur}") )
            return 0
            ;;
        list)
            # -k list
            if [[ "${prev2}" == "-k" ]]; then
                return 0
            fi
            ;;
        remove)
            # -k remove <kernel_version>
            if [[ "${prev2}" == "-k" ]]; then
                local kernel_list
                kernel_list=$(vkpurge list 2>/dev/null)
                COMPREPLY=( $(compgen -W "${kernel_list}" -- "${cur}") )
                return 0
            fi
            ;;
    esac

    # main
    if [[ "${cur}" == -* ]]; then
        COMPREPLY=( $(compgen -W "${help_flags}" -- "${cur}") )
    else
        if [[ ${#cur} -ge 2 ]]; then
            options=$(xbps-query -Rs "${cur}" 2>/dev/null | awk '{print $2}' | sed -E 's/-[0-9].*$//' | sort -u)
            COMPREPLY=( $(compgen -W "${options}" -- "${cur}") )
        fi
    fi
}
 
complete -F _x_install xr
Sesungguhnya yang menyebabkan ilmu hilang adalah lupa dan tidak mengulanginya.

"Sesungguhnya yang menyebabkan ilmu hilang adalah lupa dan tidak mengulanginya."

Imam Az-Zuhri rahimahullah

Tags:

Referensi:

Catatan Terkait:

NESTECH ID

Copyright 2025. All rights reserved.