summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMozzarella32 <143010987+Mozzarella32@users.noreply.github.com>2025-07-20 10:40:21 +0000
committerGitHub <noreply@github.com>2025-07-20 12:40:21 +0200
commitb7a91e02e915c7a87835cad0809faa28c6c15fb7 (patch)
treeeef029e59e5794f5a2de34c1b5342546718359aa /src
parent58b6eceb6da441b83cd6dc88fc52d39dd4a06f34 (diff)
renderer: Add cursor:invisible to allow to hide the cursor (#11058)
Diffstat (limited to 'src')
-rw-r--r--src/config/ConfigDescriptions.hpp6
-rw-r--r--src/config/ConfigManager.cpp7
-rw-r--r--src/render/Renderer.cpp3
3 files changed, 14 insertions, 2 deletions
diff --git a/src/config/ConfigDescriptions.hpp b/src/config/ConfigDescriptions.hpp
index 788e8238..219c44c1 100644
--- a/src/config/ConfigDescriptions.hpp
+++ b/src/config/ConfigDescriptions.hpp
@@ -1494,6 +1494,12 @@ inline static const std::vector<SConfigOptionDescription> CONFIG_OPTIONS = {
*/
SConfigOptionDescription{
+ .value = "cursor:invisible",
+ .description = "don't render cursors",
+ .type = CONFIG_OPTION_BOOL,
+ .data = SConfigOptionDescription::SBoolData{false},
+ },
+ SConfigOptionDescription{
.value = "cursor:no_hardware_cursors",
.description = "disables hardware cursors. Auto = disable when multi-gpu on nvidia",
.type = CONFIG_OPTION_CHOICE,
diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp
index 14d6cf03..635c7977 100644
--- a/src/config/ConfigManager.cpp
+++ b/src/config/ConfigManager.cpp
@@ -709,6 +709,7 @@ CConfigManager::CConfigManager() {
registerConfigVar("opengl:nvidia_anti_flicker", Hyprlang::INT{1});
+ registerConfigVar("cursor:invisible", Hyprlang::INT{0});
registerConfigVar("cursor:no_hardware_cursors", Hyprlang::INT{2});
registerConfigVar("cursor:no_break_fs_vrr", Hyprlang::INT{2});
registerConfigVar("cursor:min_refresh_rate", Hyprlang::INT{24});
@@ -3129,11 +3130,15 @@ const std::vector<SConfigOptionDescription>& CConfigManager::getAllDescriptions(
}
bool CConfigManager::shouldUseSoftwareCursors(PHLMONITOR pMonitor) {
- static auto PNOHW = CConfigValue<Hyprlang::INT>("cursor:no_hardware_cursors");
+ static auto PNOHW = CConfigValue<Hyprlang::INT>("cursor:no_hardware_cursors");
+ static auto PINVISIBLE = CConfigValue<Hyprlang::INT>("cursor:invisible");
if (pMonitor->m_tearingState.activelyTearing)
return true;
+ if (*PINVISIBLE != 0)
+ return true;
+
switch (*PNOHW) {
case 0: return false;
case 1: return true;
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 13f8ff4d..e09de913 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -2030,6 +2030,7 @@ void CHyprRenderer::setCursorFromName(const std::string& name, bool force) {
}
void CHyprRenderer::ensureCursorRenderingMode() {
+ static auto PINVISIBLE = CConfigValue<Hyprlang::INT>("cursor:invisible");
static auto PCURSORTIMEOUT = CConfigValue<Hyprlang::FLOAT>("cursor:inactive_timeout");
static auto PHIDEONTOUCH = CConfigValue<Hyprlang::INT>("cursor:hide_on_touch");
static auto PHIDEONKEY = CConfigValue<Hyprlang::INT>("cursor:hide_on_key_press");
@@ -2044,7 +2045,7 @@ void CHyprRenderer::ensureCursorRenderingMode() {
if (*PCURSORTIMEOUT > 0)
m_cursorHiddenConditions.hiddenOnTimeout = *PCURSORTIMEOUT < g_pInputManager->m_lastCursorMovement.getSeconds();
- const bool HIDE = m_cursorHiddenConditions.hiddenOnTimeout || m_cursorHiddenConditions.hiddenOnTouch || m_cursorHiddenConditions.hiddenOnKeyboard;
+ const bool HIDE = m_cursorHiddenConditions.hiddenOnTimeout || m_cursorHiddenConditions.hiddenOnTouch || m_cursorHiddenConditions.hiddenOnKeyboard || (*PINVISIBLE != 0);
if (HIDE == m_cursorHidden)
return;