#!/bin/bash
## Το NoTails.. Tails Μενού στα Ελληνικά είναι ένα αρθρωτό (modular) Zenity
## σενάριο (script) ανοιχτού κώδικα (open source) για το Tails OS Live USB.
##
## Copyright (C) 2025  Rebelstreamers, version 1.0 από το gamelink.gr
##
## Το πρόγραμμα αυτό μεταφέρεται σε εσάς "AS IS" και χωρίς καμία υποχρέωση από 
## τον δημιουργό του και καλύπτεται απο την AGPLv3 GNU άδεια έκδοσης.


# set -x

# Αρχικοποίηση του NoTails..Tails script.στα Ελληνικά.
folder_name="NoTails..Tails-Files"
title8="8.Κατέβασμα αρχείων με το Transmission"
echo -e '\033]2;'$title8'\007'

# η πλήρης λίστα και όχι η αρχική του κυρίου σεναρίου ωστε να μην βγάζει μήνυμα 
# σε όσα didtributions δεν είναι debian και δεν έχουν συμβατά τερματικά
terminal_list=("kgx" "gnome-terminal" "ptyxis" "mate-terminal" \
    "konsole" "xfce4-terminal" "qterminal" "lxterminal" "uxterm" "xterm")


#
# ------------ ΑΠΟ ΕΔΩ ΚΑΙ ΚΑΤΩ ΟΤΙ ΠΕΙΡΑΖΕΤΕ ΕΧΕΙ ΕΠΙΔΡΑΣΗ ------------ 
# ----------------- ΣΤΗΝ ΑΡΧΙΚΗ ΛΕΙΤΟΥΡΓΙΑ ΤΟΥ SCRIPT ------------------
#

is_installed="$(command -v transmission-gtk)"

# Πρέπει να έχουμε και έναν φάκελο να βάζουμε τα βίντεο μας μέσα στο Persistent
# Αυτή η εντολή δεν πρόκειται να αλλοιώσει τίποτα στο Desktop του καθημερινού Η/Υ
if [ ! -d $HOME/Persistent/TORRENTS ]; then
    if [ ! -d $HOME/Persistent ]; then
        mkdir -p $HOME/Persistent && mkdir -p $HOME/Persistent/TORRENTS 
    else
        mkdir -p $HOME/Persistent/TORRENTS 
    fi  
fi

# Χρώματα για τις οθόνες των τερματικών, 
# Με true έχετε τα χρώματα που έχω βάλει εγώ, με ble τα κάνετε όλα μπλε, με gre 
# όλα πράσινα, με yel όλα κίτρινα, με red όλα κόκκινα και με οτιδήποτε εκτός από 
# αυτές τις 5 ονομασίες δεν θα εμφανίζονται καθόλου χρώματα!
# Σημείωση: οι μεταβλητές του κάθε script ορίζουν τα χρώματα στο script του & μόνο
use_color="true"
NC='\033[0m'

# Βάλτε το δικό σας χρώμα αν θέλετε σαν ένα νέο elif αλλά αλλάξτε και την use_color
if [[ "$use_color" == "true" ]]; then 
    RED='\033[1;31m'; GRE='\033[1;32m'; YEL='\033[1;33m'; BLE='\033[1;36m'
elif [[ "$use_color" == "ble" ]]; then 
    RED='\033[1;36m'; GRE='\033[1;36m'; YEL='\033[1;36m'; BLE='\033[1;36m'
elif [[ "$use_color" == "gre" ]]; then
    RED='\033[1;32m'; GRE='\033[1;32m'; YEL='\033[1;32m'; BLE='\033[1;32m'
elif [[ "$use_color" == "yel" ]]; then
    RED='\033[1;33m'; GRE='\033[1;33m'; YEL='\033[1;33m'; BLE='\033[1;33m'
elif [[ "$use_color" == "red" ]]; then
    RED='\033[1;31m'; GRE='\033[1;31m'; YEL='\033[1;31m'; BLE='\033[1;31m'
else
    #χωρίς χρώματα καθόλου
    unset -v RED; unset -v GRE; unset -v YEL; unset -v BLE; unset -v NC
fi


# Οι κοινές συναρτήσεις για όλα τα σενάρια είναι στο NT_Functions.sh
source "$HOME/Persistent/$folder_name/NT_Functions.sh"


# Έλεγχος για ύπαρξη του zenity. Χωρίς zenity που χρησιμοποεί το Tails OS δεν 
# έχει καμιά απολύτως χρησιμότητα το σενάριο αυτό. 
check_zenity_exists


# αντικαθιστούμε την εντολή torsocks 
entoli_tor="torsocks"
if [ "$(yparxi_tor)" == "false" ];then
    unset -v entoli_tor
fi


to_termatiko_mas="$(yparxi_termatikou "${terminal_list[@]}")"
#echo "$to_termatiko_mas"

if [ "$to_termatiko_mas" == "kgx" ]; then
    # Τρομερά απίθανο σενάριο να βρεθεί το kgx σε Tails παλιότερο της 7.0 έκδοσης
    # Για τον απλούστατο λόγο ότι είναι μια σχετικά πρόσφατη εφαρμογή!
    # Τώρα αν το λειτουργικό δεν είναι το Tails OS και έχει το kgx και τρέχει το
    # script μέσα από τον Persistent φάκελο μαζί με όλα τα υπόλοιπα και είναι 
    # debian η βάση του (π.χ UBUNTU) το script θα χρησιμοποιήσει το gnome-terminal
    # αλλιώς αν είναι το mate-terminal θα χρησιμοποιήσει το mate-terminal και
    # ότου καθεξής αν έχετε την δικιά σας προτίμηση προσθέστε ένα elif και αφού
    # το τρέξετε απλά αλλάξτε τις διαστάσεις και το τελικό command στον επόμενο
    # έλεγχο ... Καλό White Hacking :)
    tails_version="7"
elif [ "$to_termatiko_mas" == "gnome-terminal" ]; then
    # αν το χρησιμοποιήσετε σε TAILS 6 ή σε Linux με το GNOME XORG που δεν βάζει
    # το kgx. Τα Debian desktop που έχουν το gnome-terminal ως προκαθορισμένο είναι:
    # 1) UBUNTU 22 LTS 2) Cinnamon 3) Metacity kai 3) το Debian Default Desktop
    tails_version="6"
elif [ "$to_termatiko_mas" == "ptyxis" ]; then
    # αν το χρησιμοποιήσετε σε νεο UBUNTU DESKTOP (μετα την 25 εκδοση). Τα παλια
    # αλλά ακόμα ενεργά (22 LTS)χρησιμοποιουν gnome-terminal
    tails_version="7u"
elif [ "$to_termatiko_mas" == "mate-terminal" ]; then
    # αν το χρησιμοποιήσετε σε MATE DESKTOP
    tails_version="7m"
elif [ "$to_termatiko_mas" == "konsole" ]; then
    # αν το χρησιμοποιήσετε σε KDE DESKTOP 
    tails_version="7k"
elif [ "$to_termatiko_mas" == "xfce4-terminal" ]; then
    # αν το χρησιμοποιήσετε σε Xfce DESKTOP
    tails_version="7xf"
elif [ "$to_termatiko_mas" == "qterminal" ]; then
    # αν το χρησιμοποιήσετε σε LXQt DESKTOP 
    tails_version="7q"
elif [ "$to_termatiko_mas" == "lxterminal" ]; then
    # αν το χρησιμοποιήσετε σε LXDE DESKTOP
    tails_version="7lx"
elif [ "$to_termatiko_mas" == "uxterm" ]; then
    tails_version="7ux"
elif [ "$to_termatiko_mas" == "xterm" ]; then
    tails_version="7xt"        
else
    #σημαίνει οτι η συνάρτηση δεν επέστρεψε τίποτα από την terminal_list
    echo -ne "\r\n    Μη υποστηριζόμενη έκδοση$BLE Tails OS$NC ή$BLE Linux$NC Desktop\n"
    echo -ne "\r\n To script δεν μπορεί να εκτελέσει σωστά τις εντολές χωρίς συμβατό τερματικό! \n"
    zenity --error --width=350 --height=240 --text \
"    Μη υποστηριζόμενη έκδοση Tails OS ή Linux Desktop \n\n
Δεν γίνεται να εκτελεστούν σωστά οι εντολές χωρίς συμβατό τερματικό! \n"
    sleep 3
    exit
fi

# αυτό θέλει το detection OS και για την επόμενη συνάρτηση που χρησιμοποιεί την
# linux_type μεταβλητή !
detect_Tails_OS_Linux_Desktop

# To login μας είτε ως μόνο του είτε από το κύριο σενάριο
if [ "$1" == "" ]; then
    echo -e "\r\n Θα χρειαστεί να γράψετε μια φορά το$BLE admin password$NC ως$GRE Sudo Pass$NC \n"
    sudo_passs
else
    adminz="$1"
    read -s -p " To script χρησιμοποιεί το admin password που έχετε ήδη βάλει " \
    adminpassword <<< $adminz;  
fi


# clear


transmission_launch(){
    # πιστό αντίγραφο της if του κυρίου σεναριου αλλά σε συνάρτηση ωστε να μην 
    # εξαιρέσω κανένα λειτουργικό αν έχουν ηδη εγκαταστήσει το transmission!!!
    if [ "$tails_version" == "7" ]; then
        # term_command='kgx'
        kgx --title="Οθόνη Transmission" \
        -- sh -c \
        "bash ${entoli_tor} transmission-gtk -p"
    elif [ "$tails_version" == "6" ]; then
        if [ "$linux_type" == "Tails OS" ]; then
            # term_command='gnome-terminal --window --hide-menubar'
            gnome-terminal --window --hide-menubar \
            --title="Οθόνη Transmission" \
            -- sh -c \
            "bash ${entoli_tor} transmission-gtk -p"
        else 
            # νεο GNOME 
            # term_command='gnome-terminal --hide-menubar'
            gnome-terminal --hide-menubar \
            --title="Οθόνη Transmission" \
            -- sh -c \
            "${entoli_tor} transmission-gtk -p"
        fi
    elif [ "$tails_version" == "7u" ]; then
        # new ubuntu
        # term_command='ptyxis'
        ptyxis --new-window \
        --title="Οθόνη Transmission" \
        -- sh -c \
        "${entoli_tor} transmission-gtk -p"
    elif [ "$tails_version" == "7m" ]; then
        # term_command='mate-terminal --hide-menubar'
        mate-terminal --hide-menubar \
        --title="Οθόνη Transmission" \
        -e \
        "${entoli_tor} transmission-gtk -p"
    elif [ "$tails_version" == "7k" ]; then
        # To προκαθορισμένο του KDE Desktop είναι το konsole terminal και το δοκίμασα 
        # σε Virtual Machine αλλά δεν κατάφερα να το κάνω να δουλέψει. 
        # Εγκαταστήστε για να χρησιμοποιήθεί κάποιο άλλο ...
        # term_command='konsole'
        # zen_list_menu='zenity --list '
        # diastaseis_menu='--width=570 --height=350'
        # entoli_ektelesis="-e"
        # konsole \
        # --title="Οθόνη Transmission" \
        # -e \
        bash -c "${entoli_tor} transmission-gtk -p"
    elif [ "$tails_version" == "7xf" ]; then
        # To προκαθορισμένο του Xfce4 είναι το xfce4-terminal και το δοκίμασα 
        # σε Virtual Machine. Για να κρατήσει ανοιχτό το καλούμενο σενάριο ήθελε 
        # την παράμετρο -c μέσα στην εντολή bash αλλά στο τέλος δεν αναγνώριζε τον 
        # κωδικό ως $1 ... οπότε ... Εγκαταστήστε για να χρησιμοποιήθεί κάποιο άλλο 
        # απὸ την terminal_list !
        # term_command='xfce4-terminal --window --hide-menubar'
        # zen_list_menu='zenity --list '
        # diastaseis_menu='--width=570 --height=430'
        # entoli_ektelesis="-e"
        # xfce4-terminal --window --hide-menubar \
        # --title="Οθόνη Transmission" \
        # -e \
        bash -c "${entoli_tor} transmission-gtk -p"
    elif [ "$tails_version" == "7q" ]; then
        qterminal -e "${entoli_tor} transmission-gtk -p"
        # --title="Οθόνη Transmission" \
        # -e \
        # "${entoli_tor} transmission-gtk -p"
    elif [ "$tails_version" == "7lx" ]; then
        # term_command='lxterminal'
        # zen_list_menu='zenity --list '
        # diastaseis_menu='--width=570 --height=420'
        # entoli_ektelesis="-- command=" 
        bash -c "${entoli_tor} transmission-gtk -p"
    elif [ "$tails_version" == "7ux" ]; then
        # term_command='uxterm'
        # zen_list_menu='zenity --list '
        # diastaseis_menu='--width=570 --height=420'
        # entoli_ektelesis="-e"
        bash -c "${entoli_tor} transmission-gtk -p"
    elif [ "$tails_version" == "7xt" ]; then
        # term_command='xterm'
        # zen_list_menu='zenity --list '
        # diastaseis_menu='--width=570 --height=420'
        # entoli_ektelesis="-e"
        bash -c "${entoli_tor} transmission-gtk -p"
    else
        # οχι τερματικό 
        echo "δεν πρόκειται να εμφανιστεί αυτό το μήνυμα ποτέ γιατί χωρίς \
        τερματικό θα έχει βγεί στον αρχικό έλεγχο υπαρξης τερματικού"
    fi
}



if [ "$is_installed" != " " ]; then
    export -f transmission_launch
    transmission_launch
else
	echo -e "\r\nΔεν έχουμε το${BLE} Transmission${NC} στο συστημα αλλά...\n"
	echo -e "\r\nΠρώτα πάντα κάνουμε${GRE} update${NC} το σύστημά μας...\n"
	sudo -S <<< "$adminpassword"  apt -y update
	echo -e "\r\nΤώρα βάζω το${BLE} transmission-gtk${NC} ...\n"
	sudo -S <<< "$adminpassword"  apt -y install transmission-gtk
	sleep 3
    export -f transmission_launch
	transmission_launch 
fi
