Como eu tornaria esse script mais eficiente? [fechadas]

1

Eu estou escrevendo um script que irá sistematicamente instalar o tema Numix usando o gnome-tweak-tool.

Eu quero ter certeza de que não reinstalei os itens se eles já estiverem instalados, então usei which [name of item] > /dev/null .

Aqui está meu script atual:

function installNumix() {
    echo "Checking if Numix is installed ..."
    if ! which gnome-tweak-tool > /dev/null; then
        if ! which numix-gtk-theme > /dev/null; then
            if ! which numix-icon-theme-circle > /dev/null; then
                echo "Installing Numix ..."
                sudo add-apt-repository ppa:numix/ppa
                sudo apt-get update
                sudo apt-get install numix-gtk-theme numix-icon-theme-circle -y
                sudo apt-get install gnome-tweak-tool -y
                echo "Configuring Numix:"
                echo "===================================================================="
                echo "Please use the 'tweak-tool' to change your theme to 'Numix'."
                echo "[GTK+]: Numix."
                echo "[icons]: Numix-Circle."
                echo "===================================================================="
                gnome-tweak-tool
                echo "Numix has been manually configured."
                source ~/.profile
                changeBackground backgrounds/background.png
                changeProfilePicture $(whoami) profile_pictures/profile_picture.png
                echo "The Numix has been installed."
                sleep 5
            fi
        fi
    else
        echo "Numix has already been installed."
        sleep 5
    fi
}

Meu arquivo .profile :

#Change desktop background f(x)
#Ex. changeBackground  /path/to/image.png
function changeBackground() {
    FILE="file://$(readlink -f "$1")"
    fileName="${FILE##*/}" # baseName + fileExtension

    echo "Changing desktop background to: '$fileName' ..."
    dconf write "/org/gnome/desktop/background/picture-uri" "'$FILE'"
    echo "Desktop background has been changed."
    sleep 5
}

#Change profile picture f(x)
#Ex. changeProfilePicture username /path/to/image.png
function changeProfilePicture() {
    FILE="$(readlink -f "$2")"
    fileName="${FILE##*/}" # baseName + fileExtension

    echo "Checking if 'imagemagick' is installed ..."
    if ! command brew ls --versions imagemagick >/dev/null 2>&1; then
        echo "Installing 'imagemagick' ..."
        brew install imagemagick -y
        echo "'Imagemagick' has been installed."
        sleep 5
    else
        echo "'Imagemagick' has already been installed."
        sleep 5
    fi

    echo "Changing profile picture to: '$fileName' ..."
    sudo mkdir -p '/var/lib/AccountsService/icons/'"$1"
    sudo convert "$2" -set filename:f '/var/lib/AccountsService/icons/'"$1/%t" -resize 96x96 '%[filename:f].png'
    echo "Profile picture has been changed."
    sleep 5
}
    
por Nicholas Adamou 08.06.2016 / 20:15

1 resposta

0

Em vez de fazer com que o usuário use manualmente gnome-tweak-tool , você pode definir os temas gtk e window-manager e o tema de ícones em seu script com gsettings . por exemplo.

gsettings set org.gnome.desktop.interface gtk-theme Numix
gsettings set org.gnome.desktop.wm.preferences theme Numix
gsettings set org.gnome.desktop.interface icon-theme Numix-Circle

BTW, a menos que numix-gtk-theme e numix-icon-theme-circle sejam executáveis em algum lugar nos diretórios PATH, executar which neles não fará o que você deseja.

Verifique a existência de um arquivo ou diretório específico. por exemplo,

if [ ! -d /usr/share/themes/Numix ] ; then ... fi

Eu não tenho o tema Numix instalado, então não sei se é o diretório certo - use dpkg -L numix-gtk-theme e dpkg -L numix-icon-theme-circle para descobrir os diretórios corretos para procurar.

Como alternativa, não se preocupe em verificar se os pacotes já estão instalados. Basta executar:

apt-get -y install numix-gtk-theme numix-icon-theme-circle gnome-tweak-tool

(opcionalmente redirecione stdout e stderr para / dev / null)

Se a versão mais recente desses pacotes já estiver instalada, apt-get não fará nada. Caso contrário, ele será instalado ou atualizado.

Por fim, use sudo add-apt-repository -y ppa:numix/ppa para que não solicite ao usuário. Se o repositório já foi adicionado, nenhum dano será feito - ele comentará entradas anteriores no arquivo /etc/sources.list.d/numix-ubuntu-ppa-yakkety.list e adicionará o ppa ao início do arquivo.

    
por 09.06.2016 / 07:32