master ohmu/fastfetch-openbsd / src / detection / displayserver / displayserver.h
ohmu  ·  2026-10-15
  1#pragma once
  2
  3#include "fastfetch.h"
  4#include "modules/display/option.h"
  5
  6#define FF_DE_PRETTY_PLASMA "KDE Plasma"
  7#define FF_DE_PRETTY_GNOME "GNOME"
  8#define FF_DE_PRETTY_GNOME_CLASSIC "GNOME Classic"
  9#define FF_DE_PRETTY_XFCE4 "Xfce4"
 10#define FF_DE_PRETTY_CINNAMON "Cinnamon"
 11#define FF_DE_PRETTY_MATE "Mate"
 12#define FF_DE_PRETTY_LXDE "LXDE"
 13#define FF_DE_PRETTY_LXQT "LXQt"
 14#define FF_DE_PRETTY_BUDGIE "Budgie"
 15#define FF_DE_PRETTY_CDE "CDE"
 16#define FF_DE_PRETTY_UNITY "Unity"
 17#define FF_DE_PRETTY_UKUI "UKUI"
 18#define FF_DE_PRETTY_NEBIDE "NebiDE"
 19#define FF_DE_PRETTY_ENLIGHTENMENT "Enlightenment"
 20#define FF_DE_PRETTY_COSMIC "COSMIC"
 21
 22#define FF_WM_PRETTY_KWIN "KWin"
 23#define FF_WM_PRETTY_MUTTER "Mutter"
 24#define FF_WM_PRETTY_MUFFIN "Muffin"
 25#define FF_WM_PRETTY_MARCO "Marco"
 26#define FF_WM_PRETTY_XFWM4 "Xfwm4"
 27#define FF_WM_PRETTY_OPENBOX "Openbox"
 28#define FF_WM_PRETTY_I3 "i3"
 29#define FF_WM_PRETTY_HYPRLAND "Hyprland"
 30#define FF_WM_PRETTY_WAYFIRE "Wayfire"
 31#define FF_WM_PRETTY_SWAY "Sway"
 32#define FF_WM_PRETTY_BSPWM "bspwm"
 33#define FF_WM_PRETTY_DWM "dwm"
 34#define FF_WM_PRETTY_WESTON "Weston"
 35#define FF_WM_PRETTY_XMONAD "XMonad"
 36#define FF_WM_PRETTY_WSLG "WSLg"
 37#define FF_WM_PRETTY_TINYWM "TinyWM"
 38#define FF_WM_PRETTY_QTILE "Qtile"
 39#define FF_WM_PRETTY_HERBSTLUFTWM "herbstluftwm"
 40#define FF_WM_PRETTY_ICEWM "IceWM"
 41#define FF_WM_PRETTY_SPECTRWM "spectrwm"
 42#define FF_WM_PRETTY_DTWM "dtwm"
 43#define FF_WM_PRETTY_FVWM "fvwm"
 44#define FF_WM_PRETTY_CTWM "ctwm"
 45#define FF_WM_PRETTY_COSMIC_COMP "cosmic-comp"
 46#define FF_WM_PRETTY_RATPOISON "ratpoison"
 47#define FF_WM_PRETTY_ENLIGHTENMENT "Enlightenment"
 48
 49#define FF_WM_PROTOCOL_TTY "TTY"
 50#define FF_WM_PROTOCOL_X11 "X11"
 51#define FF_WM_PROTOCOL_WAYLAND "Wayland"
 52#define FF_WM_PROTOCOL_SURFACEFLINGER "SurfaceFlinger"
 53
 54typedef enum FFDisplayType: uint8_t {
 55    FF_DISPLAY_TYPE_UNKNOWN,
 56    FF_DISPLAY_TYPE_BUILTIN,
 57    FF_DISPLAY_TYPE_EXTERNAL,
 58} FFDisplayType;
 59
 60typedef enum FFDisplayHdrStatus: uint8_t {
 61    FF_DISPLAY_HDR_STATUS_UNKNOWN,
 62    FF_DISPLAY_HDR_STATUS_UNSUPPORTED,
 63    FF_DISPLAY_HDR_STATUS_SUPPORTED,
 64    FF_DISPLAY_HDR_STATUS_ENABLED,
 65} FFDisplayHdrStatus;
 66
 67typedef enum FFDisplayVrrStatus: uint8_t {
 68    FF_DISPLAY_DRR_STATUS_UNKNOWN,
 69    FF_DISPLAY_DRR_STATUS_DISABLED,
 70    FF_DISPLAY_DRR_STATUS_ENABLED,
 71} FFDisplayVrrStatus;
 72
 73typedef struct FFDisplayResult {
 74    uint32_t width;              // in px
 75    uint32_t height;             // in px
 76    double refreshRate;          // in Hz
 77    uint32_t dpi;                // Base 96
 78    uint32_t preferredWidth;     // in px
 79    uint32_t preferredHeight;    // in px
 80    double preferredRefreshRate; // in Hz
 81    FFstrbuf name;
 82    FFDisplayType type;
 83    uint32_t rotation;
 84    uint64_t id;             // platform dependent
 85    uint32_t physicalWidth;  // in mm
 86    uint32_t physicalHeight; // in mm
 87    bool primary;
 88    const char* platformApi;
 89    uint8_t bitDepth;
 90    FFDisplayHdrStatus hdrStatus;
 91    uint16_t manufactureYear;
 92    uint16_t manufactureWeek;
 93    FFstrbuf serial;
 94    FFDisplayVrrStatus drrStatus;
 95} FFDisplayResult;
 96
 97typedef struct FFDisplayServerResult {
 98    FFstrbuf wmProcessName;
 99    FFstrbuf wmPrettyName;
100    FFstrbuf wmProtocolName;
101    FFstrbuf deProcessName;
102    FFstrbuf dePrettyName;
103    FFlist displays; // List of FFDisplayResult
104} FFDisplayServerResult;
105
106const FFDisplayServerResult* ffConnectDisplayServer();
107
108FFDisplayResult* ffdsAppendDisplay(
109    FFDisplayServerResult* result,
110    uint32_t width,
111    uint32_t height,
112    double refreshRate,
113    uint32_t dpi,
114    uint32_t preferredWidth,
115    uint32_t preferredHeight,
116    double preferredRefreshRate,
117    uint32_t rotation,
118    FFstrbuf* name,
119    FFDisplayType type,
120    bool primary,
121    uint64_t id,
122    uint32_t physicalWidth,
123    uint32_t physicalHeight,
124    const char* platformApi);