Why restrict yourself to one side, especially the top or bottom, or even the same side for all windows?

You should be able to independently drag tabs around to any edge of the window you prefer: top, bottom, left or right.

So, for example, you can lay out your many source code tabs along the right, so they stack vertically and you can read all their titles, and lay out your several shell tabs along the bottom, where they're easy to find. Or whatever you want!

Tabbed windows:

https://en.wikipedia.org/wiki/Tab_(interface)

>Large numbers of tabbed windows scale better with the tabs along the left or right edges of the window, instead of the top or bottom edges. That is because tab labels are usually much wider than they are tall, and because it is now common to use displays which are considerably wider than needed for displaying documents and web pages. The NeWS version of the UniPress Emacs text editor placed tabs along the right window edge, and laid windows out in a vertical column, so each tab was initially visible, and the user could use them to raise and lower the windows, drag them around in the column, or pull them out to anywhere on the screen.

>Tabbed window interfaces can give the user the freedom to position the tabs along any edge, so all four edges are available to organize different groups of tabs as the user or application sees fit. The PSIBER visual PostScript programming environment for NeWS had tabbed views that the user could stick onto the stack (represented as a "spike"), and the user could move the tabs to any edge.[3] The NeWS pie menu and tab window manager enabled users to position the tabs anywhere along any edge, and the tabs popped up pie menus with window management functions, to uncover and bury windows, etc.

Emacs with tabbed windows and the HyperTies hypermedia browser:

https://en.wikipedia.org/wiki/Tab_(interface)#/media/File:Hy...

PSIBER Space Deck visual PostScript debugging environment with tabbed object windows that you can impale on the PostScript stack "spike":

https://en.wikipedia.org/wiki/Tab_(interface)#/media/File:Ps...

The Shape of PSIBER Space, Tabbed Windows:

https://donhopkins.medium.com/the-shape-of-psiber-space-octo...

>Tab Windows: The objects on the deck are displayed in windows with labeled tabs sticking out of them, showing the data type of the object. You can move an object around by grabbing its tab with the mouse and dragging it. You can perform direct stack manipulation, pushing it onto stack by dragging its tab onto the spike, and changing its place on the stack by dragging it up and down the spike. It implements a mutant form of “Snap-dragging”, that constrains non-vertical movement when an object is snapped onto the stack, but allows you to pop it off by pulling it far enough away or lifting it off the top. [Bier, Snap-dragging] The menu that pops up over the tab lets you do things to the whole window, like changing view characteristics, moving the tab around, repainting or recomputing the layout, and printing the view.

Tabbed windows for The NeWS Toolkit 3.0 / OpenWindows 3:

https://www.donhopkins.com/home/archive/NeWS/tab-3.0.2.ps.tx...

NeWS Tab Window Demo:

https://www.youtube.com/watch?v=tMcmQk-q0k4