That's a good idea! I think a setting would be the Leonine way to do it. When I convert this into a Leo command, I'll look at making it happen.
On Monday, February 20, 2023 at 7:06:26 PM UTC-5 SegundoBob wrote: > Thomas Passin, > > Your fix passes all my tests. > > You say that you may not always be able to find the terminal program the > user wants you to use. Maybe when you fail to find any suitable terminal > program, you should report this to the user and ask him to enter the > pathname to the terminal program he wants you to use always. You should > save it so he only has to do this once. Maybe even when you can find a > suitable terminal program, there should be a way for the user to tell you > to use the terminal program he wants you to use. > > Regards, > SegundoBob > On Monday, February 20, 2023 at 2:58:11 PM UTC-8 tbp1...@gmail.com wrote: > >> @mike, that was a good diagnosis. When Leo is not run from a terminal >> (in Linux), the process space does not include a terminal and the shell may >> not even be the same shell (e.g., *sh* instead of *bash*) as one might >> expect. >> >> I have revised the terminal-finding code for Linux to try several >> heuristics, starting with the same one as @SegundoBob tried. After failing >> that, it looks in /usr/bin and /bin for a name starting with either >> **-terminal* or **term*. That will find, e.g., *gnome-terminal, >> xfce-terminal, *or *uxterm*. Failing that, it looks for *xterm* using >> *shutil.which()*. If none of them can be found, the script exits with >> an error message. >> >> The reason for all this is that 1) a distro might not even have *xterm* >> (I've seen it), *x-terminal-emulator*, or *xdg-terminal* (or if it has >> them, they don't always open right), and 2) the terminal program or link >> might not be in /usr/bin or /bin. >> >> This is still not guaranteed to succeed, since it won't find, e.g., >> *konsole*. I may hard-code a few more well-known names but there are so >> many possibilities that you can't be sure you can handle every variation >> out there. I haven't so far found a more general solution on the >> internet. There ought to be a way because the OS knows what terminal to >> launch by default. There just doesn't seem to be a standardized way to >> find out from Python - as opposed to clicking on "About" in a terminal. >> >> The attached outline has the new version, which succeeds on all the >> several distros I've tried even when Leo is not launched from a terminal. >> Please try it out! >> >> On Sunday, February 19, 2023 at 8:02:47 PM UTC-5 mys...@gmail.com wrote: >> >>> >>> >>> On Sun, Feb 19, 2023, 17:02 SegundoBob <segun...@gmail.com> wrote: >>> >>>> Your "Execute script" code works well for me when I use it from a >>>> Leo-Editor file that I open from a terminal, but it does not work when I >>>> use the file browser Thunar to open the Leo-editor file. >>>> >>>> When I invoke your script from a Leo-Editor file opened by Thunar, I >>>> get this error message even when the script is not a Bash script: >>>> >>> >>> My first feeling here is that there are some commands or variables that >>> would be populated in an interactive shell session's environment but do not >>> exist in a non-interactive shell session. >>> >>> I will take time tonight to try this out myself. I haven't had a need to >>> use Leo in a long time but to help debug this issue I will make that >>> change. I'm not great at Python, but I do understand some of the >>> complexities of making things work on Linux. >>> >>> Mike >>> >>>> -- You received this message because you are subscribed to the Google Groups "leo-editor" group. To unsubscribe from this group and stop receiving emails from it, send an email to leo-editor+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/leo-editor/4ee1c0aa-a0b0-4b5e-ba52-57d140504565n%40googlegroups.com.