Split terminal functionnality #71

Open
kikecalpe opened this Issue Apr 18, 2013 · 67 comments

Projects

None yet
@kikecalpe

Split terminal functionnality http://guake.org/ticket/145
Reported by: LaMs Owned by: somebody
Priority: minor Milestone:
Component: guake Version:
Keywords: Cc: mkudro@…
Description

Yakuake and Terminator have this particular functionnality. I was using Yakuake when I was developing on KDE but now that I'm running on gnome I'm using Guake. Guake is perfect for me at the exception of this little functionality. Example of what I'm talking:
http://www.kde-apps.org/content/preview.php?preview=2&id=29153&file1=29153-1.png&file2=29153-2.png&file3=29153-3.png&name=Yakuake
http://www.64bitjungle.com/wp-content/uploads/2008/09/screenshot-terminator.png

Having this in a drop down console like Guake would be very useful for an embedded developer addict to Vim like me.

@kikecalpe

Read all thread here: http://guake.org/ticket/145
Duplicated issue: http://guake.org/ticket/467 ( #70 )

Changed by lincoln

humm, first of all, do you know the gnu screen? Maybe it can help you manage more terminals and split them. I think you should give it a try =D

Changed by LaMs ¶

Yes I know screen... and no its not the same feeling. A good alternative, but I would prefer an integrated solution.

Changed  by pingou

milestone 0.5.0 deleted

Changed  by Yva

Would love to see this functionality. Guake is a great tool for monitoring and seeing 2 terminal simultaneously would be great.

Changed  by pingou

From our discussion, the idea is not to split but to divide and thus having {2,3,4...} tabs visible at the same time

Changed  by zaoul

I understand screen can split but I agree it is not the same feel. Especially when it comes to vertical split which screen requires an extra patch. Not that big of a deal but terminator is really nice when working with multiple configuration files for an application. Asterisk for example! In summary I would like to see this implemented.

Thank you, Bryan

Changed by amcl

Some people may not be satisfied with only 2 vertical windows, so this really seems like a job for a terminal multiplexer. The next release of Screen will support vertical splits, but Tmux and dvtm can already do arbitrary vertical/horizontal splits. Why reinvent the wheel in a less flexible way?

http://tmux.sourceforge.net/ http://www.brain-dump.org/projects/dvtm/

Changed  by mahmoudimus

version 0.4 deleted

Amcl,

One of the reasons you can't use something like a terminal multiplexer is that sometimes, it might be necessary to copy something from a split screen. When you highlight a selection using a terminal multiplexer, what ends up happening is that you copy the adjacent screen as well.

This becomes very tedious when copying an output that you've run and are requiring to paste it somewhere. It doesn't even need to be an output, it could be just an error message.

tmux && dvtm have this problem, as well as screen.

This is why implementing terminator functionality, or embedding the terminator console in Guake, might be a better solution for others. I might end up doing this myself because it is SO useful to get a terminal to be able to split windows, both vertically && horizontally.

 Changed  by amcl

Some terminal emulators support rxvt style Alt-leftmouse rectangular selection. I'm not sure if Guake supports rectangular selection, I'm at work at the moment. If it doesn't that would be a good feature. It would solve the problem you describe nicely.

Changed  by estragib

priority changed from major to minor

Block select does work in Guake. and this goes a bit beyond a non-bloaty drop-down term. Per amcl's "Why reinvent the wheel in a less flexible way?", I'm deescalating this to minor, pending indignant protests.

Changed  by nikom

cc mkudro@… added

It is very unfortunate that this enhancement request has been marked as minor. Split screen is most used (by me) future in Yakuake among being able to increase/decrease size of the terminal. It was blessing for me discovering Yakuake and split screen - Ctrl+Alt+L and i got new session on the same tab. I support this future request and vote for upgrading it to higher priority.

follow-up: ↓ 13   Changed  by gimler

+1 it is a key feature to move from yakuake to guake

in reply to: ↑ 12   Changed  by ssrihari

+1 for more usage of horizontal screen space. Split window or seeing multiple tabs.

Changed  by valentt

I would donate 10$ towards making this feature available. Is there any bounty that would convince developer(s) to incorporate this feature.

Until then I'm using Yakuake. If developer(s) accept this idea of bounty just let me know how to donate my part.

Cheers.

Changed  by bpedman

I would also be willing to donate for this feature. I have been using yakuake for a long time but got tired of always installing a bunch of the KDE libs along with it and wanted a more native feel for gnome/unity(/anything other than kde :) ). I am liking guake and it's working well and fast...but really miss this feature from yakuake.

Changed by bernie

I would also like this functionality.

Yes, screen and tmux can sort-of provide the functionality we'd like, but they require the learning of a new command set to do simple things, for example scrolling up through output, or selecting which pane has input focus. These functions could be implemented much better with a GUI-aware terminal program which could respond to mouse scroll wheel actions, and could switch input focus with a mouse click.

Tmux, for example, (which I'm currently using) prevents the use of the usual Shift-PageUp? to scroll back through output, and instead I have to type C-b PageUp?, then ']' to exit copy mode. I haven't used other GNU/Linux programs such as Yakuake or Terminator, but I have used iTerm2 on Mac OS X, and compared to that, using a terminal multiplexer such as screen or tmux is almost more annoying than it's worth.

@kikecalpe

Interesting comment from duplicated issue: http://guake.org/ticket/467
Changed by justanotheruser

I would like to see a Shift+Ctrl+T, a Shift+Ctrl+L and a Shift+Tab in Guake. Namely, horizontal/vertical split of the working terminal (recursively) and quick-switching between them with Shift+Tab. Oh boy, that really is the cherry on top of the tasty strawberry ice-cream cake.

@bobziuchkovski

+1 I would love this feature. I use guake all day long and am often switching between tabs. Sometimes you run a long task in one tab (compile) and switch to another tab to work while you wait. You want to know when the long task is complete, so you constantly switch back and forth, which is jarring. Gnu screen works, but as others have pointed out, screen's vertical split makes it harder to copy-paste multi-line text using X11's clipboard and middle-click.

@shirishag75

+1 on this. I too am a day long user of guake. Having this would be a god send.

@mturley
mturley commented Sep 7, 2013

Hey guys, I aim to actually implement this functionality in a fork of the guake repo. I won't have time to work on it for the next few weeks, so if someone else gets around to this in that time, let me know! I'm quite surprised that in an environment like github someone hasn't already just forked it and implemented this feature... it's a very common one. I agree with those who are telling the developers it's not to be considered minor, but I also don't think it's fair to expect them to do it if they don't see the need. What's open source for if not for us to modify things to our liking ourselves?

I'll report back here when I've made a solid effort in my fork, which until then will remain a clone of Guake/guake.

@anhq
anhq commented Dec 3, 2013

+1 for this feature. Been using both Terminator and iTerm2 (on OS X) for a long time and being able to split windows to get independent terminals is so key. Has anyone made progress on this at all?

@janlammertyn

+1 for this feature. I agree with the argument that some will need more than two, but I think the wide screen estate present on a lot of screens today just screams for more than one terminal horizontally. Btw. is there anyone using terminals a lot working with only 1 terminal window with stacked tabs? I don't think so. If you can, you place them besides each other. Using tmux/screen might be an option, but I think the functionality of these solutions is a bit overkill.

@tsusanka

+1

@peelandsee

+1 :D

@Stibbons
Contributor

@mturley: do you have something?

Sounds like an interesting feature but for me it requires:

  • dynamic spliting (horizontal / vertical), with resizing
  • hotkey to switch from one panel to another one

I don't plan to work on it soon, but if someone want to deal with this, I'll be glad to integrate its PL

@Stibbons Stibbons added this to the 0.6.0 milestone Feb 13, 2014
@Stibbons Stibbons self-assigned this Feb 13, 2014
@mturley
mturley commented Feb 13, 2014

Unfortunately I never got around to working on it. That may change, I'll
let you all know if it does.
On Feb 13, 2014 1:55 PM, "Stibbons" notifications@github.com wrote:

@mturley https://github.com/mturley: do you have something?

Sounds like an interesting feature but for me it requires:

  • dynamic spliting (horizontal / vertical), with resizing
  • hotkey to switch from one panel to another one

I don't plan to work on it soon, but if someone want to deal with this,
I'll be glad to integrate its PL

Reply to this email directly or view it on GitHubhttps://github.com/Guake/guake/issues/71#issuecomment-35004038
.

@Stibbons
Contributor

ok, sadly. I don't think it is difficult actually. But this will have to wait a little (0.6.0 at least)

@mturley
mturley commented Feb 13, 2014

Yeah, I just haven't worked on the guake project before and was intending
to jump in and get my environment all set up to implement this simple
feature. I never ended up having time to get away from other projects.
On Feb 13, 2014 2:59 PM, "Stibbons" notifications@github.com wrote:

ok, sadly. I don't think it is difficult actually. But this will have to
wait a little (0.6.0 at least)

Reply to this email directly or view it on GitHubhttps://github.com/Guake/guake/issues/71#issuecomment-35019084
.

@Stibbons
Contributor

You can still try again :) don't hesitate to submit early a Pull Request and I'll do a code review.

@mturley
mturley commented Feb 13, 2014

I may just do that. I'm certain others here could implement it faster than
me though, but if don't have the time... Well we'll see :)
On Feb 13, 2014 3:08 PM, "Stibbons" notifications@github.com wrote:

You can still try again :) don't hesitate to submit early a Pull Request
and I'll do a code review.

Reply to this email directly or view it on GitHubhttps://github.com/Guake/guake/issues/71#issuecomment-35020058
.

@Stibbons Stibbons removed their assignment Feb 13, 2014
@Stibbons Stibbons modified the milestone: 0.6.0, 0.7.0, 0.5.0 Feb 15, 2014
@bwrsandman bwrsandman added a commit to bwrsandman/guake that referenced this issue Mar 17, 2014
@bwrsandman bwrsandman First steps of #71 implemented 90f8215
@bwrsandman bwrsandman added a commit to bwrsandman/guake that referenced this issue Mar 17, 2014
@bwrsandman bwrsandman First steps of #71 implemented ee20f7c
@bwrsandman bwrsandman added a commit to bwrsandman/guake that referenced this issue Mar 22, 2014
@bwrsandman bwrsandman First steps of #71 implemented
Split terminal functionality implemented
67fb092
@JorisM
JorisM commented Apr 2, 2014

+1 this would be great

@alexxtasi

+1 it would be a great feature!!!

@babbelnedd

yep, +1

@Stibbons Stibbons modified the milestone: 0.5.1, 0.5.0 Jul 11, 2014
@Stibbons Stibbons self-assigned this Jul 22, 2014
@alecdotico

+1

@bwrsandman
Contributor

After attempting this (see #294), I can make a rudimentary task list:

  • Adapt the way pids are stored and cleaned up.
    • When I worked on it, they were linked to the tabs
    • They should be linked to terminal window
  • Similarly, adapt the way terminal windows are stored
    • In a list at top level, would be good
  • Create a binary tree in each tab to store splits (hspits, vsplits)
    • Properly adapt spawning a new split and garbage collect closed splits
@Stibbons
Contributor

I agree. The major difficulty is we need to rework the way pid are stored.

I would also add:

  • add the following hotkeys: split horizontal, split vertical, switch to next terminal in split screen, switch to previous terminal
  • allow to resize each terminal easily. Do not waste too much space with these borders
@bwrsandman
Contributor

Reposting what I wrote in #294:

I suggest using the same default shortcuts as terminator, unless there is a strong reason not to.

  • split current terminal vertically
Ctrl+Shift+E
  • split current terminal horizontaly
Ctrl+Shift+O
  • jump to next terminal
Ctrl+Shift+N
Ctrl+Shift+P (previous)
  • close current terminal.
Ctrl+Shift+W

There are also:

  • Resize current terminal

    Ctrl+Shift+Up
    Ctrl+Shift+Down
    Ctrl+Shift+Left
    Ctrl+Shift+Right

  • Jump to the terminal in a direction

    Alt+Up
    Alt+Down
    Alt+Left
    Alt+Right

  • Rotate terminals

    Shift+R (Clockwise)
    Super+Shift+R (Counter-clockwise)

@Stibbons
Contributor

I don't really like Ctrl+Shift+E/O, it is not obvious. I would have prefered: Ctrl+Shift+H = split hozizontally, Ctrl+Shift+V = split vertically, but the latter conflict with 'Copy' hotkey.

Why not: Ctrl+Shift+l ("L") => split vertically, Ctrl+Shift+- ("minus") : split horizontally (the key looks like the direction of the splitting :)

Or even better:

Alt+H: split horizontally
Alt+V: split vertically
Alt+Up/Down/Top/Bottom: jump to direction
Alt+R: rotate
Alt+Shift+R: counter clockwise
Alt+P: previous
Alt+V: next
Alt+W: close current small terminal (Ctrl+Shift+W still closes current tab)

this way, "Alt+" only concerns the spliting feature.

@bwrsandman
Contributor

I like Ctrl+Shift+E/O and anyone using terminator would be used to it. Do we need to reinvent the wheel?
The advantage as I see it is that on US keyboards, E and O are about in the same place on your keyboard: easily accessible by your index on either side.

Ctrl+Shift+- is usually used for setting your font size.

@Stibbons
Contributor

It's not a matter of reinventing the wheel. It's not because terminator is wrong we should do the same :) I'm kinding, it's just a matter of coherence: I prefer grouping all hotkey of a same "feature" under the same kind of shortcut, ie, Alt+something. Here you have Ctrl+Shift+... hotkeys for some split stuff and other Alt+... hotkeys for other split-feature commands.

Anyway, this will still be customizable of course.

@bwrsandman
Contributor

Of course 😉

@Stibbons Stibbons modified the milestone: 0.5.1, 1.0.0 Sep 7, 2014
@rasmus25

Please also consider allowing each split to have its own tabs, like Final Term has: http://blog.finalterm.org/2013/10/multiple-terminals-final-term-style.html

I am not creating a new feature request for it because it seems that organizing tabs and splits is a single problem that requires some fundamental changes to the program structure. Correct me if I am wrong.

@Stibbons
Contributor

Whaou, final term look awesome :)

I like the idea of split terminal. I am loosing too much time wi bug fixes, maybe I'll move and add some new features like this one in a new version 0.6 :)

@Stibbons Stibbons modified the milestone: 0.6.0, 1.0.0 Nov 22, 2014
@daverck
daverck commented Dec 20, 2014

+1

@ranlei
ranlei commented Apr 3, 2015

+1

@varemenos
Contributor

👍

@Stibbons Stibbons modified the milestone: 0.6.0, 0.7.0 Apr 19, 2015
@giacmir
giacmir commented Apr 28, 2015

+1

@Stibbons Stibbons modified the milestone: 0.8.0, 0.7.0 Apr 28, 2015
@sent1nel
sent1nel commented May 4, 2015

+1

@Gronkdalonka

+1

@Vizzard
Vizzard commented May 5, 2015

+1

@Stibbons
Contributor
Stibbons commented May 5, 2015

Look like I will not have choice for the next big feature :)

@presianbg

+1

@SomeKittens

Would love to have this, thanks!

@1beb
1beb commented May 18, 2015

+1e6

@rumpelsepp
Contributor

👍

@Sebastock

@pypingou
Member

To all the people that said, are saying or will say, +1, 👍 : This will not make guake get this feature any sooner.

The former upstream of guake said that he didn't want guake to have it, the new upstream of guake says that he is interesting in it, but unless someone actually comes up with the pull-request, saying +1 won't change anything.
There are other parts of guake that need work (port to gtk3, port to dconf...) and those should have the priority over adding new features as otherwise guake will simply stop working some time soon.

@Stibbons
Contributor

I'd like to have time to work on 0.8 and start working on split tab and save/restore session functionnality. would really love to have these feature on Guake. Guake is my main tool at work, that's why I am so much interested in adding useful feature to it. But these months has been completely crazy, I hope august will leave me more free time with everyone else in vacation....

Port to dbus and gtk3 is harder, need more time on short duration (1 week or 2 full time) to jump to new libraries since lot of stuff might break and need to be ported. I clearly don't have this among of time available, I don't know how to deal with it. Maybe start from scrach on a side project that would be matured. But for example, the gtk3 branch has not been maintained, now lot of stuff has moved merging the main and gtk3 branch is not trivial.... no idea how to handle it gracefully :(

@Stibbons Stibbons modified the milestone: 0.8.1, 0.8.2 Aug 18, 2015
@Caroga
Caroga commented Oct 21, 2015

+1

@Stibbons Stibbons modified the milestone: 0.8.2, 0.8.3 Oct 25, 2015
@PombaM
PombaM commented Nov 12, 2015

👍 💯

@PombaM
PombaM commented Nov 12, 2015

This feature could be a life saver for us how use solely Guake for dev purposes! Dear maintainers please consider this feature at your earliest. Thanks.

@pypingou
Member
@Caroga
Caroga commented Nov 12, 2015

I believe the opinion of the developers on this feature has already be made
clear and all the +1 won't change much to it.

Meaning that it gets implemented?

@PombaM
PombaM commented Nov 12, 2015

Meaning that it gets implemented?

I think it's contrary!

@PombaM
PombaM commented Nov 12, 2015

already be made clear
@pypingou

Links or it didn't happen :)

@varemenos
Contributor

Please read the issue's labels and the comments above.
There is no need to spam the issue to get an answer, it's already available.

@Stibbons
Contributor

back from my vacation, I'll be able to restart working on it... don't expect such feature until 2016

@MarkOSullivan94

Big +1. I only use Terminator because it has the option to split the current terminal into two terminals either horizontally or vertically.

@rlimaeco

+1 !!! The feauture to say goodbye to yakuake in gnome

@Stibbons
Contributor

why don't use tmux in guake?

@Ozzyboshi
Contributor

there is also byobu (http://byobu.co/), however terminal splitting would be great even if a little hard to implement.

@Stibbons
Contributor

thanks for this link! Look amazing. I don't see how Guake would do better. Maybe a tight integration between byobu and guake would be better (an option "automatically start byoby terminal splitting in tab" + able to retrieve the information we read from VTE). Don't know if it is feasible, but I think I'll use byobu from now on :)

@Ozzyboshi
Contributor

@Stibbons ,
actually byobu relies on tmux and/or screen multiplexers so my answer is not so different from yours. We must first say that the feature requested by @rlimaeco is a native guake split terminal implementation (in my opinion not so trivial).
For now we could figure out a way to start byobu automatically (default interpreter under preferences->shell??) .
If you want to split the terminal just use byobu shortcuts or some contextual menu inside guake (to be implemented). The split function however must be visible (or usable) only if byoubu is enabled.

@Stibbons
Contributor

+1

@pabloab
pabloab commented Feb 19, 2016

If I'm not getting all wrong:

  1. # apt-get install byobu && which byobu | tee -a /etc/shells
  2. Run guake-prefs and change Default interpreter.
@Ozzyboshi
Contributor

yes that's how i use guake, in addition i set the horizontal and vertical split command in guake indicator so i dont' have to remember all the byobu shortcuts.
Maybe it would be better to put the same commands into the custom commands menu but they will work only if you are using byobu.

@alexxtasi

byobu rocks!!!!
byobu and guake in combination would be great!!
+1

@Stibbons Stibbons modified the milestone: 0.8.4, 0.8.5 Feb 29, 2016
@Ozzyboshi
Contributor

I'd like to share with you my method for splitting a terminal inside a guake tab with byobu.
My goal is to reuse the guake custom command feature to split the terminal with byobu shortcuts.

test.txt

  • rename test.txt in test.json and select it from guake prefs->general->custom command file path

Now go to your terminal and start 'byobu'
Now to vertical split just right click on the terminal and go to 'custom commands' -> Byobu vertical split

There are some other commands in the test file, the one i use more, you can customize it according to your needs and your byobu shortcut configuration.

The test file is quite straightforward, it just tells guake to emulate some keypresses with xdotool, please notice the syscall section, if this field is present and set to 1, guake will execute a system call instead of sending the command to the terminal, this is very useful because users don't want to see the xdotool command on the screen and because it works under remote sessions like telnet or ssh.
The syscall field is implemented in my custom guake version, if @Stibbons likes it i will be happy to issue a pull request.
I know this is not what was requested but please tell me if you think this is a viable workaround.

@Stibbons
Contributor

Look indeed quite complex... like this, I don't think it is a good path to follow. But even if I implement split terminal functionality in Guake next gen, it won't be as mature are byobu...
Maybe we can think about a plugin system that would give ability to easily add such extension, so you can maintain this plugin independentely... I'll see how I can add hooks for plugins in the rework I am still doing (overloaded by work since january, I don't have any time to work on guake..)

@chyzwar
chyzwar commented Apr 27, 2016

@Stibbons I think just have option to split vertically would be enough for most of us.
Anyway I think that guake is great :), thanks for your work.

@Stibbons Stibbons modified the milestone: 0.8.5, 0.8.6 Jun 6, 2016
@Stibbons Stibbons modified the milestone: 0.8.6, 0.8.7 Aug 20, 2016
@zlatin zlatin referenced this issue Nov 8, 2016
Closed

Splitting feature #834

@rubo77
rubo77 commented Nov 18, 2016 edited

Thanks for the tip!

Yakuake has the splitscreen feature, If you need it, use that one for now, it also works on standard Ubuntu without KDE ;)

@Stibbons Stibbons modified the milestone: 0.8.8, 0.8.9 Dec 13, 2016
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment