atsiv Opublikowano 3 Listopada 2010 Zgłoś Opublikowano 3 Listopada 2010 (edytowane) Już podaje: plik txt | zenity --list --radiolist --column " " ...case $? 1) zenity --info --text "super" ;; 0) zenity --error --text "anulowałeś" ;; -1) zenity --warning --text "nic nie zaznaczyłeś" ;;esac W pliku txt znajdują się jakieś opcje do wyboru i na pewno wiesz o co chodzi. Edytowane 3 Listopada 2010 przez atsiv Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość <account_deleted> Opublikowano 3 Listopada 2010 Zgłoś Opublikowano 3 Listopada 2010 No powiem szczerze, że nie do końca jarzyłem ocb po wcześniejszym opisie bo u mnie to trochę inaczej działa. Prawdopodobnie znalazłeś tutorial przestarzały, czyli dot. starszej wersji zenity. Zasada number one: sprawdź co wyrzuca program zanim zaczniesz wykorzystywać rezultaty jego działania. No a po oblukaniu rezultatów wniosek nasuwa się sam: #!/bin/bashcolumndesc='--column "" --column "Num" --column "Name" --column "Describtion"'list=' \. 1 row1 desc1 \. 2 row2 desc2 \. 3 row3 desc3 \. 4 row4 desc4'IFS="|"selection=( $(evaluate "zenity --list --multiple --checklist --print-column=3 --text="Select" $columndesc $list ") )ret=$?; numsel=${#selection[*]}unset IFSecho "RetVal:$ret , NumSelected:$numsel , List: ${selection[*]}"exit 0 ;) Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
atsiv Opublikowano 4 Listopada 2010 Zgłoś Opublikowano 4 Listopada 2010 No miał kilka lat... Dzięki i powiem Ci, że zacząłem podobnie kombinować ;) Hmm... wget www 2> abc i powstał mi pliczek, były tam % pobranego pliku i wykorzystałem go do zbudowania własnego paska postępu... >wget www 2>&1 | sed -u 's/^.* \([0-9]\+%\).*$/\1/' | zenity --progress Trybi u mnie, ale nie wiem jak z aptem działać... Np. apt-get update 2> abc nie daje postępu w procentach, tzn. terminal widzi, ale plik już nie. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość <account_deleted> Opublikowano 6 Listopada 2010 Zgłoś Opublikowano 6 Listopada 2010 (edytowane) To dla tego, że apt nie wysyła procentów do pipe, tzn nie do końca. Stary patent do rysowania pasków postępu i procentów bez scrolowania terminala - z użyciem ANSI escape codes. Ponieważ normalnie dane z pipe są pobierane porcjami które najprościej mówiąc są określone przez IFS, to nie widać znaków które zostały "wydrukowane" a za chwilę skasowane przypomocy kodów ANSI. Na chwilę obecną nie mam gotowego pomysłu jak to obejść, ale na pewno będzie to coś w takim stylu: - przełączenie terminala w tryb raw (np. stty -raw), co powoduje że przerwania są generowane po każdym znaku i dzięki temu można nie tylko wychwycić kasowane znaki, ale również sekwencje ANSI. W takim przypadku można odczytać pojedyńcze bajty np przez dd. - odczytywać pojedyńcze znaki przez 'read -r -n1' lub 'read -a' ale tu prawdopodobnie trzeba będzie powalczyć z IFS i opcjami basha. Inne wyjście: użyć innego front-endu dla apta. edit: czasu mało... niedokładna symulacja tego co robi apt: #!/bin/bash{ #apt-get output simulatori=0echo "selecting previously deselected package \"simulation\" ..."echowhile (( $i <= 100 )); do echo -en \ "\033[1A\033[28DInstalling packages: $(($i/10))... \033[1B" \ "\033[30D[$i%]" sleep 0.5 ((i+=10))doneecho -en "\033[28DInstallation successful!\n"; }exit 0trzeba jeszcze powalczyć... Edytowane 8 Listopada 2010 przez tomazzi Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
atsiv Opublikowano 8 Listopada 2010 Zgłoś Opublikowano 8 Listopada 2010 Widzę, że zrobiłeś to na przykładzie liczby pakietów do zainstalowania? Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
Gość <account_deleted> Opublikowano 8 Listopada 2010 Zgłoś Opublikowano 8 Listopada 2010 eee, procenty też lecą ;) Ale nie o to chodzi - ten kawałek skryptu daje podobne efekty w terminalu ale nie w pipe niestety - to już nieco bardziej skomplikowane. Mam pewien pomysł: mozna uzyskać całkiem dobry efekt w taki sposób: - odpalasz apta w dry-run, - liczysz ile linii wypluł i obliczasz ile % przypada na jedną linię - odpalasz apta "normalnie" i generujesz % w oparciu to co wyrzuciło dry-run. Nie będzie to piękne, ale będzie działać (i jest stosunkowo proste). dry-run jest zazwyczaj bardzo szybkie, ponieważ nic nie pobiera ale można przyjąć że jest to np. 5% całości operacji. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...
atsiv Opublikowano 15 Listopada 2010 Zgłoś Opublikowano 15 Listopada 2010 W sumie nie głupie, ale jak będzie jedna linijka to i 100% ;) Mój kolega wpadł na pomysł i powiedział, że idealnie nada się: debconf-apt-progress W razie czego napisze dla mnie kod. Cytuj Udostępnij tę odpowiedź Odnośnik do odpowiedzi Udostępnij na innych stronach Więcej opcji udostępniania...