mirror of
https://github.com/hyprwm/xdg-desktop-portal-hyprland.git
synced 2024-11-22 14:35:57 +01:00
config: add a config with hyprlang
This commit is contained in:
parent
54a30259be
commit
c5b69eb5b5
3 changed files with 29 additions and 2 deletions
|
@ -36,7 +36,7 @@ add_subdirectory(hyprland-share-picker)
|
||||||
find_package(Threads REQUIRED)
|
find_package(Threads REQUIRED)
|
||||||
|
|
||||||
find_package(PkgConfig REQUIRED)
|
find_package(PkgConfig REQUIRED)
|
||||||
pkg_check_modules(deps REQUIRED IMPORTED_TARGET wayland-client wayland-protocols libpipewire-0.3 libspa-0.2 libdrm gbm)
|
pkg_check_modules(deps REQUIRED IMPORTED_TARGET wayland-client wayland-protocols libpipewire-0.3 libspa-0.2 libdrm gbm hyprlang>=0.2.0)
|
||||||
|
|
||||||
file(GLOB_RECURSE SRCFILES CONFIGURE_DEPENDS "src/*.cpp")
|
file(GLOB_RECURSE SRCFILES CONFIGURE_DEPENDS "src/*.cpp")
|
||||||
add_executable(xdg-desktop-portal-hyprland ${SRCFILES})
|
add_executable(xdg-desktop-portal-hyprland ${SRCFILES})
|
||||||
|
|
|
@ -198,6 +198,25 @@ inline const zwp_linux_dmabuf_feedback_v1_listener dmabufFeedbackListener = {
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|
||||||
|
CPortalManager::CPortalManager() {
|
||||||
|
const auto XDG_CONFIG_HOME = getenv("XDG_CONFIG_HOME");
|
||||||
|
const auto HOME = getenv("HOME");
|
||||||
|
|
||||||
|
if (!HOME && !XDG_CONFIG_HOME) {
|
||||||
|
Debug::log(CRIT, "Cannot proceed: neither $HOME nor $XDG_CONFIG_HOME is present in env");
|
||||||
|
throw "$HOME and $XDG_CONFIG_HOME both missing from env";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string path = XDG_CONFIG_HOME ? std::string{XDG_CONFIG_HOME} + "/hypr/xdph.conf" : std::string{HOME} + "/.config/hypr/xdph.conf";
|
||||||
|
|
||||||
|
m_sConfig.config = std::make_unique<Hyprlang::CConfig>(path, Hyprlang::SConfigOptions{.allowMissingConfig = true});
|
||||||
|
|
||||||
|
m_sConfig.config->addConfigValue("general:toplevel_dynamic_bind", {0L});
|
||||||
|
|
||||||
|
m_sConfig.config->commence();
|
||||||
|
m_sConfig.config->parse();
|
||||||
|
}
|
||||||
|
|
||||||
void CPortalManager::onGlobal(void* data, struct wl_registry* registry, uint32_t name, const char* interface, uint32_t version) {
|
void CPortalManager::onGlobal(void* data, struct wl_registry* registry, uint32_t name, const char* interface, uint32_t version) {
|
||||||
const std::string INTERFACE = interface;
|
const std::string INTERFACE = interface;
|
||||||
|
|
||||||
|
@ -238,7 +257,8 @@ void CPortalManager::onGlobal(void* data, struct wl_registry* registry, uint32_t
|
||||||
m_sHelpers.toplevel = std::make_unique<CToplevelManager>(registry, name, version);
|
m_sHelpers.toplevel = std::make_unique<CToplevelManager>(registry, name, version);
|
||||||
|
|
||||||
// remove when another fix is found for https://github.com/hyprwm/xdg-desktop-portal-hyprland/issues/147
|
// remove when another fix is found for https://github.com/hyprwm/xdg-desktop-portal-hyprland/issues/147
|
||||||
m_sHelpers.toplevel->activate();
|
if (!std::any_cast<Hyprlang::INT>(m_sConfig.config->getConfigValue("general:toplevel_dynamic_bind")))
|
||||||
|
m_sHelpers.toplevel->activate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <sdbus-c++/sdbus-c++.h>
|
#include <sdbus-c++/sdbus-c++.h>
|
||||||
#include <wayland-client.h>
|
#include <wayland-client.h>
|
||||||
|
#include <hyprlang.hpp>
|
||||||
|
|
||||||
#include "../portals/Screencopy.hpp"
|
#include "../portals/Screencopy.hpp"
|
||||||
#include "../portals/Screenshot.hpp"
|
#include "../portals/Screenshot.hpp"
|
||||||
|
@ -30,6 +31,8 @@ struct SDMABUFModifier {
|
||||||
|
|
||||||
class CPortalManager {
|
class CPortalManager {
|
||||||
public:
|
public:
|
||||||
|
CPortalManager();
|
||||||
|
|
||||||
void init();
|
void init();
|
||||||
|
|
||||||
void onGlobal(void* data, struct wl_registry* registry, uint32_t name, const char* interface, uint32_t version);
|
void onGlobal(void* data, struct wl_registry* registry, uint32_t name, const char* interface, uint32_t version);
|
||||||
|
@ -67,6 +70,10 @@ class CPortalManager {
|
||||||
} dma;
|
} dma;
|
||||||
} m_sWaylandConnection;
|
} m_sWaylandConnection;
|
||||||
|
|
||||||
|
struct {
|
||||||
|
std::unique_ptr<Hyprlang::CConfig> config;
|
||||||
|
} m_sConfig;
|
||||||
|
|
||||||
std::vector<SDMABUFModifier> m_vDMABUFMods;
|
std::vector<SDMABUFModifier> m_vDMABUFMods;
|
||||||
|
|
||||||
void addTimer(const CTimer& timer);
|
void addTimer(const CTimer& timer);
|
||||||
|
|
Loading…
Reference in a new issue