Criei um front-end, chamado akp, em de linha de comando para o pacman, yay e flatpak

Inspirado no rhino-pkg, eu criei o akp, basicamente por três motivos

1- O pacman, diferente do pamac, não sugere dependências opcionais para serem instaladas junto com os pacotes, com isso você tem que, depois de instalados, ir de pacote em pacote vendo qual dependências você vai querer, é uma coisa cansativa, o akp ja faz essa sugestão na hora da instalação.

2- Economia de comando. Quando eu vou atualizar o sistema tenho que digitar:
sudo pacman -Syu && yay -a -Syu && flatpak update
Com o front-end eu so do um comando
akp -Ud

3- Aqui ja é questão de gosto, mas eu troquei a sintaxe para algo parecido com pacman porem que faça mais sentido para mim, por exemplo:
akp -I para instalar um pacote ao invés de sudo pacman -S
akp -U para atualizar (update) o sistema ao invés de sudo pacman -Syu
akp -S para pesquisar (search) um pacote ao invés de sudo pacman -Ss
São mudanças simples, mas que tornam o gerenciador mais intuitivo.

O akp é escrito em shellscript, basicamente o que ele faz é receber o comando e executar o equivalente em pacman, yay ou flatpak, ou seja, o akp em si não gerencia os pacotes, segue exemplo:

case "$1" in
    -U)
        # Atualiza sistema
        pacmanCommand="sudo pacman -Syu"
        ;;
    -Ud)
        # Atualizar distro (Arch, aur and flatpak repo)
        sudo pacman -Syu && echo "" && yay -a -Syu && echo "" && flatpak update
        ;;
   -Ia)
        # Instalar pacote do AUR
        pacmanCommand="yay -S"
        ;;
    -Sa)
        # Pesquisar pacote no AUR
        pacmanCommand="yay -a -Ss"
        ;;
    -Uf)
        # Atualizar Flatpak
        pacmanCommand="flatpak update"
        ;;
    -If)
        # Instalar pacote Flatpak
        pacmanCommand="flatpak install flathub"
        ;;

A maior parte do akp funciona assim, a escrita de um código mais complexo esta no comando de instalação de um pacote

-I)
        # Instalar pacote

        # Verificar se pelo menos um pacote foi fornecido
        if [ -z "$2" ]; then
            echo "Erro: Forneça pelo menos um pacote para instalar."
            exit 1
        fi
        
        # Definindo comando pacman
        pacmanCommand="sudo pacman -S"
       
        # Função para obter dependências opcionais do Pacman
        get_optional_deps() {
            package="$1"
            pactree -so "$package" | grep "(optional)" | rev | cut -d " " -f 2- | rev | cut -c 4- | tr '─' ' '
        }

         # Exibir dependências opcionais
        for pkg in "$@"; do
            if [ "$pkg" != "-I" ]; then
                optionalDeps=$(get_optional_deps "$pkg")
                if [ -n "$optionalDeps" ]; then
                    echo "O pacote '$pkg' possui as seguintes dependências opcionais:"
                    
                    # Adiciona " :: " ao início de cada linha
                    echo "$optionalDeps" | sed 's/^/ ::/'

                    # Perguntar ao usuário quais dependências opcionais deseja instalar
                    echo "Deseja instalar alguma(s) das dependências opcionais para '$pkg'? (Digite os nomes separados por espaços): " 
                    read -p "" selectedOptionalDeps
                    echo " "

                    # Adicionar os pacotes principais e as dependências opcionais selecionadas à lista de pacotes
                    packages="$packages $pkg $selectedOptionalDeps"
                else
                    # Se não houver dependências opcionais, adicionar apenas o pacote principal à lista
                    packages="$packages $pkg"
                fi
            fi
        done
        ;;

Com o pacman, uma instalação seria assim:

[arch@arch ~]$ sudo pacman -S thunar vivaldi

resolvendo dependências...
procurando pacotes conflitantes...

Pacotes (3) exo-4.18.0-1  thunar-4.18.10-1  vivaldi-6.6.3271.48-1

Tamanho total download:   112,80 MiB
Tamanho total instalado:  375,38 MiB

:: Continuar a instalação? [S/n]

com o akp:

[arch@arch ~]$  akp -I thunar vivaldi

O pacote 'thunar' possui as seguintes dependências opcionais:
 ::   catfish: file searching
 ::   gvfs: trash support, mounting with udisk and remote filesystems
 ::   tumbler: thumbnail previews
 ::   thunar-volman: removable device management
 ::   thunar-archive-plugin: archive creation and extraction
 ::   thunar-media-tags-plugin: view/edit ID3/OGG tags
Deseja instalar alguma(s) das dependências opcionais para 'thunar'? (Digite os nomes separados por espaços): 
gvfs thunar-volman
 
O pacote 'vivaldi' possui as seguintes dependências opcionais:
 ::   vivaldi-ffmpeg-codecs: playback of proprietary video/audio
 ::   libnotify: native notifications
Deseja instalar alguma(s) das dependências opcionais para 'vivaldi'? (Digite os nomes separados por espaços): 
vivaldi-ffmpeg-codecs libnotify
 
resolvendo dependências...
procurando pacotes conflitantes...

Pacotes (7) exo-4.18.0-1  gvfs-1.52.2-2  libnotify-0.8.3-1  thunar-4.18.10-1  thunar-volman-4.18.0-1  vivaldi-6.6.3271.48-1
            vivaldi-ffmpeg-codecs-122.0.6261.84-1

Tamanho total download:   114,56 MiB
Tamanho total instalado:  387,00 MiB
Alteração no tamanho:     381,63 MiB

:: Continuar a instalação? [S/n]

Quem tiver afim de testar o front-end basta fazer o seginte:
1- copie o código abaixo em um documento sem extensão (nada de .sh ou coisa asim)
2- adicione essa linha no seu .bashrc
export PATH=$PATH:/caminho/para/a/pasta/do/documento/
3- para o documento ser executavel
chmod +x /caminho/para/a/pasta/do/documento/akp
4- Voce vai precisar ter instalado o pacman-contrib, yay e flatpak

segue o codigo:

#!/bin/bash

# Verificar se o comando não está vazio
if [ -z "$1" ]; then
    echo "Erro: Nenhum alvo selecionado."
    exit 1
fi

# Criando lista de pacotes
packages="${@:2}"

# Traduzir o comando akp para o comando equivalente do Pacman, Yay e Flatpak
case "$1" in
    -U)
        # Atualiza sistema
        pacmanCommand="sudo pacman -Syu"
        ;;
    -Ud)
        # Atualizar distro (Arch, aur and flatpak repo)
        sudo pacman -Syu && echo "" && yay -a -Syu && echo "" && flatpak update
        ;;
    -I)
        # Instalar pacote

        # Verificar se pelo menos um pacote foi fornecido
        if [ -z "$2" ]; then
            echo "Erro: Forneça pelo menos um pacote para instalar."
            exit 1
        fi
        
        # Definindo comando pacman
        pacmanCommand="sudo pacman -S"
       
        # Função para obter dependências opcionais do Pacman
        get_optional_deps() {
            package="$1"
            pactree -so "$package" | grep "(optional)" | rev | cut -d " " -f 2- | rev | cut -c 4- | tr '─' ' '
        #    pactree -lso "$package" | grep ":"
        }

         # Exibir dependências opcionais
        for pkg in "$@"; do
            if [ "$pkg" != "-I" ]; then
                optionalDeps=$(get_optional_deps "$pkg")
                if [ -n "$optionalDeps" ]; then
                    echo "O pacote '$pkg' possui as seguintes dependências opcionais:"
                    
                    # Adiciona " :: " ao início de cada linha
                    echo "$optionalDeps" | sed 's/^/ ::/'

                    # Perguntar ao usuário quais dependências opcionais deseja instalar
                    echo "Deseja instalar alguma(s) das dependências opcionais para '$pkg'? (Digite os nomes separados por espaços): " 
                    read -p "" selectedOptionalDeps
                    echo " "

                    # Adicionar os pacotes principais e as dependências opcionais selecionadas à lista de pacotes
                    packages="$packages $pkg $selectedOptionalDeps"
                else
                    # Se não houver dependências opcionais, adicionar apenas o pacote principal à lista
                    packages="$packages $pkg"
                fi
            fi
        done
        ;;
    -S)
        # Pesquisar pacote
        pacmanCommand="pacman -Ss"
        ;;
    -R)
        # Remover pacote
        pacmanCommand="sudo pacman -R"
        ;;
    -Rr)
        # Remover pacote, dependencia e etc
        pacmanCommand="sudo pacman -Rsn"
        ;;
    -Qa)
        # Consultar pacotes instalados do AUR
        pacmanCommand="pacman -Qm"
        ;;
    -Qi)
        # Consultar informação sobre um pacote
        pacmanCommand="pacman -Qi"
        ;;
    -Qn)
        # Consultar lista sobre pacotes desnecessarios e suas dependencias
        pacmanCommand="pacman -Qdt"
        ;;
    -Ua)
        # Atualizar AUR
        pacmanCommand="yay -a -Syu"
        ;;
    -Ia)
        # Instalar pacote do AUR
        pacmanCommand="yay -S"
        ;;
    -Sa)
        # Pesquisar pacote no AUR
        pacmanCommand="yay -a -Ss"
        ;;
    -Uf)
        # Atualizar Flatpak
        pacmanCommand="flatpak update"
        ;;
    -If)
        # Instalar pacote Flatpak
        pacmanCommand="flatpak install flathub"
        ;;
    -Sf)
        # Pesquisar por pacote Flatpak
        pacmanCommand="flatpak search"
        ;;
    -Rf)
        # Remover pacote Flatpak
        pacmanCommand="flatpak uninstall"
        ;;
    -Qf)
        # Consultar pacotes instalados do Flatpak
        pacmanCommand="flatpak list"
        ;;
    -Qif)
        # Consultar informação sobre pacote Flatpak
        pacmanCommand="flatpak info"
        ;;
    --help)
        # help
        pacmanCommand="Lista de comandos"
        echo -e "akp -U: Atualiza sistema (\033[1;35mU\033[0mpdate system)"
        echo -e "akp -Ud: Atualizar distro (\033[1;35mU\033[0mpdate \033[1;35mD\033[0mistro (\033[1;35mArch\033[0m, \033[1;35maur\033[0m and \033[1;35mflatpak\033[0m repo))"
        echo -e "akp -I: Instalar pacote (\033[1;35mI\033[0mnstall package)"
        echo -e "akp -S: Pesquisar pacote (\033[1;35mS\033[0mearch packge)"
        echo -e "akp -R: Remover pacote (\033[1;35mR\033[0memove package)"
        echo -e "akp -Rr: Remover pacote, dependencia e etc (\033[1;35mR\033[0memove package, dependency, etc)"
        echo -e "akp -Qa: Consultar pacotes instalados do AUR (\033[1;35mQ\033[0muery packages from the \033[1;35mA\033[0mUR repository)"
        echo -e "akp -Qi: Consultar informação sobre um pacote (\033[1;35mQ\033[0muery package \033[1;35mI\033[0mnformation)"
        echo -e "akp -Qn: Consultar lista sobre pacotes desnecessarios e suas dependencias (\033[1;35mQ\033[0muery list of \033[1;35mN\033[0meedless packages and dependencies)"
        echo -e "akp -Ua: Atualizar AUR (\033[1;35mU\033[0mpdate \033[1;35mA\033[0mUR)"
        echo -e "akp -Ia: Instalar pacote do AUR (\033[1;35mI\033[0mnstall \033[1;35mA\033[0mUR package)"
        echo -e "akp -Sa: Pesquisar pacote do AUR (\033[1;35mS\033[0mearch package in \033[1;35mA\033[0mUR repo)"
        echo -e "akp -Uf: Atualizar Flatpak (\033[1;35mF\033[0mlatpak \033[1;35mU\033[0mpdate)"
        echo -e "akp -If: Instalar pacote Flatpak (\033[1;35mI\033[0mnstall \033[1;35mF\033[0mlatpak package)"
        echo -e "akp -Sf: Pesquisar por pacote Flatpak (\033[1;35mS\033[0mearch \033[1;35mF\033[0mlatpak package)"
        echo -e "akp -Rf: Remover pacote Flatpak (\033[1;35mR\033[0memove \033[1;35mF\033[0mlatpak package)"
        echo -e "akp -Qf: Consultar pacotes instalados do Flatpak (\033[1;35mQ\033[0muery packages from the \033[1;35mF\033[0mlatpak repository)"
        echo -e "akp -Qif: Consultar informação sobre pacote Flatpak (\033[1;35mQ\033[0muery \033[1;35mI\033[0mnformation \033[1;35mF\033[0mlatpak package)"
        ;;        
    *)
        echo "Comando akp não reconhecido."
        exit 1
        ;;
esac

# Executar o comando
if [ "$1" != "--help" ]; then
    $pacmanCommand $packages
fi

# Necessary packages: pacman-contrib yay flatpak
6 curtidas

Tu é pik4 irmão

1 curtida