My question is something like this - but I don't want to open a given application on a specific workspace, I want each instance to open on a new workspace each time.

The OP in the linked-to question wants to open Firefox on workspace 2, Chromium on workspace 1, etc...

I want to open new instances of a text-editor (Sublime Text) in a new workspace for every new instance. Is this possible?


I used the accepted answer in a modified form:

# .bashrc
function sublime {
  i3-msg workspace $(($(i3-msg -t get_workspaces | tr , '\n' | grep '"num":' | cut -d : -f 2 | sort -rn | head -1) + 1))
  /usr/bin/sublime_text_3/sublime_text $1

so that I can use it like this:

$ sublime /path/to/file

and also because I'm using my dotfiles across several computers, so it's nicer to include everything in one place!


You can use a small BASH script to do that:

This opens a new workspace (taken from here) and runs a command:

i3-msg workspace $(($(i3-msg -t get_workspaces | tr , '\n' | grep '"num":' | cut -d : -f 2 | sort -rn | head -1) + 1))

Create this script under /usr/bin, name it eg. sublime-new, give it exec permissions and you can now launch it from a terminal emulator. Strange, but when executing the script from dmenu, it first opens the program and then changes the workspace.

| improve this answer | |
  • works great, thanks. I modified it a bit, will add to my original post. cheers! – dax Jun 21 '14 at 11:26
  • 1
    Or more generally exec "$@" to use it with other stuff! – user44370 Jun 21 '14 at 12:31
  • 1
    @illuminÉ, it's a good idea to generalize the script, but if the OP needs it for only a specific application, then it might be more useful not requiring to type in another argument. – psimon Jun 21 '14 at 12:40

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.