Skip to content

Settings: 'Status Line Above Terminal' label is inverted from its behaviour #173

Description

@JDonaghy

Summary

The Settings panel toggle "Status Line Above Terminal" (settings key `status_line_above_terminal`) does not do what its name suggests. Toggling it changes whether the status line appears as a separated row above the terminal — but off is what produces the separated above-terminal row, and on keeps the bar inside each window. The label and the behaviour are inverted.

Smoke-tested during A.6b-win (Win-GUI status-bar quadraui migration). User report:

the 2 status line options appear to be reversed as in the first one affects the behavior that other one's name implies

Actual semantics (`src/render.rs:4446-4453`)

```rust
let per_window_status = engine.settings.window_status_line;
let bottom_panel_open = engine.terminal_open || engine.bottom_panel_open;
let separate_status =
per_window_status && !engine.settings.status_line_above_terminal && bottom_panel_open;
```

  • `status_line_above_terminal = true` (default) → per-window bars stay inside each editor window
  • `status_line_above_terminal = false` + terminal open → status extracted to a separated bar above the terminal

Reading the label, a user expects `true` to mean "yes, render the status as a row above the terminal". The reverse is true.

The render.rs comment around line 4448 also says "rendered below the terminal" but every backend (TUI / GTK / Win-GUI) actually positions the separated bar above the terminal panel. So the comment is wrong on top of the label being wrong.

Options

  1. Rename the field + update all read sites (e.g. `status_line_separated_above_terminal`). Breaking change for user settings files; needs migration.
  2. Invert the default (default `false`, semantics flip). Same breakage.
  3. Cheapest: relabel the toggle to match the field. E.g. "Status Line Inside Window (vs Separated)" with a clearer description. No code change, no settings-file breakage.
  4. Cleanest UX: make this an enum (Inside-Window / Above-Terminal-Separated / Global-Bottom) instead of two booleans. Larger change.

Related

The companion setting `window_status_line` ↔ label "Per-Window Status Line" wires correctly (`src/core/settings.rs:1441`, `:1365`, `:1681`). The confusion is purely the second toggle's name vs effect.

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

    bugSomething isn't workinguiUI/rendering

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions