I made a .desktop file to compile and execute a c++ file but the terminal (lxterminal - lubuntu) is not holding after running the file.

Although I did mark "Keep terminal window open after command execution." on the .desktop file properties !

I am using Lubuntu 16.04.1 LXDE desktop environment.

  • What do you want to do with the terminal after the command execution? Only look at the result, or do you want to run new commands in it? – sudodus Jan 6 '17 at 17:58
  • I have to look at the result. – Ebram Shehata Jan 6 '17 at 18:11
  • @EbramShehata did you find any solution for this ? – Vincent Wasteels Jun 8 '17 at 9:05
  • @VincentWasteels both answers forgot that -e doesn't run another shell, so it can't parse command sequence. Just add the shell explicitly and it will work. Exec=lxterminal -e "/bin/bash -c '/path/to/yourCommand; read -n 1 -s'" – Marek Rost Jan 2 '18 at 10:22

I don't know if this is optimal for you use case, but you can put yourCommand; read -n 1 -s in the Exec line of your .desktop file, causing the terminal to wait for one character input (silently, not echoing it back to stdout).

You should end with something like this:

Exec=lxterminal -e "/path/to/yourCommand; read -n 1 -s"

Also can use && or || according to you app exit value/code, waiting only if execution was successful, for example:

Exec=lxterminal -e "/path/to/yourCommand && read -n 1 -s"

Hope it helps.

  • Non of these two methods worked :( , the terminal closes . – Ebram Shehata Jan 10 '17 at 10:23

You can run your command(s) via a shellscript. (Maybe you do that already.) And at the end of the shellscript you add a line, for example like this:

read -p "Press Enter to close this window"

Then you can scroll the window and check the output from your command(s), and then press Enter to get rid of the terminal window.

I don't know why the first method did not work. Maybe your script or some program called by it is sending a signal that finishes the script at once (without reaching the final statement). You could try to fix that, but maybe it is easier to run in an xterm window (tweaked to look better and with the -hold option.

Please compare how these two command lines work:

xterm -e cat ~/.bashrc
xterm -hold -e cat ~/.bashrc

You can tweak the xterm window to look better, for example like this

xterm -title "Click x in the top right corner to close me" -fa default -fs 10 -bg '#2b2c2b' -fg '#f0f0f0' -sb -rightbar -hold -e cat ~/.bashrc

Put the name of your script after -e in the xterm command line, or start the xterm in interactive mode (with the hold feature), and start your script in xterm.

  • It didn't work , the terminal closes . – Ebram Shehata Jan 10 '17 at 10:22
  • @EbramShehata I got crazy for 1 hour. Seems that -e, --command doesn't work seamessly. Change your lxterminal -e "your command" for lxterminal --command="your command". – m3nda Mar 21 '19 at 19:38

You can use this

lxterminal -e bash -c 'top; bash'

Just replace "top" with your command.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.