From 2f6a6b764f71902f371cf27b5d08b258e1046719 Mon Sep 17 00:00:00 2001 From: NishiOwO Date: Sun, 16 Nov 2025 12:09:04 +0900 Subject: [PATCH] can load image now --- mdm/config.c | 16 ++++++++++++++++ mdm/login.c | 4 ++++ mdm/main.c | 11 ++--------- mdm/mdm.h | 18 ++++++++++++++++++ mdm/mdmrc.in | 2 +- mdm/pam | 5 +++++ mdm/xserver.c | 9 --------- 7 files changed, 46 insertions(+), 19 deletions(-) create mode 100644 mdm/pam diff --git a/mdm/config.c b/mdm/config.c index 21782b0..eed9d22 100644 --- a/mdm/config.c +++ b/mdm/config.c @@ -1 +1,17 @@ #include "mdm.h" + +#include + +char* config_picture = NULL; + +static int dumper(void* user, const char* section, const char* name, const char* value){ + if(strcmp(section, "MDM Config") != 0) return 1; + + if(strcmp(name, "Picture") == 0) config_picture = MDEStringDuplicate(value); + + return 1; +} + +void parse_config(void){ + ini_parse(CONFDIR "/mdm/mdmrc", dumper, NULL); +} diff --git a/mdm/login.c b/mdm/login.c index f8eb3d1..1162123 100644 --- a/mdm/login.c +++ b/mdm/login.c @@ -4,6 +4,7 @@ void login_window(void){ MwWidget window, pic, userlabel, usercombo, passlabel, passentry, mainsep, sesslabel, sesscombo, fieldsep, shutdown, reboot, ok; + MwLLPixmap p; MwLibraryInit(); @@ -11,6 +12,7 @@ void login_window(void){ MwNhasBorder, 1, MwNinverted, 0, NULL); + p = config_picture == NULL ? NULL : MwLoadImage(window, config_picture); pic = MwVaCreateWidget(MwImageClass, "image", window, 10, 10, 80, 137, MwNhasBorder, 1, NULL); @@ -44,5 +46,7 @@ void login_window(void){ MwNtext, "OK", NULL); + if(p != NULL) MwVaApply(pic, MwNpixmap, p, NULL); + MwLoop(window); } diff --git a/mdm/main.c b/mdm/main.c index 62b0e53..3aeeeac 100644 --- a/mdm/main.c +++ b/mdm/main.c @@ -1,14 +1,5 @@ #include "mdm.h" -#include "config.h" - -#include - -#include -#include -#include -#include - int is_launch_x = 1; int main(int argc, char** argv){ @@ -28,6 +19,8 @@ int main(int argc, char** argv){ if(access(CONFDIR "/mdm", F_OK) != 0) mkdir(CONFDIR "/mdm", 0755); if(access(CONFDIR "/mdm/mdmrc", F_OK) != 0) MDEFileCopy(DATADIR "/examples/mdm/mdmrc", CONFDIR "/mdm/mdmrc"); + parse_config(); + if(is_launch_x){ if((st = launch_x()) != 0) return st; } diff --git a/mdm/mdm.h b/mdm/mdm.h index 72d543a..74b7771 100644 --- a/mdm/mdm.h +++ b/mdm/mdm.h @@ -1,6 +1,19 @@ #ifndef __MDM_H__ #define __MDM_H__ +#include "config.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + /* xserver.c */ int launch_x(void); int x_width(void); @@ -10,4 +23,9 @@ void init_x(void); /* login.c */ void login_window(void); +/* config.c */ +extern char* config_picture; + +void parse_config(void); + #endif diff --git a/mdm/mdmrc.in b/mdm/mdmrc.in index 17deeb5..dd1e3fe 100644 --- a/mdm/mdmrc.in +++ b/mdm/mdmrc.in @@ -1,2 +1,2 @@ -[MDM Entry] +[MDM Config] Picture=@CMAKE_INSTALL_FULL_DATAROOTDIR@/mdm/mdm.png diff --git a/mdm/pam b/mdm/pam new file mode 100644 index 0000000..e21bb83 --- /dev/null +++ b/mdm/pam @@ -0,0 +1,5 @@ +auth required pam_unix.so +auth required pam_nologin.so +account required pam_unix.so +password required pam_unix.so +session required pam_unix.so diff --git a/mdm/xserver.c b/mdm/xserver.c index 1bef1b0..62621d6 100644 --- a/mdm/xserver.c +++ b/mdm/xserver.c @@ -2,15 +2,6 @@ #include -#include -#include -#include -#include -#include -#include -#include -#include - static pid_t x_server; static int got_usr1; static Display* display;