Discussion:
[slrn] in tmux
(too old to reply)
Lewis
2020-08-16 23:28:43 UTC
Permalink
I am trying to setup a tmux session with slrn. This command fails to
create the split window, I end up with a single pane taking up the full
terminal running htop.

tmux new -s main-slrn /usr/local/bin/slrn \;\
split-window htop \;\
select-pane -t 0 \;\
select-layout even-horizontal \;\
resize-pane -x 33% -t 0

This nearly identical commands does exactly what I expect, mutt in a
narrow column on the left, htop on the right.

tmux new -s main-mutt mutt \;\
split-window /usr/local/bin/htop \;\
select-pane -t 0 \;\
select-layout even-horizontal \;\
resize-pane -x 33% -t 0

So, it seems the issue is with slrn. If I run the first command without
"/usr/local/bin/slrn" I get the arrangement I expect, and can then type
slrn in and get exactly what I want the first command to do.
--
Boy, it sure would be nice if we had some grenades, don'tcha think?
J.B. Nicholson
2020-08-18 04:49:35 UTC
Permalink
Post by Lewis
I am trying to setup a tmux session with slrn. This command fails to
create the split window, I end up with a single pane taking up the full
terminal running htop.
tmux new -s main-slrn /usr/local/bin/slrn \;\
split-window htop \;\
select-pane -t 0 \;\
select-layout even-horizontal \;\
resize-pane -x 33% -t 0
I ran

tmux new -s main-slrn slrn \; split-window top \; select-pane -t 0 \; select-layout even-horizontal \; resize-pane -x 33% -t 0

which is one long line because I couldn't get your command to run with
the continued line backslashes and because I don't have htop
installed. That worked for me.

I was only able to reproduce the failure you describe when one of the
commands failed to run, like trying to run multiple slrn sessions from
the same newsrc: The first slrn ran properly, and every other
concurrently run slrn command failed with an error telling me which
process id (or "pid") "is locking the newsrc file." and then that slrn
process ended. Therefore this seemed to me as having to do with how
tmux handled the window (portion of the screen) when the command
designated for that portion ended. The other portion was allowed to
occupy 100% of the screen. That makes this a tmux issue. Perhaps you
want a tmux window that retains its shape even after the program
running in that window is no longer running. I'd bet that the tmux
users could help you with that.
Post by Lewis
So, it seems the issue is with slrn.
When I run tmux alone, press Control-b and then " I get a split view
and I can run slrn in one of those views and slrn runs in only that
view where I launched it, just as expected. This is the heart of what
you're trying to do but you're pre-specifying some other configuration
to specify the window/screen split parameters. This also tells me that
slrn isn't doing anything to break out of the screen size it is given
from tmux.

If any CLI program were capable of breaking out of the tmux screen
splitting, tmux probably wouldn't be worth using.

So because I'm able to reproduce the failure you saw, create the
desired outcome, and because I don't think slrn is doing anything to
overcome tmux's screen sizing, I don't think that slrn is the issue.
Lewis
2020-08-18 09:32:24 UTC
Permalink
Post by J.B. Nicholson
Post by Lewis
I am trying to setup a tmux session with slrn. This command fails to
create the split window, I end up with a single pane taking up the full
terminal running htop.
tmux new -s main-slrn /usr/local/bin/slrn \;\
split-window htop \;\
select-pane -t 0 \;\
select-layout even-horizontal \;\
resize-pane -x 33% -t 0
I ran
tmux new -s main-slrn slrn \; split-window top \; select-pane -t 0 \; select-layout even-horizontal \; resize-pane -x 33% -t 0
which is one long line because I couldn't get your command to run with
the continued line backslashes and because I don't have htop
installed. That worked for me.
How odd.
Post by J.B. Nicholson
I was only able to reproduce the failure you describe when one of the
commands failed to run,
But if I run the command without the slrn command and then type slrn
manually, it works perfectly.
Post by J.B. Nicholson
Therefore this seemed to me as having to do with how tmux handled the
window (portion of the screen) when the command designated for that
portion ended. The other portion was allowed to occupy 100% of the
screen. That makes this a tmux issue. Perhaps you want a tmux window
that retains its shape even after the program running in that window
is no longer running.
No,, I an trying to startup a session with slrn up and active in the
left pane and a shell in the right
Post by J.B. Nicholson
I'd bet that the tmux users could help you with that.
I have posted on the tmux mailing list but no answers there so far.
Post by J.B. Nicholson
Post by Lewis
So, it seems the issue is with slrn.
When I run tmux alone, press Control-b and then " I get a split view
and I can run slrn in one of those views and slrn runs in only that
view where I launched it, just as expected. This is the heart of what
you're trying to do but you're pre-specifying some other configuration
to specify the window/screen split parameters. This also tells me that
slrn isn't doing anything to break out of the screen size it is given
from tmux.
OK, now I am wondering, did I not say that I could do this manually with
no problem? Manually it works fine. Other commadns but slrn work fine.
Trying to start tmux with slrn running in a pane fails.
Post by J.B. Nicholson
So because I'm able to reproduce the failure you saw, create the
desired outcome, and because I don't think slrn is doing anything to
overcome tmux's screen sizing, I don't think that slrn is the issue.
Going to try some more variations.
--
Knowledge equals power... --... Power equals energy... People were
stupid, sometimes. They thought the Library was a dangerous place
because of all the magical books, which was true enough, but what
made it really one of the most dangerous places there could ever
be was the simple fact that it was a library. Energy equals
matter... --... Matter equals mass. And mass distorts space. It
distorts it into polyfractal L-Space. --Guards! Guards!
Lewis
2020-08-18 12:54:03 UTC
Permalink
Post by Lewis
OK, now I am wondering, did I not say that I could do this manually with
no problem? Manually it works fine. Other commadns but slrn work fine.
Trying to start tmux with slrn running in a pane fails.
I see I did not.

This command works perfectly, and I can type slrn and get slrn up in the
left window.

tmux new -s main-slrn \;\
split-window htop \;\
select-pane -t 0 \;\
select-layout even-horizontal \;\
resize-pane -x 33% -t 0
--
"If 386BSD had been available when I started on Linux, Linux would
probably never had happened." Linus Torvalds
J.B. Nicholson
2020-08-18 22:00:19 UTC
Permalink
Post by Lewis
Trying to start tmux with slrn running in a pane fails.
tmux new -s main-slrn slrn \; split-window top \; select-pane -t 0 \; select-layout even-horizontal \; resize-pane -x 33% -t 0

works for me when I'm not running slrn with that same newsrc somewhere
else.

In summary: I think that the root of your problem is that you haven't
specified what to do with a tmux pane when the program running in that
pane ends. tmux (by default) apparently closes the pane and expands
other panes to occupy the newly available space. This issue really
doesn't have anything to do with slrn per se.

At length: I think that you'd be better off experimenting with
commands that are simpler and you can see what's going on while
simultaneously leaving slrn out of the picture in order to prove to
yourself that this is all about tmux behavior. To that end, I suggest
making an executable shell script that does nothing for 30 seconds and
make a second script that does nothing for 60 seconds. Run both
programs in separate tmux panes with the following tmux command (which
is identical to the tmux command you posted except for the programs
being run in either pane and the tmux status bar text which is
completely cosmetic)

tmux new -s main-foobar 30sdelay \; split-window 60sdelay \; select-pane -t 0 \; select-layout even-horizontal \; resize-pane -x 33% -t 0

and watch as after 30 seconds the 30sdelay program ends and its tmux
pane disappears. Simultaneously, the 60sdelay tmux pane expands to
occupy the space the former 30sdelay pane used (60sdelay pane "takes
up the full terminal"). After 60 seconds, see the 60sdelay program end
and then tmux end immediately thereafter (probably because there are
no tmux panes). There's no code in either delay program to take up the
full terminal.

Try making a program that ends immediately and run that in place of
the 30 second delay program then watch as the 60sdelay program gets a
full-screen tmux pane, runs for 1 minute, then ends; the same thing
happens as above but without the initial 30 second delay.

This is the same behavior as what you were describing but without slrn
involved. If slrn ends quickly and never appears in a pane that's a
sign that you're doing something with slrn to cause it to end quickly,
the most likely case is trying to run a 2nd instance of slrn using the
same newsrc as an already-running instance of slrn. You could try
adding a delay after slrn runs to see what error message slrn gives
you and diagnose the problem from there.

In the end, all of the behavior you described has nothing to do with
slrn and everything to do with how tmux handles its panes when a
command ends.

Loading...