Skip to content

Linux desktop: Ctrl+= does not trigger native Electron zoom-in #852

@Mohatje

Description

@Mohatje

On Linux in the electron app, Ctrl + = doesn't trigger zoom in. I kinda had to use the app for a couple hours thinking that t3code didn't support zooming in before finding out that you have to actually press ctrl + shift + = for it to work.

I think adding an alias to Ctrl + = is quite simple and would be a nice addition to the user experience.

Below is a prompt I tried to implement this alias and it seems to work quite nicely, I will also open up a PR but feel free to ignore since this is low prio.

Prompt:

Implement a Linux-only Electron zoom-in alias in `apps/desktop` with the exact final behavior below.

Scope:
- Touch only `apps/desktop/src/main.ts`
- Do not change anything in `apps/server`, `apps/web`, or `packages/contracts`
- Do not introduce user-configurable keybindings
- Do not add fallback/manual zoom behavior
- Do not add tests for this change
- Remove any prior `before-input-event` / helper-based zoom alias implementation if present

Required implementation:
1. Keep the existing `{ role: "viewMenu" }` in the app menu unchanged.
2. In `configureApplicationMenu()` in `apps/desktop/src/main.ts`, add a Linux-only hidden menu item immediately after `{ role: "viewMenu" }`.
3. That menu item must be:
   - `label: "Zoom In Alias"`
   - `accelerator: "Ctrl+="`
   - `role: "zoomIn"`
   - `visible: false`
4. Gate it with `process.platform === "linux"` so macOS and Windows behavior remain unchanged.
5. Do not use `before-input-event`.
6. Do not call `getZoomLevel()` / `setZoomLevel()`.
7. Do not manually invoke a menu item's `click()` handler.
8. Do not add any helper file like `zoomShortcuts.ts`.

Desired end state:
- On Linux desktop, `Ctrl+=` triggers the same native Electron zoom-in action as the built-in zoom menu role.
- Existing native `Ctrl++`, `Ctrl+-`, and `Ctrl+0` behavior remains intact.
- Web behavior is unchanged.
- macOS behavior is unchanged.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions