I need to be able to launch a program in the background, make it persist after the “parent” terminal closes and be able to access its stdin/stdout from another terminal. I don’t care about multiplexing.

I’ve been using tmux for this but I don’t like how it hijacks my mouse and that i’m not able to use my terminal’s search feature and have to use what tmux tui provides instead. In other words, programs launched directly in the terminal feel more comfortable to work with than when they are launched inside tmux.

I feel the ideal program should behave much simpler. Like e.g. on attach it should clear the screen, print the stdout buffer it accumulated and give me stdin prompt, that’s it.

  • whatiswrongwithyou@lemmy.ml
    link
    fedilink
    arrow-up
    3
    ·
    1 hour ago

    You have a bunch of answers including one you chose, but you can always rebind the tmux key to something compatible with your terminals search and use [key] - d to disconnect from your tmux session then invoke it with tmux attach-session to get back into your session.

    on attach it should clear the screen, print the stdout buffer it accumulated and give me stdin prompt, that’s it

    The last part of the above, disconnecting from tmux and reattaching would do what you described. That may be useful if you need to work with tmux.

  • SlicedPotato@feddit.dk
    link
    fedilink
    arrow-up
    16
    ·
    4 hours ago

    Have you tried screen? AFAIK it’s similar to tmux, but tmux has more bells and whistles, which it sounds like you want to avoid. I use it sometimes to start long running rsync sessions on a server and then periodically SSH in and check it. It does break scrolling though, but I don’t know if there’s some option to make it behave more like a normal terminal.

    • folekaule@lemmy.world
      link
      fedilink
      arrow-up
      7
      ·
      3 hours ago

      Yep. That is the simplest answer. From the link, directing stdout and stderr to a file:

      nohup mycommand > mycommand.out 2>&1 &
      

      GNU Screen is an alternative.

      You can also use tmux and just disable the mouse by adding this to ~/.tmux.conf

      set -g mouse off
      
    • gera@feddit.nuOP
      link
      fedilink
      English
      arrow-up
      3
      ·
      3 hours ago

      Looks like what I wanted, thanks! Took me a bit to figure out how to write an openrc service for its daemon but now it works

  • MasterOKhan@lemmy.ca
    link
    fedilink
    English
    arrow-up
    2
    ·
    3 hours ago

    Might not be exactly what you want but I sometimes use mosh for this reason, I can start a task in the mosh terminal and then minimize or sleep, or even hibernate the machine and I will be able to come back to the same session later. (It also continues running if the connection is lost, and will reconnect when able)

  • rImITywR@lemmy.world
    link
    fedilink
    English
    arrow-up
    1
    arrow-down
    1
    ·
    4 hours ago

    Run the background stuff as a daemon, and then write an interface to take stdin/stdout and interact with that daemon.