├── .bzr ├── README ├── branch-format ├── branch │ ├── branch.conf │ ├── format │ ├── last-revision │ └── tags ├── checkout │ ├── conflicts │ ├── dirstate │ ├── format │ └── views └── repository │ ├── format │ ├── indices │ ├── aa085a0e06b17fe3c9eabbec3aa7ed0e.cix │ ├── aa085a0e06b17fe3c9eabbec3aa7ed0e.iix │ ├── aa085a0e06b17fe3c9eabbec3aa7ed0e.rix │ ├── aa085a0e06b17fe3c9eabbec3aa7ed0e.six │ ├── aa085a0e06b17fe3c9eabbec3aa7ed0e.tix │ ├── ba8658336678caba986b9cb90c5ed0b5.cix │ ├── ba8658336678caba986b9cb90c5ed0b5.iix │ ├── ba8658336678caba986b9cb90c5ed0b5.rix │ ├── ba8658336678caba986b9cb90c5ed0b5.six │ └── ba8658336678caba986b9cb90c5ed0b5.tix │ ├── pack-names │ └── packs │ ├── aa085a0e06b17fe3c9eabbec3aa7ed0e.pack │ └── ba8658336678caba986b9cb90c5ed0b5.pack ├── .github └── workflows │ └── main.yml ├── LICENSE ├── README.md ├── docs ├── README.md ├── easybasguidialogs.jpeg ├── easybashgui-dialogs1.jpeg ├── easybashgui-example0.jpeg ├── easybashgui-example1.jpeg ├── easybashgui-example2.gif ├── easybashgui-example3.jpeg ├── easybashgui-example4.jpeg ├── easybashgui-example5.gif ├── easybashgui.1.gz ├── footer.md ├── github.md ├── install.md └── navbar.md ├── icons ├── Attenzione.xpm └── Ok.xpm ├── index.html ├── lib ├── easybashgui.lib └── easybashlib ├── makefile └── src ├── easybashgui ├── easybashgui-debug └── easydialog-legacy /.bzr/README: -------------------------------------------------------------------------------- 1 | This is a Bazaar control directory. 2 | Do not change any files in this directory. 3 | See http://bazaar.canonical.com/ for more information about Bazaar. 4 | -------------------------------------------------------------------------------- /.bzr/branch-format: -------------------------------------------------------------------------------- 1 | Bazaar-NG meta directory, format 1 2 | -------------------------------------------------------------------------------- /.bzr/branch/branch.conf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BashGui/easybashgui/ee7a32cf6ad7b64216689cf36fcbf03d19b61791/.bzr/branch/branch.conf -------------------------------------------------------------------------------- /.bzr/branch/format: -------------------------------------------------------------------------------- 1 | Bazaar Branch Format 7 (needs bzr 1.6) 2 | -------------------------------------------------------------------------------- /.bzr/branch/last-revision: -------------------------------------------------------------------------------- 1 | 2 lucio.messina@mensa.it-20130706090142-mclg8zynkfwam4ha 2 | -------------------------------------------------------------------------------- /.bzr/branch/tags: -------------------------------------------------------------------------------- 1 | d22:upstream-8.0.1~precise54:lucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48e -------------------------------------------------------------------------------- /.bzr/checkout/conflicts: -------------------------------------------------------------------------------- 1 | BZR conflict list format 1 2 | -------------------------------------------------------------------------------- /.bzr/checkout/dirstate: -------------------------------------------------------------------------------- 1 | #bazaar dirstate flat format 3 2 | crc32: 1742593926 3 | num_entries: 22 4 | 1lucio.messina@mensa.it-20130706090142-mclg8zynkfwam4ha 5 | 0 6 | tree_root-20130706090012-2u2hoyv79ae9fh98-1d0nAAAQAFHX3J1R19ydAAAIAwAGAF8AAEH9d0nlucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48 7 | EasyBashGUI-licenseeasybashguilicense-20130706090012-2u2hoyv79ae9fh98-8f8624bcdae55baeef00cd11d5dfcfa60f68710a0235147nAACJS1HX3JxR19ycAAAIAwAGAM0AAIG0f8624bcdae55baeef00cd11d5dfcfa60f68710a0235147nlucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48 8 | READMEreadme-20130706090012-2u2hoyv79ae9fh98-4fec30a7e49fb3b4fe9c122c91f1787a49b783088f9383nAAAkp1HX3JxR19ycAAAIAwAGAMkAAIG0fec30a7e49fb3b4fe9c122c91f1787a49b783088f9383nlucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48 9 | debiandebian-20130706090012-2u2hoyv79ae9fh98-16d0nAAAQAFHX3OJR19ziAAAIAwAGAMQAAEH9d0nlucio.messina@mensa.it-20130706090142-mclg8zynkfwam4ha 10 | easybashgui.1.gzeasybashgui.1.gz-20130706090012-2u2hoyv79ae9fh98-11f8ec0ecfc5f456cfd8008bfdbf198d18bbee042562892nAAALTFHX3JxR19ycAAAIAwAGAUIAAIG0f8ec0ecfc5f456cfd8008bfdbf198d18bbee042562892nlucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48 11 | iconsicons-20130706090012-2u2hoyv79ae9fh98-13d0nAAAQAFHX3JxR19ycAAAIAwAGAWwAAEH9d0nlucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48 12 | liblib-20130706090012-2u2hoyv79ae9fh98-15d0nAAAQAFHX3JxR19ycAAAIAwAGAW8AAEH9d0nlucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48 13 | makefilemakefile-20130706090012-2u2hoyv79ae9fh98-5f1bc4e27da9e75d87278057623d8691d4b7e19a7f2307yAAAJA1HX3JxR19ycAAAIAwAGAMoAAIH9f1bc4e27da9e75d87278057623d8691d4b7e19a7f2307ylucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48 14 | srcsrc-20130706090012-2u2hoyv79ae9fh98-2d0nAAAQAFHX3JxR19ycAAAIAwAGAMcAAEH9d0nlucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48 15 | debianchangelogdebianchangelog-20130706090012-2u2hoyv79ae9fh98-21f9e95fa2acc9a43e1d992f91f22f2d8044ec0c310185nAAAAuVHX3N5R19zeAAAIAwAGAIoAAIG0f9e95fa2acc9a43e1d992f91f22f2d8044ec0c310185nlucio.messina@mensa.it-20130706090142-mclg8zynkfwam4ha 16 | debiancompatdebiancompat-20130706090012-2u2hoyv79ae9fh98-24f136571b41aa14adc10c5f3c987d43c02c8f5d4982nAAAAAlHXxahR19zEAAAIAwAGAYQAAIG0f136571b41aa14adc10c5f3c987d43c02c8f5d4982nlucio.messina@mensa.it-20130706090142-mclg8zynkfwam4ha 17 | debiancontroldebiancontrol-20130706090012-2u2hoyv79ae9fh98-18fdd74d9742b33556e9f61a46f60fbe4f747ce37f6681nAAACqVHX0wpR19zEAAAIAwAGAI8AAIG0fdd74d9742b33556e9f61a46f60fbe4f747ce37f6681nlucio.messina@mensa.it-20130706090142-mclg8zynkfwam4ha 18 | debiancopyrightdebiancopyright-20130706090012-2u2hoyv79ae9fh98-19f724c3e9df28eed5e078da0c3e48d0a780a34dae4912nAAADkFHXzQxR19zEAAAIAwAGAMMAAIG0f724c3e9df28eed5e078da0c3e48d0a780a34dae4912nlucio.messina@mensa.it-20130706090142-mclg8zynkfwam4ha 19 | debianrulesdebianrules-20130706090012-2u2hoyv79ae9fh98-20f9ed02e3acc5e8b4f53f4b20e244305aa3038b464661yAAAClVHXxahR19zEAAAIAwAGAZ4AAIHtf9ed02e3acc5e8b4f53f4b20e244305aa3038b464661ylucio.messina@mensa.it-20130706090142-mclg8zynkfwam4ha 20 | debiansourcedebiansource-20130706090012-2u2hoyv79ae9fh98-27d0nAAAQAFHXxahR19zEAAAIAwAGAX8AAEHtd0nlucio.messina@mensa.it-20130706090142-mclg8zynkfwam4ha 21 | iconsAttenzione.xpmattenzione.xpm-20130706090012-2u2hoyv79ae9fh98-9fd1d55dd3faf995e89f3b3819e11036199b8cfb5c8898nAAAiwlHX3JxR19ycAAAIAwAGAM4AAIG0fd1d55dd3faf995e89f3b3819e11036199b8cfb5c8898nlucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48 22 | iconsOk.xpmok.xpm-20130706090012-2u2hoyv79ae9fh98-14f505b664b2f3e4924da8bac38897bc1a1c36940d1969nAAADyVHX3JxR19ycAAAIAwAGAW4AAIG0f505b664b2f3e4924da8bac38897bc1a1c36940d1969nlucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48 23 | libeasybashgui.libeasybashgui.lib-20130706090012-2u2hoyv79ae9fh98-10f967091db830ba9a2b1781b2e9edf3436c5f2a8d2229452yAAOATFHX3JxR19ycAAAIAwAGAUAAAIH9f967091db830ba9a2b1781b2e9edf3436c5f2a8d2229452ylucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48 24 | libeasybashlibeasybashlib-20130706090012-2u2hoyv79ae9fh98-6fa7a2ea3847565f9f3c61310dc538fb3b5efcf34514470nAAA4hlHX3JxR19ycAAAIAwAGAMsAAIG0fa7a2ea3847565f9f3c61310dc538fb3b5efcf34514470nlucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48 25 | srceasybashguieasybashgui-20130706090012-2u2hoyv79ae9fh98-3fdb2e45ac5dfc47f58380b601fcca2ac4c3f3bdfd43640yAACqeFHX3JxR19ycAAAIAwAGAMgAAIH9fdb2e45ac5dfc47f58380b601fcca2ac4c3f3bdfd43640ylucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48 26 | srceasybashgui-debugeasybashguidebug-20130706090012-2u2hoyv79ae9fh98-12f595f18311742df1fa536f3d474129db274c234204797yAAASvVHX3JxR19ycAAAIAwAGAWsAAIH9f595f18311742df1fa536f3d474129db274c234204797ylucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48 27 | srceasydialog.sheasydialog.sh-20130706090012-2u2hoyv79ae9fh98-7f17a361dd39471e3fefb9c51bcbdc7f19569d41567561yAAAdiVHX3JxR19ycAAAIAwAGAMwAAIH9f17a361dd39471e3fefb9c51bcbdc7f19569d41567561ylucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48 28 | -------------------------------------------------------------------------------- /.bzr/checkout/format: -------------------------------------------------------------------------------- 1 | Bazaar Working Tree Format 6 (bzr 1.14) 2 | -------------------------------------------------------------------------------- /.bzr/checkout/views: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BashGui/easybashgui/ee7a32cf6ad7b64216689cf36fcbf03d19b61791/.bzr/checkout/views -------------------------------------------------------------------------------- /.bzr/repository/format: -------------------------------------------------------------------------------- 1 | Bazaar repository format 2a (needs bzr 1.16 or later) 2 | -------------------------------------------------------------------------------- /.bzr/repository/indices/aa085a0e06b17fe3c9eabbec3aa7ed0e.cix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BashGui/easybashgui/ee7a32cf6ad7b64216689cf36fcbf03d19b61791/.bzr/repository/indices/aa085a0e06b17fe3c9eabbec3aa7ed0e.cix -------------------------------------------------------------------------------- /.bzr/repository/indices/aa085a0e06b17fe3c9eabbec3aa7ed0e.iix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BashGui/easybashgui/ee7a32cf6ad7b64216689cf36fcbf03d19b61791/.bzr/repository/indices/aa085a0e06b17fe3c9eabbec3aa7ed0e.iix -------------------------------------------------------------------------------- /.bzr/repository/indices/aa085a0e06b17fe3c9eabbec3aa7ed0e.rix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BashGui/easybashgui/ee7a32cf6ad7b64216689cf36fcbf03d19b61791/.bzr/repository/indices/aa085a0e06b17fe3c9eabbec3aa7ed0e.rix -------------------------------------------------------------------------------- /.bzr/repository/indices/aa085a0e06b17fe3c9eabbec3aa7ed0e.six: -------------------------------------------------------------------------------- 1 | B+Tree Graph Index 2 2 | node_ref_lists=0 3 | key_elements=1 4 | len=0 5 | row_lengths= 6 | -------------------------------------------------------------------------------- /.bzr/repository/indices/aa085a0e06b17fe3c9eabbec3aa7ed0e.tix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BashGui/easybashgui/ee7a32cf6ad7b64216689cf36fcbf03d19b61791/.bzr/repository/indices/aa085a0e06b17fe3c9eabbec3aa7ed0e.tix -------------------------------------------------------------------------------- /.bzr/repository/indices/ba8658336678caba986b9cb90c5ed0b5.cix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BashGui/easybashgui/ee7a32cf6ad7b64216689cf36fcbf03d19b61791/.bzr/repository/indices/ba8658336678caba986b9cb90c5ed0b5.cix -------------------------------------------------------------------------------- /.bzr/repository/indices/ba8658336678caba986b9cb90c5ed0b5.iix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BashGui/easybashgui/ee7a32cf6ad7b64216689cf36fcbf03d19b61791/.bzr/repository/indices/ba8658336678caba986b9cb90c5ed0b5.iix -------------------------------------------------------------------------------- /.bzr/repository/indices/ba8658336678caba986b9cb90c5ed0b5.rix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BashGui/easybashgui/ee7a32cf6ad7b64216689cf36fcbf03d19b61791/.bzr/repository/indices/ba8658336678caba986b9cb90c5ed0b5.rix -------------------------------------------------------------------------------- /.bzr/repository/indices/ba8658336678caba986b9cb90c5ed0b5.six: -------------------------------------------------------------------------------- 1 | B+Tree Graph Index 2 2 | node_ref_lists=0 3 | key_elements=1 4 | len=0 5 | row_lengths= 6 | -------------------------------------------------------------------------------- /.bzr/repository/indices/ba8658336678caba986b9cb90c5ed0b5.tix: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BashGui/easybashgui/ee7a32cf6ad7b64216689cf36fcbf03d19b61791/.bzr/repository/indices/ba8658336678caba986b9cb90c5ed0b5.tix -------------------------------------------------------------------------------- /.bzr/repository/pack-names: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BashGui/easybashgui/ee7a32cf6ad7b64216689cf36fcbf03d19b61791/.bzr/repository/pack-names -------------------------------------------------------------------------------- /.bzr/repository/packs/aa085a0e06b17fe3c9eabbec3aa7ed0e.pack: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BashGui/easybashgui/ee7a32cf6ad7b64216689cf36fcbf03d19b61791/.bzr/repository/packs/aa085a0e06b17fe3c9eabbec3aa7ed0e.pack -------------------------------------------------------------------------------- /.bzr/repository/packs/ba8658336678caba986b9cb90c5ed0b5.pack: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BashGui/easybashgui/ee7a32cf6ad7b64216689cf36fcbf03d19b61791/.bzr/repository/packs/ba8658336678caba986b9cb90c5ed0b5.pack -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: Main 2 | 3 | on: 4 | push: 5 | tags: 6 | - "*.*.*" 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Checkout 13 | uses: actions/checkout@v4 14 | - name: Release 15 | uses: softprops/action-gh-release@v2 16 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Modified BSD License 2 | 3 | Copyright (c) 2025, Vittorio Cagnetta 4 | 5 | Redistribution and use in source and binary forms, with or without modification, 6 | are permitted provided that the following conditions are met: 7 | 8 | 1. Redistributions of source code must retain the above copyright notice, 9 | this list of conditions and the following disclaimer. 10 | 11 | 2. Redistributions in binary form must reproduce the above copyright notice, 12 | this list of conditions and the following disclaimer in the documentation 13 | and/or other materials provided with the distribution. 14 | 15 | 3. Neither the name of the copyright holder nor the names of its contributors 16 | may be used to endorse or promote products derived from this software 17 | without specific prior written permission. 18 | 19 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS “AS IS” AND 20 | ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 21 | WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 22 | IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, 23 | INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 24 | BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 25 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 26 | LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE 27 | OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 28 | OF THE POSSIBILITY OF SUCH DAMAGE. 29 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | EasyBashGUI 2 | =========== 3 | 4 | Simplified way to code bash made GUI frontend dialogs! Check the youtube video: 5 | 6 | 7 | Watch the video 8 | 9 | 10 | ## Introduction to EBG 11 | 12 | **E**asy **B**ash **G**ui shortened as EBG, is a Posix compliant Bash functions 13 | library that aims to give unified GUI functions using frontends for dialogs boxeds 14 | (from the user's point of view are frontends but from the EGB side are backends) 15 | 16 | #### Backends environments GUI 17 | 18 | EBG implements different dialogs boxes! You don't have to worry about what 19 | environment you are running the script in, as **EasyBashGUI** will handle this 20 | transparently, based on the availability of the backends (frontends). 21 | 22 | * Console mode: 23 | * gum 24 | * dialog 25 | * none (= bash) 26 | * Graphical mode: 27 | * yad 28 | * gtkdialog 29 | * kdialog 30 | * zenity 31 | * qarma 32 | * Xdialog 33 | 34 | 35 | ![](docs/easybasguidialogs.jpeg) 36 | 37 | #### Compatibility and runtime 38 | 39 | EBG is coded in `bash`, and uses most of `coreutils` commands, but it may work in 40 | any other environment, because those are just used internally. 41 | 42 | ## Components 43 | 44 | EBG is fully modular: 45 | 46 | * `easybashgui` a launcher that will be the endpoint sourced in your scripts 47 | * `easybashgui-debug` that toggles some debug options managed by the previous component 48 | * `easybashgui.lib` that managed the backends, called as widget library 49 | * `easydialog-legacy` stand-alone to create dialog boxes externally (as old nowadays) 50 | * `easybashlib` used for for optional functions like cleaning temporally working dir 51 | 52 | ## Quick start 53 | 54 | ``` bash 55 | source easybashgui 56 | 57 | message "hola" 58 | ``` 59 | 60 | Pretty easy!? right? Read the "Quick start usage" section at the [docs/README.md](docs/README.md#quick-start-usage) 61 | 62 | ### INSTALLATION 63 | 64 | Please check [docs/install.md](docs/install.md) document file! 65 | 66 | ### Documentation 67 | 68 | Please check [docs/README.md](docs/README.md) document file! 69 | 70 | ### Packages 71 | 72 | There are (sometimes old, please check easybashgui-x.x.x.tar.gz first! ) for some distros [![build result](https://build.opensuse.org/projects/home:venenux:bashgui/packages/easybashgui/badge.svg?type=percent)](https://build.opensuse.org/package/show/home:venenux:bashgui/easybashgui) : [![](https://img.shields.io/badge/Debian-A81D33?style=for-the-badge&logo=debian&logoColor=white) ![](https://img.shields.io/badge/Cent%20OS-262577?style=for-the-badge&logo=CentOS&logoColor=white) ![](https://img.shields.io/badge/Red%20Hat-EE0000?style=for-the-badge&logo=redhat&logoColor=white) ![](https://img.shields.io/badge/Ubuntu-E95420?style=for-the-badge&logo=ubuntu&logoColor=white) ](https://software.opensuse.org//download.html?project=home%3Avenenux%3Abashgui&package=easybashgui) and more! 73 | 74 | 75 | ## Credits. 76 | 77 | * Thanks to Bash, Yad, Gtkdialog, Xdialog, Kdialog, Zenity, Qarma, Gum, Cdialog, and Whiptail authors, this library was nothing without their work. Many thanks. 78 | * Thanks to PICCORO McKAY Lenz for his efforts and *excellent* work on README (and bug hunting too). 79 | * Thanks to zen0bit for first try and README impulse revival. 80 | * Thanks to Frank Dietermann for suggestion though to make EBG "posix compliant" (since vers. 11.X.X ) 81 | * Thanks to Jose Joao Dias de Almeida for the makefile tip. 82 | * Thanks to Chris "cgat" for his many ideas and suggestions that lead to version's "5.X.X" EasyBashGUI "revolution". 83 | * Thanks to Davide Depau for his tests and support, and his effort to make EasyBashGUI Debian policy compliant, and finally for his man page. 84 | * Thanks to Christian Prause for his patience and Git support. 85 | * Thanks to Lucio Messina for "Debian policy" tips and support. 86 | 87 | Please, let me know if my work has been useful for you. 88 | 89 | **Vittorio Cagnetta** `` 90 | 91 | https://github.com/BashGui/easybashgui 92 | 93 | ## LICENSE 94 | 95 | New BSD License, check [LICENSE](LICENSE) file! 96 | 97 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | EasyBashGUI - documentation 2 | =========================== 3 | 4 | Simplified way to code bash made GUI frontend dialogs! - Documentation 5 | 6 | - [Modes of use](#modes-of-use) 7 | - [Installation](#installation) 8 | - [Quick start usage](#quick-start-usage) 9 | - [Quick developer usage](#quick-developer-usage) 10 | - [EBG Framework](#ebg-framework) 11 | - [Examples](#examples) 12 | - [EBG Reference](#ebg-reference) 13 | - [Notes](#notes) 14 | 15 | ## Modes of use 16 | 17 | You can use as system-wide module lib or as built-in quick start module embedded! 18 | 19 | ## Installation 20 | 21 | Please check [install.md](install.md) document file for any way of installation, 22 | or just check next section for a more easy and modular way of usage: 23 | 24 | #### Quick start usage 25 | 26 | Let's assume you have the EBG installed on system-wide, then there 27 | are only few steps : 28 | 29 | ```bash 30 | mkdir ~/Devel/newprj && cd ~/Devel/newprj 31 | 32 | echo -e "source easybashgui\nmessage hola" > ~/Devel/easybashgui/newprogram 33 | 34 | bash ~/Devel/easybashgui/newprogram 35 | ``` 36 | 37 | That's it !!!!! Easy! But what if you wants all built-in!? Without install? 38 | of course you can! Check next section: 39 | 40 | #### Quick developer usage 41 | 42 | But what if we want everything to be within our project, as developers or 43 | embedding the EBG?, to make our program independent of the installation: 44 | 45 | ```bash 46 | mkdir ~/Devel && cd ~/Devel && git clone https://github.com/BashGui/easybashgui 47 | 48 | cd ~/Devel/easybashgui 49 | 50 | ln -s lib/easybashlib easybashlib && ln -s lib/easybashgui.lib easybashgui.lib 51 | 52 | echo -e "source src/easybashgui\nmessage hola" > ~/Devel/easybashgui/newprogram 53 | 54 | bash ~/Devel/easybashgui/newprogram 55 | ``` 56 | 57 | That's it !!!!! You develop your first GUI script! 58 | 59 | ## EBG Framework 60 | 61 | EBG is fully modular, you create a new script and just sourced the endpoint: 62 | 63 | * `easybashgui` a launcher that will be the endpoint sourced in your scripts 64 | * `easybashgui-debug` that toggles some debug options managed by the previous component 65 | * `easybashgui.lib` that managed the backends, called as widget library 66 | * `easydialog-legacy` stand-alone to create dialog boxes externally (as old nowadays) 67 | * `easybashlib` used for for optional functions like cleaning temporally working dir 68 | 69 | - Index documentation 70 | - [The EBG script](#the-ebg-script) 71 | - [Backend Widget support](#backend-widget-support) 72 | - [The supermode for backend widget](#the-supermode-for-backend-widget) 73 | - [System wide usage vs module user usage](#system-wide-usage-vs-module-user-usage) 74 | - [Backend boxes priority](#backend-boxes-priority) 75 | - [Box mode windows](#box-mode-windows) 76 | - [Size box windows](#size-box-windows) 77 | - [Boxes behavior compatibility](#boxes-behavior-compatibility) 78 | - [Examples](#examples) 79 | - [Simple question boxes](#simple-question-boxes) 80 | - [Simple text box from standard input](#simple-text-box-from-standard-input) 81 | - [The waiting for response](#the-waiting-for-response) 82 | - [Simple directory selection](#simple-directory-selection) 83 | - [Triplet input examples](#triplet-input-examples) 84 | - [Progress bar](#progress-bar) 85 | - [Level meter](#level-meter) 86 | - [Menu selection](#menu-selection) 87 | - [Choose items](#choose-items) 88 | - [A more complex example](#a-more-complex-example) 89 | - [A notification example](#a-notification-example) 90 | - [EBG Reference](#ebg-reference) 91 | - [Flow](#flow) 92 | - [message](#message) 93 | - [ok_message](#ok_message) 94 | - [alert_message](#alert_message) 95 | - [question](#question) 96 | - [text](#text) 97 | - [wait_seconds (progress bar)](#wait_seconds-progress-bar) 98 | - [progress (progresive way)](#progress-progresive-way) 99 | - [progress (regresive way)](#progress-regresive-way) 100 | - [wait_for](#wait_for) 101 | - [terminate_wait_for](#terminate_wait_for) 102 | - [fselect](#fselect) 103 | - [dselect](#dselect) 104 | - [input](#input) 105 | - [menu](#menu) 106 | - [tagged_menu](#tagged_menu) 107 | - [list](#list) 108 | - [adjust](#adjust) 109 | - [notify_message](#notify_message) 110 | - [notify_change](#notify_change) 111 | - [notify](#notify) 112 | - [Notes](#notes) 113 | 114 | #### The EBG script 115 | 116 | The script that will implement the EBG is always structured in three main parts: 117 | 118 | 1. The optional `supermode` variable and the mandatory sourced endpoint 119 | 2. The source code made by yourself that must be `bash` language 120 | 3. The optional `clean_temp` sentence for user mode only 121 | 122 | ```bash 123 | #!/bin/bash 124 | # part 1 environment variables and endpoint 125 | export supermode="zenity" 126 | export supertitle="Hola script v.0.0.1" 127 | export supericon="system" 128 | export supercontext="windows" #or supercontext="terminal" (see below) 129 | source /path/easybashgui #or simply: "source easybashgui" if you have installed it ! ;) 130 | # 131 | # part 2 .. code here 132 | message "hola" 133 | # 134 | # part 3 the finally sentences or output manipulation 135 | echo $? 136 | clean_temp 137 | ``` 138 | 139 | The most simple example of a EBG script is: 140 | 141 | ```bash 142 | source ./easybashgui 143 | 144 | message "hola" 145 | ``` 146 | 147 | #### Backend Widget support 148 | 149 | EBG implements different dialogs boxes! You don't have to worry about what 150 | environment you are running the script in, as **EasyBashGUI** will handle this 151 | transparently, based on the availability of the widget backends (frontends). 152 | 153 | * Console mode (supercontext="terminal") : 154 | * gum 155 | * dialog 156 | * whiptail (not selectable, just fall back) 157 | * Graphical mode (supercontext="windows") : 158 | * yad 159 | * gtkdialog 160 | * kdialog 161 | * zenity 162 | * qarma 163 | * Xdialog 164 | 165 | If there is no dialog/cdialog support installed. Check next section about `supermode`! 166 | 167 | #### The supermode for backend widget 168 | 169 | The backends for frontends (the widgets to use to display boxes) are selectable 170 | by the `supermode` environment variable. 171 | 172 | The `supermode` environment variable is only used to force or manually select 173 | a specific widget , by example using `kdialog` under GTK desktop, or by example 174 | using `zenity` under KDE environment. 175 | 176 | There is no `whiptail` mode because is used only as fallback! when dialog/cdialog 177 | is missing, if whiptail is present, just use `supermode=dialog` for! 178 | 179 | #### System wide usage vs module user usage 180 | 181 | If EBG is not installed you should have at least all the files in the same path 182 | as your main script, if you install it on the system you don't have to worry 183 | about this! 184 | 185 | A program/project that implements EBG and does not use same path from main script, 186 | can put the EBG script and files in another path, but structure must be in the same 187 | [hierarchy indicated in the installation guide "Install path" section.](install.md#install-paths) 188 | 189 | The USER way must have full path to the endpoint or the files must be in the 190 | same path of the script you made: 191 | 192 | ```bash 193 | #!/bin/bash 194 | source ./easybashgui 195 | # .. code here 196 | clean_temp 197 | ``` 198 | 199 | The SYSTEM way just need endpoint without path and the files must be in system 200 | paths, the script you made should look like: 201 | 202 | ```bash 203 | #!/bin/bash 204 | source easybashgui 205 | # .. code here 206 | ``` 207 | 208 | The difference in modes is just two: first you noted that source endpoint does 209 | not have a path (in the USER mode is "`./`") and second the SYSTEM mode does not 210 | need to clean temporally files (in the USER mode is `clean_temp`). 211 | 212 | If easybashlib is present and successfully loaded, you can avoid last sentence 213 | of `clean_temp` to remove temporary files; otherwise DO NOT forget to 214 | write `clean_temp` at the end of all your scripts... ;-) 215 | 216 | #### Backend boxes priority 217 | 218 | EBG support for backend boxed dialogs depends on the running programs: 219 | 220 | 1. If all the required backends are available or at least kdialog are.. the EBG 221 | will try to check if kdebin is running and only will use kdialog. 222 | 2. If only GTK based are running, the EBG will just use yad (or zenity ), even if xdialog 223 | is available and there is no desktop managers running (only window managers or similar.. ) 224 | 225 | ![](easybasguidialogs.jpeg) 226 | 227 | #### Box mode windows 228 | 229 | The backend window can be forced using the `supermode` environment variable to 230 | the program backend of choice: 231 | 232 | ```bash 233 | export supermode="kdialog" 234 | 235 | source easybashgui 236 | 237 | message "hola" 238 | ``` 239 | 240 | ![](easybasguidialogs.jpeg) 241 | 242 | #### Size box windows 243 | 244 | All windows functions support options `<-w|-width> [integer]` and `<-h|-height> [integer]` 245 | for custom window size with exception of `notify_message` and earlier versions 246 | of kdialog ! 247 | 248 | ```bash 249 | source easybashgui 250 | 251 | message -w 800 -h 100 "Hello World!" 252 | ``` 253 | 254 | ![](easybashgui-example0.jpeg) 255 | 256 | #### Boxes behavior compatibility 257 | 258 | **IMPORTANT**: Each interface GUI has its own way of entering from the user, 259 | while Yad can have 3 text entry boxes at the same time, on the contrary, Zenity 260 | can only have one at a time, you can see this in the examples below 261 | 262 | ![](easybashgui-example4.jpeg) 263 | 264 | ## Examples 265 | 266 | You must make the scripts in `bash` language, EBG is coded in `bash`, in this document 267 | We'll use bash to illustrate example uses: 268 | 269 | 1. Install EBG or source the minimum 3 files 270 | 2. Create your new program script 271 | 3. Source the main endpoint of EBG (check following examples) 272 | 4. Put your sentences of code in bash 273 | 5. Saves and launch the new script program 274 | 275 | - List of examples: 276 | - [Simple question boxes](#simple-question-boxes) 277 | - [Simple text box from standard input](#simple-text-box-from-standard-input) 278 | - [The waiting for response](#the-waiting-for-response) 279 | - [Simple directory selection](#simple-directory-selection) 280 | - [Triplet input examples](#triplet-input-examples) 281 | - [Progress bar](#progress-bar) 282 | - [Level meter](#level-meter) 283 | - [Menu selection](#menu-selection) 284 | - [Choose items](#choose-items) 285 | - [A more complex example](#a-more-complex-example) 286 | - [A notification example](#a-notification-example) 287 | 288 | #### Simple question boxes 289 | 290 | This piece of code will launch 3 dialogs, the first is the main question with a 291 | default "ok" button for positive answer, in limited backend boxes will only show 292 | a unique "ok" button and for cancel you just press "ESC" key.. If the negative 293 | response (cancel) is detected will launch an alert message box or then response 294 | box with confirmation. 295 | 296 | ```bash 297 | source easybashgui 298 | 299 | question "Do you like Country music ?" 300 | answer="${?}" 301 | if [ ${answer} -eq 0 ] 302 | then 303 | ok_message "You do like it :)" 304 | elif [ ${answer} -eq 1 ] 305 | then 306 | alert_message "You don't like it :(" 307 | else 308 | ok_message "See you" 309 | exit 0 310 | fi 311 | ``` 312 | 313 | ![](easybashgui-dialogs1.jpeg) 314 | 315 | #### Simple text box from standard input 316 | 317 | This piece of code will launch a text box inside a window but using pipes 318 | to parsed to STDIN and the `text` function: 319 | 320 | ```bash 321 | source easybashgui 322 | 323 | echo -e "What's your name?\n\nMy name's:\nVittorio" | text 324 | ``` 325 | 326 | ![](easybashgui-example1.jpeg) 327 | 328 | #### The waiting for response 329 | 330 | It create a box window with such text and returns control to main program... 331 | during that you can made more commands, all of this time such box window with 332 | progress bar will be present (if you don't like progress bar, use '-n' option) 333 | while your following commands will be executed, and after all of those job, 334 | you can close with an specific special function: 335 | 336 | ```bash 337 | source easybashgui 338 | 339 | wait_for "I'm sleeping 4 seconds... good night..." 340 | sleep 4 341 | terminate_wait_for 342 | ``` 343 | 344 | Take into consideration that `terminate_wait_for` only will close (kill) the 345 | last executed `wait_for` function launched, otherwise you must parse as argument 346 | the specific PID of the window box to close. 347 | 348 | ![](easybashgui-example2.gif) 349 | 350 | #### Simple directory selection 351 | 352 | This piece of code will let user to choose a full path file with directory 353 | choose dialog for file selection, standard output echoes the selection. 354 | 355 | ```bash 356 | source easybashgui 357 | 358 | fselect 359 | file="$(0< "${dir_tmp}/${file_tmp}" )" 360 | ``` 361 | 362 | ![](easybashgui-example3.jpeg) 363 | 364 | #### Triplet input examples 365 | 366 | This double check of same question, with default "ok" button for positive 367 | answer, in limited backend boxeswill only show a unique "ok" button 368 | and for cancel you just press "ESC" key.. but in any part of the execution 369 | the cancel will end all the program. 370 | 371 | Last box is the extra second input, then the script will store all the variables 372 | and will show in standard output! 373 | 374 | ```bash 375 | source easybashgui 376 | 377 | input 1 "(write here IP address)" 378 | input 1 "Please, write IP address" "192.168.1.1" 379 | input 2 "Username" "root" "IP address" "192.168.0.1" 380 | input 3 "Username" "root" "IP address" "192.168.0.1" "Destination directory" "/tmp" 381 | IFS=$'\n' ; choices=( $(0< "${dir_tmp}/${file_tmp}" ) ) ; IFS=$' \t\n' 382 | user="${choices[0]}" 383 | ip="${choices[1]}" 384 | dir="${choices[2]}" 385 | ``` 386 | 387 | ![](easybashgui-example4.jpeg) 388 | 389 | #### Progress bar 390 | 391 | You can pipe the progress count to a text of a box: 392 | 393 | ```bash 394 | source easybashgui 395 | 396 | for i in 10 20 30 40 50 60 70 80 90 100 397 | do 398 | echo "${i}" 399 | sleep 1 400 | done | progress "This is a test progress..." 401 | ``` 402 | 403 | ![](easybashgui-example5.gif) 404 | 405 | #### Level meter 406 | 407 | Level meters are easy to set, result of the choose will be echoed to standard 408 | output: 409 | 410 | ```bash 411 | source easybashgui 412 | 413 | adjust "Please, set Volume level" 15 40 75 414 | ``` 415 | 416 | #### Menu selection 417 | 418 | The menus are complex process internally but easy to use for you, 419 | it's just elements and the choosen one will be in the temporally file; 420 | 421 | ```bash 422 | menu "Red" "Yellow" "Green" 423 | choice="$(0< "${dir_tmp}/${file_tmp}" )" 424 | ``` 425 | 426 | #### Choose items 427 | 428 | Same as menus but allows to choose more than one item to you, 429 | it's just elements and the selections will be in the temporary file; 430 | 431 | ```bash 432 | list "+Red" "-Yellow" "+Green" 433 | choice_list="$(0< "${dir_tmp}/${file_tmp}" )" 434 | IFS=$'\n' ; choice_array=( $(0< "${dir_tmp}/${file_tmp}" ) ) ; IFS=$' \t\n' 435 | ``` 436 | 437 | #### A more complex example: progress bar by steps 438 | 439 | ```bash 440 | source easybashgui 441 | 442 | women=( Angela Carla Michelle Noemi Urma Marisa Karina Anita Josephine Rachel ) 443 | for (( index=0 ; index < ${#women[@]} ; index++ })) 444 | do 445 | today_prefered_woman="${women[${index}]}" 446 | kiss "${today_prefered_woman}" 447 | sleep 1 448 | # 449 | # Job done !! 450 | # then... 451 | echo "PROGRESS" 452 | # 453 | done | progress "This is a _LOVE_ progress..." "${#women[@]}" 454 | # if you use "PROGRESS" string in STDIN (echo "PROGRESS") do not forget progress() second argument ( "[elements number]" ) 455 | ``` 456 | 457 | #### A notification example 458 | 459 | This is *only* possible with Yad backend: 460 | 461 | ```bash 462 | source easybashgui 463 | 464 | notify -t "Good tooltip:OK#Bad tooltip:BAD" -i "/usr/local/share/pixmaps/nm-signal-100.png#gtk-fullscreen" "Xclock" "xclock" "Xcalc" "xcalc" 465 | # 466 | while : 467 | do 468 | menu GOOD BAD 469 | answer=$(0< "${dir_tmp}/${file_tmp}" ) 470 | # 471 | if [ "${answer}" = "GOOD" ] 472 | then 473 | notify_message --seconds 3 "Changed in \"good\" ..." 474 | notify_change "good" 475 | elif [ "${answer}" = "BAD" ] 476 | then 477 | notify_message -s 3 --icon "application-exit" "Changed in \"bad\" ..." 478 | notify_change -i "gtk-help" -t "This tooltip is bad" "bad" 479 | else 480 | exit 481 | fi 482 | # 483 | done 484 | ``` 485 | 486 | ## EBG Reference 487 | 488 | This is the reference list documentation for programming 489 | 490 | - List of functions: 491 | - [Flow](#flow) 492 | - [message](#message) 493 | - [ok_message](#ok_message) 494 | - [alert_message](#alert_message) 495 | - [question](#question) 496 | - [text](#text) 497 | - [wait_seconds (progress bar)](#wait_seconds-progress-bar) 498 | - [progress (percent way)](#progress-percent-way) 499 | - [progress (step way)](#progress-step-way) 500 | - [wait_for](#wait_for) 501 | - [terminate_wait_for](#terminate_wait_for) 502 | - [fselect](#fselect) 503 | - [dselect](#dselect) 504 | - [input](#input) 505 | - [menu](#menu) 506 | - [tagged_menu](#tagged_menu) 507 | - [list](#list) 508 | - [adjust](#adjust) 509 | - [notify_message](#notify_message) 510 | - [notify_change](#notify_change) 511 | - [notify](#notify) 512 | 513 | #### Flow 514 | 515 | EBG always use STDIN and STDOUT in conjunction with a temporally directory/filename. 516 | 517 | The temporally names are managed through the variables `${dir_tmp}` and `${file_tmp}` 518 | 519 | #### message 520 | 521 | The most simple, its just a normal window 522 | 523 | * ARGUMENTS: 524 | * text : optional, must be inside double quotes, only alphanumeric characters 525 | * STDIN: no 526 | * STDOUT: 527 | * exit code: 1 canceled with ESC, 0 the only button is pressed 528 | * STDERR: no 529 | 530 | ``` bash 531 | message "[text]" 532 | ``` 533 | 534 | #### ok_message 535 | 536 | Same as message but support response and reports question class to window manager 537 | 538 | * ARGUMENTS: 539 | * text : optional, must be inside double quotes, only alphanumeric characters 540 | * STDIN: no 541 | * STDOUT: 542 | * exit code: 1 canceled with ESC, 0 the only button is pressed 543 | * STDERR: no 544 | 545 | 546 | ``` bash 547 | ok_message "[text]" 548 | ``` 549 | 550 | #### alert_message 551 | 552 | Same as message but support response and reports alert class to window manager 553 | 554 | * ARGUMENTS: 555 | * text : optional, must be inside double quotes, only alphanumeric characters 556 | * STDIN: no 557 | * STDOUT: 558 | * exit code: 1 canceled with ESC, 0 the only button is pressed 559 | * STDERR: no 560 | 561 | 562 | ``` bash 563 | alert_message "[text]" 564 | ``` 565 | 566 | #### question 567 | 568 | Same as message but will offers extra button to user to cancel, the only difference 569 | is that supports output to both SDTERR and exit code: 570 | 571 | * ARGUMENTS: 572 | * text : optional, must be inside double quotes, only alphanumeric characters 573 | * STDIN: no 574 | * STDOUT: 575 | * exit code: 1 canceled with ESC, 0 the only button is pressed 576 | * STDERR: 577 | * exit code: 1 canceled with ESC, 0 the only button is pressed 578 | 579 | ``` bash 580 | question "[text]" 581 | ``` 582 | 583 | #### text 584 | 585 | It will offers a canvas layer to user to write, from the user input and 586 | also can present a predefined text from STDIN, it supports output to 587 | both SDTERR and STDOUT and exit code will present the contents: 588 | 589 | * ARGUMENTS: 590 | * -F : optional, switch to avoid text editing 591 | * STDIN: can be piped/redirect for predefined content 592 | * input: user can write 593 | * STDOUT: 594 | * (input): the content of box is write to `${dir_tmp}`/`${file_tmp}` 595 | * STDERR: 596 | * (input): the content of the box input will be out 597 | 598 | ``` bash 599 | text -F <<< "" 600 | ``` 601 | 602 | * `${dir_tmp}` is a random path directory to place the file containing the next file 603 | * `${file_tmp}` random file name where is content has the values one line per input 604 | * Only for yad, kdialog, zenity, qarma, gtkdialog and Xdialog you can also edit text inside the box 605 | 606 | #### wait_seconds (progress bar) 607 | 608 | This is an utility function, similar to `sleep`, but will display an automatic 609 | progress bar with a duration of the number os seconds you parse it: 610 | 611 | * ARGUMENTS: 612 | * seconds : mandatory, integer only 613 | * STDIN: no 614 | * STDOUT: 615 | * exit code: 0 unless its canceled externally, will be anything 616 | * STDERR: 617 | * exit code: 0 unless its canceled externally, will be anything 618 | 619 | ``` bash 620 | wait_seconds 621 | ``` 622 | 623 | #### progress (percent way) 624 | 625 | This is an utility function, similar to `wait_seconds`, it will show a box with 626 | a bar that will fill at the number percent position, the number to select the 627 | percent position is read from STDIN, the number can be piped or parsed from: 628 | 629 | * ARGUMENTS: 630 | * text : optional, must be inside double quotes, only alphanumeric characters 631 | * STDIN: 632 | * integer: integer with or without "%" that indicates how much will fil the bar 633 | * STDOUT: 634 | * exit code: 0 unless its canceled externally, will be anything 635 | * STDERR: 636 | * exit code: 0 unless its canceled externally, will be anything 637 | 638 | ``` bash 639 | (echo "10" ; sleep 1 ; echo "50" ; sleep 1 ; echo "100" ; sleep 1 ) | progress "Percent..." 640 | ``` 641 | 642 | * To create a progress sequence you must have several statements with different 643 | numbers that indicate the progress 644 | 645 | #### progress (step way) 646 | 647 | Similar to `progress` but using element number indicator, it will show a box with 648 | a bar that will fill at the number elements to left, the number to select the 649 | percent position is read from argument, the word "PROGRESS" must be piped or parsed 650 | from the STDIN to the function to indicate to fil the progress bar in the box: 651 | 652 | * ARGUMENTS: 653 | * text : required, must be inside double quotes, only alphanumeric characters 654 | * integer : required, must be inside double quotes, only alphanumeric characters 655 | * STDIN: 656 | * PROGRESS: must be sent to indicate to fill the bar 657 | * STDOUT: 658 | * exit code: 0 unless its canceled externally, will be anything 659 | * STDERR: 660 | * exit code: 0 unless its canceled externally, will be anything 661 | 662 | ``` bash 663 | (echo "PROGRESS" ; sleep 1 ; echo "PROGRESS" ; sleep 1 ) | progress "Steps..." 2 664 | ``` 665 | 666 | #### wait_for 667 | 668 | This is an utility function, similar to `progress`, it will show a box with 669 | a dynamic progress bar and the text you parse it, the box never close either 670 | never ends, you should do something with their control variable`{wait_for__PID}` 671 | 672 | * ARGUMENTS: 673 | * -n|--no-pulsation : optional, switch to avoid pulsation 674 | * text : optional, must be inside double quotes, only alphanumeric characters 675 | * STDIN: no 676 | * STDOUT: 677 | * `wait_for__PID` : control variable used to kill the action/function 678 | * exit code: 1 canceled with ESC, 0 the only button is pressed 679 | * STDERR: 680 | * `wait_for__PID` : control variable used to kill the action/function 681 | * exit code: 1 canceled with ESC, 0 the only button is pressed 682 | 683 | ``` bash 684 | wait_for -n "[text]" 685 | sleep 3 686 | kill -9 ${wait_for__PID} 687 | ``` 688 | 689 | #### terminate_wait_for 690 | 691 | This is an utility function, usefully to terminate inherit process using the 692 | last exit code or the variable`{wait_for__PID}` from the previous function: 693 | 694 | * ARGUMENTS: 695 | * PID : optional, numeric PID of the process to terminate and capture the result 696 | * STDIN: no 697 | * STDOUT: 698 | * exit code: 1 if PID not found, 0 if process was terminated 699 | * STDERR: 700 | * exit code: 1 if PID not found, 0 if process was terminated 701 | 702 | ``` bash 703 | message "[text]" && terminate_wait_for 704 | ``` 705 | 706 | In this example the `terminate_wait_for` output "1" because PID of `message` was 707 | terminated previously (ok button pushed), and PID is gone and not valid anymore! 708 | 709 | ``` bash 710 | wait_for "[text]" 711 | sleep 3 712 | ... more code 713 | terminate_wait_for 714 | ``` 715 | 716 | In this example the `terminate_wait_for` output "0" because PID of `wait_for` was 717 | active, PID is still valid and output in STDOUT that is STDIN for `terminate_wait_for` 718 | 719 | #### fselect 720 | 721 | This function will permit to choose a file and will let to you to use into the 722 | variables `${dir_tmp}`/`${file_tmp}` and STDERR to check the result of the input 723 | 724 | * ARGUMENTS: 725 | * path : optional, string path of the default place to suggest for file 726 | * STDIN: no 727 | * STDOUT: 728 | * path+file selected: the path and name of the chosen selected file from box 729 | * STDERR: 730 | * path+file selected: the path and name of the chosen selected file from box 731 | 732 | Those variables are filled when the action its completed: 733 | 734 | * `${dir_tmp}` is a random path directory to place the file containing the next file 735 | * `${file_tmp}` a random file name where is content has the path of the chosen file 736 | 737 | ``` bash 738 | fselect "[/path/to/directory/[filesuggested]]" 739 | ``` 740 | 741 | #### dselect 742 | 743 | This function will permit to choose a directory and will let to you to use into the 744 | variables `${dir_tmp}`/`${file_tmp}` and STDERR to check the result of the input 745 | 746 | * ARGUMENTS: 747 | * path : optional, string path of the default place to suggest for path to choose 748 | * STDIN: no 749 | * STDOUT: 750 | * path choose: the path and name of the chosen selected directory from the box 751 | * STDERR: 752 | * path choose: the path and name of the chosen selected directory from the box 753 | 754 | Those variables are filled when the action its completed: 755 | 756 | * `${dir_tmp}` is a random path directory to place the file containing the next file 757 | * `${file_tmp}` a random file name where is content has the path of the chosen dir 758 | 759 | ``` bash 760 | fselect "[/path/to/directory/]" 761 | ``` 762 | 763 | #### input 764 | 765 | This function will display in same box one, two and/or three inputs, depending 766 | of the parameters and can be initialized with default values as suggestions, 767 | and will let to you to use into the variables `${dir_tmp}`/`${file_tmp}` 768 | and STDERR to check the result of the input 769 | 770 | * ARGUMENTS: 771 | * inputs : required, indicates the number of inputs, can be 1, 2, or 3 772 | * label : required, it is repeated as many inputs as indicated 773 | * init : required, follows the label and its optional only if one input case 774 | * STDIN: no 775 | * STDOUT: 776 | * values: the input values of the labels in order, one line per value 777 | * STDERR: 778 | * values: the input values of the labels in order, one line per value 779 | 780 | Those variables are filled when the action its completed: 781 | 782 | * `${dir_tmp}` is a random path directory to place the file containing the next file 783 | * `${file_tmp}` random file name where is content has the values one line per input 784 | 785 | ``` bash 786 | input 1 "