dosbox-staging / dosbox-staging

DOSBox Staging is a modern continuation of DOSBox with advanced features and current development practices.
https://www.dosbox-staging.org/
Other
1.31k stars 156 forks source link

Improved, more configurable title bar #3226

Closed FeralChild64 closed 7 months ago

FeralChild64 commented 10 months ago

Are you using the latest Dosbox-Staging Version?

Different version than latest?

No response

What Operating System are you using?

None

If Other OS, please describe

No response

Is your feature request related to a problem? Please describe.

This is a follow-up of the discussions from the PRs: https://github.com/dosbox-staging/dosbox-staging/pull/3214 and https://github.com/dosbox-staging/dosbox-staging/pull/3223. To please everyone (or at least just about everyone), we need a configurable title bar message. Ideas so far (both mine and from the discussion):

Work-in-progress code: https://github.com/dosbox-staging/dosbox-staging/tree/fc/titlebar-3

Describe the solution you'd like

No response

Describe alternatives you've considered

No response

Add any other context or screenshots about the feature request here.

No response

Code of Conduct & Contributing Guidelines

johnnovak commented 10 months ago

Nice idea. We could have something called window_titlebar set to auto by default, which could be overriden with some simple format string.

Grounded0 commented 10 months ago

Allow the executable name to be visible for the reasons pointed out by @rderooy in this post.

This feature has been there for the 20 years i've been using DOSBox and serves a purpose:

• Windows 3.1x itself has 2 different operating modes: KRNL286 protected mode and KRNL386 protected mode and allows you to know which one was picked due to operating factors specified in WIN /? when troubleshooting.

• Having this helps when writing more complex or longer running batch files because you see its progression and how it reached its logical execution pathway through conditional processing statements like IF, GOTO, FOR, CHOICE, PAUSE etc.

• This feature also mirrors 100 % of Unix terminal emulators which allow you to show the executable name running in the terminal emulator window:

Screenshot 2023-12-17 at 16 45 35
FeralChild64 commented 10 months ago

@Grounded0 The change to remove program name was just reverted. For 0.82.0 I intend to make it configurable.

FeralChild64 commented 10 months ago

Draft implementation is ready in https://github.com/dosbox-staging/dosbox-staging/tree/fc/titlebar-3, not tested thoroughly yet (and there is a risk of regressions!).

Known problems:

johnnovak commented 10 months ago

Will test it later, but this is for 0.82.0, to be clear.

A couple of things that I'd like to see addressed:

FeralChild64 commented 10 months ago

Option to put the version number and the git hash in the title bar (useful when testing and developing).

Version number - easy. GIT hash - not so much. Definitely doable with GNU-environment builds, but I have no idea how to do it with Visual Studio build.

Change the exe name in the title bar for our internal commands too.

Should be doable, I'll investigate.

Interesting edge case: what about piped commands, e.g. TYPE followed by MORE. What then?

DOS is a single-tasking operating system. I suppose the currently executed command will be displayed - not sure, I'll try to test it.

At least an option to include the extension too

Might be doable, I'll investigate.

I don't think @Grounded0 's example with batch files that execute commands now works

Which example?

Current time, weather reports, scrollers, animated emojis, and (...)

Blinking dot in [⚫ REC] mark (when audio/video is being captured) is planned.

johnnovak commented 10 months ago

but I have no idea how to do it with Visual Studio build.

No big deal if MSVC is not supported for this.

I don't think @Grounded0 's example with batch files that execute commands now works

If you execute a batch file that runs various commands, will the name of the batch file be shown in the title bar, or the current command executed by the batch file? While the latter is more useful, not sure if that's the case (but maybe just because our internal commands don't show up in the title bar, and that confused me?)

Blinking dot in [⚫ REC] mark (when audio/video is being captured) is planned.

I was joking about those things 😅 I guess that's kinda cool, so I'm not against it.

The OSD will display all such things, and do a better job (there's tons of things to potentially display, paused state, muted state, recording MIDI/video/audio, etc.—of course, all should be configurable not to spam the poor user 😅)

FeralChild64 commented 10 months ago

Option to put the version number and the git hash in the title bar (useful when testing and developing).

Implemented. Not sure if GIT hash will work with all the builds.

At least an option to include the extension too

Implemented. Can also display absolute path - configurable. Unfortunately, the implementation is a little bit tricky (DOS only remembers name without path/extension) and starts working strangely once DOS prompt is opened and closed in Windows 3.11 :(

Change the exe name in the title bar for our internal commands too

This one would probably be complicated, it would require digging into our COMMAND.COM. I don't really want to do this, at least for now.

what about piped commands

Tested, currently executed one is reported.

If you execute a batch file that runs various commands, will the name of the batch file be shown in the title bar, or the current command executed by the batch file?

The current command.

FeralChild64 commented 10 months ago

Animated recording indicator added. Now, time to clean up all this code...