-
Notifications
You must be signed in to change notification settings - Fork 28.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[WIP] Configurable Panel Position #34267
Conversation
@AkashGutha, thanks for your PR! By analyzing the history of the files in this pull request, we identified @egamma and @bpasero to be potential reviewers. |
@isidorn let's get this done in two iterations. |
@AkashGutha thanks for showing interest in this. In order to tackle this we need to come up with a solution that looks good both horizontaly and verticaly. Notice that we currently have tabs on top of the panel - how would those tabs look in reduced vertical space? We would probably need some overflow design. My proposal is that at the top of the panel we would introduce an action that toggles the dock position (similar to what Chrome dev tools have, but we would only have 2 states to start). That action would just switch a boolean in the If we end up with a solution that does not look or feel good we will have to reject it. Let me know what you think. |
@isidorn Yes, definitely like the chrome inspect tab. And for the reduced horizontal space, how about using a combo box just like the terminal. |
@AkashGutha you can talk to me about the As for the reduced horizontal space, I think we should tackle that in step2. But showing some overflow as we do in the activity bar makes sense to me. |
Also any changes you make to vscode should be easy to just try out. Just have continues build running and run vscode out of source as described here. |
fyi @egamma |
We should not include this in this change, there is a larger discussion that needs to happen on whether to pull parts of the panel into an editor tab.
This 👍 |
what about embedding a terminal into an editor tab (after splitting)? seems a bit overkill to have to redo so much of the UI just for this. i.e., i have a single file open. then I run split tab. in the new split on the right pane I can 'convert' that tab into a terminal. |
@Tyriar @heisian Please don't use editor tabs for this.
I don't think so, here is why... An editor tab is made for editing source files, and only that. A Terminal has nothing to do with that. A terminal should be differentiated because its usage / life span / side-effects are obviously different. It generally stays alive during the whole session, running external processes and should be easily toggleable for quick access. Embedding it in an editor tab would make this typical use case very tedious to achieve. I've used Atom a lot, and many extensions use this editor tab pattern. It ends up in a catastrophic user experience where you constantly have to maintain a splitted region where you put all your other stuff. Of course this region is not toggleable, so it basically eats a whole part of the screen for things you only get to access 10% of the time. It's like mixing apples and oranges. The current way of presenting the terminal is very good, a toggleable pane. It only needs a way to dock itself to other locations. Lots of editors (including Visual Studio) have done this for decades, for a good reason I believe. |
@ngryman good points - was merely suggesting a shortcut to the actual solution & agree it can get pretty problematic. plus anything that brings things closer to the way atom does things (and I loved & used it for years) could be a bad thing :P |
@ngryman this is basically my stance on the topic; it's a lot easier to manage the terminal when there's only a single place for it and all commands act on that single area. This combined with the ability to split a terminal instance inside the panel #7504 is where I would like to see this go. |
IMO, that's not really a good enough solution for this. Sometimes I like to use VSCode in a window that's much wider than it is tall, and it would be really nice if the terminal could be on one of the sides. This, IMO, is not really usable at all: It'd be really awesome if the terminal could be in all of that wasted space to the right and not taking up half of my view at the bottom. Something similar to how kdevelop allows its konsole tab to be placed on either the sides or the bottom would be really nice. |
@simoniz0r i'm pretty sure that's exactly what this pull request is about doing. |
@heisian @Tyriar I think we all agree on the features of this PR. How could we speed things up? Are there remaining points to clarify? @AkashGutha Are you still working on this? Do you need some help? |
@ngryman I'm quite busy with a few things. it will probably take one or two months before I even get started on this. |
@AkashGutha Alright thanks for the explanation. @Tyriar @heisian Any pointers in docs/code to help me understand how it's done now and some ideas on how to implement this? I'll be happy to address this but I would need some insights first. |
@isidorn will be the main contact on this PR |
There are some prerequests before this can be done, namely #31503 |
@ngryman if you check the file changes in this PR. you'll find the exact location of the terminal layout implementation and a starting point on how we can convert the existing Sash into the way we want it to function. Currently the Sash implementation is fixed to have one in Y and on in X. We have to remove the SashX as a tight dependecy for the terminal and make it usable by both X and Y. @isidorn correct me / add to this if we can find any other useful information. |
i was poking around in |
Thanks guys. So, wrapping up. To do:
Questions:
|
I've started to dive into the code and the layout part could use a refactoring so it's less cryptic. Are you planning to do so? |
@ngryman go ahead with the changes. we need those changes desperately. |
@ngryman thanks for looking into the code, however I would recommend that you all wait a bit since I am looking into some feature which is a prerequest for this. Once that is done I will dive into this one. Refactoring the layout part that it still has the same functionality but is less cryptic we could accept as a seperate PR. Though before submiting code for that I would recommend you creata a PR where we first discuss what you plan to do. |
@isidorn Gotcha, I guess the layout code would need some cleanup before we had more complexity to it. I'll be glad to discuss about it in another PR. |
@chryw I am slowly starting to look into this feature. Could you maybe look into the icon for this, as you can see in my comment from above we would need two different icons, one that reprsents moving the panel to the right and one to be bottom. Both for light and dark version. I have started with RightColumnOfTwoColumns_16x and BottomRowOfTwoRows_16x from the VSicons, but not sure if they fit perfectly. Also there is none for the dark theme |
@isidorn Thank you so much to address this one. I personally did not have time to dig into this lately, and the time I climb that learning curve, you'll have finished this PR and have 2 kids 😂 |
@isidorn I think those icons make sense. I attached VS Code version svg files. |
@chryw awesome, thanks |
Closing this in favor of #36827 |
Let's make the Bottom panel position configurable to bottom or side-by-side.
Also, integrate it as an editor tab which can be a with tabs carry arranged with tabs when set to side-by-side mode.