BashStyle-NG 9.0 11 comments   Recently updated !

utilities-terminalBashStyle-NG is a graphical tool and function chain that lets you do more with GNU Bash

BashStyle-NG is a graphical tool and toolchain for changing the behaviour and look’n’feel of Bash, Readline, Vim, Nano and GIT.

Possibilities include:

  • Bash
    • 12 fancy pre-defined prompt styles
    • colors are customizable
    • random text color possible
    • random prompt style for each session possible
    • create your own prompt using UI
    • customizing pre-defined ones possible
    • alternatively monochrome prompts instead of colored
    • colored manpages (without using most)
    • colored output from ls and grep (matches)
    •  colors are customizable
    • rembering last visited directory (and restore upon new session)
    • customize bash history settings
    • lscd: customized variant of cd, showing content of directory after cd, can create directories that don’t exist, passing of customized ls parameters possible
    • un/setting shopts (shell options) for Bash 4.3 / 4.0-4.2 / 3.2+
    • customizable completion blacklist, timeout, welcome message and more
  • GIT
    • set GIT user name
    • set GIT mail address
    • set GIT editor for commit messages
    • set GIT colored output
  • Readline
    • un/set completion
    • un/set case sensitivity
    • un/set horizontal completion
    • un/set mark filetypes and folders
    • un/set include hidden files incompletion
    • customize almost 30 keybindings
  • VIM
    • un/set remember last position
    • un/set syntax highlighting
    • un/set auto indention
    • un/set case sensitive search
    • un/set incremental search
    • un/set display line numbers
    • un/set highlight current line/column
    • set dark or bright background
    • set line-wrap and tab-length
    • set color scheme
    • enable ruler/set ruler format
  • Nano
    • un/set search history
    • un/set syntax highlighting
    • un/set auto indention
    • un/set case sensitive search
    • fix backspace and numblock assignment
  • Extras
    • several extra functions for daily use
    • systemkit: show various system information, including cpu, system load, used/free/total ram and more
    • gitkit: various companion functions for GIT, like exporting the repo (like ‘svn export’), creating tar.gz/tar.bz2/tar.xz/.zip archives from repo, getting active branch/action/revision/revno from repo (for PS1)
    • math conversion functions: convasc, convbin, convdec, convhex, convoct, convtemp. Convert between ascii, binary, decimal, hexadecimal, octal or temperature units
    • random: create random strings (for example passwords) of various types
    • scripts for working with files: map (run a command on given files, for non-batch commands), batch (batch-perform actions on files), basefile (extract extension, filename with/without extension or filepath from full filename, similar to basename), randomfile (perform action on a random file, also has history, multiple executions support and more)
    • and several more (see /usr/share/bashstyle-ng/rc/functions/ for all)

=== Program Icons ===

BashStyle-NG uses Oxygen icons by default (supplied), but if the icons exist in your currently active GTK+ icon theme aswell, they will be used instead.

  • 32×32 pixel icons:
    • bs-ng Application logo
    • bs-ng-advanced Icon for ‘Advanced’ category in UI
    • bs-ng-alias Icon for ‘Alias’ category in UI
    • bs-ng-custom Icon for ‘Custom Prompt Builder’ in UI
    • bs-ng-git Icon for ‘GIT’ category in UI
    • bs-ng-info Icon for ‘About Dialog’ in UI
    • bs-ng-keys Icon for ‘Keybindings Setter’ in UI
    • bs-ng-ls Icon for ‘LS Colors’ category in UI
    • bs-ng-nano Icon for ‘Nano Configuration’ in UI
    • bs-ng-readline Icon for ‘Readline Configuration’ in UI
    • bs-ng-shopts Icon for ‘Shell Options Configuration’ in UI
    • bs-ng-style Icon for ‘Style’ category in UI
    • bs-ng-toolbox Icon for ‘Custom Prompt Builder Toolbox’ in UI
    • bs-ng-vim Icon for ‘VIM Configuration’ in UI

=== GIT Access ===

You can get the latest in-development version by running:

git clone git://

=== Translations ===

  • Current Translations:
    • de (German) (Christopher Roy Bratusek)
  • New Translations:
    • Visit and apply for a team or request the creation of a new one.

=== Bugs ===


before reporting bugs please make sure that you got the latest version of BashStyle-NG.

=== Features Requests ===

If you got an Feature Request or a new Idea for BashStyle-NG, then don’t hesitate to post it! If you can provide patches, then that’s even better.

License: GNU GPL v3

git file-roller deb


Overview of changes in v9.0 “A New Wave”
=== NOTES ===

  1. The first-run-wizard (bsng-wizard) has been removed, relevant options have been merged into the main application, be sure to run the UI (Style for colorshell, else Advanced and GIT) after upgrade to re-adjust your settings that got lost by this change.
  2. This release removes the html-documentation. Instead every options will have a tooltip showing the name of the configuration variable (or — if none) and the description of the setting [work in progress].
  3. Configure now looks for python3 by default, falls back to python2 or python.

=== Bug Fixes ===

  • #154 (ui): icons for reverting to user-default or factory-default settings were missing from some GtkEntry and all GtkSpinButton.
  • #155 (configure): when using –python configure flag that given python interpreter was not used to check if required modules are available
  • #156 (text2morse): python3 support in text2morse
  • #157 (readline): when changing settings for readline they didn’t take effect immediately
  • #158 (lockfile): the lockfile module required additional fixes to fully work with both python2 and python3
  •  #159 (pkgconfig): install pkgconfig file into ${PREFIX}/share/pkgconfig, not ${PREFIX}/lib/pkgconfig/
  • #160 (nx-rc): fixed history settings from ui were not always applied on the shell
  • #161 (colorshell): random selection of colors in colorshell hasn’t really been random
  • #162 (config): if a vendor configuration (/etc/bs-ng_vendor.ini) exists, let the revert configuration icon on GtkEntry and GtkSpinButton revert to vendor configuration instead of factory configuration
  • #163 (colorshell): fix colorshell not being available to all prompt styles
  • #164 (styles): fix PRE_PROMPT_COMMAND not available to monochrome versions of ayoli, clock, clock-ad and poweruser prompt styles [if you create a function of that name in ${HOME}/.bashstyle.custom you can hook into those style’s PROMPT_COMMAND (the other styles don’t have PROMPT_COMMAND, so you can freely create one for them)]
  • #165 (colors): fixed pscolor not being set
  • #166 (styles): fixed that most styles called trunc_pwd instead of truncpwd
  • #167 (truncpwd): change the way truncpwd obtains it’s settings, so that it always works as expected (and only loads them once)
  • #168 (custom prompt builder): fixed custom prompt builder not properly inserting default styles into the textbuffers for further customization
  • #169 (truncpwd): when maximum length of pwd is 0 don’t truncate it all.
  • #170 (config): when configuration file exists, but is broken, restore either vendor or factory default configuration for the user
  • #171 (wrappers): if you felt brave enough to enable dirinfo wrappers, they still didn’t work properly, because of a change in the setup mechanism that wasn’t reflected in the wrappers
  • #172 (clock-ad) (truncpwd): when changing to a user not having BashStyle-NG set-up prompts were incorrect, as some required settings for truncpwd, respectively clock-ad’s internal pwd-truncating function, were not set
  • #173 (nx-rc): on Debian GNU/Linux ensure that ~/.bashrc does not override BashStyle-NG’s PS1, by commenting-out the corresponding parts of the file
  • #174 (assign): fix assign function by making it an actual function, not a script
  • #175 (check_opt): make check_opt a script, so that other script can properly call it
  • #176 (ruler): new version of ruler function, working again
  • #177 (grep): make new grep “GREP_OPTIONS is deprecated” warning shut up
  • #178 (show_mem): use top instead of free (more precision, also avoids errors between different free output format variants)
  • #179 (configobj): enforce configobj encoding to be utf8 to ensure everything works fine
  • #180 (nanorc): enabling syntax highlighting for GNU Nano did not work properly
  • #181 (git): allow git configuration to apply, if Bash configuration is not used
  • #182 (birthday greetings): fixup user birthday greeting message
  • #183 (readline): make Readline configuration properly apply, if Bash configuration is not used (previously it would be created in the first new Bash session, but not applied, so it (or changes to it) took until the second new Bash session after program run to make readline configuration apply)
  • #184 (make): fix desktop file not beeing installed
  • #185 (configure): properly check for python version (was confused by version longer than four digits, for example 2.7.10 which translated to 2710)
  • #186 (configure): properly exit configure if a dependency was not met in all cases (for example did not exit when the found python interpreter’s version did exceed the maximum version or was below the minimum)

=== Wizard-Merge ===

  • the following options have been merged from the wizard into the main application: colorshell, colorshell_reset, use_lscd, lscd_opts,
    dd_noerror, restore_directory, debug_verbose, user_birthday, git_user_name, git_user_mail, git_color, git_editor, git_aliases, git_signkey,
  • everything but the above as been dropped.

=== New Features ===

  • Keybindings (Emacs editing mode)
    • This allows you to change 29 default bash/readline keybindings. (2 of them are not used by default).
    • Additionally theres a 30th, custom, keybinding: complete-path. If you press the assigned key while the cursor is at the end of a
      string resembling an executable, the complete path will be added to the command line.
  • New configuration options
    • use_gitcfg: only change GIT settings if this is set
    • use_keybindingscfg: only change readline Keybindings if this is set
    • tarxz: ls color setting for .tar.xz files (default: coldblue)
    • history_timeformat: setting for changing HISTTIMEFORMAT, prepend time and date to entries in bash’s history (default: none)
  • New git aliases
    • ls alias to git (prettified version of log)
    • lsb alias to git (sort branches (local + remote) by last activity)
  • treecd: option to use treecd in favor of builtin cd

=== Shell Functions ===

==== Improved Shell Functions ====

  • lscd: various improvements. If a file is passed as arguement to lscd, it will cd into the containing directory. New optional setting lscd_mkdir, if True lscd will create the directory if it does not exist (or if it’s not a file which’s directory we can cd into or not an -* cd parameter).
  • treecd: fixes, turn into function instead of script
  • crypt: crypt input string, instead of file
  • random: more features
  • randomfile: several improvements, more clear syntax
  • all functions: –help message added

==== New Shell Functions ====

  • loop function: loop for a colon-divided list (eg. PATH) and return the full path if the second arguement is found inside any member of the colon-divided list (similar to which, but for any provided list and both files and directories)
  • reload function: a clean function to reload .bashrc (x2cd)
  • quickscript function: writes all commands in history to a file. starting point is the last occurence of “###” (joedhon)
  • ngroups function: system default ‘groups’ lists all user-groups you’re in ngroups lists all user-groups you’re NOT in. (gniourf_gniourf)
  • psgrep function: find process by name (flatcap)
  • map function: takes a command with any number of arguments and applies it to each item in a list. It’s basically a shorthand way of writing a for loop. (downdiagonal)
  • movie2gif function: create GIF from a Movie (using FFMPEG)
  • xmlpager: pager for easy reading of xml files on a terminal (hackerb9)

=== Consolidated Shell Functions ===

  • random, randompw
    • merged into: random
  • progressbar, spin, spinner, spanner, working
    • merged into: progressbar
  • cel2fah, cel2kel, fah2cel, fah2kel, kel2cel, kel2fah
    • merged into: convtemp
  • bin2asc, bin2b32, bin2b64, bin2dec, bin2hex, bin2oct, bin2all
    • merged into: convbin
  • dec2asc, dec2b32, dec2b64, dec2bin, dec2hex, dec2oct, dec2all
    • merged into: convdec
  • asc2dec, asc2b32, asc2b64, asc2bin, asc2hex, asc2oct, asc2all
    • merged into: convasc
  • hex2dec, hex2b32, hex2b64, hex2bin, hex2asc, hex2oct, hex2all
    • merged into: convhex
  • oct2dec, oct2b32, oct2b64, oct2bin, oct2asc, oct2hex, oct2all
    • merged into: convoct
  • l1, ll, lo, lm, lg, la, ols
    • merged into: list
  • count_files, count_processes, show_battery_load, show_cpu_load, show_ip, show_mem, show_size, show_space, show_system_infos,
    show_system_load, show_tty, show_uptime

    • merged into: systemkit
  • git_action, git_branch, git_bzip, git_clonehub, git_export, git_funmsg,git_openhub, git_revision, git_revno, git_undelete, git_xz, git_zip
    • merged into: gitkit

==== Removed Shell Functions ====

  • The following aliases have been removed:
    • rd
    • reload
  • The following shell functions have been removed
    • any2avi, repeat, repoadd, reporem, bookmark, unmark, xalias, xunalias, xdel, d2u, u2d, top10, sawp, writeiso, geniso, up, jump, dirinfo, wipe, exchange, flv2ogg

=== User Interface Changes ===

  • improved user interface
    • IconView for category selection
    • close button added to Custom Prompt Builder (CPB) toolbox
    • various deprecated widgets replaced by new ones (work in progress)
    • explain git aliases in ui
    • options now have a tooltip with a description on it’s meaning (work in progress)
    • removed “Reset Bash History” button

=== Configure 4.3.3 ===

  • minor code improvements
  • output message changes
  • show version in –help
  • improved error handling
  • not just check if application exists, also check if it’s executable
  • move detection of system bashrc from Make to Configure
  • add APP_NAME variable (set it globally and use it in all messages, previously the name was hardcoded, that’s more portable)
  • rename xVERSION variable to APP_VERSION
  • rename CODENAME variable to APP_CODENAME
  • add CFG_VERSION variable
  • add APP_LANGUAGES variable containing available variables

=== Make 1.0.3 ===

  • various minor bugfixes
  • more verbosity
  • output message changes
  • code cleanup and consolidation
  • share code with Configure where useful
  • add copyright header
  • add MK_VERSION variable
  • check whether user is root upon install and remove targets

=== Translations ===

  • removed abandoned translations
    • russian
    • italian
    •  spanish
  • updated german translation

=== Misc. Changes ===

  • use less termcap variables instead of compiled terminfo files for colored manpages (and other pager output)
  • several improvements in “clock advanced” prompt style
  • updated copyright notices 2007 – 2015
  • removed unused perl module
  • removed unused icons (bs-ng-extra, bs-ng-help, bs-ng-profile)

Leave a comment

Your email address will not be published. Required fields are marked *

11 thoughts on “BashStyle-NG 9.0

  • ichbinder

    I installed the deb packet on mint but when will start bashstyle they tell me they need configobj.

    workaround was:
    sudo aptitude install python-configobj


  • Pingback: BashStyle-NG: Αλλάξτε δυνατότητες και συμπεριφορά στους editors (Readline-Vim-Nano)

  • Pingback: BashStyle-NG: Παραμετροποιήστε και κάντε περισσότερα στο τερματικό/κονσόλα

  • DeL00M

    Hello! Can’t install on ubuntu 14.04 cause of it have installed python 3.4 and bashstyle need <3.4
    Any suggestion?

  • Ruan Paes

    Can I use the BashStyle in Slackware 14.1 64?
    If yes, how I do this? How can I compile it?

    Sorry for my English.

    • Nano Post author

      I don’t see, why you couldn’t. There’s nothing to compile, just to check dependencies and build translations. It’s simple as:


      if it complains about missing dependencies you will need to install them.

      ./make build
      sudo ./make install (su -c ‘./make install’)

      That’s it. In case of bugs in Slackware support, try again with the lastet version in the git repository. If the issue persists, you can file a bug report at