{"id":13439140,"url":"https://github.com/spanezz/nodm","last_synced_at":"2025-03-20T07:32:11.000Z","repository":{"id":56026615,"uuid":"52673220","full_name":"spanezz/nodm","owner":"spanezz","description":"Automatic display manager","archived":false,"fork":false,"pushed_at":"2019-12-09T16:07:21.000Z","size":298,"stargazers_count":141,"open_issues_count":17,"forks_count":21,"subscribers_count":8,"default_branch":"master","last_synced_at":"2024-10-28T01:11:54.028Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spanezz.png","metadata":{"files":{"readme":"README.md","changelog":"ChangeLog","contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-02-27T15:27:40.000Z","updated_at":"2024-10-01T20:52:58.000Z","dependencies_parsed_at":"2022-08-15T11:40:40.627Z","dependency_job_id":null,"html_url":"https://github.com/spanezz/nodm","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spanezz%2Fnodm","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spanezz%2Fnodm/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spanezz%2Fnodm/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spanezz%2Fnodm/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spanezz","download_url":"https://codeload.github.com/spanezz/nodm/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244570881,"owners_count":20474141,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T03:01:11.474Z","updated_at":"2025-03-20T07:32:05.990Z","avatar_url":"https://github.com/spanezz.png","language":"C","funding_links":[],"categories":["C","Display manager"],"sub_categories":["Console"],"readme":"# THIS REPOSITORY IS NOT MAINTAINED\n\nI do not use nodm anymore. I do not maintain nodm anymore.\n\nTo be really functional, nodm needs to be refactored to properly be a display\nmanager with all that it requires in 2019 to be one. It currently does not make\nany effort to do so, and will break in obscure way as a result.\n\nNobody should really need nodm anymore: [lightdm's autologin now does the right\nthing out of the box](https://www.enricozini.org/blog/2019/himblick/x-autologin/):\nplease use that.\n\nIf you are really attached to nodm, please consider maintaining it instead:\nfork it, remove this section from the README, and turn it into a well done\nreference implementation of a display manager without a GUI, that integrates\nwell with modern setups like lightdm does. I would applaud you for that!\n\n\n# nodm\n\nnodm is a minimal display manager that simply logs in as a given user and\nstarts an X session, without asking for username or password.\n\nOn a normal computer, using nodm is a big security issue because it would give\nanyone access to the computer.\n\nHowever, there are cases where automatic login is needed: for example in an\nembedded system such as a mobile phone, or in a kiosk setup, or in a control\npanel for industrial machinery.  For those cases, nodm is simple to setup,\nlightweight, and it should do exactly the right thing.\n\n\n## Features\n\nnodm is as small as it could be, and tries to provide the minimum amount of\nfeatures needed to do a good job, following as much as possible the principle\nof least surprise.  This is what is offered:\n\n - Automatic login with a fixed user, doing all that needs to be done like\n   setting up the session via PAM, updating lastlog, logging to syslog.\n - nodm performs VT allocation, looking for a free virtual terminal in which to\n   run X and keeping it allocated across X restarts.\n - X is started (by default, /usr/bin/X)\n - once the X esrver is ready to accept connections, the X session is set up:\n    - the DISPLAY and WINDOWPATH environment variables are set\n    - the session is wrapped in a PAM session, which sets up the user\n      environment\n    - ~/.xsession-error is truncated if it exists\n - The session script is run (by default, /etc/X11/Xsession) using \"sh -l\"\n - If the X server or the X session exit, the other is killed and then both are\n   restarted.\n - If a session exits too soon, nodm will wait a bit before restarting.  The\n   waiting times go as follow:\n    - The first time the session exits too soon, restart immediately\n    - The second and third time, wait 30 seconds\n    - All remaining times, wait 1 minute.\n   Once a session lasts long enough, the waiting time goes back to zero.\n\nnodm does NOT currently fork and run in the background like a proper daemon:\nmost distributions have tools that do that, and nodm plays just fine with them.\nThis is not a particular design choice: quite simply, so far no one has felt\nthe need to implement it.\n\n\n## Configuration\n\nConfiguration is made via these environment variables:\n\n * `NODM_USER`:\n    Controls the user that is used to automatically log in.\n * `NODM_X_OPTIONS`:\n    X server command line (for example: \"vt7 -nolisten tcp\").\n    It is expanded using wordexp, with tilde expansion, variable substitution,\n    arithmetic expansion, wildcard expansion and quote removal, but no command\n    substitution. If command substitution is needed, please get in touch\n    providing a real-life use case for it.\n\n    If the first optiom starts with '/' or '.', it is used as the X server, else\n    \"X\" is used as the server.\n\n    If the second option (or the first if the first was not recognised as a path\n    to the X server) looks like \":\u003cNUMBER\u003e\", it is used as the display name, else\n    \":0\" is used.\n\n    If the command line contains a \"vt\u003cN\u003e\" virtual terminal indicator, automatic\n    VT allocation is switched off. Otherwise, the appropriate vt\u003cN\u003e option is\n    appended to the X command line according to the virtual terminal that has\n    been allocated.\n * `NODM_MIN_SESSION_TIME`:\n    Minimum time (in seconds) that a session should last in order for nodm to\n    decide that it has not quit too soon. If an X session runs for less than\n    this time, nodm will wait an increasing amount of time before restarting it\n    (default: 60).\n * `NODM_XSESSION`:\n    X session command (default: /etc/X11/Xsession). It is run using the shell, so\n    it can be any shell command.\n * `NODM_XINIT`\n    Was used by older versions of nodm as the path to the xinit program, but it\n    is now ignored.\n * `NODM_X_TIMEOUT`\n    Timeout (in seconds) to wait for X to be ready to accept connections. If X is\n    not ready before this timeout, it is killed and restarted.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspanezz%2Fnodm","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspanezz%2Fnodm","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspanezz%2Fnodm/lists"}