This is super cool! I've often thought about doing exactly this but never got off my ass to start building it!
The only other functionality I would like out of my own setup which I might play around with is having each of the projects have some keyword / context based on the project. So for example all of my 'blog' browser windows are in one browser window with multiple tabs and I could be in another project and move a tab to my blog project easily.
The other thing I would like about that is sometimes I end up with 25+ tabs, all over the place relating to one or two of my projects. If when I did the equivalent of virtualenvs "deactivate", it would save all of the tabs in the active projects browser window and they would open later when I deactivated the project. This also would be useful for to leave a project all alone, as close to how I left off as possible to focus on something else, but without losing that state.
I have tried this setup but I found it particularly problematic that there isn't a separate 'dock' per desktop so I end out accidentally switching desktops for common apps such as a browser and shell. Have you found a work around for this issue?
That's part of the reason you have tools like Vagrant and VMs.You don't have to create separate accounts for each project but emulate that in your VMs.
I don't really have this problem. I mostly use command-tab to switch between apps, which seems to honor the desktop I'm on. For browser and shell I right click the app and choose "new window" in the desktop of choice.
Yeah, I'm usually working on some remote machine, and keep multiple tmux instances running with the state of each medium or high level project. I've found I rarely have more than two going at once though.
Interesting! At some point I have started creating small shell functions to switch between environments (setting the correct paths, etc.). This was when I was mainly doing C, C++, and Prolog work.
In my last two positions I primarily work on mavenized Java projects and find that IntelliJ projects provide most of the context switching.
The upside is that it is far less work to set up and customise projects than vim/emacs plus shell. The downside is that the customisation that you can do is far more limited.
I'd love to hear experiences from someone who works on Python or Ruby code, and tried both PyCharm/RubyMine vs. vim/emacs/tmux.
I'd love to see someone build a similar script that can also work with desktop applications like Eclipse or creative tools like Photoshop so we can with one click switch between project without having to close / open files and applications. There's a good chance there's something out there like that, if so I'd live to know about it, and if not it might be a cool thing to have. Thanks!
One of the startup companies I used to work with was called Cupcloud (http://cupcloud.com). If you're OK with a cloud app, it can support Photoshop and Illustrator
Very interesting. I also find myself often doing the same repetitive workspace setup. I think I'll go ahead and try to apply this technique on my Linux environment.
Update: Easier than I thought. I just created a Bash script with the project's name and with a few lines I open my most used applications for working on that project.
The only other functionality I would like out of my own setup which I might play around with is having each of the projects have some keyword / context based on the project. So for example all of my 'blog' browser windows are in one browser window with multiple tabs and I could be in another project and move a tab to my blog project easily.
The other thing I would like about that is sometimes I end up with 25+ tabs, all over the place relating to one or two of my projects. If when I did the equivalent of virtualenvs "deactivate", it would save all of the tabs in the active projects browser window and they would open later when I deactivated the project. This also would be useful for to leave a project all alone, as close to how I left off as possible to focus on something else, but without losing that state.
Like screen for your entire work setup.
Thanks for sharing your setup!