Skip to content

UI improvements #29

Description

@vxgmichel

At the moment, the UI is very rudimentary:

  • the video frames are displayed in the terminal, cropped/centered depending on the the terminal size
  • the windows title is used to display the current status
  • the Tab key is used to cycle the color modes
  • the app is exited by typing ctrl-c or ctrl-d

This could be improved for a more user friendly interface, that could:

  • report the current configuration (color mode, blit mode, video size)
  • document the supported hotkeys
  • toggle fullscreen mode to show/hide those informations

One such feature is demonstrated by @jquast in #23 with an overlay encouraging the user to resize their terminals.

Some other examples of blessed apps can be found here. In particular:

  • plasma has a bottom status bar
  • celestial has both a top control bar and a bottom status bar, plus it goes full screen when ctrl-f is pressed

As a side note, I'm also tempted to bind the control features of the emulator to the F1 to F12 keys. As of now, only color-mode cycling is implemented (using the tab key), but other features might be added in the future:

  • blitter cycling
  • emulator pause
  • emulator speed control
  • etc.

Since the game boy controls are bound to physical location on the keyboard, there is a possibility of conflict between game boy inputs and the app interface (which is layout-aware). I can see two approaches to avoid those conflicts:

  • use special keys for control, like the F1 to F12 keys mentioned above
  • use a modifier dedicated to the app control, such as ctrl (in this case we ignore the gameboy events if the ctrl modifier is active)

In both cases, blessed give us the tools to implement this properly

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions