#Zenity

I have the following code in a #Bash script:

```
zenity_error() {
read error_message
zenity --error --text="$error_message"
}

mkdir /root/test_dir 2>&1 | zenity_error
```

It works to show any error messages in a #Zenity popup.

But is there a way I can do this automatically for *all* errors in the script, without having to manually add `2>&1 | zenity_error` to the end of each command?

#coding #programming #linux

2025-11-13

AI 에이전트의 새로운 취약점: 구조화된 데이터로 AI를 조종하는 DSI 공격

AI 에이전트의 새로운 보안 위협 DSI(Data-Structure Injection)를 소개합니다. JSON, XML 같은 구조화된 데이터로 AI를 조종하는 공격 방식과 실제 랜섬웨어 생성 사례를 다룹니다.

aisparkup.com/posts/6464

2025-10-07

Warnung bei voller Platte

Mit einem Shell-Skript könnt ihr die Belegung von Massenspeichern überwachen und euch warnen lassen, bevor diese zu voll werden.

#Massenspeicher #Plattenplatz #Skript #Benachrichtigung #Zenity #Linux

gnulinux.ch/warnung-bei-voller

Rui Nibau (rnb)rnb@framapiaf.org
2025-09-28

Tip #Gnome #Zenity :

La documentation sur les internets ne semble pas à jour (et ne l'a peut-être jamais été).

Pour avoir la liste des fonctionnalités de Zenity, mieux vaut passer par l'aide en ligne de commande.

Exemple pour savoir ce qu'on peut mettre dans un formulaire :

zenity --help-forms

Zenity est un petit outil qui permet de faire des écrans très simples pour ses scripts #bash

help.gnome.org/users/zenity/st

#code #linux

2025-08-21

#nixos boot error #gnome pop-up using #zenity that warns of boot errors, unless the error has already been classified by you as harmless the last time it appeared in the pop-up,
see #flake #module codeberg.org/adingbatponder/re
The errors are manually checked with #AI eg Claude before classifying them as irrelevant with a radio button & hiding them henceforth from appearing. If no boot errors, no pop-up. This #nixosaiflakehack was iteratively assisted by #claude . Spot bugs early when #tweakingflakes.

boot errors pop-up in gnomeField for explaining why error is not important
Marcus Adamsgerowen
2025-07-21

I think I've pretty well done everything I want to do it, for now at least. Goal accomplished; a mostly point and click option for desktop to get information about my server's UPS.

I may see about turning this into a simple .deb package later so you can get a shortcut in your apps menu, but the script itself is, I think, basically finished. I accomplished what I set out to do.

Martin ███████unixtippse@mastodon.online
2025-05-28
Martin ███████unixtippse@mastodon.online
2025-05-28
Martin ███████unixtippse@mastodon.online
2025-05-27
Martin ███████unixtippse@mastodon.online
2025-05-27
2025-02-08

github.com/leehblue/texpander
#Texpander is a simple text expander for #Linux. It is sort of like #Autokey, except it works off of text files that you put in your ~/.texpander directory. Texpander is a #bash script that uses #xclip, #xdotool, and #zenity to let you type an abbreviation for something and it expands to whatever you have in the matching text file.

2025-02-06

So I've realized I could probably make the frontend for mpdpopm out of #zenity and #bash, pretty easily actually. Might get on that tomorrow?

2024-12-30

Did you know you can create shell scripts with a graphical UI using KDialog (#KDE) or Zenity (#GTK)?
This is a great way to write simple tools with a user-friendly UI.
#linux #kdialog #zenity

find you on :butterfedy1: fediversefrogzone@wizard.casa
2024-11-06

when did #zenity deprecate the "--window-icon"?

it looks like they just have a single "--icon" now for dialog boxes!?

how is a person going to easily relate a dialog to a particular program? i'm confused. is this part of turning our desktop computers into "dumb" devices? @jeffcliff @icedquinn @Suiseiseki

2024-11-06

C'est pas un peu le bordel, c'est options de #zenity qui changent à chaque version, avec une incompatibilité systématique avec les anciennes versions ?

Faut modifier les scripts tous les 4 ans !!??

N'oubliez pas qu'un geek, c'est une feignasse avant tout, qui automatise les tâches quotidiennes pour en faire le moins possible par la suite…

2024-10-10

C'est pas un peu le bordel, c'est options de #zenity qui changent à chaque version, avec une incompatibilité systématique avec les anciennes versions ?

Faut modifier les scripts tous les 4 ans !!??

N'oubliez pas qu'un geek, c'est une feignasse avant tout, qui automatise les tâches quotidiennes pour en faire le moins possible par la suite…

R. L. Dane :debian: :openbsd:RL_Dane@fosstodon.org
2024-07-29

Hey #AskFedi,

I like using wob (Wayland Overlay Bar - github.com/francma/wob) on my #Wayland-based machines (just #sway right now) for a OSD for volume and screen brightness adjustments, but I'm a little bummed that it's wayland-only.

Does anyone have a cross-"platform" solution that works on wayland and #X11?

The closest I could find is using #zenity or #yad to display a progress bar for a second, but it's not quite an OSD, and feels a bit more clunky.

Vieną ramų kažkurios dienos rytą, gurkšnodamas kavą ir be tikslo naršydamas Mastodon tinkle, užtikau diskusiją. Žmonės dalinosi savo produktyvumo patarimais, ir viena tema patraukė mano dėmesį: dažnai naudojamų teksto fragmentų valdymas. Daug kas skundėsi, kad nuolat rašo tuos pačius sakinius ar frazes – ar tai būtų mandagūs el. laiškų užbaigimo žodžiai, ar dažnai naudojamos kodo eilutės.

Staiga supratau, kad ir pats susidūriu su šia problema. Kiek kartų per dieną rašau “Pagarbiai“ arba “Su geriausiais linkėjimais“ el. laiškuose? O kiek kartų įvedu savo kontaktinius duomenis ar tam tikras SQL užklausas? Per daug, kad skaičiuočiau.

Būdamas Linux entuziastas ir mėgėjas automatizuoti viską, kas juda, nusprendžiau: reikia tai išspręsti. Ir taip gimė mano mažas, bet galingas įrankis – pasirinktinio teksto įterpimo scenarijus.

Problemos esmė

Prieš nerdamas į techninę dalį, apibrėžkime problemą:

  1. Dažnai naudojame tuos pačius teksto fragmentus.
  2. Šių fragmentų perrašinėjimas atima laiką ir kelia įtampą riešo sąnariui.
  3. Kartais apsirenkame ar pamirštame, ką tiksliai rašėme anksčiau.

Mums reikia įrankio, kuris leistų:

  • Saugoti dažnai naudojamus tekstus.
  • Greitai pasiekti ir įterpti šiuos tekstus vienu klavišų paspaudimu.
  • Lanksčiai pasirinkti iš kelių variantų pagal situaciją.

Sprendimas: Bash magija

Čia į pagalbą ateina mano sukurtas Bash scenarijus. Jo idėja paprasta:

  1. Sukuriame katalogą su įvairiais tekstiniais failais.
  2. Kai mums reikia teksto, paspaudžiame klavišų kombinaciją.
  3. Pasirodo langas, kuriame galime pasirinkti norimą tekstą.
  4. Pasirinktas tekstas automatiškai nukopijuojamas į iškarpinę.
  5. Įklijuojame tekstą ten, kur reikia, naudodami Ctrl+V.

Įsivaizduokite: jokio daugiau kartojimo, jokių klaidų ieškant senų laiškų. Tiesiog pasirenkate ir įklijuojate.

Kaip pradėti?

Dar aptarkime, kokių papildomų paketų reikia (beveik visi ir taip jau yra įdiegti), kad viskas veiktų sklandžiai, ir kaip juos įdiegti įvairiose Linux distribucijose.

  1. xclip – Įrankis darbui su X11 iškarpine
    • Paskirtis: Leidžia manipuliuoti X Window sistemos iškarpine iš komandinės eilutės. Mūsų atveju naudojamas tekstui įdėti į iškarpinę, kad vėliau galėtumėte jį įklijuoti bet kurioje programoje.
    • Funkcijos:
      • -selection clipboard: Nurodo naudoti pagrindinę iškarpinę (tą, kurią naudoja Ctrl+C ir Ctrl+V).
      • Gali ir nuskaityti tekstą iš iškarpinės, ir įrašyti į ją.
  2. zenity – GTK dialogo įrankis
    • Paskirtis: Leidžia rodyti grafinius dialogo langus ir pranešimus iš komandinės eilutės ar scenarijų. Tai daro jūsų scenarijus interaktyvesniu ir vartotojui draugiškesniu.
    • Funkcijos:
      • --list: Rodo sąrašo pasirinkimo dialogo langą.
      • --info, --error: Rodo informacinius ar klaidos pranešimus.
      • --text-info: Leidžia peržiūrėti ir redaguoti tekstą grafiniame lange.
      • Daug kitų funkcijų: kalendoriai, spalvų pasirinkimai, progreso juostos ir t.t.
  3. find – Failų paieškos įrankis
    • Paskirtis: Naudojamas failams ir katalogams ieškoti pagal įvairius kriterijus. Mūsų scenarijuje jis naudojamas surasti visus .txt failus nurodytame kataloge.
    • Funkcijos:
      • -maxdepth 1: Ieško tik nurodytame kataloge, neikia gilyn į pakatalogius.
      • -type f: Ieško tik failų (ne katalogų).
      • -name "*.txt": Ieško failų, kurių pavadinimai baigiasi .txt.
  4. cat – Failo turinio rodymo įrankis
    • Paskirtis: Skaito failo turinį ir išveda jį į standartinę išvestį. Mūsų atveju naudojamas nuskaityti tekstui iš pasirinkto failo.
    • Funkcijos: Paprastas įrankis, kuris tiesiog parodo failo turinį.
  5. basename – Failo pavadinimo ištraukimo įrankis
    • Paskirtis: Grąžina failo pavadinimą be kelio. Mūsų scenarijuje naudojamas išgauti failo pavadinimą be .txt plėtinio, kad būtų gražiau rodoma pasirinkimo sąraše.
    • Funkcijos:
      • basename "$file" .txt: Grąžina failo pavadinimą be kelio ir be .txt plėtinio.

Dabar pažiūrėkime, kaip įdiegti šiuos paketus įvairiose Linux distribucijose:

Debian/Ubuntu (apt paketų tvarkytuvas)

sudo apt updatesudo apt install xclip zenity findutils coreutils
  • Pastaba: findutils ir coreutils paprastai jau būna įdiegti, bet įtraukiau juos dėl pilnumo.

Arch Linux (pacman paketų tvarkytuvas)

sudo pacman -Sysudo pacman -S xclip zenity findutils coreutils
  • Arch paprastai turi naujausias paketų versijas.

Fedora (dnf paketų tvarkytuvas)

sudo dnf updatesudo dnf install xclip zenity findutils coreutils
  • Fedora orientuota į naujausias technologijas ir griežtą laikymąsi atvirojo kodo principų.

openSUSE (zypper paketų tvarkytuvas)

sudo zypper refreshsudo zypper install xclip zenity findutils coreutils
  • openSUSE žinomas dėl savo stabilumo ir YaST konfigūravimo įrankio.

Papildomos pastabos:

  1. KDE priklausomybės:
    • Jei naudojate KDE Plasma darbalaukio aplinką (kaip aš), dauguma reikalingų bibliotekų jau bus įdiegtos, nes zenity naudoja GTK, o KDE naudoja Qt. Tačiau zenity vis tiek veiks puikiai.
  2. xclip alternatyvos:
    • xsel: Kitas populiarus įrankis darbui su X11 iškarpine. Kai kurie jį mėgsta labiau.
      • Debian/Ubuntu: sudo apt install xsel
      • Arch: sudo pacman -S xsel
      • Fedora: sudo dnf install xsel
      • openSUSE: sudo zypper install xsel
  3. zenity alternatyvos KDE aplinkoje:
    • kdialog: KDE analogas zenity, naudojantis Qt bibliotekas.
      • Debian/Ubuntu: sudo apt install kde-baseapps-bin arba kdialog
      • Arch: sudo pacman -S kde-baseapps
      • Fedora: sudo dnf install kde-baseapps
      • openSUSE: Turėtų būti jau įdiegta su KDE.
    • Norėdami naudoti kdialog, tiesiog pakeiskite zenity komandas į atitinkamas kdialog komandas scenarijuje.
  4. Kiti naudingi paketai:
    • xdotool: Leidžia simuliuoti klaviatūros ir pelės įvestį. Galėtumėte jį naudoti, jei norėtumėte, kad scenarijus ne tik nukopijuotų tekstą, bet ir automatiškai įklijuotų jį.
    • yad: Dar viena zenity alternatyva su daugiau funkcijų.
  5. Versijų skirtumai:
    • Dauguma šių įrankių yra labai stabili ir ilgai egzistuojanti programinė įranga, todėl net jei skirtingose distribucijose bus šiek tiek skirtingos versijos, jūsų scenarijus turėtų veikti vienodai gerai visur.
  6. Jei trūksta paketų:
    • Retai, bet gali pasitaikyti, kad kai kuriose distribucijose (ypač minimalistinėse) šių paketų gali nebūti standartinėse saugyklose. Tokiu atveju galite:
      • Ieškoti alternatyvių saugyklų (pvz., Arch Linux atveju – AUR).
      • Kompiliuoti iš išeitinio kodo (paskutinė išeitis).

Įdiegę šiuos paketus bet kurioje iš šių populiarių Linux distribucijų, turėsite visus reikalingus įrankius, kad jūsų pasirinktinio teksto įterpimo sprendimas veiktų sklandžiai ir efektyviai. Kiekvienas įrankis atlieka savo specifinę funkciją, ir kartu jie sukuria patogią ir interaktyvią vartotojo patirtį.

Taigi, pradedam

Sukurkite tekstų katalogą

Pirmiausia, sukurkite katalogą savo dažnai naudojamiems tekstams:

mkdir ~/git/custom_texts

Tada sukurkite keletą .txt failų šiame kataloge. Pavyzdžiui:
~/git/custom_texts/sveikinimas.txt su tekstu "Labas, kaip sekasi?"
~/git/
custom_texts/atsisveikinimas.txt su tekstu "Viso gero, gražios dienos!"
~/git/
custom_texts/padeka.txt su tekstu "Ačiū už pagalbą!"

Sukurkite Bash scenarijų, pavadinkime jį select_and_paste.sh:

#!/bin/bash# Katalogas su tekstiniais failaisTEXT_DIR="$HOME/git/custom_texts"# Patikrinti, ar katalogas egzistuojaif [ ! -d "$TEXT_DIR" ]; then    zenity --error --title="Klaida" --text="Katalogas $TEXT_DIR nerastas."    exit 1fi# Gauti visų .txt failų sąrašą katalogetext_files=($(find "$TEXT_DIR" -maxdepth 1 -type f -name "*.txt"))# Patikrinti, ar yra .txt failųif [ ${#text_files[@]} -eq 0 ]; then    zenity --error --title="Klaida" --text="Kataloge $TEXT_DIR nerasta .txt failų."    exit 1fi# Sukurti masyvą su failų pavadinimais be kelio ir .txt plėtiniooptions=()for file in "${text_files[@]}"; do    filename=$(basename "$file" .txt)    options+=("$filename")done# Rodyti pasirinkimo dialogąselected=$(zenity --list --title="Pasirinkite tekstą" --column="Tekstai" "${options[@]}" --width=300 --height=450)# Jei vartotojas nieko nepasirinko arba uždarė langąif [ -z "$selected" ]; then    exit 0fi# Pilnas kelias iki pasirinkto failoselected_file="$TEXT_DIR/$selected.txt"# Nuskaityti tekstą iš failotext=$(cat "$selected_file")# Įdėti tekstą į iškarpinęecho -n "$text" | xclip -selection clipboard# Rodyti patvirtinimo pranešimązenity --info --title="Sėkmė" --text="Tekstas iš failo '$selected' sėkmingai įdėtas į iškarpinę."

Padarykite scenarijų vykdomu:

chmod +x ~/scripts/select_and_paste.sh

Nustatykite sparčiojo klavišo veiksmą

Šis žingsnis priklausys nuo jūsų darbalaukio aplinkos. Aš naudoju KDE, bet procesas panašus GNOME, XFCE ar kitose aplinkose.

KDE vartotojams:

  1. Eikite į Nustatymai > Spartieji klavišai ir gestai > Pasirinktiniai spartieji klavišai.
  2. Pasirinkite “Edit“ > “New“ > “Global Shortcut“ > “Command/URL“.
  3. Nustatykite:
    • Pavadinimas: “Pasirinkti ir įterpti tekstą“
    • Trigger: Ctrl+Shift+Y (ar kita jūsų pasirinkta kombinacija)
    • Action: /home/JUSU_VARDAS/scripts/select_and_paste.sh (pas mane ~/git/select_and_paste.sh)
  4. Spauskite “Apply“.

GNOME vartotojams: eikite į Nustatymai > Klaviatūra > Spartieji klavišai ir atlikite panašius veiksmus.

Kaip tai veikia?

Kai paspaudžiate Ctrl+Shift+Y (ar kitą pasirinktą kombinaciją), įvyksta tokia seka:

  1. Paleidžiamas jūsų Bash scenarijus.
  2. Scenarijus ieško .txt failų jūsų ~/git/custom_texts kataloge.
  3. Suradęs failus, jis sukuria sąrašą su jų pavadinimais ir pirmosiomis eilutėmis.
  4. Atsidaro gražus pasirinkimo langas, kuriame matote savo tekstų pavadinimus ir jų peržiūras.
  5. Pasirenkate norimą tekstą ir spaudžiate OK.
  6. Pasirinktas tekstas nuskaitomas iš failo ir įdedamas į iškarpinę.
  7. Jūs matote patvirtinimo pranešimą, kad viskas pavyko.
  8. Dabar einate į bet kurią programą – teksto redaktorių, el. paštą, pokalbių programą – ir spaudžiate Ctrl+V. Magiška! Jūsų pasirinktas tekstas įklijuotas.

Kodėl tai šaunu?

  1. Taupomas laikas: Nebereikia iš naujo rašyti tų pačių frazių.
  2. Mažiau klaidų: Tekstai visada tikslūs, nes jie iš failo.
  3. Organizuotumas: Visi jūsų dažni tekstai vienoje vietoje.
  4. Lankstumas: Galite turėti dešimtis ar net šimtus tekstų, lengvai pasirenkamų.
  5. Pritaikomumas: Lengvai galite pridėti, redaguoti ar ištrinti tekstus.
  6. Veikia bet kurioje programoje, bet kurioje Linux aplinkoje.

Galimos plėtotės

Žinoma, kaip ir su bet kuriuo projektu, idėjų plėtotei netrūksta:

  • Automatinis teksto formatavimas pagal kontekstą.
  • Saugojimas debesyje sinchronizavimui tarp įrenginių.
  • GUI programa tekstams valdyti.

    Papildomi patarimai:
    Galite pridėti daugiau informacijos į pasirinkimo langą, pvz., rodyti teksto pradžią:

options=()for file in "${text_files[@]}"; do    filename=$(basename "$file" .txt)    preview=$(head -n 1 "$file")    options+=("$filename" "$preview")doneselected=$(zenity --list --title="Pasirinkite tekstą" --column="Pavadinimas" --column="Peržiūra" "${options[@]}" --width=500 --height=450)

Galite pridėti galimybę redaguoti tekstą prieš įdėjimą:

text=$(zenity --text-info --title="Redaguoti tekstą" --filename="$selected_file" --editable)

Jei turite daug tekstų, galite juos organizuoti į pakatalogius pagal kategorijas (pvz., sveikinimas/, verslas/, asmeniniai/) ir modifikuoti scenarijų, kad jis ieškotų rekursyviai.
Galite pridėti mygtuką “Pridėti naują tekstą“, kuris atvertų tekstinį redaktorių naujo failo sukūrimui.

Išvada

Tai, kas prasidėjo kaip atsitiktinis pastebėjimas Mastodon tinkle, virto praktiniu įrankiu, kuris dabar taupo man valandas kiekvieną savaitę. Linux grožis ir yra tas, kad su keliais eilučių Bash kodu galite išspręsti realias, kasdienes problemas.

Nesvarbu, ar esate profesionalus programuotojas, ar tik mėgėjas – tokie maži automatizavimo projektai gali drastiškai pagerinti jūsų darbo eigą. Tikiuosi, kad šis įrankis įkvėps jus ne tik jį naudoti, bet ir kurti savo sprendimus. Juk Linux pasaulyje, jei galite tai įsivaizduoti, beveik visada galite tai ir padaryti.

O dabar, jei man reikia baigti šį įrašą… Ctrl+Shift+Y, pasirinkti “blog_ending.txt“, Ctrl+V:

Iki kito karto, kai vėl kalbėsime apie tai, kaip paversti Linux ne tik operacine sistema, bet ir asmeniniu asistentu!

https://funkcijos.wordpress.com/2024/06/02/pasirinktinio-teksto-iterpimo-irankis-tik-vienas-shortcut/

#bash #copy #paste #xclip #zenity

Alexandre B A Villares 🐍villares@ciberlandia.pt
2023-12-31

Something wrong with my #Python #ThonnyIDE the file dialogs became dreadful tkinter dialogs instead of the standard #Manjaro OS dialogs, I'm not sure what went wrong. OMG.

Update: Mystery solved, installing #Zenity brought back better dialogs (I guess they never were the OS dialogs, but similarly nice.)

2023-02-02

Erweiterte Dateiattribute mit Zenity in Thunar einbinden

Ein sinnfreier Versuch, erweiterte Dateiattribute mit Zenity in Thunar zu integrieren.

#Thunar #Zenity #Dateiattribute #Tags #Shell_Skript #Python #Linux

gnulinux.ch/erweiterte-dateiat

Client Info

Server: https://mastodon.social
Version: 2025.07
Repository: https://github.com/cyevgeniy/lmst