* bezier: dont loop on float values Using a floating-point loop variable with a fixed increment can cause precision errors over time due to the nature of floating-point arithmetic. and cause undesired effects. ex iteration 1 = 0.10000000149011611938 iteration 2 = 0.20000000298023223877 eventually.. iteration 8 = 0.80000001192092895508 iteration 9 = 0.89999997615814208984 * hyprctl: close sockets on destruction store socketpath and close the fd and unlink the socket path on exit. * eventloopmgr: close the timerfd close the timerfd on exit. * debug: make logging thread safe instead of opening and closing the logfile on each write open it on init and close it on compositor exit. also add a mutex so accidently using logging from a thread like the watchdog or similiar doesnt cause issues. * xwl: clean up fd logic check if the fd is actually opened before closing, and close the pipesource FD on exit.
37 lines
1.1 KiB
C++
37 lines
1.1 KiB
C++
#pragma once
|
|
|
|
#include "../Compositor.hpp"
|
|
#include <fstream>
|
|
#include "../helpers/MiscFunctions.hpp"
|
|
#include <functional>
|
|
|
|
class CHyprCtl {
|
|
public:
|
|
CHyprCtl();
|
|
~CHyprCtl();
|
|
|
|
std::string makeDynamicCall(const std::string& input);
|
|
SP<SHyprCtlCommand> registerCommand(SHyprCtlCommand cmd);
|
|
void unregisterCommand(const SP<SHyprCtlCommand>& cmd);
|
|
std::string getReply(std::string);
|
|
|
|
int m_iSocketFD = -1;
|
|
|
|
struct {
|
|
bool all = false;
|
|
bool sysInfoConfig = false;
|
|
} m_sCurrentRequestParams;
|
|
|
|
static std::string getWindowData(PHLWINDOW w, eHyprCtlOutputFormat format);
|
|
static std::string getWorkspaceData(PHLWORKSPACE w, eHyprCtlOutputFormat format);
|
|
static std::string getMonitorData(Hyprutils::Memory::CSharedPointer<CMonitor> m, eHyprCtlOutputFormat format);
|
|
|
|
private:
|
|
void startHyprCtlSocket();
|
|
|
|
std::vector<SP<SHyprCtlCommand>> m_vCommands;
|
|
wl_event_source* m_eventSource = nullptr;
|
|
std::string m_socketPath;
|
|
};
|
|
|
|
inline std::unique_ptr<CHyprCtl> g_pHyprCtl;
|