This lists user-visible changes, and which releases they occurred between. For more detailed information see the git log.
Each release lists incompatible changes at its top.
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:
foldmethod for vim was broken
TMOUT to 0 instead of 60 as minimum, 0 equals to
disabled (regression from 11.0)
~/.bashstyle.custom earlier, so that when hooking into
prompts and a color was set via the hook-variable it’s actually used
deadlink utility wasn’t working anymore, fixed
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
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
systemkit dirsize would fail if no directory was provided,
fall back to the current directory
make, this time without breaking
building Debian packages
acpi, then systemkit battery will now properly
output the string |000 rather than throwing errors, to prevent prompts from
being malformed
systemkit externalip to work again
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
# 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
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
bat drop-in replacement for cat now ships more themes,
all of which are now chooseable from BashStyle-NG
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
Git repo information
to the prompt by using gitkit
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)
minibar,
aswell as setting it’s colors.
Configuration group a restart button is available now,
aswell
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
Advanced group to Configuration group
globskipdots now follows Bash default (enabled)
undobuffer python module,
as it is no longer shipped with BashStyle-NG
bashstyle-help work again
make, as it broke creating a Debian package
lscd and treecd would not return an error code, when
the directory cd’ed into doesn’t exist (if creating directory is disabled), or
if directory cd’ed into couldn’t be created (if creating directory is enabled),
in both cases they now return 1
remember_command the function that would record the previous
command and it’s return status in the DEBUG and ERR traps wasn’t
properly working, as soon as a command failed the following was shown as failed
aswell, caused by an early abort in the function, this has been fixed - as of now
this is by default only used in the Equinox prompt style
GLOBSORT added in Bash version 5.3
search-ignore-case added in Readline 8.2
rl-clear-display added in Readline 8.3
git signing key is set to yubikey, then gitkit push
will not automatically ssh-add any key, instead it will try the push and
if a Yubikey is plugged in, you can enter it’s PIN, if no yubikey is plugged in,
you’ll be asked for password
gitkit functions listuser, listorg, cloneuser,
cloneorg now support both Github and Gitlab, and are now prefixed by gh
or gl, eg.: ghlistuser or gllistuser. Also short commands have been
added, eg.: ghlu for ghlistuser or gllu for gllistuser,
at last the clone commands will ask you whether to user https or ssh (default)
gitkit function export will export to ../<dirname>_export
by default, if no export path was provided
gitkit function push now also recognizes a .gitkit_mirror
file, when not in the root of the git repository
f-strings instead of %s in python Code
grep.
GREP_COLOR and use more versatible GREP_COLORS envvar, with eight separate color settings.
batchrename.
PEP8 issues as reported by pycodestyle, except E501 (line too long).
shellcheck.
gi.repository.Gtk version 3.0.
bat is called batcat on Debian).
colors: the color brown could not be used properly.
manpage colors: fix definition of manpage colors for terminals with support for more than 8 colors.
manpage colors: swap black and white on dark terminals, before defining stand out color.
bashstyle_history_sync: syncing from within embedded terminals (like in Geany) works now.
spell-correct-word keybinding from Bash 5.2 to keybindings setter.
fetch-history from Readline 8.2 to keybindings setter.
globskipdots from Bash 5.2 to settings.
r, reverse option to batchrename for creating reverse filenames.
functions from commandlinefu.com, a function showing functions and where they have been defined, by user goelztec.
less pager (may conflict with less as git pager when also using colored manpages).
bashstyle_history_sync.
cURL and wget in HOME/.bashstyle-ng.log.
BashStyle was released on 1st May 2007, so
version 10.7.4 marks the 15th Anniversary version. I never thought the project would
live on a long time like that.
sufffix: fix wrongly named files, when mime-type leads to non-exact match.
systemkit: adopt freeram, usedram, totalram,
usedram%, freeram%, to top changes.
reload_bash: fix resetting ERR trap.
configure: add /usr/share/gir-1.0 to gir paths to look for.
systemkit: ensure output from cpuload is always 3 digits, ram usage always 5 digits
(filled with leading zeros; for inclusion in prompts).
equinox: adopt to systemkit changes.
HISTFILE_TMP envvar used by customized bashstyle-ng history functions renamed
to BSNG_TMP_HISTFILE to match other bashstyle-ng envvars. Also guard for reload_bash.
BSNG_YEAR envvar from .settings.
bashstyle-rc: prevent error messages on first start
configure: make python version check more robust
gettext: due a bug in eval_gettext strings starting with dashes lead to issues in camelcase, random and randomfile functions, so use old school $'...' syntax as quick fix.
gitkit: fix cloneuser command not working.
history sync: fix terrible bug that could cause complete loss of history when many Bash instance are started at once and trying to access the history file.
bashstyle_history: custom ’history -D’ param now also deletes single commands in history (eg: history -D geany previously only deleted geany some_file, but not geany, now both will be deleted).
colors: add possibility to set colors for GCC messages.
gitkit: add listuser and listorg commands for listing repos from a GitHub user or GitHub organization.
advanced: add possibility to set useragent string for cURL.
advanced: add possibility to set useragent string for wget.
bashstyle_history: custom history -D param now accepts multi-word commands for deletion.
bashstyle_history: new custom history -g param to grep history for simple pattern.
bashstyle: add -l/--log action to view BashStyle-NG log file.
lscd, treecd: fix error messages when cd-ing into empty directory caused by gettext string evalutation.
bat: on some distributions bat is called batcat, support both.
HOME/.bashstyle-ng.log) from UI (About > BashStyle-NG Logfile).
fd-find to suggested packages in Debian GNU/Linux packaging scripts.
GNU Nano settings: fix setting UI colors.
GNU Nano settings: update possible settings for new GNU Nano versions.
const was renamed to constantshow.
poslog was renamed to positionlog.
morespace was replaced with emptyline.
rebindkeypad was removed.
ini handling: fix checking user settings being up-to-date on Bash startup.
make: fix BashStyle-NG .desktop file, manpage and bashstyle-config-helper not being uninstalled.
systemkit: fix systemkit dirsize not working.
systemkit: fix systemkit battery not working with recent acpi versions.
systemkit: fix systemkit internalip not working with recent ifconfig versions.
ls color settings: compat with some embedded terminals (like terminal in Geany IDE).
manpage color settings: compat with some embedded terminals (like terminal in Geany IDE).
GNU Nano settings: support for the following new settings has been added:
linenumbers: whether to show line numbers at start of line.
guidestripe: whether to draw a stripe at given position (0 = disabled) so help avoiding overlong lines.
errorcolor: set color for error messages.
selectedcolor: set color for selected text.
stripecolor: set color for the guidestripe.
numbercolor: set color for numbers.
GNU Nano settings: allow bright variants for foreground colors.
GNU Nano settings: change default value for nohelp to False, so commands are shown unless user wants to hide them.
list applet: call ls -A instead of ls -a if hidden files should be included.
bat instead of cat, also allow setting default theme for bat and tab width.
check new flag P: check if a program exists, and print a message if not, example check P [program-to-check] [program-that-requests].
bashstyle --enable or bashstyle --disable.
HOME/.bs-ng.ini to HOME/.bashstyle-ng.ini (auto-migrate from old to new name).
/etc/bs-ng_vendor.ini to /etc/bashstyle-ng_vendor.ini.
bs-ng-[ICONNAME].png to bashstyle-ng-[ICONNAME].png.
bs-ng.desktop to bashstyle-ng.desktop.
gitkit cloneuser / gitkit cloneorg, use wget + awk + xe instead of curl + ruby.
gitkit function for remembering SSH password.
eval_gettext for translating Bash Scripts intead of outdated $"" syntax.
gitkit applet: handle the case where TMPDIR is unset.
check function: check if dig is installed before executing check m.
basefile function: fix noext option.
round function: fix output not being visible in all cases.
check: perform various non-standard checks, used like test.
n: check if arg is a valid number (int, float, hex, octal), example: check n 4.4.
i: check if arg is a valid integer, example: check i 4.
f: check if arg is a valid float, example: check f 4,4 or check f 4.4.
h: check if arg is a valid hex, example: check h 301DE8.
o: check if arg is a valid octal, example check o 24.
hc: check if arg is a valid hex color, example check hc FFF or check hc 000000, # may optionally lead.
s: check if arg is a valid string, example check s "How do you do?".
p: check if arg is a special character, example check p ?.
c: check if arg1 contains arg2, example check c "Thanks, I'm fine." "I'm" or check c 1423532 235.
sw: check if arg1 starts with arg2, example check sw Hello H or check sw 12412 124.
ew: check if arg1 ends with arg2, example check ew Goodbye e or check ew 1422412 2412.
b: check if arg is a valid boolean, example check b $myvar. check recognizes the following as boolean value:
true, True, TRUE, 0
false, False, FALSE, 1
bt: check if arg is valid boolean true, example check bt $myvar.
bf: check if arg is valid boolean false, example check bf $myvar.
m: check if arg is a valid mail address, example check m "test@dom.tld". check matches against a regex and uses dig to see if the domain is available, will verbosely inform what’s wrong (in case).
-z for randomfile append filename to command without separating space, for example randomfile geeqie -r File: -- $HOME/Pictures/*.
gitkit applet:
push: first push to upstream, then push tags and at last push to all mirrors found in .git_mirror file.
taga: add tag and push to remote, example: gitkit taga TAG [-m MESSAGE COMMITID].
tagd: remove tag locally and remote, example: gitkit tagd TAG.
tagr: rename a tag (technically removes tag and readds it with new name) locally and remote, example: gitkit tagr OLDNAME NEWNAME, preserves first line of tag annotation and commit pointed to.
tagc: make a tag point to a different commit (technically removes tag and readss it pointing to new commit) locally and remote, example: gitkit tagc TAG COMMITID, preserves first line of tag annotation.
gitkit start an ssh-agent in combination with ssh-add so that the afore mentioned new features (and ordinary git remote commands) don’t require you to type in your password everytime. You can customize whether to use that feature, how long ssh-agent should remember the passwords and what keyfile to use (fallback $HOME/.ssh/id_rsa). The timer is separate in each Bash session. See options Remember SSH Key, Time to remember and SSH RSA Keyfile in the Git section of BashStyle-NG.
empty: you can now specify whether to look for empty files (example: empty f [PATH]), or directories (example: empty d [PATH]) only. Like before if no arg is passed (or arg is a path) it will search for both empty files and directories in given path or in PWD.
nseq function: allow passing the lowest number, aswell as the field separator (example: nseq 0 5 _).
ngroups function: if run as root, allow passing a different user than current (example: ngroups USER).
bashstyle launcher: new switches --ini-get and --ini-set allow getting or setting configuration values from command line.
topdir function.
assign function.
DATADIR/bashstyle-ng/rc/functions to DATADIR/bashstyle-ng/functions.
ruler function.
history not properly working when history sync is active.
history -D COMMAND which deletes all entries of a given command from the history, example:
history -D rm
will delete all occurences of rm from the history. history -D does exact matches, so for example rmdir is not removed from history, if rm is passed as COMMAND.
localvar_inherit, requires Bash version 5.0.
next-screen-line and previous-screen-line, requires Readline version 8.0.
cd or BashStyle-NG lscd or treecd.
history or BashStyle-NG History Sync or History Isolation.
bashstyle -v and About Page now show the release codename, too.
BSNG_SESSION_TIME contains the BashStyle-NG startup time in +%I-%M-%S-%N format.
jpg to jpeg
tar.gz to tgz
tar.bz2 to tbz
-h in addition to --help, minor changes
batchrename: proper verbose output
randomfile if neither -r or
-p are used.
README, TODO, Debian GNU/Linux package description.
systemkit did not accept the given directory
for function for counting files, directories or overall items, instead it always
used PWD. Now it respects a given directory and uses PWD if
none was given.
systemkit result of function for countine files,
directories or overall items were off by 1 in some cases.
randomfile could not handle parameters
passed to the application, e.g.: randomfile geeqie -r -- /home/test/Pictures/*
does now work as intended.
HOME/.randomhistory exists before doing
anything when -f, -l, -L or -i are given.
dd options don’t work.
systemkit:
randomfile,
using -p, --print parameter.
PWD, use like randomfile geeqie --.
2048 game
bashtips function
batch function
hilow game
quickscript function
remount function
wininfo function
xmltagdelete function
systemkit:
apkdump:
sufffix quiet by default, add -v, --verbose switch,
to get verbose output, if desired.
-v, --verbose switch to batchrename, to get verbose
output, if desired.
countvisibleitems work, when PWD is a
symlinked directory.
openhub parameter support more than just github.com
origins (for example gitlab projects are now properly opened in browser, aswell), also
rename openhub parameter into openweb.
topdir function, returns the deepest existing toplevel directory for a
given path, returns 1 if none found at all.
camelcase function, transforms a string (test_string-a b) in
either camelcase (TestStringAB) or word-by-word uppercase (Test String A B).
Equinox and Power User prompt styles now also use the
showuser function instead of bash built-in $ prompt variable.
lscd and treecd changes:
lscd and treecd,
which is of course not supported, so if both were enabled, lscd was used, always. This
is fixed now, as the user interface now only lets enable one or the other, not both.
lscd and treecd strings localizable.
Equinox and 4.4+ Sections
10.0
systemkit bios is called as non-root user a message is printed
accordingly (instead of just exiting without further notice).
openhub feature, when there is more than
one remote.
-p and -P command line args were mixed up.
tree is installed, if not, override the
user’s choice to use treecd instead of cd.
equinox style when terminal
has not enough lines of height to draw all user-requested prompt part.
sed
substitutions (left-over from very (very) early BashStyle-NG versions)
in the clock prompt style.
grep -c instead of grep xx | wc -l.
ayoli prompt style.
equinox prompt style in
the custom-prompt-builder was bugged since the introduction of
lastcommand prompt part.
systemkit --dirsize was broken.
apkdump: grab information about android packages (apk) using
aapt.
sufffix: fixes the suffix for given files.
batchrename: batch renames all files in a directory using the
NNN-NAME.SUFFIX naming scheme, where NNN is the number of the file
inside the directory (filled up with leading zeros if required, eg. 01 or
001) and NAME is given by the user.
-d, --doc command line arg to bashstyle, which opens
the HTML documentation using xdg-open.
-P, --python command line arg
of the bashstyle launcher script.
config-update-helper.
bashstyle-config-helper launcher script.
config-update-helper.
-b, --backup command line arg to bashstyle, which will
backup the user configuration.
-r, --restore command line arg to bashstyle, which will
restore a previously backed up user configuration.
-R, --reset command line arg to bashstyle, which will
reset the user configuration to vendor values (if vendor configuration exists
and is up to date) or factory values.
-u, --update command line arg of bashstyle was not mentioned
in -h, --help message.
bashstyle.1 manpage.
bsng-help to bashstyle-help.
check_opt, instead do a check in each script on it’s own.
custom-prompt-builder.
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
nx-rc to bashstyle-rc, that means,
you’ll have to re-enable BashStyle-NG in your $HOME/.bashrc. Upon
first start BashStyle-NG will offer you to do so, on it’s own.
Additional notes for Git repo users:
nx-rc will be auto-removed when re-enabling from UI,
as of commit 2ff6c0, if you transisted before that commit, be sure to remove
nx-rc references from your $HOME/.bashrc manually.
PAGER to be
less, else colorizing manpages might fail, if an other pager is used.
BashStyle-NG in $HOME/.bashrc
from user interface in certain cases.
BashStyle-NG in
$HOME/.bashrc, so that Bash does not run into errors on startup
when BashStyle-NG was uninstalled, but the startup entry still exists.
Aswell as when it was installed to a different prefix, without having adjusted
the startup entry in $HOME/.bashrc.
ini_version of $HOME/.bs-ng.ini is
bigger than app_ini_version, the configuration is reset to either vendor or
factory default configuration. When doing so the configuration was not reloaded
by the user interface (which could potentially lead to a crash).
Dark Terminal Background allows user
to set whether the terminal background is dark or bright. This option is used for
colorshell to prevent the font color being black on dark terminals, respectively
white on bright terminals in order to avoid barely readable text output.
This option also applies to all other terminal dependant color settings in
BashStyle-NG, where white will be black on bright terminals,
respectively black will be white on dark terminals.
bell-style readline variable.
completion-ignore-case readline variable.
LS_COLORS set by
BashStyle-NG. This resulted in readline functions using distribution default
LS_COLORS, but bash functions using the user set variable.
lastcommandprintable) by removing all newlines from the string.
treecd options not being honoured.
equinox
prompt, if pwdcut ini value is not set. Fixed output string length calculation
for truncpwd function aswell.
$HOME/.bashstyle.log after startup. Before this fix
only the messages from BashStyle-NG itself were stored, making the debug log
rather useless.
+, - and
/ for lastcommand exit code visualization instead of ✔,
✘ and ⊘, as they won’t display correctly.
extglob shopt by
default. Some bash completion definitions don’t work without (eg: vim’s).
dd when loading bashstyle-rc
more than one time during a single bash session.
BashStyle-NG user interface. Now the user
configuration is auto-updated from bashstyle-rc upon shell start up
aswell (if needed, vendor configuration is considered if up-to-date, else
factory configuration will be used (same behaviour as from user interface)).
Manual update is possible via bashstyle --update, or bashstyle -u.
If your configuration is up-to-date, nothing will be changed.
BashStyle-NG now allows you
to choose the different colors for manpages from the User Interface, rather than
only giving you a handful of pre-defined color schemes.
PATH variable.
lscd and treecd for different
banner, mkdir and empty labels.
lastcommand
exit code visualization. return_good, which is ✔/+ by default
return-bad, which is ✘/- by default and return_other,
which is ⊘// by default. This is currently only used in equinox
prompt.
equinox prompt. You can now
enable or disable the following informations:
showuser function. Prompt function to either show $
for normal users, a custom-set symbol. Always displays # for root. If
colors are enabled color for normal-users will be color_user and red for
root.
user_char option. Set this to let showuser display
something else than $ for ordinary users.
EXECIGNORE a colon-separated list of commands to ignore from completion.
Only matched if the *complete* filename matches. For example if you want to exclude
/usr/bin/autoreconf
from command completion, you need to add something like
/usr/bin/autreconf
or
*/autoreconf
to EXECIGNORE.
PS0 prompt and color setting. A new prompt which is displayed after
completion was done and before the completed command is executed.
Colored Completion Prefix makes the matching prefix of the issued
completion appear in a special color for all matches.
Enable Bracketed Paste makes Bash handle multi-line pasted code
like single-line, preventing erroneous completion or execution.
Vi Command Mode String is an indicator printed before the last line
of PS1 when Bash is in vi command mode.
Vi Insert Mode String is an indicator printed before the last line
of PS1 when Bash is in vi insert mode.
Emacs Mode String is an indicator printed before the last line of
PS1 when Bash is in emacs mode.
history syncronization improved history syncronization erasedups,
ignoredups, ignorespace and ignoreboth implementation. Made it more robust in
case multiple Bash sessions start up simultaneously (should throw a lot less to
no more errors).
random function’s --numericalrange, -r param previously
only allowed setting the highest value of random range, starting from zero.
Now it’s possible to set the lowest value optionally, aswell. Both syntaxes
are supported:
random -r 10 will give you a random number between 0 and 10
random -r 5 10 will give you a random number between 5 and 10
colors added support for both grey and white in all
color settings. Note: depending on your terminal’s color settings you might not
see a difference here, that’s not a bug.
colorshell does no longer pollute PS1...4 variables. It does
now store PS1...4 once per session to OLDPS1...4 and appends it’s
randomly choosen text color to the it.
equinox prompt now shows ⊘ in yellow when exiting git log
using q key, instead of ✘ in red. Exiting git log results in
return code 141, but it’s not an actual error, thus the new state was added.
GtkSwitches instead of GtkRadionButtons for main
switches in the UI.
use lscd instead of cd and
use treecd instead of cd exclude each other.
bs-ng, new: bashstyle
nx-rc, new: bashstyle-rc
bashstyle launcher script.
x-terminal-emulator).
GIT to Git in the UI and other pacles.
BashStyle-NG initialization,
no need to record BashStyle-NGs startup.
WidgetHandler now supports GtkSwitches, GtkButtons and
GtkLabels, Custom Prompt Builders special GtkButtons and
GtkComboBoxes.
unseting a lot of variables which are
of no use after BashStyle-NG initialization.
dbg_msg function, now some of the output strings in
$HOME/.bashstyle.log are more readable.
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
trap from lastcommand
storing [Mingye Wang]
lastexit value storing [Mingye Wang]
also shows version of user, user backup, vendor and factory configuration files (None for vendor and user backup if they don’t exist)
Now there’s an separate option for each (including a color option each)
xmltagdelete --help
2048.bash --help
dd, requires version 8.24 or newer.
bashstyle executable.
Documentation icon (bs-ng-doc) icon in UI, opening the
documenation using xdg-open.
--docdir switch back
--mandir switch
./make build
./make install
./make install
./make readme)
./make news)
./make info)
./make html)
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>