diff --git a/editor/filesystem_dock.cpp b/editor/filesystem_dock.cpp index 154f9a85c65..1f8969d6916 100644 --- a/editor/filesystem_dock.cpp +++ b/editor/filesystem_dock.cpp @@ -2271,6 +2271,8 @@ void FileSystemDock::_file_option(int p_option, const Vector &p_selected #endif List terminal_emulator_args; // Required for `execute()`, as it doesn't accept `Vector`. + bool append_default_args = true; + #ifdef LINUXBSD_ENABLED // Prepend default arguments based on the terminal emulator name. // Use `String.ends_with()` so that installations in non-default paths @@ -2284,12 +2286,21 @@ void FileSystemDock::_file_option(int p_option, const Vector &p_selected terminal_emulator_args.push_back("-cd"); } else if (chosen_terminal_emulator.ends_with("xfce4-terminal")) { terminal_emulator_args.push_back("--working-directory"); + } else if (chosen_terminal_emulator.ends_with("lxterminal")) { + terminal_emulator_args.push_back("--working-directory={directory}"); + append_default_args = false; + } else if (chosen_terminal_emulator.ends_with("kitty")) { + terminal_emulator_args.push_back("--directory"); + } else if (chosen_terminal_emulator.ends_with("alacritty")) { + terminal_emulator_args.push_back("--working-directory"); + } else if (chosen_terminal_emulator.ends_with("xterm")) { + terminal_emulator_args.push_back("-e"); + terminal_emulator_args.push_back("cd '{directory}' && exec $SHELL"); + append_default_args = false; } } #endif - bool append_default_args = true; - #ifdef WINDOWS_ENABLED // Prepend default arguments based on the terminal emulator name. // Use `String.get_basename().to_lower()` to handle Windows' case-insensitive paths