summaryrefslogtreecommitdiff
path: root/src/main/java/moe/nea/mossbar/concepts/Output.java
diff options
context:
space:
mode:
authorLinnea Gräf <nea@nea.moe>2025-07-03 00:07:42 +0200
committerLinnea Gräf <nea@nea.moe>2025-07-03 00:07:42 +0200
commita6e9cd2aef129e71479800a8dfaec05b3d38d20e (patch)
tree57b63239d0c6d6a579d5089eaee9b14e23354f79 /src/main/java/moe/nea/mossbar/concepts/Output.java
parent1eae252f41eab7612864fb479263dc93310d8930 (diff)
downloadmossbar-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.java50
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;
+ }
+}