diff --git a/index.coffee b/index.coffee index cc2eacc1d65d8ede2acd622a4c692b64773ed2e6..db4608a198940f6ef254ba9cadb493c07488b386 100644 --- a/index.coffee +++ b/index.coffee @@ -28,17 +28,9 @@ module.exports = #------------------------------------------------------------------------------- open: ({path}) -> if atom.config.get 'gitkraken.singleInstance' - exec "pkill GitKraken; sleep .1 && open -Fb #{@id} --args -p '#{path}'" #, @timeout + @execGitKrakenSingle path else - projects = {} - try - projects = require @tmp - execSync "ps #{projects[path]} | grep -q GitKraken && - open -b #{@id} --args -p '#{path}'" - catch - pid = execSync "open -nb #{@id} --args -p '#{path}' & echo $!" - projects[path] = (parseInt pid) + 1 - writeFile @tmp, JSON.stringify projects + projects = @execGitKrakenMulti path window.addEventListener 'beforeunload', -> exec "kill #{projects[path]}" @@ -48,3 +40,31 @@ module.exports = @subs.dispose() window.removeEventListener 'beforeunload' unlink @tmp + +#------------------------------------------------------------------------------- + execGitKrakenSingle: (path) -> + if process.platform == 'darwin' + exec "pkill GitKraken; sleep .1 && open -Fb #{@id} --args -p '#{path}'" #, @timeout + else if process.platform == 'linux' + exec "killall gitkraken; sleep .1 && gitkraken --args -p '#{path}' &> /dev/null &" + +#------------------------------------------------------------------------------- + execGitKrakenMulti: (path) -> + projects = {} + try + projects = require @tmp + if process.platform == 'darwin' + execSync "ps #{projects[path]} | grep -q GitKraken && open -b #{@id} --args -p '#{path}'" + else if process.platform == 'linux' + execSync "ps #{projects[path]} | grep -q gitkraken" + catch + if process.platform == 'darwin' + pid = execSync "open -nb #{@id} --args -p '#{path}' & echo $!" + else if process.platform == 'linux' + proc = exec "nohup gitkraken --args -p '#{path}' &>/dev/null &" + pid = proc.pid + + projects[path] = (parseInt pid) + 1 + writeFile @tmp, JSON.stringify projects + + projects diff --git a/package.json b/package.json index f222adf2a0bcdc02cb4b2c79b7d5fd78c898e45f..fc04b91c3e536d9fef4a931de122d16699969c93 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,8 @@ "private": true, "license": "MIT", "os": [ - "darwin" + "darwin", + "linux" ], "dependencies": { "sub-atom": "^1.1.0"