├── .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 | 1 lucio.messina@mensa.it-20130706090142-mclg8zynkfwam4ha
5 | 0
6 | tree_root-20130706090012-2u2hoyv79ae9fh98-1 d 0 n AAAQAFHX3J1R19ydAAAIAwAGAF8AAEH9 d 0 n lucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48
7 | EasyBashGUI-license easybashguilicense-20130706090012-2u2hoyv79ae9fh98-8 f 8624bcdae55baeef00cd11d5dfcfa60f68710a02 35147 n AACJS1HX3JxR19ycAAAIAwAGAM0AAIG0 f 8624bcdae55baeef00cd11d5dfcfa60f68710a02 35147 n lucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48
8 | README readme-20130706090012-2u2hoyv79ae9fh98-4 f ec30a7e49fb3b4fe9c122c91f1787a49b783088f 9383 n AAAkp1HX3JxR19ycAAAIAwAGAMkAAIG0 f ec30a7e49fb3b4fe9c122c91f1787a49b783088f 9383 n lucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48
9 | debian debian-20130706090012-2u2hoyv79ae9fh98-16 d 0 n AAAQAFHX3OJR19ziAAAIAwAGAMQAAEH9 d 0 n lucio.messina@mensa.it-20130706090142-mclg8zynkfwam4ha
10 | easybashgui.1.gz easybashgui.1.gz-20130706090012-2u2hoyv79ae9fh98-11 f 8ec0ecfc5f456cfd8008bfdbf198d18bbee04256 2892 n AAALTFHX3JxR19ycAAAIAwAGAUIAAIG0 f 8ec0ecfc5f456cfd8008bfdbf198d18bbee04256 2892 n lucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48
11 | icons icons-20130706090012-2u2hoyv79ae9fh98-13 d 0 n AAAQAFHX3JxR19ycAAAIAwAGAWwAAEH9 d 0 n lucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48
12 | lib lib-20130706090012-2u2hoyv79ae9fh98-15 d 0 n AAAQAFHX3JxR19ycAAAIAwAGAW8AAEH9 d 0 n lucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48
13 | makefile makefile-20130706090012-2u2hoyv79ae9fh98-5 f 1bc4e27da9e75d87278057623d8691d4b7e19a7f 2307 y AAAJA1HX3JxR19ycAAAIAwAGAMoAAIH9 f 1bc4e27da9e75d87278057623d8691d4b7e19a7f 2307 y lucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48
14 | src src-20130706090012-2u2hoyv79ae9fh98-2 d 0 n AAAQAFHX3JxR19ycAAAIAwAGAMcAAEH9 d 0 n lucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48
15 | debian changelog debianchangelog-20130706090012-2u2hoyv79ae9fh98-21 f 9e95fa2acc9a43e1d992f91f22f2d8044ec0c310 185 n AAAAuVHX3N5R19zeAAAIAwAGAIoAAIG0 f 9e95fa2acc9a43e1d992f91f22f2d8044ec0c310 185 n lucio.messina@mensa.it-20130706090142-mclg8zynkfwam4ha
16 | debian compat debiancompat-20130706090012-2u2hoyv79ae9fh98-24 f 136571b41aa14adc10c5f3c987d43c02c8f5d498 2 n AAAAAlHXxahR19zEAAAIAwAGAYQAAIG0 f 136571b41aa14adc10c5f3c987d43c02c8f5d498 2 n lucio.messina@mensa.it-20130706090142-mclg8zynkfwam4ha
17 | debian control debiancontrol-20130706090012-2u2hoyv79ae9fh98-18 f dd74d9742b33556e9f61a46f60fbe4f747ce37f6 681 n AAACqVHX0wpR19zEAAAIAwAGAI8AAIG0 f dd74d9742b33556e9f61a46f60fbe4f747ce37f6 681 n lucio.messina@mensa.it-20130706090142-mclg8zynkfwam4ha
18 | debian copyright debiancopyright-20130706090012-2u2hoyv79ae9fh98-19 f 724c3e9df28eed5e078da0c3e48d0a780a34dae4 912 n AAADkFHXzQxR19zEAAAIAwAGAMMAAIG0 f 724c3e9df28eed5e078da0c3e48d0a780a34dae4 912 n lucio.messina@mensa.it-20130706090142-mclg8zynkfwam4ha
19 | debian rules debianrules-20130706090012-2u2hoyv79ae9fh98-20 f 9ed02e3acc5e8b4f53f4b20e244305aa3038b464 661 y AAAClVHXxahR19zEAAAIAwAGAZ4AAIHt f 9ed02e3acc5e8b4f53f4b20e244305aa3038b464 661 y lucio.messina@mensa.it-20130706090142-mclg8zynkfwam4ha
20 | debian source debiansource-20130706090012-2u2hoyv79ae9fh98-27 d 0 n AAAQAFHXxahR19zEAAAIAwAGAX8AAEHt d 0 n lucio.messina@mensa.it-20130706090142-mclg8zynkfwam4ha
21 | icons Attenzione.xpm attenzione.xpm-20130706090012-2u2hoyv79ae9fh98-9 f d1d55dd3faf995e89f3b3819e11036199b8cfb5c 8898 n AAAiwlHX3JxR19ycAAAIAwAGAM4AAIG0 f d1d55dd3faf995e89f3b3819e11036199b8cfb5c 8898 n lucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48
22 | icons Ok.xpm ok.xpm-20130706090012-2u2hoyv79ae9fh98-14 f 505b664b2f3e4924da8bac38897bc1a1c36940d1 969 n AAADyVHX3JxR19ycAAAIAwAGAW4AAIG0 f 505b664b2f3e4924da8bac38897bc1a1c36940d1 969 n lucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48
23 | lib easybashgui.lib easybashgui.lib-20130706090012-2u2hoyv79ae9fh98-10 f 967091db830ba9a2b1781b2e9edf3436c5f2a8d2 229452 y AAOATFHX3JxR19ycAAAIAwAGAUAAAIH9 f 967091db830ba9a2b1781b2e9edf3436c5f2a8d2 229452 y lucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48
24 | lib easybashlib easybashlib-20130706090012-2u2hoyv79ae9fh98-6 f a7a2ea3847565f9f3c61310dc538fb3b5efcf345 14470 n AAA4hlHX3JxR19ycAAAIAwAGAMsAAIG0 f a7a2ea3847565f9f3c61310dc538fb3b5efcf345 14470 n lucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48
25 | src easybashgui easybashgui-20130706090012-2u2hoyv79ae9fh98-3 f db2e45ac5dfc47f58380b601fcca2ac4c3f3bdfd 43640 y AACqeFHX3JxR19ycAAAIAwAGAMgAAIH9 f db2e45ac5dfc47f58380b601fcca2ac4c3f3bdfd 43640 y lucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48
26 | src easybashgui-debug easybashguidebug-20130706090012-2u2hoyv79ae9fh98-12 f 595f18311742df1fa536f3d474129db274c23420 4797 y AAASvVHX3JxR19ycAAAIAwAGAWsAAIH9 f 595f18311742df1fa536f3d474129db274c23420 4797 y lucio.messina@mensa.it-20130706090013-wbgtsywc2rzfyh48
27 | src easydialog.sh easydialog.sh-20130706090012-2u2hoyv79ae9fh98-7 f 17a361dd39471e3fefb9c51bcbdc7f19569d4156 7561 y AAAdiVHX3JxR19ycAAAIAwAGAMwAAIH9 f 17a361dd39471e3fefb9c51bcbdc7f19569d4156 7561 y lucio.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 |
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 | 
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 [](https://build.opensuse.org/package/show/home:venenux:bashgui/easybashgui) : [    ](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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 | 
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 "