mclear-tools / tabspaces

GNU General Public License v3.0
233 stars 15 forks source link

Missing support for tab-group / integration with desktop.el #51

Open rytswd opened 10 months ago

rytswd commented 10 months ago

When saving / restoring tab details using tabspaces-save-session and tabspaces-restore-session, tab-group information does not seem to be handled at the moment. I started using desktop.el to save the frame setting instead, which does store the tab setup correctly including tab-group, but I won't get the correct buffer mapping with tabspaces.

What would be the approach I could take to restore all tabs and tab groups, while also keeping the buffers associated to tabs correctly? While both tabspaces-save-session and tabspaces-restore-session work pretty well on their own, is there any way to get them to work with desktop.el?

mclearc commented 10 months ago

So I actually wrote the save/restore code because it seemed easier than integrating tabspaces with desktop.el. But ideally tabspaces would just bootstrap its session saving/restoring from desktop.el. Unfortunately I'm not sure how to do that (or perhaps I should say, I wasn't sure previously, and I don't have the time right now to revisit it). I'd welcome a pull request for such integration, and that might also help resolve other requests, such as saving shells and other non-file-visiting buffers.

rytswd commented 10 months ago

Thanks, it makes sense how it was easier to implement without desktop.el. I'd be tied up for a little while as well, but if nobody else takes it on, I'll try to have a look at this sometime in early 2024 👍

antoniocanas commented 8 months ago

Then, let me dream of this UI for 2025:

TabGroupName | Tab 1 | Tab 2 buffer 1 | buffer 2

tab-bar-group with name of project on the upper left (or Home/Work) tabs for things I'm working on, like: "Bug 123" | "Spike 321" | "Meetings.org" tab-line with buffers on current tab: "file 1" | "project cmd"

And everything is saved/restored when I restart. With only this package and emacs built-in ones.

rytswd commented 8 months ago

I haven't had the time to look into this, but thought I'd share how I started using https://github.com/alphapapa/activities.el for session handling (with its (activities-tabs-mode)). Because it's based on bookmark under the hood, tabspaces works with the buffer list for each tab when "activities" command opens buffers (and also processes). I don't get the "tab-group" support, but I can pick and choose a tab which I want to restore / kill which is something I wanted.

I could see the desktop.el integration is still useful for some use case. But I personally got most of what I want from the activities package -- especially when combined with tabspaces, that is 😉