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!

1 Answer 1


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.

  • works great, thanks. I modified it a bit, will add to my original post. cheers!
    – dax
    Commented Jun 21, 2014 at 11:26
  • 1
    Or more generally exec "$@" to use it with other stuff!
    – user44370
    Commented Jun 21, 2014 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
    Commented Jun 21, 2014 at 12:40

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .