summaryrefslogtreecommitdiff
path: root/kvmd/apps/oled
diff options
context:
space:
mode:
Diffstat (limited to 'kvmd/apps/oled')
-rw-r--r--kvmd/apps/oled/__init__.py29
-rw-r--r--kvmd/apps/oled/screen.py54
2 files changed, 55 insertions, 28 deletions
diff --git a/kvmd/apps/oled/__init__.py b/kvmd/apps/oled/__init__.py
index 753933ff..db96ca2c 100644
--- a/kvmd/apps/oled/__init__.py
+++ b/kvmd/apps/oled/__init__.py
@@ -31,12 +31,10 @@ import time
import usb.core
from luma.core import cmdline as luma_cmdline
-from luma.core.device import device as luma_device
-from luma.core.render import canvas as luma_canvas
-from PIL import Image
from PIL import ImageFont
+from .screen import Screen
from .sensors import Sensors
@@ -45,31 +43,6 @@ _logger = logging.getLogger("oled")
# =====
-class Screen:
- def __init__(
- self,
- device: luma_device,
- font: ImageFont.FreeTypeFont,
- font_spacing: int,
- offset: tuple[int, int],
- ) -> None:
-
- self.__device = device
- self.__font = font
- self.__font_spacing = font_spacing
- self.__offset = offset
-
- def draw_text(self, text: str, offset_x: int=0) -> None:
- with luma_canvas(self.__device) as draw:
- offset = list(self.__offset)
- offset[0] += offset_x
- draw.multiline_text(offset, text, font=self.__font, spacing=self.__font_spacing, fill="white")
-
- def draw_image(self, image_path: str) -> None:
- with luma_canvas(self.__device) as draw:
- draw.bitmap(self.__offset, Image.open(image_path).convert("1"), fill="white")
-
-
def _detect_geometry() -> dict:
with open("/proc/device-tree/model") as file:
is_cm4 = ("Compute Module 4" in file.read())
diff --git a/kvmd/apps/oled/screen.py b/kvmd/apps/oled/screen.py
new file mode 100644
index 00000000..0e3301bb
--- /dev/null
+++ b/kvmd/apps/oled/screen.py
@@ -0,0 +1,54 @@
+#!/usr/bin/env python3
+# ========================================================================== #
+# #
+# KVMD-OLED - A small OLED daemon for PiKVM. #
+# #
+# Copyright (C) 2018-2024 Maxim Devaev <[email protected]> #
+# #
+# This program is free software: you can redistribute it and/or modify #
+# it under the terms of the GNU General Public License as published by #
+# the Free Software Foundation, either version 3 of the License, or #
+# (at your option) any later version. #
+# #
+# This program is distributed in the hope that it will be useful, #
+# but WITHOUT ANY WARRANTY; without even the implied warranty of #
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
+# GNU General Public License for more details. #
+# #
+# You should have received a copy of the GNU General Public License #
+# along with this program. If not, see <https://www.gnu.org/licenses/>. #
+# #
+# ========================================================================== #
+
+
+from luma.core.device import device as luma_device
+from luma.core.render import canvas as luma_canvas
+
+from PIL import Image
+from PIL import ImageFont
+
+
+# =====
+class Screen:
+ def __init__(
+ self,
+ device: luma_device,
+ font: ImageFont.FreeTypeFont,
+ font_spacing: int,
+ offset: tuple[int, int],
+ ) -> None:
+
+ self.__device = device
+ self.__font = font
+ self.__font_spacing = font_spacing
+ self.__offset = offset
+
+ def draw_text(self, text: str, offset_x: int=0) -> None:
+ with luma_canvas(self.__device) as draw:
+ offset = list(self.__offset)
+ offset[0] += offset_x
+ draw.multiline_text(offset, text, font=self.__font, spacing=self.__font_spacing, fill="white")
+
+ def draw_image(self, image_path: str) -> None:
+ with luma_canvas(self.__device) as draw:
+ draw.bitmap(self.__offset, Image.open(image_path).convert("1"), fill="white")