Parcourir la source

Merge pull request #107310 from timothyqiu/terminal-args

Fix not being able to open directory in certain terminals
Rémi Verschelde il y a 4 mois
Parent
commit
199d41b967
1 fichiers modifiés avec 13 ajouts et 2 suppressions
  1. 13 2
      editor/filesystem_dock.cpp

+ 13 - 2
editor/filesystem_dock.cpp

@@ -2271,6 +2271,8 @@ void FileSystemDock::_file_option(int p_option, const Vector<String> &p_selected
 #endif
 #endif
 
 
 			List<String> terminal_emulator_args; // Required for `execute()`, as it doesn't accept `Vector<String>`.
 			List<String> terminal_emulator_args; // Required for `execute()`, as it doesn't accept `Vector<String>`.
+			bool append_default_args = true;
+
 #ifdef LINUXBSD_ENABLED
 #ifdef LINUXBSD_ENABLED
 			// Prepend default arguments based on the terminal emulator name.
 			// Prepend default arguments based on the terminal emulator name.
 			// Use `String.ends_with()` so that installations in non-default paths
 			// Use `String.ends_with()` so that installations in non-default paths
@@ -2284,12 +2286,21 @@ void FileSystemDock::_file_option(int p_option, const Vector<String> &p_selected
 					terminal_emulator_args.push_back("-cd");
 					terminal_emulator_args.push_back("-cd");
 				} else if (chosen_terminal_emulator.ends_with("xfce4-terminal")) {
 				} else if (chosen_terminal_emulator.ends_with("xfce4-terminal")) {
 					terminal_emulator_args.push_back("--working-directory");
 					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
 #endif
 
 
-			bool append_default_args = true;
-
 #ifdef WINDOWS_ENABLED
 #ifdef WINDOWS_ENABLED
 			// Prepend default arguments based on the terminal emulator name.
 			// Prepend default arguments based on the terminal emulator name.
 			// Use `String.get_basename().to_lower()` to handle Windows' case-insensitive paths
 			// Use `String.get_basename().to_lower()` to handle Windows' case-insensitive paths