Skip to content

Improve universal terminal switching UX#375

Open
NuanKi wants to merge 6 commits intoMari023:mainfrom
NuanKi:main
Open

Improve universal terminal switching UX#375
NuanKi wants to merge 6 commits intoMari023:mainfrom
NuanKi:main

Conversation

@NuanKi
Copy link
Copy Markdown

@NuanKi NuanKi commented Apr 30, 2026

Summary

Addresses the Universal Terminal switching UX discussed in #313, with inspiration from 1.12.2 AE2-UEL Wireless Universal Terminal mod: https://github.com/Circulate233/AE2UELWirelessUniversalTerminal

Instead of adding hard-coded tabs to the terminal screen, this PR changes the existing Universal Terminal switch button into a temporary selector popup. The popup lists the installed terminals, lets the player choose one directly, and then disappears after selection.

This keeps the main terminal UI from being permanently cluttered, while still avoiding the old left/right click cycling behavior.

A demo video is attached showing:

  • selecting terminals through the popup button
  • Shift + mouse wheel cycling while holding the Universal Terminal outside a GUI

Motivation

The issue suggested tab-style switching, but the discussion pointed out a few problems with permanent tabs:

  • there is not consistent free space across all terminal layouts
  • addon terminals can increase the number of installed terminals further
  • permanent tabs would either overflow or require layout compromises

The popup selector keeps the same direct-selection benefit without assuming a fixed terminal count or taking permanent screen space.

Inspiration

The selector behavior was inspired by the old 1.12.2 AE2-UEL Wireless Universal Terminal mod.

This PR does not reuse code from that project; it implements the behavior independently for ae2wtlib/modern AE2.

Changes

  • Replaces the old Universal Terminal cycle button behavior with an AE2-styled selector popup.
  • Shows all installed terminals in the popup using their registered icons.
  • Wraps the selector into multiple columns when more terminals are installed.
  • Shows the current terminal icon on the Universal Terminal button.
  • Adds hover tooltips for each terminal in the selector.
  • Adds current terminal information to the Universal Terminal item tooltip.
  • Reuses terminal cycling for Shift + mouse wheel while holding the Universal Terminal outside GUIs.
  • Adds action-bar feedback for in-world terminal cycling.
  • Adds direct terminal selection for the popup selector.
  • Localizes the empty-terminal message instead of using a hard-coded literal.

Compatibility

This keeps the selector tied to the same Universal Terminal button flow used today, instead of adding layout-specific tabs or hard-coded terminal slots.

Addon terminals are handled through the same registered terminal data used by the rest of ae2wtlib, and terminal switching is checked server-side before opening the selected terminal.

Testing

Tested with the default ae2wtlib terminals and additional addon terminals inside a WUT.

change.terminals.mp4

@hofq
Copy link
Copy Markdown

hofq commented Apr 30, 2026

I like it, tho I would prefer the switcher to be always visible.

It's a great improvement either way

@NuanKi
Copy link
Copy Markdown
Author

NuanKi commented Apr 30, 2026

I like it, tho I would prefer the switcher to be always visible.

It's a great improvement either way

Could add a client setting to allow that
But the main purpose of the pop up is exactly to not show all the terminals all the time to not clutter the screen
I will see that tomorrow, since it's 1 AM here and I need to sleep lol

@Mari023
Copy link
Copy Markdown
Owner

Mari023 commented Apr 30, 2026

Somehow I didn't think about putting it there, it fits pretty well.
Long term I think I'll make it attach to the main panel, since that is how all other panels are.
But that is kind of complicated (since it may or may not intersect with the toolbar).

Having it free floating is fine for now, perfect is the enemy of good. :)

@NuanKi
Copy link
Copy Markdown
Author

NuanKi commented Apr 30, 2026

Since @hofq asked for it, I think this could work as a “use it if you want” option (by default is false).

Added an always show terminals client config option, which hides the main Universal Terminal button when enabled and shows all terminals, since it is unnecessary to have the main button when all terminals are already visible.

I also looked into attaching/merging the selector with the toolbar after what you said, but it would be pretty awkward and annoying to do cleanly. AE2’s toolbar background is drawn by VerticalButtonBar as a single vertical vertical_buttons_bg sprite around its buttons, while the selector is drawn separately by the Universal Terminal button, can expand into multiple columns, and uses a generated AE2 panel background. Making them look like one merged widget would require custom background drawing and compensating for AE2’s own toolbar background.

./gradlew :ae2wtlib_api:spotlessApply and ./gradlew spotlessCheck run properly now, so I think this fixes the formatting check that failed earlier.

always.visible.mp4

@NuanKi
Copy link
Copy Markdown
Author

NuanKi commented May 1, 2026

Moved the selector closer
image

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants