texstudio-org / texstudio

TeXstudio is a fully featured LaTeX editor. Our goal is to make writing LaTeX documents as easy and comfortable as possible.
http://www.texstudio.org/
GNU General Public License v3.0
2.83k stars 345 forks source link

Open terminal seems to still depend on OS specifics #613

Closed geekoverdose closed 4 years ago

geekoverdose commented 5 years ago

Environment

Moved to github from https://sourceforge.net/p/texstudio/bugs/2431/

Tools-->Open Terminal does not work on certain OS configurations. It most likely it still depends on certain variables that might or might not be present in all OS. This is related to previous issues in TexStudio, like: https://sourceforge.net/p/texstudio/bugs/1634/ https://sourceforge.net/p/texstudio/feature-requests/1215/

There does not seem to be an option in the settings to define which command should be executed when Tools-->Open Terminal is selected. My suggestion would be to include such settings, where users can define which commands are executed when the menu entries for e.g. opening a terminal, opening a file browser, etc, are selected. This makes TexStudio independent of the environment it runs in (it's pretty much impossible to get hold of all the variables that might or might not be set). Related projects do it this way, e.g. Kile (allows configuring which command is executed on when selecting those options; I don't have a link at hand to quickly point you this direction), or JabRef (see e.g. the old and solved issue https://github.com/JabRef/jabref/issues/4763).

Expected behavior

Terminal should open.

Actual behavior

Nothing happens. Unfortunately, TexStudio also does not log anything to stdout or stderr (e.g. fork for external program crashing?). This is also true with Configure ->Build -> Show stdout --> "Always".

How to reproduce

  1. Open TexStudio on Arch Linux. Consider not using a desktop environment, but only a window manager (e.g. i3/i3-gaps), so that certain environment variable you might atm assume exist do in fact not exist.
  2. Open Tools-->Open Terminal.
timhoffm commented 5 years ago

We simply try:

  1. gsettings get org.gnome.desktop.default-applications.terminal exec
  2. which konsole
  3. which xterm

The first of these giving an answer is used executed to start the terminal. How would you detect the terminal application in your environment?

geekoverdose commented 5 years ago

OK, that explains. None of those is set in my environment. As I suggested above, I personally would give the choice of what should be done to the user instead of hardcoding all different versions that could exist out there. This could be done in TexStudio config by allowing users to specify the commend that is executed once "open terminal" is selected - with the path of the current folder as a placeholder to use in that command. And the default behavior for it could still be the one you have at the moment, if you like it to be this way.

I would also suggest to let TexStudio log something if one of the 3 steps you stated above fails. This way users have means to find out what the TexStudio tried to do but failed. This is especially important as to my understanding there is no documentation for users anywhere about those steps, so atm there is no way to know what TexStudio tried and failed to do, and that setting one of the above would solve the problem.

rwg3328 commented 4 years ago

I have the same problem with Mac OS Catalina 10.15.4 TeXstudio 2.12.22 (git 2.12.22) Using Qt Version 5.14.0, compiled with Qt 5.14.0 R

when I access Tools>Open Terminal, nothing happens

muzimuzhi commented 4 years ago

@rwg3328 The problem under macOS seems a bit different so I have reported it as a separate issue #1037 .

MeanSquaredError commented 4 years ago

@sunderme I think this has been resolved in the development version.

geekoverdose commented 4 years ago

Confirming that this has been resolved for Linux by providing allowing users to configure the terminal command in JabRef preferences. (tested today on Arch Linux + i3 wm started via xinit, without desktop environment or any custom environment variables).