Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Autor Téma: GUI pro spouštění skriptů - poradí někdo?  (Přečteno 3561 krát)

JirkaZ

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 1835
  • Dlouholetý uživatel Linuxu a open source obecně.
GUI pro spouštění skriptů - poradí někdo?
« kdy: 24 Října 2024, 20:20:58 »
Stručně popíšu situaci:

mám několik skriptů s prakticky stejným obsahem (liší se jen parametry). Slouží pro posílání řídících znaků (řetězců) přes sériový port. Příklad příkazu (normálně se spouští v konzoli), který by byl jako jeden skript (parametry, resp. zasílané znaky či řetězce jsou v uvozovkách):

Kód: [Vybrat]
stty -F /dev/ttyS5 19200 -parity cs8 -cstopb && echo -e -n "\x1b\x48\x30" > /dev/ttyS5
Rád bych k těmto (cca 5 až 10) skriptům udělal GUI, kde by se v okně myší "mačkala" tlačítka a po zmáčknutí by se na pozadí (tj. bez viditelně otevřeného okna s konzolí) příslušný skript spustil.

Při letmém zkoumání možností, jak to udělat, jsem narazil na Zenity, Kdialog apod., ale nikde jsem nenašel příklad odpovídající popisu výše.

Poradil by někdo? Nejlépe přímo příkladem (tj. kódem)...

Díky.
« Poslední změna: 24 Října 2024, 20:26:10 od JirkaZ »

Ventero

  • Závislák
  • ***
  • Příspěvků: 3664
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #1 kdy: 24 Října 2024, 21:02:51 »
Pokud vím, tak v obou dvou uvedených aplikacích se dá udělat asi jen potvrzovačka. Kdialog bude ale nativ pro KDE.
Ale bylo něco takového, čím se skládali okna pro výkon skriptů. Bylo to použito třeba tuším pro grub-doctor ve starých Parted Magic a v SalineOS. Tenkrát jsem ho zkusil portovat a zjistil jsem to prostředí, které se však musí doinstalovat. Akorát se pak naučit syntaxi.

takže když půjdeš po stopách grub-doctor, tak najdeš, to co hledáš :)

Tak se to myslím jmenuje "Yad", ale jak na to koukám zběžně, tak by to možná šlo i v tom Zenity - myslím, že jsem to tenkrát takhle přepsal.
Tady je script, který napoví, jak se s tím pracuje:
https://github.com/xanadu-linux/xanadu-grubdoctor/blob/master/grub-doctor

Ale nevím, jestli se s tím dá udělat třeba víc tlačítek. Tak bych se spíš koukal na to jak skládat okna přímo - tzn, nějaký CSS nebo tak něco? ...
« Poslední změna: 24 Října 2024, 21:29:14 od Ventero »
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

JirkaZ

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 1835
  • Dlouholetý uživatel Linuxu a open source obecně.
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #2 kdy: 24 Října 2024, 21:26:59 »
Já jsem zatím šel "po stopách" ChatGPT (zcela proti svému přesvědčení) a něco (i když nedokonale) už to dělá.

Nejhorší je tomu blbému stroji položit otázku tak, aby nenabízel úplné nesmysly...
« Poslední změna: 24 Října 2024, 21:31:03 od JirkaZ »

West

  • Aktivní člen
  • *
  • Příspěvků: 410
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #3 kdy: 25 Října 2024, 09:43:16 »
Ak nepotrebuješ vidieť reakciu skriptu, tak by asi išlo urobiť spúšťače a poklepávať na ne myšou z plochy. Ja si takým spôsobom mením parametre power managamentu kedy potrebujem aby sa mi PC niekedy uspal za 10 minút nečinnosti, inokedy za 2 hodiny.

JirkaZ

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 1835
  • Dlouholetý uživatel Linuxu a open source obecně.
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #4 kdy: 25 Října 2024, 12:43:12 »
West: jo, to je jistě možné, podobně lze třeba spouštět ty "subskripty" třeba poklepáním na ně v Krusaderu.

Ale chtěl jsem mít vše pohromadě (tedy v tom jednom okně), taky to chápu jako něco nového, čemu se přiučím.

ramael

  • Stálý člen
  • **
  • Příspěvků: 738
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #5 kdy: 25 Října 2024, 22:03:24 »
Kód: [Vybrat]
#! /usr/bin/env bash

odpoved=$(zenity --info --title 'Moje okno' \
      --text 'Vyber si:' \
      --extra-button PRVA \
      --extra-button DRUHA \
      --extra-button TRETI \
      --extra-button CTVRTA \
      --ok-label Storno\
       )
  navrat=$?

# Test návratové hodnoty
if [ $navrat -eq 0 ]; then
  exit 0
fi

# Testy odpovědí
case $odpoved in
  PRVA) echo "$odpoved jsi si vybral"
    echo "Ty dva oddělovací středníky jsou důležité"
    ;;
  DRUHA) echo "Fakt chceš dvojku?"
    ;;
  TRETI) echo "$odpoved - tak ta se ti vymstí"
    ;;
  CTVRTA) echo "$odpoved je ta správná volba. Už jsi profík :D"
    ;;
esac

Myslím, že je to dost názorně napsáno, takže vzhůru do úprav. Na ten script si udělej spouštěč na ploše a hotovo.
Lenovo: ThinkPad X380 Yoga
Joutůůůůb

JirkaZ

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 1835
  • Dlouholetý uživatel Linuxu a open source obecně.
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #6 kdy: 26 Října 2024, 19:12:52 »
ramaeli díky, běhá to, ale:

1) postrádám tam část, která bude spouštět příslušné subskripty (resp. asi tam alespoň v základu je, ale nevidím ji) - čili poprosím o doplnění v tom smyslu (subskripty budiž třeba a.sh, b.sh a c.sh);

2) potřebuju, aby se okno po volbě libovolné z aktivních hodnot (tzn. některého z nabízených tlačítek => subskriptů kromě Storno) nezavřelo, ale bylo připravené na další volbu (jde  to, ejaj vytvořený kód to umí).

Vážně nejsem programátor, takže mě ber s rezervou ;-) Zvládám s odřenýma ušima jednoduché věci v Basicu, nějaké úplné základy z Arduino IDE apod.

Edit: krůček už jsem udělal a snad to ty subskripty spouští:

Kód: [Vybrat]
#! /usr/bin/env bash

odpoved=$(zenity --info --title 'Moje okno' \
      --text 'Vyber si:' \
      --extra-button PRVA \
      --extra-button DRUHA \
      --extra-button TRETI \
      --ok-label Storno\
       )
  navrat=$?

# Test návratové hodnoty
if [ $navrat -eq 0 ]; then
  exit 0
fi

# Testy odpovědí
case $odpoved in
PRVA) ./a.sh
    ;;
DRUHA) ./b.sh
    ;;
TRETI) ./c.sh
    ;;
esac
« Poslední změna: 26 Října 2024, 19:27:13 od JirkaZ »

Ventero

  • Závislák
  • ***
  • Příspěvků: 3664
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #7 kdy: 26 Října 2024, 19:49:07 »
Jeste zalozky by se mohly v tom okne hodit - to by se mozna vytahlo z toho grubdoctor.
Zenity je tusim i v xfce. Myslim, ze jsem tenkrat ten skript vzal a vsechno "yad" jsem prepsal na "zenity" a fachalo to. A tam i to retezeni na vykon prikazu.

Kdyz uz jsme u toho ve Win je Notepad++ a ten umi hromadny prepis, nahrazeni znaku atp. - je nejaka obdoba v Deb-linux? To by dost zjednodusilo takovy prepis skriptu pro jine prostredi ..
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

ramael

  • Stálý člen
  • **
  • Příspěvků: 738
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #8 kdy: 26 Října 2024, 21:14:37 »
Jeste zalozky by se mohly v tom okne hodit - to by se mozna vytahlo z toho grubdoctor.
Zenity je tusim i v xfce. Myslim, ze jsem tenkrat ten skript vzal a vsechno "yad" jsem prepsal na "zenity" a fachalo to. A tam i to retezeni na vykon prikazu.

Kdyz uz jsme u toho ve Win je Notepad++ a ten umi hromadny prepis, nahrazeni znaku atp. - je nejaka obdoba v Deb-linux? To by dost zjednodusilo takovy prepis skriptu pro jine prostredi ..
Uff, ty mne dáváš. Zenity jede na Xkách. Takže to spustíš snad všude vyjma absolutně čistého Waylandu. A to má jen pár lidí, protože většina distribucí většinou přidává Xwayland kvůli zpětné kompatibilitě.
Hromadný přepis umí skoro každý normální texťák. Dost často to používám, na přejmenování proměnných, funkcí ap. Ale přepisovat takto skript pro jiné prostředí, si troufnu říct že nebude fungovat.
Hromadný přepis v neovimu (můj best už spousty let) a tím pádem ve vimu (kdysi jediný normální texťák):
Kód: [Vybrat]
ESC na základní mód
:%s/co chceš přepsat/čím to přepsat/gc
ENTER
Přepis v micro textovém editoru (je to fakt bomba. Jediná chybka že neumí LSP):
Kód: [Vybrat]
ctrl+e
replace "co chceš přepsat" "čím to přepsat"
ENTER
potvrzení klávesou y
Nano:
Kód: [Vybrat]
alt+r
co chceš nahradit
ENTER
čím to nahradit
ENTER
potvrzení klávesou a
Lenovo: ThinkPad X380 Yoga
Joutůůůůb

ramael

  • Stálý člen
  • **
  • Příspěvků: 738
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #9 kdy: 26 Října 2024, 21:49:18 »
ramaeli díky, běhá to, ale:

1) postrádám tam část, která bude spouštět příslušné subskripty (resp. asi tam alespoň v základu je, ale nevidím ji) - čili poprosím o doplnění v tom smyslu (subskripty budiž třeba a.sh, b.sh a c.sh);

2) potřebuju, aby se okno po volbě libovolné z aktivních hodnot (tzn. některého z nabízených tlačítek => subskriptů kromě Storno) nezavřelo, ale bylo připravené na další volbu (jde  to, ejaj vytvořený kód to umí).

Vážně nejsem programátor, takže mě ber s rezervou ;-) Zvládám s odřenýma ušima jednoduché věci v Basicu, nějaké úplné základy z Arduino IDE apod.

Edit: krůček už jsem udělal a snad to ty subskripty spouští:

Kód: [Vybrat]
#! /usr/bin/env bash

odpoved=$(zenity --info --title 'Moje okno' \
      --text 'Vyber si:' \
      --extra-button PRVA \
      --extra-button DRUHA \
      --extra-button TRETI \
      --ok-label Storno\
       )
  navrat=$?

# Test návratové hodnoty
if [ $navrat -eq 0 ]; then
  exit 0
fi

# Testy odpovědí
case $odpoved in
PRVA) ./a.sh
    ;;
DRUHA) ./b.sh
    ;;
TRETI) ./c.sh
    ;;
esac
Jdeš na to správně.
Kód: [Vybrat]
#! /usr/bin/env bash

navrat=1
while [ $navrat -eq 1 ]; do
odpoved=$(zenity --info --title 'Moje okno' \
      --text 'Vyber si:' \
      --extra-button PRVA \
      --extra-button DRUHA \
      --extra-button TRETI \
      --ok-label Storno\
       )
  navrat=$?

# Testy odpovědí
case $odpoved in
PRVA) ./a.sh
    ;;
DRUHA) ./b.sh
    ;;
TRETI) ./c.sh
    ;;
esac
done
Okno ve smyčce. Jen se musela změnit podmínka návratové hodnoty a dát to do smyčky while. Ono v bash se dost blbě něco píše, chce to jinak myslet.
Arduino je důvod proč jsem si nedávno zaneřádil systém Xkama. Pořídil jsem si nové převodníky USB/UART na programování Atmelů. No a chvíli na to mne skolil Covid. Po pár dnech kdy jsem se trochu zmátořil a začal více vnímat mne zarazilo ticho. Nešla chladnička. Odešel ten regulátor teploty. Je to 20 let starý kousek a nedařilo se mne na internetu sehnat tu blbost s trubičkou s plynem. A páč věcem nejradši dávám další život. Napsal jsem jednoduchý prg na Atmel aby to snímalo teplotu uvnitř chladničky a podle toho spouštělo přes SSR relátko kompresor. Jenže jak jsem byl ještě trochu mentálně mimo, nedařilo se mne chip flashnout tím novým převodníkem. A tak jsem to hodil do arduina a nejjednodušší bylo nainstalovat tu jejich parodii na IDE. A tím se mi dostali Xka do systému. Ale chladnička jede jako fík. Při dosažení 4,5°C se kompresor vypne a zapne se až při 7°C.
Lenovo: ThinkPad X380 Yoga
Joutůůůůb

JirkaZ

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 1835
  • Dlouholetý uživatel Linuxu a open source obecně.
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #10 kdy: 26 Října 2024, 22:16:29 »
ramael: jo jo, okno už zůstává otevřené, díky. Ještě to později vyzkouším s reálnými subskripty a pokud bude vše fungovat, tak spokojenost :-)

Mimochodem: šlo by všechny skripty (tedy tento hlavní probíraný a ty ovládací subskripty) spojit do jednoho?

ramael

  • Stálý člen
  • **
  • Příspěvků: 738
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #11 kdy: 27 Října 2024, 02:31:43 »
ramael: jo jo, okno už zůstává otevřené, díky. Ještě to později vyzkouším s reálnými subskripty a pokud bude vše fungovat, tak spokojenost :-)

Mimochodem: šlo by všechny skripty (tedy tento hlavní probíraný a ty ovládací subskripty) spojit do jednoho?
Samozřejmě. Tam kam jsi zadal názvy subskriptů napiš přímo jejich obsah. Jako jsem měl v prvním příkladě dvě echa.
Lenovo: ThinkPad X380 Yoga
Joutůůůůb

ramael

  • Stálý člen
  • **
  • Příspěvků: 738
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #12 kdy: 27 Října 2024, 12:47:28 »
Ještě dodatek. Jde si to samozřejmě pojmenovat i lidštěji:
Kód: [Vybrat]
#! /usr/bin/env bash

navrat=1
while [ $navrat -eq 1 ]; do
odpoved=$(zenity --info --title 'Moje okno' \
      --text 'Vyber si:' \
      --extra-button "První sekvence" \
      --extra-button "Ty ty ty zlobivý porte" \
      --extra-button TRETI \
      --ok-label Storno\
       )
  navrat=$?

# Testy odpovědí
case $odpoved in
"První sekvence") ./a.sh
    ;;
"Ty ty ty zlobivý porte") ./b.sh
    ;;
TRETI) ./c.sh
    ;;
esac
done
A pak bych se ještě osobně přikláněl nechat to v oddělených scriptech. Ta fragmentace z monolitického scriptu (programu, funkce atd.) je lepší na hledání chyb, či příští úpravu. Časem se třeba bude něco muset poupravit. A v monolitu to budeš muset najít a něco přepsat. Vzniká možnost chyby. Kdežto kousky kódů se spravují lépe.
Na záložky jako takové zenity není. Více i s příklady tady https://help.gnome.org/users/zenity/stable/index.html.en
Lenovo: ThinkPad X380 Yoga
Joutůůůůb

Ventero

  • Závislák
  • ***
  • Příspěvků: 3664
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #13 kdy: 27 Října 2024, 16:09:39 »
Jestli by nebylo nakonec lepsi si nezjistit, jak vyuzit tu zakladni stavbu oken primo na urovni WM.
Nekdy na to zkusim, jen tak akademicky, mrknout ..
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

Ventero

  • Závislák
  • ***
  • Příspěvků: 3664
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #14 kdy: 27 Října 2024, 16:55:43 »
Mrkni jeste na tcl/tk
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

ramael

  • Stálý člen
  • **
  • Příspěvků: 738
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #15 kdy: 27 Října 2024, 17:35:14 »
 :) :) :) :) ;D ;D ;D ;D
Mno, co na to říct. To zenity je to nejjednodušší co vlastně existuje. @Ventero zkus si něco naprogramovat sám, jen nějakou blbůstku a uvidíš co to je za mazec. A na úrovni WM ještě větší.
S TK nějaké zkušenosti mám.
Pokud chceš fakt něco hodně jednoduchého, univerzálnějšího bez zenity omezení, tak bude nejjednodušší si to napsat jako web a socketem ovládat. Pomocí node.js to jde docela dobře. Ale pořád to bude o řád více práce než se zenity.
Lenovo: ThinkPad X380 Yoga
Joutůůůůb

Ventero

  • Závislák
  • ***
  • Příspěvků: 3664
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #16 kdy: 27 Října 2024, 19:11:38 »
Jojo - vim. Kolikrat staci slozitejsi konfigurace Grub2.
Jde mi o to, jak to gui okno udelat nezavisle na prostredi a na dalsich rekvizitach, aby se to dalo spustit nejlepe napric distry (alespon deb-based) bez ohledu na DE a bez nutnosti instalovat dalsi veci, at uz je to Zenity, Python atd.
Neco, co proste hned spustim at uz v Ubuntu, Kubuntu, Xubuntu, Debianu atp.
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

ramael

  • Stálý člen
  • **
  • Příspěvků: 738
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #17 kdy: 27 Října 2024, 22:32:04 »
Jojo - vim. Kolikrat staci slozitejsi konfigurace Grub2.
Jde mi o to, jak to gui okno udelat nezavisle na prostredi a na dalsich rekvizitach, aby se to dalo spustit nejlepe napric distry (alespon deb-based) bez ohledu na DE a bez nutnosti instalovat dalsi veci, at uz je to Zenity, Python atd.
Neco, co proste hned spustim at uz v Ubuntu, Kubuntu, Xubuntu, Debianu atp.
Vždycky budeš muset něco nainstalovat. To zenity běží ve všem co jsi vzpomenul. On bash není určen na gui aplikace. Proto bude muset být propojen přes nějakého prostředníka. Pokaždé budeš muset nainstalovat nějakou podporu. Záleží jen na tvůrci jaký jazyk je mu nejbližší.

Buď nechápu o co ti jde. Nebo ty nechápeš že ...

Pokud nechceš TK, je hodně dobrá volba pyglet: https://pyglet.org/ Vlastně je to lepší volba.
Je to hodně rychlé, běží to jak na X tak Waylandu. Učil jsem na tom sinus cosinus, formou ovládání otáčení autíčka. Vysvětloval jsem na tom jak je i ta základní matematika důležitá i jen na takovou blbinku jako je otáčení autíčka ve hrách z ptačí perspektivy. Ale jako každá pythoní věc se to musí potento... Hned v úvodu https://github.com/pyglet/pyglet je vidět velká bolest pythonu. Mění se API a něco nemusí fungovat. Proto v pythonu píšu už jen maximálně když něco potřebuju rychle, ale ne na dlouho. Zkrátka držím se od něho dál.

Pak je napříč X a Waylandem https://love2d.org/
Také dost dobré a navíc pro jazyk LUA. Jazyk vznikl pro neprogramátory. Dá se dobře naroubovat skoro do všeho, protože má hodně mrňavý preprocesor. V jazyce lua je naprogramován best texťák neovim. Lua je v conky, yazi, snad všude.

Pak tu máme mega počiny typu GNOME: https://developer.gnome.org/documentation/tutorials.html nebo KDE https://develop.kde.org/hig/
Tohle byli příklady knihoven které tě odstíní od low levelu. Vynechal jsem schválně GTK4 a další.

Jupí na nižší věci: https://wayland-book.com/introduction.html nebo konkurece z X https://en.wikibooks.org/wiki/OpenGL_Programming# oboje pro C++ (skvělý, všestranný jazyk). Anebo https://medium.com/@dbiro97/understanding-linux-graphical-stack-by-creating-a-window-7f82182ee19 Příklad v rustu. Rust je teď můj favorit. Ještě s ním bojuju, ale líbí se mi ta rychlost a univerzálnost. Jen je třeba u tohoto jazyka jinak přemýšlet.

Takhle jsi to myslel s nezávislostí na DE? Věci z GNOME ti pofrčí tak i tak na KDE a naopak také. Lowlevel X ti poběží kdekoliv kde bude Xserver a lowlevel Wayland kdekoliv kde bude Wayland server.
Ale ať si z toho vybereš cokoliv a zvládneš to, určitě na to nebudeš roubovat nějaký bash skript. To už si nativně nasmolíš přímo v příslušném jazyce.
Lenovo: ThinkPad X380 Yoga
Joutůůůůb

Roman Vacho

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 6184
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #18 kdy: 28 Října 2024, 10:53:50 »
Taky přisypu:
vychází ze Zenity
https://sourceforge.net/projects/yad-dialog/

A tady máš něco od Basicu, kdybys měl nostalgickou...
https://gambas.sourceforge.net/en/main.html

Nebo provařený QT Creator...

Anebo nahoď bakšiš a seženu dělníka, který s tím má zkušenosti v Lin a Win a je levný.
« Poslední změna: 28 Října 2024, 11:02:40 od Roman Vacho »
Vyřešená vlákna je vhodné uzavřít "Topic Solved" dole pod vláknem.

Prosím označit text kódu v editoru # pro lepší formátování textu případného výpisu. Děkuji.

Ventero

  • Závislák
  • ***
  • Příspěvků: 3664
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #19 kdy: 28 Října 2024, 12:21:16 »
Yad byl právě použit v tom grubdoctor, jak jsem odkazoval a tím, že ze Zenity vychází fungoval ten přímý přepis.
jen mě mrzí, že nejdou udělat záložky. To je za mě to Zenity nedotáhlé.
Moje představa je asi taková, že se udělá stejné okno jako když spustím např. Network manager.

A Pythonu se právě chci vyhnout - to jde vidět na hp-lip, že to není zrovna spolehlivé řešení a cesta pekelná.

Takže, jestli jsem pochopil dobře, tak to jde jedině přímo jako GTK (tedy asi nějaký GTK Creator) a to je příliš složité ..

Jinak to tcl/tk - u toho někde psali, že to pak spustíš nezávisle na čemkoliv a jinde, že je třeba doinstalovat to "tk" ..

A ten Tkinter je zase via Python.

Edit:
Aha "Většina operačních systémů Linux je dodávána s vestavěným Tcl a v těchto systémech můžete okamžitě začít."
https://www.tutorialspoint.com/tcl-tk/tcl_environment.htm

Ale ještě jsem nenašel, jestli v tcl/tk jdou udělat ty záložky. Ale tím, že to volá wm (chápu jako windows manager), tak by to jít mělo ..

Ono to možná půjde nějak i v tom Zenity, když se to šikovně navlíkne. Ale i to už je pro mě složité se tím prokousávat a učit se programovat ..
« Poslední změna: 28 Října 2024, 12:50:39 od Ventero »
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

Ventero

  • Závislák
  • ***
  • Příspěvků: 3664
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #20 kdy: 28 Října 2024, 13:07:32 »
Tady je super tutoriál pro Zenity. Akorát, že u všeho pak jen lakonicky připíšou "výstup je třeba přiřadit proměnné"a "výstupovou logiku dále použít" atp., což je zase pro neznalce nicmoc, bo neví jak. A pak se naučit syntaxi těch podmínek a proměnných. To by zase zabralo času ..
https://ostechnix.com/zenity-create-gui-dialog-boxes-in-bash-scripts/

Něco pak napoví zase jiné ukázky jinde - např.:
https://www.tomshardware.com/software/linux/how-to-create-a-custom-linux-app-menu-with-zenity

Takže takhle toho hromadu pročíst, prozkoušet - no hotový koníček, na který mi tedy fakt moc nezbývá ..
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

Roman Vacho

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 6184
« Poslední změna: 28 Října 2024, 13:22:40 od Roman Vacho »
Vyřešená vlákna je vhodné uzavřít "Topic Solved" dole pod vláknem.

Prosím označit text kódu v editoru # pro lepší formátování textu případného výpisu. Děkuji.

ramael

  • Stálý člen
  • **
  • Příspěvků: 738
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #22 kdy: 28 Října 2024, 23:52:10 »
Tady je super tutoriál pro Zenity. Akorát, že u všeho pak jen lakonicky připíšou "výstup je třeba přiřadit proměnné"a "výstupovou logiku dále použít" atp., což je zase pro neznalce nicmoc, bo neví jak. A pak se naučit syntaxi těch podmínek a proměnných. To by zase zabralo času ..
https://ostechnix.com/zenity-create-gui-dialog-boxes-in-bash-scripts/

Něco pak napoví zase jiné ukázky jinde - např.:
https://www.tomshardware.com/software/linux/how-to-create-a-custom-linux-app-menu-with-zenity

Takže takhle toho hromadu pročíst, prozkoušet - no hotový koníček, na který mi tedy fakt moc nezbývá ..

Tak já teda ten můj script okomentuji:
*Shebank
#! /usr/bin/env bash

*Nastavení proměnné která bude uchovávat návratovou hodnotu (exit) ze Zenity
*Rovnou ji přednastavíme na úspěch
navrat=1

*Smyčka která testuje tu návratovou hodnotu. Pokud to bude jednička, smyčka se zopakuje a otevře okno Zenity
while [ $navrat -eq 1 ]; do

*A tady nastává to kouzlo a přiřazuje se výstup/výběr do proměnné s názvem odpoved
*Zenity se spustí v subshelu
odpoved=$(zenity --info --title 'Moje okno' \
      --text 'Vyber si:' \
      --extra-button "První sekvence" \
      --extra-button "Ty ty ty zlobivý porte" \
      --extra-button TRETI \
      --ok-label Storno\
       )
*Do proměnné navrat se zapíše návratová hodnota předchozího příkazu
*což je subshel se zenity
navrat=$?

*Testy odpovědí = výstupová logika
case $odpoved in
"První sekvence") ./a.sh
    ;;
"Ty ty ty zlobivý porte") ./b.sh
    ;;
TRETI) ./c.sh
    ;;

*Ukončení testu case
esac

*Návrat smyčky. Pokud bude proměnná navrat mít  hodnotu nula
*znamená to že se kliklo na tlačítko ok-label s mnou přiřazeným názvem Storno
*smyčka se zde ukončí
done

Ta syntaxe je jen bash, nic jiného.
Vážně by mě zajímalo, a myslím fakt vážně. Jak by sis představoval aby to fungovalo? A tím nemyslím "chci záložky"! Tím myslím co ty jako uživatel bys chtěl napsat a ono se to bude podle toho chovat.
Lenovo: ThinkPad X380 Yoga
Joutůůůůb

Ventero

  • Závislák
  • ***
  • Příspěvků: 3664
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #23 kdy: 29 Října 2024, 15:19:20 »
Jde mi v podstatě o totéž, co psal Roman - zjednodušení a zkrácení času. Akorát mi šlo o širší možnost to strukturovat a rozvětvit, aby to bylo stále přehledné. A ne aby to vypadalo, jako Clonezilla, Testdisk apod. Tedy udělat nějaké GUI prostředí/rozhraní pro kombinované spouštění jednotlivých utilit a skriptů s tím, že by je to sjednocovalo, bylo to přehledné a nemuselo se to všechno vypisovat v terminálu. A to tak, že tam ale půjdou volit parametry z nějaké nabídky (předepsaný paramlist) a příp. ještě dopsat.
A proto jsem vzpomněl záložky. Stejně tak třeba rozbalovací nabídka. Abych nespouštěl tupě skripty, ale měl možnost tam zadávat hodnoty, určovat zdroj/cíl apod. Jinak nemám úplně konkrétní představu ani nemůžu - ta by se vyvrbila, až bych tu slátaninu tvořil.

Ale v pohodě - když by se to člověk schopně naučil s tím Zenity, tak by se to dalo udělat celkem uspokojivě. I kdyby tak, že by se udělal soubor jednotlivých oken pro každou utilitu zvlášť a pak se to jen zastřešilo jedním generálním rozcestníkovým oknem. Akorát pak zajistit, aby se to pak nějak vrátilo k tomu hlavnímu rozhranní. Ostatně takto byly koncipovány některé vypalovací aplikace např.

U mě bude problém hlavně to samotné programování. Kdysi jsem něco psal v Basic, ale to je úplně jiná logika struktury, než dnešní zápisy. Dnes je spousta operandů v syntaxi a mě to přijde trochu nepřehledné.
Třeba když porovnám Grub1 (ještě lépe grub4dos třeba) a Grub2 - závorky, středníky, složené závorky, rovná lomítka apod. - to si prostě nejsem schopný pamatovat a přijde mi to spíše zmatečné - nevím čemu to prospělo, ale zjednodušení a přehlednosti zápisu rozhodně ne. Snad jedině, že to ušetří znaky a zápis to zkrátí - ale tím si taky nejsem jist, zda to platí vždy ..

Dík moc za zájem, ale kašli na to, vnímám čímdálvíc, kolik by to dalo práce i přes to, že bych to byl schopen realizovat. Jen jsem měl nějakou vizi, a po prvním seznámení s fakty (díky Tobě i) vím, že na to nejspíše nemám energii a asi ani dost prostoru.
Zvuky jsou mantrami a myšlenky moudrostí, prostě proto, že se mohou objevovat ...

JirkaZ

  • Moderátor
  • Závislák
  • ***
  • Příspěvků: 1835
  • Dlouholetý uživatel Linuxu a open source obecně.
Re:GUI pro spouštění skriptů - poradí někdo?
« Odpověď #24 kdy: 30 Října 2024, 18:49:34 »
Ramaeli, prosím ještě o další pomoc... O co jde:

mám dle Tvého mustru víceméně finální kód pro Zenity, kde spouštím jednotlivé subskripty. Vše funguje, až na tlačítko "SOUBOR", kterým se spustí subskript pro odeslání textového testovacího souboru.

Testovací soubor je úmyslně značně velký a tím i jeho odesílání trvá dlouho (asi 1040 vteřin), přičemž ale hned po stisknutí tlačítka "SOUBOR" dojde k nežádoucímu zavření okna Zenity (procesy bash a cat zůstanou běžet na pozadí). Ostatní tlačítka (pochopitelně kromě Storna) okno nezavřou...

Všechny použité skripty a soubory jsou v příloze. Mám (zcela laický) dojem, že k zavření (či vlastně pádu?) okna dochází právě proto, že subskript neproběhne v dostatečně krátkém čase...

Díky.

Edit: tak jsem ten textový testovací soubor zkusil cca 400x zmenšit a chová se to tak, že okno Zenity zmizí na dobu odesílání souboru po RS232, načež se zase znovu objeví (čili ve skutečnosti se nezavře definitivně, ani nespadne, jen bych prostě u nezmenšeného souboru musel čekat těch cca 1040 vteřin).

Je tohle chování Zenity normální, resp. dá se tomu nějak zabránit?
« Poslední změna: 30 Října 2024, 19:23:17 od JirkaZ »

 

Provoz zaštiťuje spolek OpenAlt.