Dress Up Bash Scripts with YAD

Productivity Sauce
If you want to add a dash of GUI goodness to your Bash scripts, you have several options. You can use Zenity or Kdialog to quickly add simple dialogs and message boxes to Bash scripts. However, both tools are rather limited, and for a more complex GUI design you might want to give YAD a try. If you are using Ubuntu, you can install YAD from the WebUpd8 PPA. Of course, you can compile YAD from source using the standard ./configure; make; make install routine.
YAD can be used to add simple and advanced GUI elements to a Bash script with relative ease. For example, I need to resize photos I post on Google+ almost daily, so I whipped up a simple Bash script sprinkled with YAD GUI elements:
#!/bin/bash imageFile=$(yad --file --title="Select the image file") dialog=$(yad --title "Bash Resize" --form --field="Resize parameter" --field="Quality") size=$(echo $dialog | awk 'BEGIN {FS="|" } { print $1 }') quality=$(echo $dialog | awk 'BEGIN {FS="|" } { print $2 }') convert "$imageFile" -resize "$size" -quality "$quality"% "$imageFile" yad --title="Status" --width=300 --button="gtk-ok:0" --text="All done. Yay!"
The imageFile=$(yad --file --title="Select the image file") statement creates a file selection dialog, while dialog=$(yad --title "Bash Resize" --form --field="Resize parameter" --field="Quality") creates a simple form containing two fields: Resize parameter and Quality. The output generated by the dialog box looks like this: 1600x || 95. So it's necessary to break it into separate values, which is done using awk (if there is a better way to do that, please do let me know). The obtained values are then passed to the convert tool which does the rest.
This is just a very simple example of YAD's capabilities and you can find other examples on the project's website.
Comments
comments powered by DisqusIssue 268/2023
Buy this issue as a PDF
Subscribe to our Linux Newsletters
Find Linux and Open Source Jobs
Subscribe to our ADMIN Newsletters
Find SysAdmin Jobs
News
-
LibreOffice 7.5 has Arrived and is Loaded with New Features and Improvements
The favorite office suite of the Linux community has a new release that includes some visual refreshing and new features across all modules.
-
The Next Major Release of Elementary OS Has Arrived
It's been over a year since the developers of elementary OS released version 6.1 (Jólnir) but they've finally made their latest release (Horus) available with a renewed focus on the user.
-
KDE Plasma 5.27 Beta Is Ready for Testing
The latest beta iteration of the KDE Plasma desktop is now available and includes some important additions and fixes.
-
Netrunner OS 23 Is Now Available
The latest version of this Linux distribution is now based on Debian Bullseye and is ready for installation and finally hits the KDE 5.20 branch of the desktop.
-
New Linux Distribution Built for Gamers
With a Gnome desktop that offers different layouts and a custom kernel, PikaOS is a great option for gamers of all types.
-
System76 Beefs Up Popular Pangolin Laptop
The darling of open-source-powered laptops and desktops will soon drop a new AMD Ryzen 7-powered version of their popular Pangolin laptop.
-
Nobara Project Is a Modified Version of Fedora with User-Friendly Fixes
If you're looking for a version of Fedora that includes third-party and proprietary packages, look no further than the Nobara Project.
-
Gnome 44 Now Has a Release Date
Gnome 44 will be officially released on March 22, 2023.
-
Nitrux 2.6 Available with Kernel 6.1 and a Major Change
The developers of Nitrux have officially released version 2.6 of their Linux distribution with plenty of new features to excite users.
-
Vanilla OS Initial Release Is Now Available
A stock GNOME experience with on-demand immutability finally sees its first production release.
yad
quality=${dialog#*|}
but ... why do you use '|' as a seperator? why not ',' or ':' or space or whatever? (at least something that will not interfer with the shell - to _my_ simple mind, '|' is somewhat 'loaded' though it works ok for this little example