summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2024-11-09 17:11:38 +0000
committerVaxry <vaxry@vaxry.net>2024-11-09 17:14:25 +0000
commita8ff3a452c1c445d24bdd9e7e4fcd66c8ef2a147 (patch)
tree7bd6e4e4d41892b1e77ba4d967191313cbf77a21
parentdca75db127fedc58fc85ae0e6e47162e3d5d16f9 (diff)
core: move to os/Process from hyprutils
nix bump too
-rw-r--r--CMakeLists.txt2
-rw-r--r--flake.lock6
-rw-r--r--hyprpm/CMakeLists.txt2
-rw-r--r--hyprpm/src/core/PluginManager.cpp19
-rw-r--r--src/helpers/MiscFunctions.cpp20
5 files changed, 21 insertions, 28 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 877ba461..1ac2e10f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -101,7 +101,7 @@ else()
endif()
find_package(OpenGL REQUIRED COMPONENTS ${GLES_VERSION})
-pkg_check_modules(hyprctl_deps REQUIRED IMPORTED_TARGET hyprutils>=0.2.1)
+pkg_check_modules(hyprctl_deps REQUIRED IMPORTED_TARGET hyprutils>=0.2.4)
pkg_check_modules(aquamarine_dep REQUIRED IMPORTED_TARGET aquamarine>=0.4.2)
diff --git a/flake.lock b/flake.lock
index b9055015..47254052 100644
--- a/flake.lock
+++ b/flake.lock
@@ -151,11 +151,11 @@
]
},
"locked": {
- "lastModified": 1730968903,
- "narHash": "sha256-zFvzLXcSm0Ia4XI1SE4FQ9KE63hlGrRWhLtwMolWuR8=",
+ "lastModified": 1731163338,
+ "narHash": "sha256-Qflei0JBeqQ0c8jxA8e982xAxJvfMwfx4Aci2eJi84s=",
"owner": "hyprwm",
"repo": "hyprutils",
- "rev": "3ce0cde8709cdacbfba471f8e828433b58a561e9",
+ "rev": "60d3dece30f98e8ad85131829c8529950630d6bc",
"type": "github"
},
"original": {
diff --git a/hyprpm/CMakeLists.txt b/hyprpm/CMakeLists.txt
index 692e8da1..65935638 100644
--- a/hyprpm/CMakeLists.txt
+++ b/hyprpm/CMakeLists.txt
@@ -9,7 +9,7 @@ file(GLOB_RECURSE SRCFILES CONFIGURE_DEPENDS "src/*.cpp")
set(CMAKE_CXX_STANDARD 23)
-pkg_check_modules(deps REQUIRED IMPORTED_TARGET tomlplusplus hyprutils>=0.1.1)
+pkg_check_modules(deps REQUIRED IMPORTED_TARGET tomlplusplus hyprutils>=0.2.4)
add_executable(hyprpm ${SRCFILES})
diff --git a/hyprpm/src/core/PluginManager.cpp b/hyprpm/src/core/PluginManager.cpp
index 57c67641..159b9cd6 100644
--- a/hyprpm/src/core/PluginManager.cpp
+++ b/hyprpm/src/core/PluginManager.cpp
@@ -23,22 +23,19 @@
#include <toml++/toml.hpp>
#include <hyprutils/string/String.hpp>
+#include <hyprutils/os/Process.hpp>
using namespace Hyprutils::String;
+using namespace Hyprutils::OS;
static std::string execAndGet(std::string cmd) {
cmd += " 2>&1";
- std::array<char, 128> buffer;
- std::string result;
- using PcloseType = int (*)(FILE*);
- const std::unique_ptr<FILE, PcloseType> pipe(popen(cmd.c_str(), "r"), static_cast<PcloseType>(pclose));
- if (!pipe)
- return "";
- result.reserve(buffer.size());
- while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr) {
- result += buffer.data();
- }
- return result;
+ CProcess proc("/bin/sh", {cmd});
+
+ if (!proc.runSync())
+ return "error";
+
+ return proc.stdOut();
}
SHyprlandVersion CPluginManager::getHyprlandVersion() {
diff --git a/src/helpers/MiscFunctions.cpp b/src/helpers/MiscFunctions.cpp
index 878f5ca1..75154796 100644
--- a/src/helpers/MiscFunctions.cpp
+++ b/src/helpers/MiscFunctions.cpp
@@ -17,7 +17,9 @@
#include <execinfo.h>
#endif
#include <hyprutils/string/String.hpp>
+#include <hyprutils/os/Process.hpp>
using namespace Hyprutils::String;
+using namespace Hyprutils::OS;
#if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
#include <sys/sysctl.h>
@@ -583,18 +585,12 @@ float vecToRectDistanceSquared(const Vector2D& vec, const Vector2D& p1, const Ve
// Execute a shell command and get the output
std::string execAndGet(const char* cmd) {
- std::array<char, 128> buffer;
- std::string result;
- using PcloseType = int (*)(FILE*);
- const std::unique_ptr<FILE, PcloseType> pipe(popen(cmd, "r"), static_cast<PcloseType>(pclose));
- if (!pipe) {
- Debug::log(ERR, "execAndGet: failed in pipe");
- return "";
- }
- while (fgets(buffer.data(), buffer.size(), pipe.get()) != nullptr) {
- result += buffer.data();
- }
- return result;
+ CProcess proc("/bin/sh", {cmd});
+
+ if (!proc.runSync())
+ return "error";
+
+ return proc.stdOut();
}
void logSystemInfo() {