Εκτέλεση απλών script σε GUI. Πως;

Καλημέρα σε όλους και πολλές ευχές για μια καλή χρονιά!

Χρειάζομαι τη βοήθεια σας σε κάτι μάλλον απλό για κάποιον που είναι προγραμματιστής ή προχωρημένος χρήστης αλλά λιγότερο απλό για κάποιον που δεν ξέρει και πολλά.
Ψάχνω έναν απλό τρόπο ωστε να τρέχω απλά scripts και να έχω έξοδο σε παράθυρο GUI.
Η αναζήση στο διαδίκτυο μου δίνει μόνο λύσεις με Zenity ή Kdialog (τρέχω KDE Neon) αλλά η εντύπωση μου είναι ότι περιορίζονται σε συγκεκριμένες εντολές και κάνουν τη δημιουργία του script πιο πολύπλοκη.

Για παράδειγμα φτιαχνω το παρακατω απλό script που τρέχει στο τερματικό:

#!/bin/bash
clear
for (( ; ; ))
do
 date
 sleep 1
 clear
done

Πως μπορώ να το κάνω χωρίς πολύπλοκες διαδικασίες να τρέχει σε δικό του μικρό παράθυρο;
Σε τερματικό τρέχει με terminator -x “./Time.sh; bash” αλλά ψάχνω κάτι πιο cosy και πιο άμεσο στην εκτέλεση.

Να σημιεώσω πως φυσικά δεν πρόκειται για κάτι σε περιβάλλον παραγωγής. Είναι απλά ενας τρόπος να περάσω δημιουργικά και ομορφα λίγο χρόνο στις διακοπές της πρωτοχρονιάς :blush:

Ευχαριστώ για τη βοήθεια σας!

image

1 «Μου αρέσει»

Θα έλεγα με python.
Πιθανόν με import pysimplegui.

Και να μην ξέρεις python, google αναζητήσεις θα σε βοηθήσουν. Μασημένη τροφή. Και σίγουρα θα το διασκεδάσεις.

Καλή Χρονιά !

4 «Μου αρέσει»

Σε ευχαριστώ πολύ. Θα το ψάξω.

Καλή χρονιά!

1 «Μου αρέσει»

Ένας τρόπος είναι με το whiptail ή κάτι ανάλογο όπως το dialog

#!/bin/bash

while true; do
   TERM=ansi whiptail --title "Date" --infobox "$(date)" 8 78
   sleep 1
done

Ποιο γραφική αίσθηση μπορείς να έχεις με το yad, το zenity ή το kdialog

yad  --width 400 -title "Date" --text="$(date)"

Αν θέλεις κάτι παραπάνω υπήρχε παλιά το tcl/tk και λέω παλιά γιατί έχει μείνει πολύ πίσω και αυτά που βγάζει είναι άσχημα στο μάτι. Αλλά μιας και το κάνεις για την πλάκα μπορείς να το φτιάξεις σε μια γλώσσα προγραμματισμού. Έκτος από την Python, ρίξε μια ματιά στη vala καθώς και στο LÖVE (Lua).

-- finename: main.lua, start with love <dir>
function love.load()
    local myfont = love.graphics.newFont(35)
    love.graphics.setFont(myfont)
    love.graphics.setColor(0,0,0,225)
    love.graphics.setBackgroundColor(255,153,0)
end

function love.draw()
   love.graphics.print(os.date() , 10, 10)
end
-- filename: conf.lua
function love.conf(w)
   w.window.width = 500
   w.window.height = 80
   w.title = "Date and Time"
end

Αφήνω σαν άσκηση το πως θα μάθεις το LÖVE και τη γλώσσα Lua, καθώς και το πως θα πάρεις την ώρα όπως τη θέλεις ή να παίξεις ένα ήχο κάθε δευτερόλεπτο :innocent:. H μιας και είναι ένα περιβάλλον για να φτιάχνεις παιγνίδια, να θυμηθείς την τριγωνομετρία από το σχολείο και να φτιάξεις ένα αναλογικό ρολόι :fearful:

Δεν είναι τόσο δύσκολο:

function love.update(dt)
   minute = os.date("%M")
   minute_hand.angle = ((math.pi * 2) / 60) * minute - (math.pi / 2)
   minute_hand.x = minute_hand.radius * math.cos(minute_hand.angle) + (screen.width / 2)
   minute_hand.y = minute_hand.radius * math.sin(minute_hand.angle) + (screen.height / 2)
end

function love.draw()
     love.graphics.setColor(0, 0.4, 0.4)
     love.graphics.line(screen.width / 2, screen.height / 2, minute_hand.x, minute_hand.y)
end

Και με λίγα πράγματα ακόμα:

image

4 «Μου αρέσει»

και εγω θα προτεινα το yad. μπορεις να κανεις απιστευτα πραγματα με δαυτο. εχω φτιαξει ενα σκριπτακι που με βγαζει διαφορες πληροφοριες συστηματος με το yad, και το βγαζει αρκετα ομορφο θα ελεγα. ακριβως οπως στο macOS το “about this mac”… κατι σαν αυτο:

και ο κωδικας γι’αυτο το πραγμα:

uname -a > //dev/shm/Overview
echo '' >> //dev/shm/Overview
lspci | grep --regexp="VGA" --ignore-case >> //dev/shm/Overview
echo '' >> //dev/shm/Overview
lscpu | grep --regexp="model name" --ignore-case >> //dev/shm/Overview
echo '' >> //dev/shm/Overview
echo "Overclock Status:	\c" >> //dev/shm/Overview & cat //sys/devices/system/cpu/cpufreq/boost >> //dev/shm/Overview
echo '' >> //dev/shm/Overview
cat //proc/meminfo | grep --regexp=MemTotal: --ignore-case >> //dev/shm/Overview
echo '' >> //dev/shm/Overview
sudo -S dmidecode --type 0 </password/file | grep --regexp="Revision:" --regexp="Version:" --ignore-case >> //dev/shm/Overview
xrandr | grep --regexp=connected --regexp=*+ --ignore-case > //dev/shm/Displays
sudo -S dmidecode --type 17 </password/file | grep --regexp="Memory Device" --regexp="Size:" --regexp="Bank Locator:" --regexp="Speed:" --ignore-case > //dev/shm/Memory
df -h | grep --regexp=file --ignore-case > //dev/shm/Storage
echo '' >> //dev/shm/Storage
df -h | grep --regexp=/dev/ --ignore-case >> //dev/shm/Storage
sleep 1 &&
yad --plug=$(echo $$) --tabnum=1 --image='debian-logo' --text-info --wrap --filename="//dev/shm/Overview" &
yad --plug=$(echo $$) --tabnum=2 --image='video-display' --text-info --wrap --filename="//dev/shm/Displays" &
yad --plug=$(echo $$) --tabnum=3 --image='application-x-firmware' --text-info --wrap --filename="//dev/shm/Memory" &
yad --plug=$(echo $$) --tabnum=4 --image='drive-multidisk' --text-info --wrap --filename="//dev/shm/Storage" &
yad --plug=$(echo $$) --tabnum=5 --image='dialog-info' --icons --compact --read-dir=/home/lmde4/.icons &
yad --plug=$(echo $$) --tabnum=6 --file &
yad --notebook --title='About This "Mac"' --window-icon='./.icons/linuksapple.png' --no-buttons --tab-borders='0' --key=$(echo $$) --center --tab='Overview' --tab='Displays' --tab='Memory' --tab='Storage' --tab='Support' --tab='service'
4 «Μου αρέσει»