From c278375ea87413b7ae62a4642d17112ec689023a Mon Sep 17 00:00:00 2001
From: b3ni <brarcos@gmail.com>
Date: Thu, 25 Aug 2016 17:31:13 +0200
Subject: [PATCH] Support for linux

---
 index.coffee | 40 ++++++++++++++++++++++++++++++----------
 package.json |  3 ++-
 2 files changed, 32 insertions(+), 11 deletions(-)

diff --git a/index.coffee b/index.coffee
index cc2eacc..db4608a 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 f222adf..fc04b91 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"
-- 
GitLab