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 259/2022
Buy this issue as a PDF
News
-
Titan Linux is a New KDE Linux Based on Debian Stable
Titan Linux is a new Debian-based Linux distribution that features the KDE Plasma desktop with a focus on usability and performance.
-
Danielle Foré Has an Update for elementary OS 7
Now that Ubuntu 22.04 has been released, the team behind elementary OS is preparing for the upcoming 7.0 release.
-
Linux New Media Launches Open Source JobHub
New job website focuses on connecting technical and non-technical professionals with organizations in open source.
-
Ubuntu Cinnamon 22.04 Now Available
Ubuntu Cinnamon 22.04 has been released with all the additions from upstream as well as other features and improvements.
-
Pop!_OS 22.04 Has Officially Been Released
From the makers of some of the finest Linux-powered desktop and laptop computers on the market comes the latest version of their Ubuntu-based distribution, Pop!_OS 22.04.
-
Star Labs Unveils a New Small Format Linux PC
The Byte Mk I is an AMD-powered mini Linux PC with Coreboot support and plenty of power.
-
MX Linux Verison 21.1 “Wildflower” Now Available
The latest release of the systemd-less MX Linux is now ready for public consumption.
-
Microsoft Expands Their Windows Subsystem for Linux Offerings With AlmaLinux
Anyone who works with Windows Subsystem for Linux (WSL) will now find a new addition to the available distributions, one that’s become the front-runner replacement for CentOS.
-
Debian 11.3 Released wIth Numerous Bug and Security Fixes
The latest point release for Debian Bullseye is now available with some very important updates.
-
The First Alpha of Asahi Linux is Available
Asahi Linux is the first distribution to fully support Apple Silicon and is now available for testing.
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