lcdproc / lcdproc

Client/server suite for controlling a wide variety of LCD devices
http://lcdproc.org/
GNU General Public License v2.0
104 stars 86 forks source link

G15 driver #208

Open 5h4rk1337 opened 7 months ago

5h4rk1337 commented 7 months ago

Hi there, how can I make lcdproc work with my Logitech G15? I would love to see if my G15 would work with lcdproc. My goal is it, to have a system monitor on the LCD. The G15Daemon gives me just a clock.

OS: Pop 22.04 jammy Kernel: x86_64 Linux 6.5.6-76060506-generic

When I run ./configure --enable-drivers=all it says: checking for g15daemon_client.h... no configure: WARNING: libg15daemon_client.h not found, the g15 driver will lack g15daemon support checking for libg15render.h... no configure: WARNING: The g15driver needs libg15render.h

Found the Source Code of libg15render somewhere in the internet and uploaded it to GitHub. https://github.com/5h4rk1337/libg15render/tree/main

Thank you for your support <3

ancoron commented 6 months ago

@5h4rk1337 I went through the same issue at first and ended up with the following:

  1. git clone G15 tools from here: https://github.com/mike-petersen/g15tools/
  2. build and install libg15
  3. build and install libg15render (required a small patch for me)
  4. build and install LCDproc

I am on Arch Linux and package for the G15 render library simply misses the required g15font struct and a bunch of other functions used by LCDproc:

...which is based on:

Building the libg15 from g15tools was straight forward for me:

./bootstrap
./configure
make
sudo make install

Building the libg15render from g15tools required a bit more effort. First patch the configure.in:

diff --git a/libg15render/configure.in b/libg15render/configure.in
index 0f55d3b..8a989e6 100644
--- a/libg15render/configure.in
+++ b/libg15render/configure.in
@@ -17,8 +17,8 @@ AC_MSG_CHECKING(whether to enable FreeType2 support)
 AC_ARG_ENABLE(ttf, [  --enable-ttf             enable FreeType2 support],
        if [[[ "$enableval" = "yes" ]]]; then
                AC_DEFINE(TTF_SUPPORT, [1], [Define to 1 to enable FreeType2 support])
-               CFLAGS="$CFLAGS `freetype-config --cflags`"
-               FTLIB="-lfreetype"
+               CFLAGS="$CFLAGS `pkgconf --cflags freetype2`"
+               FTLIB="`pkgconf --libs freetype2`"
                ttf_support="yes"
        else
                ttf_support="no"

...then you can build and install:

./bootstrap
./configure --enable-ttf --prefix=/usr/local
make
sudo make install

Please note that the --prefix here is required even if using the default, since otherwise the fonts directory will be set to NONE.

Now we can build LCDproc:

sh autogen.sh
LDFLAGS="-L/usr/local/lib" ./configure --enable-drivers=g15 --prefix=/usr/local
make
sudo make install

To make it all come together at runtime, we need to start the server like this:

LD_LIBRARY_PATH="/usr/local/lib:/usr/local/lib/lcdproc" /usr/local/sbin/LCDd -c /usr/local/etc/LCDd.conf -f

The main reasons are:

Also make sure to configure the server:

--- LCDd.conf   2023-12-29 10:29:43.548527007 +0100
+++ /usr/local/etc/LCDd.conf    2023-12-29 13:19:55.314250138 +0100
@@ -34,7 +34,7 @@
 #            the driver modules and will thus not be able to
 #            function properly.
 # NOTE: Always place a slash as last character !
-DriverPath=server/drivers/
+DriverPath=

 # Tells the server to load the given drivers. Multiple lines can be given.
 # The name of the driver is case sensitive and determines the section
@@ -51,7 +51,7 @@
 #   Olimex_MOD_LCD1x9, picolcd, pyramid, rawserial, sdeclcd, sed1330,
 #   sed1520, serialPOS, serialVFD, shuttleVFD, sli, stv5730, svga, t6963,
 #   text, tyan, ula200, vlsys_m428, xosd, yard2LCD
-Driver=curses
+Driver=g15

 # Tells the driver to bind to the given interface. [default: 127.0.0.1]
 Bind=127.0.0.1