Skip to content

Latest commit

 

History

History
84 lines (70 loc) · 2.57 KB

README.md

File metadata and controls

84 lines (70 loc) · 2.57 KB

lxc-rofi

Managing LXC with Rofi

lxc-rofi-app.webm
#!/bin/bash

# sudo yetkisi iste
echo "Lütfen sudo parolanızı girin:" | rofi -dmenu -password | sudo -S echo "Yetkilendirildi"

# LXC konteyner listesini al
output=$(sudo lxc-ls -f)

# Eğer konteyner yoksa bildirim göster ve çık
if [[ -z "$output" ]]; then
    notify-send "LXC Hata" "Hiçbir konteyner bulunamadı!"
    exit 1
fi

# İlk Rofi menüsünde konteyner listesini göster
while true; do
    # Yenileme satırını da ekle
    updated_output=$(echo -e "Yenile\n$(echo "$output")")

    # Konteyner listesini göster
    selection=$(echo "$updated_output" | rofi -dmenu -markup-rows -scroll-method 1 -p "Konteyner Seç" -wrap-mode 0)

    # ESC tuşuna basılırsa uygulamadan çık
    if [[ -z "$selection" ]]; then
        exit 1
    fi

    # Eğer "Yenile" seçilirse konteyner listesini yeniden al
    if [[ "$selection" == "Yenile" ]]; then
        output=$(sudo lxc-ls -f)
        continue
    fi

    # Seçimden sadece konteyner ismini al (ilk sütun)
    container_name=$(echo "$selection" | awk '{print $1}')

    # Seçilen konteynerin durumu
    state=$(echo "$selection" | awk '{print $2}')

    # Start / Stop seçeneklerini sun
    while true; do
        if [[ "$state" == "STOPPED" ]]; then
            action=$(echo -e "Start\nEsc - Geri" | rofi -dmenu -p "İşlem Seç")
        elif [[ "$state" == "RUNNING" ]]; then
            action=$(echo -e "Stop\nEsc - Geri" | rofi -dmenu -p "İşlem Seç")
        else
            notify-send "Hata" "Bilinmeyen durum: $state"
            exit 1
        fi

        # Eğer ESC tuşuna basılırsa, üst menüye dön
        if [[ -z "$action" || "$action" == "Esc - Geri" ]]; then
            break
        fi

        # Seçime göre işlemi gerçekleştir
        case "$action" in
            Start)
                sudo lxc-start -n "$container_name"
                notify-send "Konteyner Başlatıldı" "$container_name başarıyla başlatıldı!"
                # Konteyner listesini güncelle
                output=$(sudo lxc-ls -f)
                break
                ;;
            Stop)
                sudo lxc-stop -n "$container_name"
                notify-send "Konteyner Durduruldu" "$container_name başarıyla durduruldu!"
                # Konteyner listesini güncelle
                output=$(sudo lxc-ls -f)
                break
                ;;
            *)
                notify-send "Hata" "Geçersiz seçim yapıldı!"
                ;;
        esac
    done
done