Skip to content

terminal_view: Fix terminal opening in / when no project is open (#46582) (cherry-pick to preview)#46682

Merged
zed-zippy[bot] merged 1 commit intov0.219.xfrom
cherry-pick-v0.219.x-d76258da
Jan 13, 2026
Merged

terminal_view: Fix terminal opening in / when no project is open (#46582) (cherry-pick to preview)#46682
zed-zippy[bot] merged 1 commit intov0.219.xfrom
cherry-pick-v0.219.x-d76258da

Conversation

@zed-zippy
Copy link
Contributor

@zed-zippy zed-zippy bot commented Jan 13, 2026

Cherry-pick of #46582 to preview


Closes #46574

The default_working_directory() function in
crates/terminal_view/src/terminal_view.rs:1585 returned None when no
project directory was available. The code comment (now removed)
incorrectly claimed "None implies ~ on whichever machine we end up
on". However, when None is passed to alacritty_terminal, it uses the
process CWD, not the home directory. On macOS when Zed is launched from
a .app bundle, the CWD is /.

Added a fallback at the end of default_working_directory() that
explicitly returns the home directory when no project directory is
found: directory.or_else(dirs::home_dir)

This ensures:

  1. CurrentProjectDirectory with no project open → home directory
  2. FirstProjectDirectory with no project open → home directory
  3. AlwaysHome → home directory (explicitly, not relying on shell
    behavior)
  4. Always { directory } with invalid directory → home directory

Release Notes:

  • Fixed terminal opening in / instead of home directory when no
    project is open.

)

Closes #46574

The `default_working_directory()` function in
`crates/terminal_view/src/terminal_view.rs:1585` returned `None` when no
project directory was available. The code comment (now removed)
incorrectly claimed "None implies `~` on whichever machine we end up
on". However, when `None` is passed to `alacritty_terminal`, it uses the
process CWD, not the home directory. On macOS when Zed is launched from
a .`app` bundle, the CWD is `/`.
    
Added a fallback at the end of` default_working_directory()` that
explicitly returns the home directory when no project directory is
found: `directory.or_else(dirs::home_dir)`

  This ensures:
  1. `CurrentProjectDirectory` with no project open → home directory
  2. `FirstProjectDirectory `with no project open → home directory
3. `AlwaysHome `→ home directory (explicitly, not relying on shell
behavior)
  4. Always `{ directory }` with invalid directory → home directory



Release Notes:
- Fixed terminal opening in `/` instead of home directory when no
project is open.
@cla-bot cla-bot bot added the cla-signed The user has signed the Contributor License Agreement label Jan 13, 2026
@zed-zippy zed-zippy bot merged commit 9961d18 into v0.219.x Jan 13, 2026
24 checks passed
@zed-zippy zed-zippy bot deleted the cherry-pick-v0.219.x-d76258da branch January 13, 2026 07:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cla-signed The user has signed the Contributor License Agreement

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant