BashStyle-NG 9.1 11 comments

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)

=== Installation ===

Installation of BashStyle-NG is straight-forward. Configure and Make are Bash scripts aswell, so no other tools needed for build. For a full list of options see:

* ./configure –help

  • ./make –help

1)    Check dependencies:    ./configure
2)    Build translations:    ./make build
3)    Install BashStyle-NG:    sudo ./make install

Alternatively you can build a package for Debian-based distributions via

1)    apt-get install fakeroot dpkg-dev
2)    dpkg-buildpackage -rfakeroot

If there are missing dependencies either Configure or dpkg-buildpackage will
tell you. Optional dependencies are marked as recommended for Debian packages.

=== 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.1 “Dial T for TNT”


=== Bug Fixes ===

  • #187 (vim-rc): set softtabstop instead of shiftwidth for setting tab length
  • #188 (keybindings-rc): some of the keybindings set from UI didn’t take effect
  • #189 (colorshell): option colorshell_reset did not work
  • #190 ( improve start-up mechanism, so that PS1 definied in ${HOME}/.bashrc does not override PS1 set by BashStyle-NG

=== Widgets ===

  • added CellRendererClickablePixbuf from Tryton (, with minor updates to be GTK+3 compatible

=== User Interface ===

  • majorly revised the Custom Prompt Builder (both UI and Code):
    • unified functions in python code where possible
    • removed “Place in (…)” buttons
    • only one “Empty”, “Undo” and “Redo” button each for both TextViews (it is now auto-detected which one of both is the currently active one)
    • use monospaced font in the input fields
    • add scrollbars to the Custom Prompt Builder (prevents window from getting immensively huge when inserting large prompts like Equinox)
    • add “Reset” button: reset to last saved user configuration
    • add “Factory” button: reset to vendor or factory configuration
    • when inserting functions or variables into PROMPT_COMMAND or PS1 the output will be modified so that it conforms with where it’s been added, example:
      • ${eusercolor} for PROMPT_COMMAND and ${usercolor} for ${PS1} or
      • $(systemkit usedram%) for PROMPT_COMMAND and \$(systemkit usedram%) for PS1
  • restructure prompt color settings
    • before: two combined combo boxes (not optimal from usability view)
    • after : a separate combo box for each color setting
  • re-arrange some settings in ‘Advanced’ category.
    • rename ‘Extra’ sub-section  into ‘BashStyle-NG’
    • rename ‘Misc’ sub-section into ‘Bash Builtin’.
  • remove AboutDialog-Window and make it a custom tab page instead
  • re-align widget groups for the better looks
  • show what category the user is currently in, in the header
  • added missing revert-to-default icons for PWD Length Spinbutton
  • show icon on the “Back”, “Empty”, “Undo” and “Redo” buttons again
  • major restructuring and updating of widgets in all categories
  • minor string changes

=== General ===

  • add trap_add function. It allows adding multiple commands to a trap one after another by grabbing the previous trapped functions and re-building the trap (by Richard Hansen
  • record executed command and it’s exist status. This will be available using
    • ${lastcommand} (full length)
    • ${lastcommandprintable} (truncated to max. 21 characters or filled with spaces to reach 21 characters, for prompts)
    • ${lastexit} variables.
      • This is not recorded for:
        • completion
        • trap
        • echo ${lastcommand}
        • echo ${lastcommandprintable}
        • echo ${lastexit}
      • so users are able to grab the values in all cases. Add all three to the Custom Prompt Builder.
  • rename lscd_mkdir config into customcd_mkdir and make it apply for both lscd and treecd
  • add treecd_opts config (similar to lscd_opts)
  • improve treecd (make it internally work like lscd)
  • make colorshell a trap rather than embedding it in PROMPT_COMMAND

=== Styles ===

  • Renamed “Clock Advanced” Prompt to “Equinox” (the name change is handled internally, the config updated automatically, no user interaction required)
  • re-bind RETURN to C-l\C-j when Equinox is the active style. The Style is now properly re-drawn after command execution (no more overlapping “arms”)
  • include ${lastexit} and ${lastcommand} as follows in Equinox:
    • ( ✔: some command )─┤    — for a successfully executed command
    • ( ✘: some command )─┤    — for a non-successfully executed command
  • simplify Equinox code a little bit
  • don’t draw arms in Equinox if the terminal height is less than 16 lines

=== Bash Settings ===

  • add GLOBIGNORE: everything to ignore from globbing. Default value: empty.
    • if you set it to “.:..” issueing ‘$ ls .*’ will not include ‘.’ and ‘..’
  • add History Sync: sync history between simultaneously running sessions.
    • commands from other sessions become available to ‘history’ immediately, to bash after reloading prompt ([ENTER])
  • add dotglob: include hidden files (with leading dot) by default during pathname expansion
  • add extglob: enable extending globbing with regular expression like extensions (see:
  • add nocaseglob: ignore case during globbing
  • add nocasematch: case insensitive matching for ‘case’ and ‘[[‘ commands

=== Keybindings ===

  • add ‘Revert’ column: revert setting to last saved user value
  • add ‘Default’ column: revert setting to vendor or factory default
  • removed ‘Reset Keybindings’ button (no longer needed with clickable Pixbuf)
  • add ‘None’ column: allow keybindings without modificator (only useful for keys like TAB for example to bind menu-complete to it)
  • removed Advanced > Tab Rotation, added menu-complete to Keybindings instead.
    • if you want to re-enable this feature set menu-complete in Keybindings to TAB with no modificator checked
  • new standard keybindings:
    • menu-complete-backward (default: Ctrl-Tab)
    • backward-kill-line (default: Alt-k)
  • new custom keybindings:
    • rerun-root (rerun last command as root, default: Alt-r)
    • list-keys (list all bound command and their keybindings, default: Alt-p)
  • made TreeViewColumn headers translatable

=== Readline ===

  • New Readline options:
    • colored-stats: if visible-stats is true, color them using LS_COLORS
    • skip-completed-text: when completing, don’t duplicate text after cursor.
      • example: if you have type: ‘$ sh’ and then do completion ‘$ /bin/b[TAB]sh’ it will end up ‘$ /bin/bash’ when this setting is On, ‘$ /bin/bashsh’ when this setting is Off

=== Vim ===

  • New color schemes provided:
    • Molokai
    • Vivid Chalk
    • Meta 5
    • Woju
    • Lightning
    • Paper Color
    • Solarized
  • New Vim options:
    • expandtabs: convert a [TAB] into [SPACE]s
    • wildmenu: show possible command completions above vim command line and cycle through using [TAB], very similar to Bash/Readline
    • foldenable: enable folding of large code blocks
    • foldlevelstart: at what level of code to start folding (0 for immediate folding, 99 for no folding)
    • foldestmax: maximum level of nested foldings
    • foldmethod: method to determine when to fold either indet (default), marker, manual, expression, syntax or diff

=== Nano ===

  • New Nano options:
    • enable_mouse: enable full mouse support (copy, select …)
    • no_wrap: disable wrapping of long lines
    • log_position: remember position in file when exiting and restore when opening the file again
    • tab_size: column-width of [TAB]s
    • tab_to_spaces: convert a [TAB]  into [SPACE]s
    • set_uicolors: master option to enable the following options
      • function_color_fg: text color for function descriptions
      • function_color_bg: background color for function descriptions
      • key_color_fg: text color for key bindings in help
      • key_color_bg: background color for key bindings in help
      • status_color_fg: text color for status messages
      • status_color_bg: background color for status messages
      • title_color_fg: text color for titlebar
      • title_color_bg: background color for titlebar

=== LS Colors ===

  • code simplification
  • set ls-color for ‘*’ (fallback) first
  • add ls-color options for:
    • symbolic links
    • sockets
    • pipes
    • block devices
    • character devices

=== Make 1.0.4 ===

  • less verbose upon ‘install’
  • less verbose upon ‘clean’
  • tweaked output colors
  • fixed message output for ‘check_root_message’
  • moved some messages from function into messages module
  •  minor tweaks

=== Translations ===

  • updated German translation

Leave a comment

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

11 thoughts on “BashStyle-NG 9.1

  • 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