I have reviewed the source code of what I assume is the extension being used to implement this feature, and I have noticed something I don't like;
if(!empty($context['user']['is_logged']) && !empty($modSettings['cgdt_enable'])) {
$context['greeting'] = $greeting.', <strong>'.$context['user']['name'].'</strong>';
}
elseif(!empty($context['user']['is_logged']) && empty($modSettings['cgdt_enable'])) {
$context['greeting'] = $txt['hello_member_ndt'].', <strong>'.$context['user']['name'].'</strong>';
}
elseif(empty($context['user']['is_logged']) && !empty($modSettings['cgdt_enable'])) {
$context['greeting'] = $greeting.', <strong>'.$txt['guest'].'</strong>';
}
elseif(empty($context['user']['is_logged']) && empty($modSettings['cgdt_enable'])) {
$context['greeting'] = $txt['hello_guest'].', <strong>'.$txt['guest'].'</strong>';
}
A chain of elseifs!

The last one is completely unnecessary, and in any case it should probably be written with if...else statements nested, not chained, i.e.:
if (!empty($context['user']['is_logged'])) {
if (!empty($modSettings['cgdt_enable'])) {
$context['greeting'] = $greeting.', <strong>'.$context['user']['name'].'</strong>';
}
else { // empty($modSettings['cgdt_enable']) == true
$context['greeting'] = $txt['hello_member_ndt'].', <strong>'.$context['user']['name'].'</strong>';
}
else { // empty($context['user']['is_logged']) == true
if (!empty($modSettings['cgdt_enable'])) {
$context['greeting'] = $greeting.', <strong>'.$txt['guest'].'</strong>';
}
else { // empty($modSettings['cgdt_enable']) == true
$context['greeting'] = $txt['hello_guest'].', <strong>'.$txt['guest'].'</strong>';
}
}
...because with a chain of three elseifs after an if, the number of control statements necessary to determine which of the four lines of code to run could be anywhere from one to four, while with the ifs nested two deep it's a constant two, and each of the two expressions is simpler, so the nested structure can (probably) always execute at least as quickly as the elseif chain, and definitely more quickly when greeting a guest.
Of course, on this site the amount of runtime wasted by that code is probably negligible, so it doesn't really matter too much, but I couldn't resist the urge to point it out.
I was wondering why the punctuation in those greetings was so bad, but the fact that custom text can only appear before the username explains it.
I don't think it would be difficult to modify the code to support greetings text after the username, in addition to before it. You could store the text to appear after the username in separate variables and just concatenate them (and the username) together, or have a single variable containing a certain string which is then replaced with the username, in Perl s/$USERNAME/$context{user}->{name}/ should do it, but I don't remember how to do substring substitution in PHP.
If you're out of ideas, you could always quote Shakespeare;
Is this a dagger which I see before me, $USERNAME
Come, let me clutch thee, $USERNAME
Wherefore art thou, $USERNAME
To be or not to be, $USERNAME