mirror of
https://github.com/javalsai/lidm.git
synced 2025-09-01 02:47:59 +02:00
Compare commits
7 Commits
v1.2.1
...
2574ef4ac0
Author | SHA1 | Date | |
---|---|---|---|
2574ef4ac0 | |||
689c962cc9
|
|||
be6e039a9b
|
|||
6cac2f91ed
|
|||
ee244be195
|
|||
b580b6917b
|
|||
22c75a37e1
|
4
Makefile
4
Makefile
@@ -10,7 +10,9 @@ PREFIX=/usr
|
|||||||
|
|
||||||
CC?=gcc
|
CC?=gcc
|
||||||
CFLAGS?=-O3 -Wall
|
CFLAGS?=-O3 -Wall
|
||||||
ALLFLAGS=$(CFLAGS) -I$(IDIR)
|
# C PreProcessor flags, not C Plus Plus
|
||||||
|
CPPFLAGS?=
|
||||||
|
ALLFLAGS=$(CFLAGS) $(CPPFLAGS) -I$(IDIR)
|
||||||
|
|
||||||
LIBS=-lpam
|
LIBS=-lpam
|
||||||
|
|
||||||
|
@@ -1,5 +0,0 @@
|
|||||||
BAUD_RATE=38400
|
|
||||||
TERM_NAME=linux
|
|
||||||
|
|
||||||
TTY=tty7
|
|
||||||
EXEC_PATH=/bin/lidm
|
|
@@ -1,5 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
[ -r conf ] && . ./conf
|
|
||||||
|
|
||||||
exec utmpset -w $TTY
|
|
@@ -1,15 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
[ -r conf ] && . ./conf
|
|
||||||
|
|
||||||
if [ -x /sbin/getty -o -x /bin/getty ]; then
|
|
||||||
# busybox
|
|
||||||
GETTY=getty
|
|
||||||
elif [ -x /sbin/agetty -o -x /bin/agetty ]; then
|
|
||||||
# util-linux
|
|
||||||
GETTY=agetty
|
|
||||||
fi
|
|
||||||
|
|
||||||
exec setsid ${GETTY} ${GETTY_ARGS} \
|
|
||||||
"${TTY}" "${TERM_NAME}" \
|
|
||||||
-n -l "${EXEC_PATH}" -o 7
|
|
24
assets/pkg/nix/lidm.nix
Normal file
24
assets/pkg/nix/lidm.nix
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
{ config, pkgs, lib, ...}: pkgs.stdenv.mkDerivation rec {
|
||||||
|
pname = "lidm";
|
||||||
|
version = config.version;
|
||||||
|
src = config.src;
|
||||||
|
|
||||||
|
nativeBuildInputs = with pkgs; [
|
||||||
|
gcc
|
||||||
|
gnumake
|
||||||
|
linux-pam
|
||||||
|
];
|
||||||
|
|
||||||
|
makeFlags = [
|
||||||
|
"DESTDIR=$(out)"
|
||||||
|
"PREFIX="
|
||||||
|
]
|
||||||
|
++ lib.optional (config.xsessions != null)
|
||||||
|
"CPPFLAGS+=-DSESSIONS_XSESSIONS=\\\"${config.xsessions}\\\""
|
||||||
|
++ lib.optional (config.wayland-sessions != null)
|
||||||
|
"CPPFLAGS+=-DSESSIONS_WAYLAND=\\\"${config.wayland-sessions}\\\"";
|
||||||
|
|
||||||
|
fixupPhase = ''
|
||||||
|
rm -rf $out/etc
|
||||||
|
'';
|
||||||
|
}
|
47
assets/pkg/nix/module.nix
Normal file
47
assets/pkg/nix/module.nix
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
|
let
|
||||||
|
dmcfg = config.services.displayManager;
|
||||||
|
desktops = dmcfg.sessionData.desktops;
|
||||||
|
|
||||||
|
version = "1.2.1";
|
||||||
|
lidmPkg = pkgs.callPackage ./lidm.nix {
|
||||||
|
inherit pkgs;
|
||||||
|
config = {
|
||||||
|
inherit version lib;
|
||||||
|
src = pkgs.fetchFromGitHub {
|
||||||
|
owner = "javalsai";
|
||||||
|
repo = "lidm";
|
||||||
|
rev = "v${version}";
|
||||||
|
sha256 = "sha256-3CgUI8PUs4c1bfBrykPw87SSa4lzrh4E4Hug7cGRKFk=";
|
||||||
|
};
|
||||||
|
|
||||||
|
xsessions = "${desktops}/share/xsessions";
|
||||||
|
wayland-sessions = "${desktops}/share/wayland-sessions";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
in
|
||||||
|
{
|
||||||
|
config = {
|
||||||
|
services.displayManager.defaultSession = "lidm";
|
||||||
|
|
||||||
|
systemd.services.lidm = {
|
||||||
|
description = "TUI display manager";
|
||||||
|
aliases = [ "display-manager.service" ];
|
||||||
|
after = [
|
||||||
|
"systemd-user-sessions.service"
|
||||||
|
"plymouth-quit-wait.service"
|
||||||
|
];
|
||||||
|
serviceConfig = {
|
||||||
|
Type = "idle";
|
||||||
|
ExecStart = "${lidmPkg}/bin/lidm 7";
|
||||||
|
StandardInput = "tty";
|
||||||
|
StandardOutput = "tty";
|
||||||
|
StandardError = "tty";
|
||||||
|
TTYPath = "/dev/tty7";
|
||||||
|
TTYReset = "yes";
|
||||||
|
TTYVHangup = "yes";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
@@ -5,9 +5,9 @@ After=systemd-user-sessions.service plymouth-quit-wait.service
|
|||||||
[Service]
|
[Service]
|
||||||
Type=idle
|
Type=idle
|
||||||
ExecStart=/usr/bin/lidm 7
|
ExecStart=/usr/bin/lidm 7
|
||||||
StandardError=journal
|
|
||||||
StandardInput=tty
|
StandardInput=tty
|
||||||
StandardOutput=tty
|
StandardOutput=tty
|
||||||
|
StandardError=tty
|
||||||
TTYPath=/dev/tty7
|
TTYPath=/dev/tty7
|
||||||
TTYReset=yes
|
TTYReset=yes
|
||||||
TTYVHangup=yes
|
TTYVHangup=yes
|
||||||
|
42
flake.nix
42
flake.nix
@@ -1,8 +1,11 @@
|
|||||||
{
|
{
|
||||||
|
description = "A ✨fully✨ colorful customizable TUI display manager made in C for simplicity.";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
flake-utils.url = "github:numtide/flake-utils";
|
flake-utils.url = "github:numtide/flake-utils";
|
||||||
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs =
|
outputs =
|
||||||
{ flake-utils, nixpkgs, ... }:
|
{ flake-utils, nixpkgs, ... }:
|
||||||
flake-utils.lib.eachDefaultSystem (
|
flake-utils.lib.eachDefaultSystem (
|
||||||
@@ -11,36 +14,27 @@
|
|||||||
pkgs = import nixpkgs { inherit system; };
|
pkgs = import nixpkgs { inherit system; };
|
||||||
|
|
||||||
name = "lidm";
|
name = "lidm";
|
||||||
version = "0.0.2";
|
version = builtins.elemAt (
|
||||||
|
builtins.match "VERSION[[:blank:]]*=[[:space:]]*([^\n]*)\n.*" (builtins.readFile ./Makefile)
|
||||||
lidm = (
|
) 0;
|
||||||
pkgs.stdenv.mkDerivation {
|
|
||||||
pname = name;
|
|
||||||
version = version;
|
|
||||||
|
|
||||||
|
lidm = pkgs.callPackage assets/pkg/nix/lidm.nix {
|
||||||
|
inherit pkgs;
|
||||||
|
lib = pkgs.lib;
|
||||||
|
config = {
|
||||||
|
inherit version;
|
||||||
src = ./.;
|
src = ./.;
|
||||||
|
xsessions = null;
|
||||||
nativeBuildInputs = with pkgs; [
|
wayland-sessions = null;
|
||||||
gcc
|
};
|
||||||
gnumake
|
};
|
||||||
linux-pam
|
|
||||||
];
|
|
||||||
|
|
||||||
makeFlags = [
|
|
||||||
"DESTDIR=$(out)"
|
|
||||||
"PREFIX="
|
|
||||||
];
|
|
||||||
|
|
||||||
fixupPhase = ''
|
|
||||||
rm -rf $out/etc
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
);
|
|
||||||
in
|
in
|
||||||
rec {
|
rec {
|
||||||
defaultApp = flake-utils.lib.mkApp { drv = defaultPackage; };
|
defaultApp = flake-utils.lib.mkApp { drv = defaultPackage; };
|
||||||
defaultPackage = lidm;
|
defaultPackage = lidm;
|
||||||
devShell = pkgs.mkShell { buildInputs = lidm.nativeBuildInputs ++ [ pkgs.clang-tools ]; };
|
devShell = pkgs.mkShell { buildInputs = lidm.nativeBuildInputs ++ [ pkgs.clang-tools ]; };
|
||||||
}
|
}
|
||||||
);
|
) // {
|
||||||
|
nixosModules.lidm = assets/pkg/nix/module.nix;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,11 @@
|
|||||||
#ifndef MACROSH_
|
#ifndef MACROSH_
|
||||||
#define MACROSH_
|
#define MACROSH_
|
||||||
|
|
||||||
|
// More like constants but I'm not making yet another header file just for this
|
||||||
|
#ifndef LIDM_CONF_PATH
|
||||||
|
#define LIDM_CONF_PATH "/etc/lidm.ini"
|
||||||
|
#endif
|
||||||
|
|
||||||
// Do we just replace the compiler with clang??
|
// Do we just replace the compiler with clang??
|
||||||
#if defined(__clang__)
|
#if defined(__clang__)
|
||||||
#define NULLABLE _Nullable
|
#define NULLABLE _Nullable
|
||||||
|
11
src/config.c
11
src/config.c
@@ -12,6 +12,7 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include "desktop.h"
|
#include "desktop.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
|
#include "macros.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
|
||||||
#define UPPER_HALF_BYTE 4
|
#define UPPER_HALF_BYTE 4
|
||||||
@@ -240,12 +241,10 @@ struct status config_line_handler(void* _config, char* table, char* k,
|
|||||||
int parse_config(struct config* NNULLABLE config, char* NNULLABLE path) {
|
int parse_config(struct config* NNULLABLE config, char* NNULLABLE path) {
|
||||||
FILE* fd = fopen(path, "r");
|
FILE* fd = fopen(path, "r");
|
||||||
if (fd == NULL) {
|
if (fd == NULL) {
|
||||||
perror("fopen");
|
log_perror("fopen");
|
||||||
(void)fputs(
|
log_printf(" [I] No config, place one at " LIDM_CONF_PATH
|
||||||
"Please place a config file at /etc/lidm.ini or set the LIDM_CONF "
|
" or set the LIDM_CONF env variable");
|
||||||
"env variable",
|
return 0; // Its fine now anyways
|
||||||
stderr);
|
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ret = read_desktop(fd, config, config_line_handler);
|
bool ret = read_desktop(fd, config, config_line_handler);
|
||||||
|
@@ -72,9 +72,10 @@ int main(int argc, char* argv[]) {
|
|||||||
chvt_str(argv[1]);
|
chvt_str(argv[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Copy
|
||||||
struct config config = DEFAULT_CONFIG;
|
struct config config = DEFAULT_CONFIG;
|
||||||
char* conf_override = getenv("LIDM_CONF");
|
char* conf_override = getenv("LIDM_CONF");
|
||||||
char* conf_path = conf_override ? conf_override : "/etc/lidm.ini";
|
char* conf_path = conf_override ? conf_override : LIDM_CONF_PATH;
|
||||||
if (parse_config(&config, conf_path) != 0) {
|
if (parse_config(&config, conf_path) != 0) {
|
||||||
(void)fputs("error parsing config\n", stderr);
|
(void)fputs("error parsing config\n", stderr);
|
||||||
return 1;
|
return 1;
|
||||||
|
@@ -16,9 +16,16 @@ struct source_dir {
|
|||||||
enum session_type type;
|
enum session_type type;
|
||||||
char* dir;
|
char* dir;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifndef SESSIONS_XSESSIONS
|
||||||
|
#define SESSIONS_XSESSIONS "/usr/share/xsessions"
|
||||||
|
#endif
|
||||||
|
#ifndef SESSIONS_WAYLAND
|
||||||
|
#define SESSIONS_WAYLAND "/usr/share/wayland-sessions"
|
||||||
|
#endif
|
||||||
static const struct source_dir SOURCES[] = {
|
static const struct source_dir SOURCES[] = {
|
||||||
{XORG, "/usr/share/xsessions"},
|
{XORG, SESSIONS_XSESSIONS},
|
||||||
{WAYLAND, "/usr/share/wayland-sessions"},
|
{WAYLAND, SESSIONS_WAYLAND},
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct Vector* cb_sessions = NULL;
|
static struct Vector* cb_sessions = NULL;
|
||||||
|
Reference in New Issue
Block a user