Skip to content

Some MacTerm UI Improvements #113

Description

@aryeh

Description

I am using the app actively, and have a few suggested improvements to raise the quality and usability of the app. I wish I was a swift/os x developer, and I would be more comfortable submitted changes to this type of project.

  • Add KeyBinding for Save Layout
  • Add KeyBinding for Apply Layout

I already use zmx, and then save my layout and it works without native zmx support. I worry that native zmx support will generate tons of mystery zmx sessions like supacode does - it is a mess. Yes, it is nice to have auto save setup, but cumbersome for real developers. The zmx session name should at least be generated in an intelligent fashion: macterm.{project}.{guid}. Or possibly be able to be renamed or configured somehow. zmx has session prefixes to help organize groups of sessions for this reason, to allow you to k[ill] groups of sessions at once and clean things up. I anticipate having to go back and edit the layout.yaml and remove the sessions that macterm will be generating. This is going to be a task to straighten out each time a tab is created - perhaps allow a zmx prefix right into the project's layout.yaml definition.

Tabs seem to be only draggible within a project. Likewise then, next/previous tab KeyBinding should cycle too within a project. Recent tab almost does this, but the order of the next recent tab chosen seems somewhat unclear in my tests. And recent tab should swap to the last recent tab even across projects - which it doesn't do.

  • Add KeyBinding for next project tab (stays within project tabs)
  • Add KeyBinding for previous project tab (stays within project tabs)
  • Add KeyBinding to move tab up/down. Ghostty has move_tab as a native binding, it would be great to support that for moving/reordering tabs.

The SideBar shouldn't be limited to a maximum narrow width. Similar tabs that differ by their command arguments are difficult to discern because there is no hover text for the tab, and there is a limit to how wide the sidebar is allowed to be stretched.

The SideBar's project list should be focusable and retain focus to be able to navigate up/down to select a tab and then Enter to go to that tab. Right now, clicking on a project selects it in the SIdeBar, but up/down will choose the first next tab, and then subsequent arrow presses are in the chosen terminal, instead of allowing to select the desired tab without explicitly choosing it until enter is pressed.

  • [ ] Add KeyBinding to focus SideBar (and open if it is closed)
  • [ ] SideBar retains focus until a tab is explicitly chosen (on chosen, SideBar goes back to last state before being focused - so if it was closed before the SideBar key is pressed, it goes back to closed after a tab is selected)

I think these tweaks can really upgrade the app's usability. I would try making these improvements but am weary making modifications to code in a language I've never written in.

Thanks for this great tool!

Motivation

Elevates app to work with the user rather than be a chore to keep things organized and navigate.

Alternatives considered

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions