BashStyle-NG is a graphical tool and function chain that lets you do more with GNU Bash
Introduction ¶
BashStyle-NG is a graphical utility and toolchain for changing the look, feel, and behavior of Bash, Readline, Vim, Nano, and Git. It acts as a central hub to add advanced features, configuration and visual enhancements into standard command-line tools, making the terminal environment more user-friendly and powerful.
The following is a shortened summary of possibilities, see the documentation for more.
Prompt Customization ¶
- Prompt Styles: Includes 12 pre-defined prompt designs which can be randomized per session or customized.
- Custom Prompt Builder: A modular prompt builder inside the GUI allows users to create their own custom prompt layouts, or modify the predefined styles.
- Color Schemes: Full control over text and prompt colors, with optional monochrome modes.
Utility Enhancements ¶
- Colored Output: Allows colored rendering for traditional manpages,
ls,gccerror messages andgrepmatches. - Directory Tracking: Features a custom
lscd/treecdcommand that remembers the last visited directory, auto-restores directory on new session, and prints directory contents immediately after navigating. - Git Status Integration: dynamically displays the current Git branch, revision, action, and more straight in the prompt.
- History: customize how many commands the shell remembers, ignores duplicate entries, and controls how history is written to disk. This includes the options for
history isolation– meaning that terminal sessions have no outside visible history. Or the oppositehistory sync, when active, reloading the prompt (pressing enter), will load any new history created from other sessions.
Configuration Management ¶
- BashStyle-NG handles it’s own configuration through ConfigObj, all Text and Number settings have two icons. The left icon (back arrow) reverts to previously saved user configuration if a setting was changed in the running BashStyle-NG instance. The right icon (broom/trash) reverts to the factory default setting, which is either BashStyle-NG default setting or a custom vendor configuration, which can be provided by package maintainers.
- BashStyle-NG additionally has global revert buttons at the top, which act the same way, but for all settings at once, to keep the UI in sync it is restarted after the configuration was reverted to previous saved user state or factory default settings.
Figure 2.2: Equinox prompt style in Konsole
Git repository access ¶
You can check the latest version via GitLab:
https://gitlab.com/Nanolx/bashstyle-ng
Downloads ¶
- Tarballs: https://downloads.nanolx.org/BashStyle-NG/
- Debian package: https://apt.nanolx.org/pool/main/b/bashstyle-ng/
Translations ¶
- Existing Translations [Translator]
- de (German) [Christopher Roy Bratušek]
Submit Bugs for Feature Requests ¶
Visit https://gitlab.com/Nanolx/bashstyle-ng/issues for reporting bugs.
Please make sure that you got the latest stable version of BashStyle-NG. If you got an Feature Request or a new Idea for BashStyle-NG, don’t hesitate to post it! If you can provide patches, then that’s even better.
11.1 (20260626) "Elysium"
=========================
• General Changes
− On Startup BashStyle-NG now checks whether the user uses a Gtk
theme containing ‘adwaita’ in it's name, if so the UI does
dynamically apply Adwaita over the fallback Gtk4 theme. This
does not change any UI elements to Adwaita widgets.
The purpose is to let the user decide whether to use Adwaita
theme, default Gtk4 theme or any other Gtk4 theme (like
Breeze).
The Adwaita gi is thus only checked for as optional by
‘configure’, because it's up to the user whether BashStyle-NG
loads Adwaita or not.
Regardless BashStyle-NG checks whether we are running from
KDE, if so:
+ Force use KDE color scheme, instead of Adwaita color
scheme
+ Force dark or light mode, following KDE
− The Documentation was greatly improved, the name for the
settings were added, addtionally to their visible name in the
UI and description. Additionally screenshots are now
provided.
• Fixes
− #288: Setting ‘foldmethod’ for vim was broken
− #289: Allow setting Bash ‘TMOUT’ to 0 instead of 60 as
minimum, 0 equals to disabled (regression from 11.0)
− #290: Setting welcome message wasn't working if the welcome
message was set to a command, BashStyle-NG now checks whether
it's set to a command or message and acts accordingly, so
either way is working
− #291: Load ‘~/.bashstyle.custom’ earlier, so that when hooking
into prompts and a color was set via the hook-variable it's
actually used
− #292: The ‘deadlink’ utility wasn't working anymore, fixed
− #293: Keybindings GridView no longer compares lower case
values, it now compares as-is, allowing C-t aswell als C-T as
keybinding
− #294: When Readline shows the edit mode in the prompt,
multiline prompts would look "broken" as the first line starts
directly from the left, while the second line start one
character off as readline prints the edit mode character, this
applies to almost all prompt styles
− #295: Numerous fixes for the Power User prompt style, it has
been heavily outdated, but properly works again
− #296: Power User prompt uses ‘grep’, but if the user has set
grep options like ‘-H’ parsing the output was broken, this is
fixed by calling ‘grep’ directly, discarding any extra options
or aliases
− #297: In the Ayoli prompt style the calculation of the
fillsize was off by two, thus the last two characters of the
first prompt line were wrapped to the second line, leading the
second prompt line ending up in the third line, the fillsize
is now properly calculated
− #298: The prompt hook ‘DIRKS_2()’ for the Dirks prompt style
was not properly declared, when the user hasn't set the hook
themselves, leading to an error message everytime ‘PS1’ was
called, this is fixed now
− #299: ‘systemkit dirsize’ would fail if no directory was
provided, fall back to the current directory
− #300: Add back root check for ‘make’, this time without
breaking building Debian packages
− #301: When the current device is not a laptop or has no
support for reading battery values from ‘acpi’, then
‘systemkit battery’ will now properly output the string ‘|000’
rather than throwing errors, to prevent prompts from being
malformed
− #302: Updated ‘systemkit externalip’ to work again
− #303: Fix a silly typo preventing BashStyle-NG from showing
the current position in GNU Nano, if it was enabled by the
user
• New Features
− Until version 11.0 BashStyle-NG saved the configuration when
closing the application, now every widgets triggers a write,
when changing or reverting a setting immediately - though the
configuration is still saved on close
− Allow setting prompt style to ‘None’, which will prevent
BashStyle-NG from setting ‘PROMPT_COMMAND’ or ‘PS1’ entirely,
useful if you want to use it in conjunction with another tool,
like ‘Liquid Prompt’ or whatever
− Allow setting a custom character for root user in the prompt,
this allows to show something different than ‘#’ for root,
this is done through ‘showuser’
− ‘Equinox’ prompt style now allows to show information of a git
repo if the user is inside it's root directory, using ‘gitkit’
- the prompt then shows another "arm" which displays current
branch, current revision and current action, if there's not
enough width, the branch will be cut to retain proper prompt
layout
− The ‘xmlpager’ utility now prints the xml header blue,
comments yellow and attribute values green, tag values still
red, the rest of the xml remains white
− The ‘bat’ drop-in replacement for ‘cat’ now ships more themes,
all of which are now chooseable from BashStyle-NG
− BashStyle-NG now allows to use use ‘vivid’ for generating
colorschemes for ‘LS_COLORS’, this will ignore the manual
setting from BashStyle-NG, except the custom string, this
string will be appended to ‘vivid’ generated ‘LS_COLORS’, so
it will be honoured regardless of ‘vivid’ settings
− ‘systemkit externalip’ defaults to ‘ipv4’, it is now possible
to pass ‘ipv6’ flag instead, like ‘systemkit externalip ipv6’
− The Custom Prompt Builder now allows to insert ‘Git’ repo
information to the prompt by using ‘gitkit’
− BashStyle-NG now offers two more custom Key Bindings for
readline, which utilize ‘plocate’, ‘plocate’: for the string
the cursor currently is at, use ‘plocate’ to search for it and
‘plocate-file’, likewise, but explicitely only searches for
the basename (filename, no directory name)
− In the Settings for GNU Nano you can enable or disable the
‘minibar’, aswell as setting it's colors.
• Misc. Changes
− Add global button to revert to (saved state) user
configuration, aswell as a button that reverts to factory (or
vendor) configuration, then BashStyle-NG is restarted; in the
‘Configuration’ group a restart button is available now,
aswell
− UpdateConfig now checks for obsolete keys in the user
configuration, and removes them
− The WidgetHandler now allows GtkEntrys to have a maximum
number of characters the user can input.
− The Custom Prompt Builder now uses GtkSourceView instead of
GtkTextView, when the Gtk theme is dark ‘oblivion’ color
scheme is used, else ‘tango’
− ‘systemkit’ now uses ‘awk’ and ‘/proc/meminfo’ to calcuate
used, free and available RAM or respective percentages, as
it's much faster than parsing the output from ‘top’
− Migrate all GtkComboBox to GtkDropDown, make all GtkDropDown
values translatable
− New CSS for both pure Gtk4 and Adwaita inverts the
GtkCheckButtons color in the keybindings ColumnView, when the
line is highlighted, to prevent them from almost vanishing
visually
− Extra custom CSS only active if Adwaita is in use
+ Make the selected entry in a GtkDropDown clearly visible
when opening the list, for some reason Adwaita does apply
no highlight to the active entry
+ Prevent Adwaita from making the GtkCheckButtons in the
keybindings ColumnView comically huge
+ Prevent Adwaita from enlarging CustomIconSpinButton
+ Fancy hover effects for most widgets, which would
otherwise have almost no visible hover effect
− The button for enabling verbose BashStyle-NG startup was moved
from ‘Advanced’ group to ‘Configuration’ group
− The default setting for ‘globskipdots’ now follows Bash
default (enabled)
− Remove vendor configuration from Debian package, just use
BashStyle-NG's factory config
− Update german translation

