{"id":15393558,"url":"https://github.com/daurnimator/lua-systemd","last_synced_at":"2025-08-01T03:06:33.055Z","repository":{"id":19337791,"uuid":"22576691","full_name":"daurnimator/lua-systemd","owner":"daurnimator","description":"Systemd bindings for Lua","archived":false,"fork":false,"pushed_at":"2016-05-17T14:05:38.000Z","size":169,"stargazers_count":41,"open_issues_count":2,"forks_count":7,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-15T23:55:53.619Z","etag":null,"topics":["dbus","lua","systemd"],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/daurnimator.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-08-03T14:40:00.000Z","updated_at":"2024-12-15T06:59:31.000Z","dependencies_parsed_at":"2022-08-28T03:21:34.766Z","dependency_job_id":null,"html_url":"https://github.com/daurnimator/lua-systemd","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/daurnimator/lua-systemd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daurnimator%2Flua-systemd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daurnimator%2Flua-systemd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daurnimator%2Flua-systemd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daurnimator%2Flua-systemd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/daurnimator","download_url":"https://codeload.github.com/daurnimator/lua-systemd/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/daurnimator%2Flua-systemd/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268162390,"owners_count":24205701,"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","status":"online","status_checked_at":"2025-08-01T02:00:08.611Z","response_time":67,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["dbus","lua","systemd"],"created_at":"2024-10-01T15:19:39.031Z","updated_at":"2025-08-01T03:06:33.023Z","avatar_url":"https://github.com/daurnimator.png","language":"C","readme":"# [Systemd](http://freedesktop.org/wiki/Software/systemd/) for Lua.\n\nThis library is for working with systemd from scripts and daemons written in Lua.\n\nWhere necessary, the low level `libsystemd` functions have been bound in C.\nHigher level functions with more idiomatic lua semantics are written in Lua on top of these C primitives.\n\nCompatible with Lua 5.1, 5.2 and 5.3 (thanks [compat-5.3](https://github.com/keplerproject/lua-compat-5.3)).\n\n\n# Status\n\nWaiting for API to stabilise before making an initial release.\n\n\n## Todo\n\n  - [x] [Notify](http://www.freedesktop.org/software/systemd/man/sd_notify.html) - Notify service manager about start-up completion and other daemon status changes\n  - [x] [ID128](http://www.freedesktop.org/software/systemd/man/sd-id128.html) - APIs for processing 128-bit IDs\n  - [x] [Journal](http://www.freedesktop.org/software/systemd/man/sd-journal.html)\n\t  - [x] [Journal Writing](http://www.freedesktop.org/software/systemd/man/sd_journal_sendv.html)\n\t  - [x] [Journal Reading](http://www.freedesktop.org/software/systemd/man/sd_journal_next.html)\n\t  - [x] [Journal Change Notification](http://www.freedesktop.org/software/systemd/man/sd_journal_get_fd.html)\n  - [x] [Login](http://www.freedesktop.org/software/systemd/man/sd-login.html)\n\t  - [x] [PID/Peer Information](http://www.freedesktop.org/software/systemd/man/sd_pid_get_session.html)\n\t  - [x] [User State](http://www.freedesktop.org/software/systemd/man/sd_uid_get_state.html)\n\t  - [x] [Session Information](http://www.freedesktop.org/software/systemd/man/sd_session_is_active.html)\n\t  - [x] [Seat Information](http://www.freedesktop.org/software/systemd/man/sd_seat_get_active.html)\n\t  - [x] [Login Monitoring](http://www.freedesktop.org/software/systemd/man/sd_login_monitor.html) - Monitor login sessions, seats, users and virtual machines/containers\n  - [ ] Unit Control - Requires use of [dbus API](http://www.freedesktop.org/wiki/Software/systemd/dbus/)\n\n\n# Installation\n\nlua-systemd is on luarocks: https://luarocks.org/modules/daurnimator/systemd\n\nInstall via luarocks: `luarocks install --server=http://luarocks.org/manifests/daurnimator systemd`\n\n\n# Usage\n\n## Bound from C\n\nAll functions return `nil, error_message [, errno]` in case of error.\n\n C                                                                                                                                       | Lua                                      | Comments\n-----------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------|----------------------------------------\n[`SD_LISTEN_FDS_START`](http://www.freedesktop.org/software/systemd/man/SD_LISTEN_FDS_START.html)                                        | `systemd.daemon.LISTEN_FDS_START`        |\n[`sd_notify()`](http://www.freedesktop.org/software/systemd/man/sd_notify.html)                                                          | `systemd.daemon.notify()`                |\n[`sd_pid_notify()`](http://www.freedesktop.org/software/systemd/man/sd_pid_notify.html)                                                  | `systemd.daemon.pid_notify()`            |\n[`sd_pid_notify_with_fds()`](http://www.freedesktop.org/software/systemd/man/sd_pid_notify_with_fds.html)                                | `systemd.daemon.pid_notify_with_fds()`   |\n[`sd_booted()`](http://www.freedesktop.org/software/systemd/man/sd_booted.html)                                                          | `systemd.daemon.booted()`                |\n[`sd_listen_fds()`](http://www.freedesktop.org/software/systemd/man/sd_listen_fds.html)                                                  | `systemd.daemon.listen_fds()`            |\n[`sd_journal_sendv()`](http://www.freedesktop.org/software/systemd/man/sd_journal_sendv.html)                                            | `systemd.journal.sendv()`                |\n[`sd_journal_perror()`](http://www.freedesktop.org/software/systemd/man/sd_journal_perror.html)                                          | `systemd.journal.perror()`               |\n[`sd_journal_stream_fd()`](http://www.freedesktop.org/software/systemd/man/sd_journal_stream_fd.html)                                    | `systemd.journal.stream_fd()`            | On success, returns a Lua `file` object instead of raw file descriptor\n[`SD_JOURNAL_LOCAL_ONLY`](http://www.freedesktop.org/software/systemd/man/SD_JOURNAL_LOCAL_ONLY.html)                                    | `systemd.journal.OPEN.LOCAL_ONLY`        |\n[`SD_JOURNAL_RUNTIME_ONLY`](http://www.freedesktop.org/software/systemd/man/SD_JOURNAL_RUNTIME_ONLY.html)                                | `systemd.journal.OPEN.RUNTIME_ONLY`      |\n[`SD_JOURNAL_SYSTEM`](http://www.freedesktop.org/software/systemd/man/SD_JOURNAL_SYSTEM.html)                                            | `systemd.journal.OPEN.SYSTEM`            |\n[`SD_JOURNAL_CURRENT_USER`](http://www.freedesktop.org/software/systemd/man/SD_JOURNAL_CURRENT_USER.html)                                | `systemd.journal.OPEN.CURRENT_USER`      |\n[`sd_journal_open()`](http://www.freedesktop.org/software/systemd/man/sd_journal_open.html)                                              | `systemd.journal.open()`                 |\n[`sd_journal_open_directory()`](http://www.freedesktop.org/software/systemd/man/sd_journal_open_directory.html)                          | `systemd.journal.open_directory()`       |\n[`sd_journal_open_files()`](http://www.freedesktop.org/software/systemd/man/sd_journal_open_files.html)                                  | `systemd.journal.open_files()`           |\n[`sd_journal_open_container()`](http://www.freedesktop.org/software/systemd/man/sd_journal_open_container.html)                          | `systemd.journal.open_container()`       |\n[`sd_journal_close()`](http://www.freedesktop.org/software/systemd/man/sd_journal_close.html)                                            |                                          | Bound as `__gc` metamethod on journal objects\n[`sd_journal_get_cutoff_realtime_usec()`](http://www.freedesktop.org/software/systemd/man/sd_journal_get_cutoff_realtime_usec.html)      | `my_journal:get_cutoff_realtime_usec()`  |\n[`sd_journal_get_cutoff_monotonic_usec()`](http://www.freedesktop.org/software/systemd/man/sd_journal_get_cutoff_monotonic_usec.html)    | `my_journal:get_cutoff_monotonic_usec()` |\n[`sd_journal_get_usage()`](http://www.freedesktop.org/software/systemd/man/sd_journal_get_usage.html)                                    | `my_journal:get_usage()`                 |\n[`sd_journal_next()`](http://www.freedesktop.org/software/systemd/man/sd_journal_next.html)                                              | `my_journal:next()`                      |\n[`sd_journal_next_skip()`](http://www.freedesktop.org/software/systemd/man/sd_journal_next_skip.html)                                    | `my_journal:next_skip()`                 |\n[`sd_journal_previous()`](http://www.freedesktop.org/software/systemd/man/sd_journal_previous.html)                                      | `my_journal:previous()`                  |\n[`sd_journal_previous_skip()`](http://www.freedesktop.org/software/systemd/man/sd_journal_previous_skip.html)                            | `my_journal:previous_skip()`             |\n[`sd_journal_seek_head()`](http://www.freedesktop.org/software/systemd/man/sd_journal_seek_head.html)                                    | `my_journal:seek_head()`                 |\n[`sd_journal_seek_tail()`](http://www.freedesktop.org/software/systemd/man/sd_journal_seek_tail.html)                                    | `my_journal:seek_tail()`                 |\n[`sd_journal_seek_monotonic_usec()`](http://www.freedesktop.org/software/systemd/man/sd_journal_seek_monotonic_usec.html)                | `my_journal:seek_monotonic_usec()`       |\n[`sd_journal_seek_realtime_usec()`](http://www.freedesktop.org/software/systemd/man/sd_journal_seek_realtime_usec.html)                  | `my_journal:seek_realtime_usec()`        |\n[`sd_journal_seek_cursor()`](http://www.freedesktop.org/software/systemd/man/sd_journal_seek_cursor.html)                                | `my_journal:seek_cursor()`               |\n[`sd_journal_get_cursor()`](http://www.freedesktop.org/software/systemd/man/sd_journal_get_cursor.html)                                  | `my_journal:get_cursor()`                |\n[`sd_journal_test_cursor()`](http://www.freedesktop.org/software/systemd/man/sd_journal_test_cursor.html)                                | `my_journal:test_cursor()`               |\n[`sd_journal_get_realtime_usec()`](http://www.freedesktop.org/software/systemd/man/sd_journal_get_realtime_usec.html)                    | `my_journal:get_realtime_usec()`         |\n[`sd_journal_get_monotonic_usec()`](http://www.freedesktop.org/software/systemd/man/sd_journal_get_monotonic_usec.html)                  | `my_journal:get_monotonic_usec()`        |\n[`sd_journal_get_data()`](http://www.freedesktop.org/software/systemd/man/sd_journal_get_data.html)                                      | `my_journal:get_data()`                  |\n[`sd_journal_enumerate_data()`](http://www.freedesktop.org/software/systemd/man/sd_journal_enumerate_data.html)                          | `my_journal:enumerate_data()`            |\n[`sd_journal_restart_data()`](http://www.freedesktop.org/software/systemd/man/sd_journal_restart_data.html)                              | `my_journal:restart_data()`              |\n[`sd_journal_query_unique()`](http://www.freedesktop.org/software/systemd/man/sd_journal_query_unique.html)                              | `my_journal:query_unique()`              |\n[`sd_journal_enumerate_unique()`](http://www.freedesktop.org/software/systemd/man/sd_journal_enumerate_unique.html)                      | `my_journal:enumerate_unique()`          |\n[`sd_journal_restart_unique()`](http://www.freedesktop.org/software/systemd/man/sd_journal_restart_unique.html)                          | `my_journal:restart_unique()`            |\n[`sd_journal_set_data_threshold()`](http://www.freedesktop.org/software/systemd/man/sd_journal_set_data_threshold.html)                  | `my_journal:set_data_threshold()`        |\n[`sd_journal_get_data_threshold()`](http://www.freedesktop.org/software/systemd/man/sd_journal_get_data_threshold.html)                  | `my_journal:get_data_threshold()`        |\n[`sd_journal_add_match()`](http://www.freedesktop.org/software/systemd/man/sd_journal_add_match.html)                                    | `my_journal:add_match()`                 |\n[`sd_journal_add_disjunction()`](http://www.freedesktop.org/software/systemd/man/sd_journal_add_disjunction.html)                        | `my_journal:add_disjunction()`           |\n[`sd_journal_add_conjunction()`](http://www.freedesktop.org/software/systemd/man/sd_journal_add_conjunction.html)                        | `my_journal:add_conjunction()`           |\n[`sd_journal_flush_matches()`](http://www.freedesktop.org/software/systemd/man/sd_journal_flush_matches.html)                            | `my_journal:flush_matches()`             |\n[`SD_JOURNAL_NOP`](http://www.freedesktop.org/software/systemd/man/SD_JOURNAL_NOP.html)                                                  | `systemd.journal.WAKEUP.NOP`             |\n[`SD_JOURNAL_APPEND`](http://www.freedesktop.org/software/systemd/man/SD_JOURNAL_APPEND.html)                                            | `systemd.journal.WAKEUP.APPEND`          |\n[`SD_JOURNAL_INVALIDATE`](http://www.freedesktop.org/software/systemd/man/SD_JOURNAL_INVALIDATE.html)                                    | `systemd.journal.WAKEUP.INVALIDATE`      |\n[`sd_journal_get_fd()`](http://www.freedesktop.org/software/systemd/man/sd_journal_get_fd.html)                                          | `my_journal:get_fd()`                    |\n[`sd_journal_get_events()`](http://www.freedesktop.org/software/systemd/man/sd_journal_get_events.html)                                  | `my_journal:get_events()`                |\n[`sd_journal_get_timeout()`](http://www.freedesktop.org/software/systemd/man/sd_journal_get_timeout.html)                                | `my_journal:get_timeout()`               | Returns `false` if timeout isn't available, otherwise returns value in seconds\n[`sd_journal_process()`](http://www.freedesktop.org/software/systemd/man/sd_journal_process.html)                                        | `my_journal:process()`                   |\n[`sd_journal_wait()`](http://www.freedesktop.org/software/systemd/man/sd_journal_wait.html)                                              | `my_journal:wait()`                      | `timeout` is in seconds instead of microseconds\n[`sd_journal_reliable_fd()`](http://www.freedesktop.org/software/systemd/man/sd_journal_reliable_fd.html)                                | `my_journal:reliable_fd()`               |\n[`sd_id128_randomize()`](http://www.freedesktop.org/software/systemd/man/sd_id128_randomize.html)                                        | `systemd.id128.randomize()`              | Also available as `randomise` for any non-americans out there\n[`sd_id128_from_string()`](http://www.freedesktop.org/software/systemd/man/sd_id128_from_string.html)                                    | `systemd.id128.from_string()`            |\n[`sd_id128_get_machine()`](http://www.freedesktop.org/software/systemd/man/sd_id128_get_machine.html)                                    | `systemd.id128.get_machine()`            |\n[`sd_id128_get_boot()`](http://www.freedesktop.org/software/systemd/man/sd_id128_get_boot.html)                                          | `systemd.id128.get_boot()`               |\n[`sd_id128_to_string()`](http://www.freedesktop.org/software/systemd/man/sd_id128_to_string.html)                                        | `my_id128:to_string()`                   | Also available as `__tostring` metamethod: `tostring(my_id128_t)`\n[`sd_id128_equal()`](http://www.freedesktop.org/software/systemd/man/sd_id128_equal.html)                                                | `id128_a == id128_b`                     | Bound as `__eq` metamethod\n[`sd_journal_get_catalog_for_message_id()`](http://www.freedesktop.org/software/systemd/man/sd_journal_get_catalog_for_message_id.html)  | `my_id128:get_catalog()`                 |\n[`sd_get_seats()`](http://www.freedesktop.org/software/systemd/man/sd_get_seats.html)                                                    | `systemd.login.get_seats()`              |\n[`sd_get_sessions()`](http://www.freedesktop.org/software/systemd/man/sd_get_sessions.html)                                              | `systemd.login.get_sessions()`           |\n[`sd_get_uids()`](http://www.freedesktop.org/software/systemd/man/sd_get_uids.html)                                                      | `systemd.login.get_uids()`               |\n[`sd_get_machine_names()`](http://www.freedesktop.org/software/systemd/man/sd_get_machine_names.html)                                    | `systemd.login.get_machine_names()`      |\n[`sd_pid_get_session()`](http://www.freedesktop.org/software/systemd/man/sd_pid_get_session.html)                                        | `systemd.login.pid_get_session()`        |\n[`sd_pid_get_unit()`](http://www.freedesktop.org/software/systemd/man/sd_pid_get_unit.html)                                              | `systemd.login.pid_get_unit()`           |\n[`sd_pid_get_user_unit()`](http://www.freedesktop.org/software/systemd/man/sd_pid_get_user_unit.html)                                    | `systemd.login.pid_get_user_unit()`      |\n[`sd_pid_get_owner_uid()`](http://www.freedesktop.org/software/systemd/man/sd_pid_get_owner_uid.html)                                    | `systemd.login.pid_get_owner_uid()`      |\n[`sd_pid_get_machine_name()`](http://www.freedesktop.org/software/systemd/man/sd_pid_get_machine_name.html)                              | `systemd.login.pid_get_machine_name()`   |\n[`sd_pid_get_slice()`](http://www.freedesktop.org/software/systemd/man/sd_pid_get_slice.html)                                            | `systemd.login.pid_get_slice()`          |\n[`sd_pid_get_user_slice()`](http://www.freedesktop.org/software/systemd/man/sd_pid_get_user_slice.html)                                  | `systemd.login.pid_get_user_slice()`     |\n[`sd_peer_get_session()`](http://www.freedesktop.org/software/systemd/man/sd_peer_get_session.html)                                      | `systemd.login.peer_get_session()`       |\n[`sd_peer_get_unit()`](http://www.freedesktop.org/software/systemd/man/sd_peer_get_unit.html)                                            | `systemd.login.peer_get_unit()`          |\n[`sd_peer_get_user_unit()`](http://www.freedesktop.org/software/systemd/man/sd_peer_get_user_unit.html)                                  | `systemd.login.peer_get_user_unit()`     |\n[`sd_peer_get_owner_uid()`](http://www.freedesktop.org/software/systemd/man/sd_peer_get_owner_uid.html)                                  | `systemd.login.peer_get_owner_uid()`     |\n[`sd_peer_get_machine_name()`](http://www.freedesktop.org/software/systemd/man/sd_peer_get_machine_name.html)                            | `systemd.login.peer_get_machine_name()`  |\n[`sd_peer_get_slice()`](http://www.freedesktop.org/software/systemd/man/sd_peer_get_slice.html)                                          | `systemd.login.peer_get_slice()`         |\n[`sd_peer_get_user_slice()`](http://www.freedesktop.org/software/systemd/man/sd_peer_get_user_slice.html)                                | `systemd.login.peer_get_user_slice()`    |\n[`sd_uid_get_state()`](http://www.freedesktop.org/software/systemd/man/sd_uid_get_state.html)                                            | `systemd.login.uid_get_state()`          |\n[`sd_uid_is_on_seat()`](http://www.freedesktop.org/software/systemd/man/sd_uid_is_on_seat.html)                                          | `systemd.login.uid_is_on_seat()`         |\n[`sd_uid_get_sessions()`](http://www.freedesktop.org/software/systemd/man/sd_uid_get_sessions.html)                                      | `systemd.login.uid_get_sessions()`       |\n[`sd_uid_get_seats()`](http://www.freedesktop.org/software/systemd/man/sd_uid_get_seats.html)                                            | `systemd.login.uid_get_seats()`          |\n[`sd_uid_get_display()`](http://www.freedesktop.org/software/systemd/man/sd_uid_get_display.html)                                        | `systemd.login.uid_get_display()`        |\n[`sd_session_is_active()`](http://www.freedesktop.org/software/systemd/man/sd_session_is_active.html)                                    | `systemd.login.session_is_active()`      |\n[`sd_session_is_remote()`](http://www.freedesktop.org/software/systemd/man/sd_session_is_remote.html)                                    | `systemd.login.session_is_remote()`      |\n[`sd_session_get_state()`](http://www.freedesktop.org/software/systemd/man/sd_session_get_state.html)                                    | `systemd.login.session_get_state()`      |\n[`sd_session_get_uid()`](http://www.freedesktop.org/software/systemd/man/sd_session_get_uid.html)                                        | `systemd.login.session_get_uid()`        |\n[`sd_session_get_seat()`](http://www.freedesktop.org/software/systemd/man/sd_session_get_seat.html)                                      | `systemd.login.session_get_seat()`       |\n[`sd_session_get_service()`](http://www.freedesktop.org/software/systemd/man/sd_session_get_service.html)                                | `systemd.login.session_get_service()`    |\n[`sd_session_get_type()`](http://www.freedesktop.org/software/systemd/man/sd_session_get_type.html)                                      | `systemd.login.session_get_type()`       |\n[`sd_session_get_class()`](http://www.freedesktop.org/software/systemd/man/sd_session_get_class.html)                                    | `systemd.login.session_get_class()`      |\n[`sd_session_get_desktop()`](http://www.freedesktop.org/software/systemd/man/sd_session_get_desktop.html)                                | `systemd.login.session_get_desktop()`    |\n[`sd_session_get_display()`](http://www.freedesktop.org/software/systemd/man/sd_session_get_display.html)                                | `systemd.login.session_get_display()`    |\n[`sd_session_get_remote_host()`](http://www.freedesktop.org/software/systemd/man/sd_session_get_remote_host.html)                        | `systemd.login.session_get_remote_host()`|\n[`sd_session_get_remote_user()`](http://www.freedesktop.org/software/systemd/man/sd_session_get_remote_user.html)                        | `systemd.login.session_get_remote_user()`|\n[`sd_session_get_tty()`](http://www.freedesktop.org/software/systemd/man/sd_session_get_tty.html)                                        | `systemd.login.session_get_tty()`        |\n[`sd_session_get_vt()`](http://www.freedesktop.org/software/systemd/man/sd_session_get_vt.html)                                          | `systemd.login.session_get_vt()`         |\n[`sd_seat_get_active()`](http://www.freedesktop.org/software/systemd/man/sd_seat_get_active.html)                                        | `systemd.login.seat_get_active()`        | On success, returns `session, uid`\n[`sd_seat_get_sessions()`](http://www.freedesktop.org/software/systemd/man/sd_seat_get_sessions.html)                                    | `systemd.login.seat_get_sessions()`      | On success, returns `sessions, uids`\n[`sd_seat_can_multi_session()`](http://www.freedesktop.org/software/systemd/man/sd_seat_can_multi_session.html)                          | `systemd.login.seat_can_multi_session()` |\n[`sd_seat_can_tty()`](http://www.freedesktop.org/software/systemd/man/sd_seat_can_tty.html)                                              | `systemd.login.seat_can_tty()`           |\n[`sd_seat_can_graphical()`](http://www.freedesktop.org/software/systemd/man/sd_seat_can_graphical.html)                                  | `systemd.login.seat_can_graphical()`     |\n[`sd_machine_get_class()`](http://www.freedesktop.org/software/systemd/man/sd_machine_get_class.html)                                    | `systemd.login.machine_get_class()`      |\n[`sd_machine_get_ifindices()`](http://www.freedesktop.org/software/systemd/man/sd_machine_get_ifindices.html)                            | `systemd.login.machine_get_ifindices()`  |\n[`sd_login_monitor_new()`](http://www.freedesktop.org/software/systemd/man/sd_login_monitor_new.html)                                    | `systemd.login.monitor()`                |\n[`sd_login_monitor_unref()`](http://www.freedesktop.org/software/systemd/man/sd_login_monitor_unref.html)                                |                                          | Bound as `__gc` metamethod on monitor objects\n[`sd_login_monitor_flush()`](http://www.freedesktop.org/software/systemd/man/sd_login_monitor_flush.html)                                | `my_login_monitor:flush()`               |\n[`sd_login_monitor_get_fd()`](http://www.freedesktop.org/software/systemd/man/sd_login_monitor_get_fd.html)                              | `my_login_monitor:get_fd()`              |\n[`sd_login_monitor_get_events()`](http://www.freedesktop.org/software/systemd/man/sd_login_monitor_get_events.html)                      | `my_login_monitor:get_events()`          |\n[`sd_login_monitor_get_timeout()`](http://www.freedesktop.org/software/systemd/man/sd_login_monitor_get_timeout.html)                    | `my_login_monitor:get_timeout()`         | Returns `false` if timeout isn't available, otherwise returns value in seconds\n\n\n## Misc extras\n\n### `systemd.daemon.notifyt(tbl)` and `systemd.daemon.pid_notifyt(tbl)`\n\nLike `notify`, but takes a lua table instead of a newline delimited list.\nNumbers will be coerced to strings.\n\n```lua\nnotifyt { READY = 1, STATUS = \"Server now accepting connections\", WATCHDOG = 1 }\n```\n\n\n### `interval = systemd.daemon.watchdog_enabled()`\n\nReturns the watchdog interval (in seconds) if there is one set otherwise returns `false`.\n\nYou should call `kick_dog` or `notify(\"WATCHDOG=1\")` every half of this interval.\n\nSimilar functionality to [`sd_watchdog_enabled()`](http://www.freedesktop.org/software/systemd/man/sd_watchdog_enabled.html)\n\n\n### `systemd.daemon.kick_dog()`\n\nTells systemd to update the watchdog timestamp.\nThis should be called on an interval.\n\n\n### `systemd.journal.LOG`\n\nTable containing the `syslog(3)` priority constants: `EMERG`, `ALERT`, `CRIT`, `ERR`, `WARNING`, `NOTICE`, `INFO`, `DEBUG`\n\nUseful as the second argument to `systemd.journal.streamfd()`\n\n\n### `systemd.journal.print(priority, fmt_string, ...)`\n\nSame argument signature as C, but written in lua on top of `sendv()` and `string.format()`\n\n\n### `systemd.journal.sendt(tbl)`\n\nLog a message to the journal with the key/value pairs from `tbl`\n\n```lua\nsystemd.journal.sendt {\n\tSYSLOG_IDENTIFIER = \"identifier\" ;\n\tSYSLOG_FACILITY = \"facility\" ;\n\tPRIORITY = systemd.journal.LOG.ERR ;\n\tMESSAGE = \"something happended!\" ;\n\tMY_CUSTOM_FIELD = \"extra detail.\";\n}\n```\n\n\n### `value = my_journal:get(field)`\n\nReturns the given field from the current journal entry (which may be `nil`)\n\nThrows a lua error on failure.\n\n\n### `my_journal:each_data()`\n\nA valid lua iterator that enumerates through field, value pairs.\n\n```lua\nfor field, value in my_journal:each_data() do\n\tprint(field, value)\nend\n```\n\nThrows a lua error on failure.\n\n\n### `my_journal:each_unique(field_name)`\n\nA valid lua iterator that enumerates through unique field values.\n\n```lua\n-- Print each different `_SYSTEMD_UNIT`\nfor value in my_journal:each_unique(\"_SYSTEMD_UNIT\") do\n\tprint(value)\nend\n```\n\nThrows a lua error on failure.\n\n\n### `t = my_journal:to_table()`\n\nConverts the current journal entry to a lua table.\n\nIncludes [Address Fields](http://www.freedesktop.org/software/systemd/man/systemd.journal-fields.html#Address%20Fields):\n  - `__CURSOR`\n  - `__REALTIME_TIMESTAMP`\n  - `__MONOTONIC_TIMESTAMP`\n\n\n### `text = my_journal:get_catalog()`\n\nLooks up the current journal entry's `MESSAGE_ID` in the [message catalog](http://www.freedesktop.org/wiki/Software/systemd/catalog/).\nSubstitutes the templated fields (between `@` symbols) with values from this journal entry.\n\nReturns:\n  - the filled out catalogue entry as a string\n  - `false` if `MESSAGE_ID` is not set, or does not exist in the catalogue\n  - `nil, err_msg, errno` in case of failure.\n\nSame functionality as [`sd_journal_get_catalog()`](http://www.freedesktop.org/software/systemd/man/sd_journal_get_catalog.html).\n\n\n### `systemd.messages`\n\nA table of well-known message ids as `id128` objects.\n\nTaken from [`sd-messages.h`](http://cgit.freedesktop.org/systemd/systemd/tree/src/systemd/sd-messages.h?id=HEAD)\n","funding_links":[],"categories":["C"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaurnimator%2Flua-systemd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdaurnimator%2Flua-systemd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdaurnimator%2Flua-systemd/lists"}