5

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?

solution:

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

5

You can use a small BASH script to do that:

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

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

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.

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

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.