diff options
| author | Linnea Gräf <nea@nea.moe> | 2025-07-03 00:07:42 +0200 |
|---|---|---|
| committer | Linnea Gräf <nea@nea.moe> | 2025-07-03 00:07:42 +0200 |
| commit | a6e9cd2aef129e71479800a8dfaec05b3d38d20e (patch) | |
| tree | 57b63239d0c6d6a579d5089eaee9b14e23354f79 /src/main/java/moe/nea/mossbar/concepts/Output.java | |
| parent | 1eae252f41eab7612864fb479263dc93310d8930 (diff) | |
| download | mossbar-a6e9cd2aef129e71479800a8dfaec05b3d38d20e.tar.gz mossbar-a6e9cd2aef129e71479800a8dfaec05b3d38d20e.tar.bz2 mossbar-a6e9cd2aef129e71479800a8dfaec05b3d38d20e.zip | |
feat: Adjust to screen size
Diffstat (limited to 'src/main/java/moe/nea/mossbar/concepts/Output.java')
| -rw-r--r-- | src/main/java/moe/nea/mossbar/concepts/Output.java | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/main/java/moe/nea/mossbar/concepts/Output.java b/src/main/java/moe/nea/mossbar/concepts/Output.java new file mode 100644 index 0000000..472dfce --- /dev/null +++ b/src/main/java/moe/nea/mossbar/concepts/Output.java @@ -0,0 +1,50 @@ +package moe.nea.mossbar.concepts; + +import org.freedesktop.wayland.client.WlOutputEvents; +import org.freedesktop.wayland.client.WlOutputProxy; +import org.freedesktop.wayland.shared.WlOutputMode; +import org.freedesktop.wayland.util.EnumUtil; + +import java.util.EnumSet; + +public class Output extends Scope implements WlOutputEvents { + private final WlOutputProxy proxy; + int width = -1, height = -1; + EnumSet<WlOutputMode> flags; + + public int getWidth() { + return width; + } + + public int getHeight() { + return height; + } + + public EnumSet<WlOutputMode> getFlags() { + return flags; + } + + public Output(Display display, int name) { + proxy = display.registry.bind(name, WlOutputProxy.class, WlOutputEvents.VERSION, this).bindTo(this); + } + + @Override + public void geometry(WlOutputProxy emitter, int x, int y, int physicalWidth, int physicalHeight, int subpixel, String make, String model, int transform) { + System.out.println("${make} ${model} is at $x,$y ${physicalWidth}x${physicalHeight}"); + } + + @Override + public void mode(WlOutputProxy emitter, int flags, int width, int height, int refresh) { + var encodedFlags = EnumUtil.decode(WlOutputMode.class, flags); + if (encodedFlags.contains(WlOutputMode.CURRENT)) { + this.width = width; + this.height = height; + this.flags = encodedFlags; + } + System.out.println("mode ${width}x${height} ${this.flags}"); + } + + public WlOutputProxy getProxy() { + return proxy; + } +} |
