mirror of
https://github.com/hyprwm/hyprpaper.git
synced 2024-11-16 22:25:59 +01:00
internal: allow desc: for monitors
This commit is contained in:
parent
3bfaac09f5
commit
66b3ba8d9f
4 changed files with 30 additions and 2 deletions
|
@ -39,7 +39,7 @@ wallpaper = monitor2,/path/to/next_image.png
|
||||||
# .. more monitors
|
# .. more monitors
|
||||||
```
|
```
|
||||||
|
|
||||||
Preload will tell Hyprland to load a particular image (supported formats: png, jpg, jpeg). Wallpaper will apply the wallpaper to the selected output (`monitor` is the monitor's name, easily can be retrieved with `hyprctl monitors`. You can leave it empty for a wildcard (aka fallback))
|
Preload will tell Hyprland to load a particular image (supported formats: png, jpg, jpeg). Wallpaper will apply the wallpaper to the selected output (`monitor` is the monitor's name, easily can be retrieved with `hyprctl monitors`. You can leave it empty for a wildcard (aka fallback). You can also use `desc:` followed by the monitor's description without the (PORT) at the end)
|
||||||
|
|
||||||
You may add `contain:` before the file path in `wallpaper=` to set the mode to contain instead of cover:
|
You may add `contain:` before the file path in `wallpaper=` to set the mode to contain instead of cover:
|
||||||
|
|
||||||
|
|
|
@ -184,7 +184,17 @@ void CHyprpaper::removeOldHyprpaperImages() {
|
||||||
}
|
}
|
||||||
|
|
||||||
SMonitor* CHyprpaper::getMonitorFromName(const std::string& monname) {
|
SMonitor* CHyprpaper::getMonitorFromName(const std::string& monname) {
|
||||||
|
bool useDesc = false;
|
||||||
|
std::string desc = "";
|
||||||
|
if (monname.find("desc:") == 0) {
|
||||||
|
useDesc = true;
|
||||||
|
desc = monname.substr(5);
|
||||||
|
}
|
||||||
|
|
||||||
for (auto& m : m_vMonitors) {
|
for (auto& m : m_vMonitors) {
|
||||||
|
if (useDesc && m->description.find(desc) == 0)
|
||||||
|
return m.get();
|
||||||
|
|
||||||
if (m->name == monname)
|
if (m->name == monname)
|
||||||
return m.get();
|
return m.get();
|
||||||
}
|
}
|
||||||
|
@ -270,6 +280,21 @@ void CHyprpaper::ensureMonitorHasActiveWallpaper(SMonitor* pMonitor) {
|
||||||
return; // has
|
return; // has
|
||||||
|
|
||||||
// get the target
|
// get the target
|
||||||
|
for (auto& [mon, path1] : m_mMonitorActiveWallpapers) {
|
||||||
|
if (mon.find("desc:") != 0)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (pMonitor->description.find(mon.substr(5)) == 0) {
|
||||||
|
for (auto& [path2, target] : m_mWallpaperTargets) {
|
||||||
|
if (path1 == path2) {
|
||||||
|
it->second = ⌖
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (auto& [mon, path1] : m_mMonitorActiveWallpapers) {
|
for (auto& [mon, path1] : m_mMonitorActiveWallpapers) {
|
||||||
if (mon == pMonitor->name) {
|
if (mon == pMonitor->name) {
|
||||||
for (auto& [path2, target] : m_mWallpaperTargets) {
|
for (auto& [path2, target] : m_mWallpaperTargets) {
|
||||||
|
|
|
@ -32,7 +32,9 @@ void Events::name(void *data, wl_output *wl_output, const char *name) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Events::description(void *data, wl_output *wl_output, const char *description) {
|
void Events::description(void *data, wl_output *wl_output, const char *description) {
|
||||||
// i do not care
|
const auto PMONITOR = (SMonitor*)data;
|
||||||
|
|
||||||
|
PMONITOR->description = description;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Events::handleCapabilities(void *data, wl_seat *wl_seat, uint32_t capabilities) {
|
void Events::handleCapabilities(void *data, wl_seat *wl_seat, uint32_t capabilities) {
|
||||||
|
|
|
@ -6,6 +6,7 @@
|
||||||
|
|
||||||
struct SMonitor {
|
struct SMonitor {
|
||||||
std::string name = "";
|
std::string name = "";
|
||||||
|
std::string description = "";
|
||||||
wl_output* output = nullptr;
|
wl_output* output = nullptr;
|
||||||
uint32_t wayland_name = 0;
|
uint32_t wayland_name = 0;
|
||||||
Vector2D size;
|
Vector2D size;
|
||||||
|
|
Loading…
Reference in a new issue