From e08b35caa8c840dfd42f88bf44cceaa49546bd2b Mon Sep 17 00:00:00 2001 From: nathan Date: Thu, 29 Dec 2016 23:44:58 +0100 Subject: [PATCH] Fixed logic for checking if gnome --- Dorkbox-Util/src/dorkbox/util/OSUtil.java | 29 ++++++++++++++++------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/Dorkbox-Util/src/dorkbox/util/OSUtil.java b/Dorkbox-Util/src/dorkbox/util/OSUtil.java index e26fd3c..efa41b1 100644 --- a/Dorkbox-Util/src/dorkbox/util/OSUtil.java +++ b/Dorkbox-Util/src/dorkbox/util/OSUtil.java @@ -283,19 +283,32 @@ class OSUtil { ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(8196); PrintStream outputStream = new PrintStream(byteArrayOutputStream); - // ps a | grep gnome-shell + // note: some versions of linux can ONLY access "ps a"; FreeBSD and most linux is "ps x" + // we try "x" first + // ps x | grep gnome-shell - final ShellProcessBuilder shell = new ShellProcessBuilder(outputStream); + ShellProcessBuilder shell = new ShellProcessBuilder(outputStream); shell.setExecutable("ps"); - if (OS.isLinux()) { - shell.addArgument("a"); - } else { - shell.addArgument("x"); - } + shell.addArgument("x"); shell.start(); String output = ShellProcessBuilder.getOutput(byteArrayOutputStream); - return output.contains("gnome-shell"); + boolean contains = output.contains("gnome-shell"); + + if (!contains && OS.isLinux()) { + // only try again if we are linux + + // ps a | grep gnome-shell + shell = new ShellProcessBuilder(outputStream); + shell.setExecutable("ps"); + shell.addArgument("a"); + shell.start(); + + output = ShellProcessBuilder.getOutput(byteArrayOutputStream); + contains = output.contains("gnome-shell"); + } + + return contains; } catch (Throwable ignored) { }