Add open WSL shortcut (#38342)

Adds a shortcut to add a WSL distro for better wsl feature
discoverability.

- [x] Open wsl from open remote
- [x] Open local folder in wsl action
- [x] Open wsl shortcut (shortcuts to open remote)

Release Notes:

- N/A
This commit is contained in:
localcc
2025-09-17 17:55:30 +00:00
committed by GitHub
parent 43f40c60fd
commit 3968b9cd09
3 changed files with 58 additions and 1 deletions
@@ -90,6 +90,18 @@ pub fn init(cx: &mut App) {
});
});
#[cfg(target_os = "windows")]
cx.on_action(|open_wsl: &zed_actions::wsl_actions::OpenWsl, cx| {
let create_new_window = open_wsl.create_new_window;
with_active_or_new_workspace(cx, move |workspace, window, cx| {
let handle = cx.entity().downgrade();
let fs = workspace.project().read(cx).fs().clone();
workspace.toggle_modal(window, cx, |window, cx| {
RemoteServerProjects::wsl(create_new_window, fs, window, handle, cx)
});
});
});
cx.on_action(|open_recent: &OpenRecent, cx| {
let create_new_window = open_recent.create_new_window;
with_active_or_new_workspace(cx, move |workspace, window, cx| {
+37 -1
View File
@@ -522,12 +522,48 @@ impl Mode {
}
impl RemoteServerProjects {
#[cfg(target_os = "windows")]
pub fn wsl(
create_new_window: bool,
fs: Arc<dyn Fs>,
window: &mut Window,
workspace: WeakEntity<Workspace>,
cx: &mut Context<Self>,
) -> Self {
Self::new_inner(
Mode::AddWslDistro(AddWslDistro::new(window, cx)),
create_new_window,
fs,
window,
workspace,
cx,
)
}
pub fn new(
create_new_window: bool,
fs: Arc<dyn Fs>,
window: &mut Window,
workspace: WeakEntity<Workspace>,
cx: &mut Context<Self>,
) -> Self {
Self::new_inner(
Mode::default_mode(&BTreeSet::new(), cx),
create_new_window,
fs,
window,
workspace,
cx,
)
}
fn new_inner(
mode: Mode,
create_new_window: bool,
fs: Arc<dyn Fs>,
window: &mut Window,
workspace: WeakEntity<Workspace>,
cx: &mut Context<Self>,
) -> Self {
let focus_handle = cx.focus_handle();
let mut read_ssh_config = SshSettings::get_global(cx).read_ssh_config;
@@ -558,7 +594,7 @@ impl RemoteServerProjects {
});
Self {
mode: Mode::default_mode(&BTreeSet::new(), cx),
mode,
focus_handle,
workspace,
retained_connections: Vec::new(),
+9
View File
@@ -512,4 +512,13 @@ pub mod wsl_actions {
#[serde(default)]
pub create_new_window: bool,
}
/// Open a wsl distro.
#[derive(PartialEq, Clone, Deserialize, Default, JsonSchema, Action)]
#[action(namespace = projects)]
#[serde(deny_unknown_fields)]
pub struct OpenWsl {
#[serde(default)]
pub create_new_window: bool,
}
}