It opens all the files, folder, apps, websites, terminal (with given directory) which you define. You can chose which resources should be open automatically when you click START.
Not exactly the same, but inspired by Alan Kay talk, I am trying to symlink desktop to different folders, so that I can decide I work on something, have a context, then make a new folder and do something else.
I animated gif or video would help people understand what this is.
This is a neat tool. I bought a license yesterday and finally got a chance to play around with it.
If you're taking requests: I'd really love the ability to specify a script to run when opening Terminal. Both by specifying a location for an external shell script, but also by having the ability to just toss a few commands together in your interface.
And the window position thing above would be amazing.
I use tmux to do something similar which I got from thoughtbots training site I think it was.
I have a script called just c with the following:
------
name=$1
if !(tmux has-session -t "$name" 2> /dev/null); then
tmux start \;\
set -g set-remain-on-exit on \;\
new-session -d -s $name
tmux source-file "$HOME/.tmux.conf"
tmux source-file "$HOME/.tmux/profiles/$name.tmuxrc"
fi
tmux attach -t $name
-----
Then I cp a tmux profile from a template depending on the project language/framework into profiles and rename the directories in it then I can just do `c project` in the future to have everything started up.
I had pretty much the same questions as you - that landing page does a terrible job of explaining exactly what it is that this app does.
Here is my 'use case'. Whenever I want to work on one of my mobile or web apps, I set up my environment to open TWO terminal windows within my working folder (one for normal CLI commands, one for IRB or other specific console), perhaps run up a local web server for testing, SSH into the staging server, and load up the local preview URL in at least two installed browsers for testing. Sometimes XCode or Atom/VSCode too with the proper project loaded up. Oh, and opening my BitBucket and Confluence pages to the right project would also help a great deal.
Having to do this sometimes multiple times per day for different projects I am working on can get tedious, so I am hoping that this app could automate a lot of this with a single click, but I don't know from that landing page whether it even comes close to this.
[EDIT - I notice they have added a video to the landing page now which explains what it does and how it works in an infinitely better way. And from that, it DOES look like it will meet my needs above!]
I hadn't heard of this. I've recently been a writing a small bash script for each project to accomplish the same thing (in a more verbose way). It works pretty nicely.
That's a nice solution. Probably a little more 'manual' setup up front, but looks like it will do what I need it to once the config files are created, so I appreciate the heads up.
Sounds interesting but it was hard for me to figure out exactly what it did based on the website (and based on the comments here it seems I'm not alone).
I'd like to suggest putting more screenshots up showing how to use it as well as a video.
How did you specify the two VSCode windows each set with different project directories? I wanted to do this too but the "Open with" drop-down in "Advanced" settings only showed four apps, none of which were VSCode.
I'd also love to be able to give it a window of tabs in Chrome or Firefox and have it open all of those in one window. Perhaps there's already a way but it wasn't obvious to me.
EDIT: I kept reading the comments and found the VSCode solution. You add VSCode first and then specify a folder to open.
Also, you can achieve the same functionality in i3, i3 can remember the positions of the open windows. But you need to write a script to open the corresponding applications and identify them to i3, so windows can be "swallowed".
However workspaces on KDE were magnificent. They remembered state between applications too. I only used KDE4 workspaces -FreeBSD does not yet support Plasma- and was fairly satisfied.
I think that the price is fair: Apple's Automator, even shell scripts with the OS-supplied "open" command, provide significantly more functionality for quickly setting up a workspace. This tool's worth is the convenience of not having to write such an automator/shell script by hand.
For whatever reason images of the old Workplace Shell (OS/2) popped through my mind when I read the title. Had me imaging a weird WPS for MacOS. (Much like the Workplace Shell for Windows from way back in the day ).
It's very basic. I can tell it to run Visual Studio Code but I can't tell it to open a specific project using Visual Studio Code.
I can't tell it to open the terminal and activate a Python virtual environment (let alone open Visual Studio Code built-in terminal and activate the env).
I just tried it out, and you can specify a folder to open with VSCode. You pick the application (VSCode), then tap advanced and pick your project folder.
The problem this app is working on is a real pain point for me. My current solution is to use multi user accounts on my mac (roughly one for each use context I have), leave everything open, and fast user switch between the accounts. This works well enough and has the advantage of lots of isolation between contexts, but the overhead of creating and setting up a new user account is too much to have more than a couple of these (I'd love to have one per project). One advantage of the example of this level of isolation -- I setup my mail program in each account to only be setup for the mail accounts relevant to that context so I only get mail notifications for the context I'm focused on.
I'm strongly in favor of some innovation in this space, but this app's solution (and other, window management type solutions) I don't think has enough isolation between contexts for me.
Windows has traditionally been a Window/document-centric OS where the primary object of interaction is a window (e.g. alt-tab would swap between individual Windows).
macOS has traditionally been an application-centric OS, one tabs between Applications.
What I would love to see is a project-centric system, where I can tab between projects and have all the relevant applications and documents appear and disappear with it.
Interesting way to see it. I have a way to tab between projects in emacs (where only buffers pertaining to a project are shown), but having this system-wide would be good.
Eyebrowse looks good, I'll be happy if I can get it to select layouts w/ ido completing read. perspective supports that out of the box so worst case i can just that.
>What I would love to see is a project-centric system, where I can tab between projects and have all the relevant applications and documents appear and disappear with it.
Linux! I'm a Windows dev now and miss Linux so much.
What I used to do back in the day was simplistic, but still very useful - I'd have multiple desktops open, & have each project on its own desktop. SSH connections, code editors, network drives, VMs whatever. It keeps visual separation between environments, even if not total logical separation.
If you need better separation, you can have multiple sessions open at once with separate window managers, user accounts, file system roots, whatever you need - at the same time. I'm hazy on the implementation details but I've seen it done. Altho, this might be a bit old school today, with VMs taking less resources and stuff like docker existing.
Virtual desktops on Windows have been around since at least XP, albeit as a powertoy. I know at least AMD, and I presume Nvidia, also offer(ed) their own virtual desktop solutions as part of their GPU driver suites.
Okay if you want to split hairs sure Safari can do it but will it keep all the windows about your project on the correct screen? What about Word or Photoshop or Mail or Skype or Sketch or Numbers or Whatever. Will any of these programs filter by project on the correct screen like I want them to? Nope.
I have used project-per-virtual-desktop approach for years. I assign "shared apps" (Mail, Slack, etc) to all desktops (option-click via dock icon). My "project apps" are mostly terminal, text editor, and browser windows.
There are couple of issues¹, but this is still by far the best approach I can think of. Actually, I don't understand how other people can manage their stuff without per-project virtual desktops.
¹ cannot rename virtual desktops on macOS, not all apps can restore their windows on correct desktop after reboot, not all apps support multi-window workflow (e.g. Slack), "minimized windows" area in dock should be per-desktop instead of global
Too much hassle for me. I don't have a need for project specific emailing.
PS. Fluid.app is nice way to create project-specific native app instances from web applications, e.g. Trello, Jenkins, etc. Plays nicer with virtual desktops / cmd+tab than browser windows. (With the cost of memory.)
Yes, you can have multiple Safari windows and place each one in a different virtual desktop.
The main issue I have with this setup is Cmd-Tab doesn't handle multiple windows of the same app that well. If I have multiple Safari windows in different desktops, it would basically just (randomly?) pick one and open it when I Cmd-Tab into Safari.
I really wish Cmd-Tab would be constrained to the desktop I'm currently using...
Anybody has a solution for this issue?
I don't think this is true either. I just tried this, and it would switch to the safari window in the current desktop without fail - it was only when there's no safari window for current desktop that it switched desktops.
+1 for HyperSwitch. I have the standard cmd-tab for applications, alt-tab switches between all windows on the current virtual desktop and alt-` switches between all windows of the current application (across all virtual desktops).
It provides Cmd-Tab/Option-Tab replacement that shows all apps' all windows regardless of their desktop or full/split screen status. You can even search within window list.
It also has gestures and numberered switch for apps/groups.
Mostly it works without a hitch. Sometimes macOS' original Cmd-Tab manages to get first and both can arrive together, but that rarely happens. When macOS opens apps to multiple desktops and full screens on startup I have to sometimes let it know what apps are available by switching through them using Exposé (or whatever that's called).
System preferences -> Mission control -> When switching to an application, switch to a space with open application -> ticking off may help to limit cmd+tab for current space.
Personally I've no issues with cmd+tab - I use it to cycle between 2-3 recently used apps, works fine for apps in the same space (which is the idea of per-project spaces).
I make heavy use of three-finger-swipe-up gesture to see all windows in the current space and thumbnails of spaces. (System prefs -> Trackpad -> More gestures)
The dock I keep minimized, not much use for it with spaces because it has global state.
Cmd+h is handy for hiding global apps out of way (can be revealed again with cmd+tab).
That's what I do except I use TotalSpaces[1] to use the trackpad to swipe up, right, down or left to each workspace.
You can set applications to open on specific desktops, or any desktop. This combined with moom[2] really makes macOS a pleasure to work with and alleviates the need for multiple monitors.
There's been a lot of talk of people switching from macOS recently and while it's not unfounded I'd struggle replacing this setup.
Have you looked at KDE activities? It's been around since 2011 or so (assuming it's still around in the latest version--seemed to be there a couple months ago).
KDE has had the wonderful Activities feature for years. I believe that it even filters email messages in Kmail per Activity, though I still use Thunderbird.
OS/2 used to have that feature. You could flag a folder as a project in the desktop environment. Anything you opened from that folder was part of that project. Close the project folder, everything opened from it closes. Open the project folder, everything you had open from it last time opens. And I'm pretty sure (it's been ~20 years since I used it) that it would also hide all everything if you hid the project folder.
MacOS desktops aren't isolated, they pollute task switcher and notifications. They are useful if you use trackpad for primary navigation and not keyboard.
Curious if copying homedir except Documents, Downloads, etc. and chown'ing could be sufficient. Maybe it should be more selective than that, but still possible?
Btw your idea is very cool. I have at least three contexts too: personal, job-related and somewhat job-related (trial periods that I always miss without touching, etc). I tired of relogging into different accounts and being careful with my From field, thanks for the hack. Cannot believe I didn't figure it out myself.
I've been trying Freeter since it was posted here. It's definitely not bad, but I don't think it solves the isolation problem mentioned - but it does help me get my workspace back up after a restart.
Depending on how the time travel feature of windows 10's fall 2017 update will work it might cover my issue: getting back to a past set of open documents, apps and webpages. Fingers crossed they make it powerful.
I've been toying with project-management features in various contexts for years, and I'm actually working on something that would solve this problem, as it also manages application state within a context.
I have a functional prototype I'm planning to share as soon as I've polished up the UI.
I do it the same way as you and it's a hell of a lot better than this. Everything is set up specifically for the client/project you're working on at the time – SSH keys, Git config, documents, mail accounts, passwords, you name it. All focused on the specific project and all isolated.
As far as the initial setup is concerned, this is fairly easily scriptable. Pretty much everything in System Preferences can be set using `defaults write`, there's loads of dotfile management tools, and most other things can be generated with templates using something like Cookiecutter. You can get a completely customised user account in a few seconds just by running a script and answering a few questions.
I built something like this into my window manager one time, but I found it basically pointless, given how easy and flexible it is to just open the applications myself. If I did serious work on macOS instead of Linux and OpenBSD, I'd probably want a tool like this. They really should put a video or a screenshot roll right at the top of the page, instead of their stupid logo which nobody cares about.
I was doing this with pure AppleScript a few years ago but when I changed jobs from a startup/single-product company to an client based agency then my workspace changed often enough that I found I didn't use it anymore
Tried it out works great! Opens sublime text and Hyper to the correct folder and open my site all at once. If it integrated with Magnet so you could set up exactly where it opens, that would be incredible. Also, the ability to run a command in Hyper when it loads would be cool, for example if you could 'npm start' automatically.
I'll definitely buy!
EDIT - actually if you could set it up to run some hotkeys or typing after each application load you could do both these things very easily.
143 comments
[ 4.4 ms ] story [ 202 ms ] threadI animated gif or video would help people understand what this is.
1. Does this remember or allow me to configure the Desktop(s) that I had those programs opened on?
2. Is there a shortcut to close all of the programs it opened for a workspace?
We're planning such features for future versions.
If you're taking requests: I'd really love the ability to specify a script to run when opening Terminal. Both by specifying a location for an external shell script, but also by having the ability to just toss a few commands together in your interface.
And the window position thing above would be amazing.
[1] https://github.com/jamesob/desk
I have a script called just c with the following:
------
name=$1
if !(tmux has-session -t "$name" 2> /dev/null); then
fitmux attach -t $name
-----
Then I cp a tmux profile from a template depending on the project language/framework into profiles and rename the directories in it then I can just do `c project` in the future to have everything started up.
* Does it just remember which files/apps were open for a given name, and when I click that name in the list it opens those apps?
* Does it close my other apps when I do this, to only keep one "workspace" active?
* Can I set it to open each Workspace in a specific OSX "Spaces" space? (THIS would be the killer feature, imo)
Here is my 'use case'. Whenever I want to work on one of my mobile or web apps, I set up my environment to open TWO terminal windows within my working folder (one for normal CLI commands, one for IRB or other specific console), perhaps run up a local web server for testing, SSH into the staging server, and load up the local preview URL in at least two installed browsers for testing. Sometimes XCode or Atom/VSCode too with the proper project loaded up. Oh, and opening my BitBucket and Confluence pages to the right project would also help a great deal.
Having to do this sometimes multiple times per day for different projects I am working on can get tedious, so I am hoping that this app could automate a lot of this with a single click, but I don't know from that landing page whether it even comes close to this.
[EDIT - I notice they have added a video to the landing page now which explains what it does and how it works in an infinitely better way. And from that, it DOES look like it will meet my needs above!]
Something practical that appears to their audience, which is probably developers.
I'd like to suggest putting more screenshots up showing how to use it as well as a video.
Basically a bookmark manager for the apps/folders you use, allowing you to restore everything in a click or two.
I specified a terminal and two VSCode windows each set with different project directories and it loaded perfectly. Will purchase.
Feature request: Would like the ability to choose fullscreen/specific space for each application.
I'd also love to be able to give it a window of tabs in Chrome or Firefox and have it open all of those in one window. Perhaps there's already a way but it wasn't obvious to me.
EDIT: I kept reading the comments and found the VSCode solution. You add VSCode first and then specify a folder to open.
One thing that'd be awesome would be to run a command after opening a folder in iTerm
The last time I used it, it was buggy as hell (long-time KDE user here).
Also, you can achieve the same functionality in i3, i3 can remember the positions of the open windows. But you need to write a script to open the corresponding applications and identify them to i3, so windows can be "swallowed".
However workspaces on KDE were magnificent. They remembered state between applications too. I only used KDE4 workspaces -FreeBSD does not yet support Plasma- and was fairly satisfied.
I can't tell it to open the terminal and activate a Python virtual environment (let alone open Visual Studio Code built-in terminal and activate the env).
I'm strongly in favor of some innovation in this space, but this app's solution (and other, window management type solutions) I don't think has enough isolation between contexts for me.
Windows has traditionally been a Window/document-centric OS where the primary object of interaction is a window (e.g. alt-tab would swap between individual Windows).
macOS has traditionally been an application-centric OS, one tabs between Applications.
What I would love to see is a project-centric system, where I can tab between projects and have all the relevant applications and documents appear and disappear with it.
If you don't need workspace specific buffers, eyebrowse[1] is a good (seemingly less buggy) alternative.
[1] https://github.com/wasamasa/eyebrowse
Thanks!
Linux! I'm a Windows dev now and miss Linux so much.
What I used to do back in the day was simplistic, but still very useful - I'd have multiple desktops open, & have each project on its own desktop. SSH connections, code editors, network drives, VMs whatever. It keeps visual separation between environments, even if not total logical separation.
If you need better separation, you can have multiple sessions open at once with separate window managers, user accounts, file system roots, whatever you need - at the same time. I'm hazy on the implementation details but I've seen it done. Altho, this might be a bit old school today, with VMs taking less resources and stuff like docker existing.
There are couple of issues¹, but this is still by far the best approach I can think of. Actually, I don't understand how other people can manage their stuff without per-project virtual desktops.
¹ cannot rename virtual desktops on macOS, not all apps can restore their windows on correct desktop after reboot, not all apps support multi-window workflow (e.g. Slack), "minimized windows" area in dock should be per-desktop instead of global
PS. Fluid.app is nice way to create project-specific native app instances from web applications, e.g. Trello, Jenkins, etc. Plays nicer with virtual desktops / cmd+tab than browser windows. (With the cost of memory.)
The main issue I have with this setup is Cmd-Tab doesn't handle multiple windows of the same app that well. If I have multiple Safari windows in different desktops, it would basically just (randomly?) pick one and open it when I Cmd-Tab into Safari.
I really wish Cmd-Tab would be constrained to the desktop I'm currently using... Anybody has a solution for this issue?
It provides Cmd-Tab/Option-Tab replacement that shows all apps' all windows regardless of their desktop or full/split screen status. You can even search within window list.
It also has gestures and numberered switch for apps/groups.
Mostly it works without a hitch. Sometimes macOS' original Cmd-Tab manages to get first and both can arrive together, but that rarely happens. When macOS opens apps to multiple desktops and full screens on startup I have to sometimes let it know what apps are available by switching through them using Exposé (or whatever that's called).
I have no affiliation, but I'm a paid user.
[1] https://contexts.co
Personally I've no issues with cmd+tab - I use it to cycle between 2-3 recently used apps, works fine for apps in the same space (which is the idea of per-project spaces).
The dock I keep minimized, not much use for it with spaces because it has global state.
Cmd+h is handy for hiding global apps out of way (can be revealed again with cmd+tab).
You can set applications to open on specific desktops, or any desktop. This combined with moom[2] really makes macOS a pleasure to work with and alleviates the need for multiple monitors.
There's been a lot of talk of people switching from macOS recently and while it's not unfounded I'd struggle replacing this setup.
1. https://totalspaces.binaryage.com/
2. https://manytricks.com/moom/
On OSX you can achieve something similar with multi-desktops.
Btw your idea is very cool. I have at least three contexts too: personal, job-related and somewhat job-related (trial periods that I always miss without touching, etc). I tired of relogging into different accounts and being careful with my From field, thanks for the hack. Cannot believe I didn't figure it out myself.
https://www.microsoft.com/en-us/windows/upcoming-features
I have a functional prototype I'm planning to share as soon as I've polished up the UI.
As far as the initial setup is concerned, this is fairly easily scriptable. Pretty much everything in System Preferences can be set using `defaults write`, there's loads of dotfile management tools, and most other things can be generated with templates using something like Cookiecutter. You can get a completely customised user account in a few seconds just by running a script and answering a few questions.
One is for organising your local machine's desktops in workspaces per project, other is remote desktops via a cloud provider.
EDIT - actually if you could set it up to run some hotkeys or typing after each application load you could do both these things very easily.