![slack workspaces slack workspaces](https://www.ncsddc.org/wp-content/uploads/2019/07/shutterstock_294089048-700x467.jpg)
#Slack workspaces full
Another context will be one development project, with one or more virtual desktops full of terminals, kcachegrind, testing, etc.
![slack workspaces slack workspaces](https://images.zapier.com/storage/photos/bd0ff1f2bccfc6829ecf6b0cca4d3f8e.png)
in one or more virtual desktops within that context. Usually one context is communications, I'll have email, IRC, browser, etc. Those contexts are for entirely disparate topics.
#Slack workspaces windows
Sometimes I end up with a slightly tangential set of windows so I spin up a virtual desktop within that context and keep those windows there, and the virtual desktop switching within the context can be achieved with Mod+Space, also in MRU-order.īut I also usually have multiple contexts active, each with one or more virtual desktops. So when I'm working within a virtual desktop, usually it's kept to a very localized specific topic involving multiple windows, Mod+Tab switches through those windows with the hot ones always staying at the top of the MRU-ordered list. Windows, virtual desktops, and contexts all get kept in most-recently used (MRU) order. In my window manager I took virtual desktops a step further and added contexts, each of which has its own set of virtual desktops. I really don't get how you can not appreciate the potential utility of virtual desktops. If we find that we frequently need to switch multiple monitors at once we can trivially add that back but not the reverse. To decide which makes sense we would consider how frequently we want to do each operation. Now the last operation is as trivial as the first at the expense of making the process of changing all 3 at once more expensive. Now let us lastly switch to using per monitor workspaces. The operation of moving the applications displayed on one end of S1 and showing them on the other end of S2 is of course just as much of a hassle as it ever was because workspaces encompass all monitors at once. Suddenly the switch between S1 and S2 is a click. Now let us fully utilize the workspaces and separate the states on different desktops. Now what if you want to show 3 windows from the rightmost monitor then put them back. You don't need to resize it but you have to manually select first 7 then 3 then 7 then 3 applications to bring them to the forefront. Now consider the hassle to recreate the state repeatedly. This is easier as they can be dragged to a display and maximized.
![slack workspaces slack workspaces](https://www.dummies.com/wp-content/uploads/slack-workspace-page.jpg)
Now suppose we only have 3 applications we ought to be able to see together separate from the other 7. Repeat 7 times over for each window to be placed on each monitor. First you drag one window to the left-hand side of the leftmost monitor. Suppose one has taken the trouble to size 7 windows to fit on 3 monitors. Let us first disregard the second workspace. Let us consider a very simple stacking window manager with 2 workspaces and a task bar. If S1 consists of a single window maximized and S2 a different window maximized the cost of switching workspaces is just as high as clicking on say a taskbar or hitting alt tab. With the complexity of keeping track of which together rising with the number of windows. If you are switching between 3 applications placing each in turn maximized on your display indeed I would see no benefit from virtual desktops in this instance however the benefit is proportional to the average work needed to switch between states * the frequency of such a switch. You can read about it on my blog if you're curious. The smart window placement feature, for example, is implemented using a dynamic programming algorithm I thought up after taking a formal algorithms class. I also added features throughout college as I took more classes. It was good practice learning and implementing specs. I also had to learn about ICCCM and EWMH, since many program rely on them as well. This is built using XLib, which relies on the X11 protocol. The difficult part with writing a window manager, imo, is getting familiar with the necessary specs and APIs. Mainly it just required a familiarity with event-based architecture and linked lists (all the window stacking is represented as linked lists). This was my first real project outside of school, and to be honest didn't require a ton of pre-requisite knowledge. I wrote this as a sophomore in college after finishing the intro computer science sequence (which goes into basic data structures/algs topics like binary trees, recursion, etc). This is my project, so I can speak to this :)