This failed before because the ! caused the following tests to not match.
window_preexec() {
# Get the program name with its arguments.
local program_name=$1
window_preexec() {
# Get the program name with its arguments.
local program_name=$1
# When sudo is used use real program name instead, but with an
# exclamation mark at the beginning.
# When sudo is used use real program name instead, but with an
# exclamation mark at the beginning.
if [[ $program_name == sudo* ]]; then
if [[ $program_name == sudo* ]]; then
- program_name=!${program_name#sudo }
+ program_name=${program_name#sudo }
+ program_sudo=yes
fi
# Remove all arguments from the program name.
program_name=${program_name%% *}
fi
# Remove all arguments from the program name.
program_name=${program_name%% *}
+ # Add an exclamation mark at the beginning if running with sudo.
+ if [[ $program_sudo == yes ]]; then
+ program_sudo=!$program_sudo
+ fi
+
# Set the window name to the currently running program.
window_title "$program_name"
# Set the window name to the currently running program.
window_title "$program_name"