Knowledge Base

Preserving for the future: Shell scripts, AoC, and more

Package for devuan: logout-manager

Tl;dr

Install logout- manager (dpkg)

Introduction

Logout manager is now ready for release! This project is intended for lightweight window managers (WMs) or desktop environments (DEs) that do not include a nice logout screen. This program has an important dependency:

  1. sudo : Because I'm not interested in using dbus and I barely know what I'm doing, I just have my package install a sudoers rule set, which could easily be adapted for a distro or release by just allowing only users approved for local console access to be able to run the commands in question.

    File: /etc/sudoers.d/30_logout-manager_sudo

    Defaults env_keep += "DRYRUN VERBOSE" ALL ALL = (root) NOPASSWD: /usr/libexec/logout-manager/lm-helper *

Features

Dynamic hibernate-ability detection. The button will be disabled for the front ends that have that ability.

Front ends

Multiple front-ends. You can use a symlink, or the Debian alternatives system to choose which frontend sits at /usr/bin/logout-manager.

gtk

This is the main front end. All front-ends do use the gtk3 icon resolution methodology. In the config file, you can either use the common icon names, like "system-log-out," or you can pass full path names to icons.

ncurses

Because some people like all-text. But then, you probably have other methods to invoke these commands already. This option was added for the sake of completeness, and as a learning experience for myself.

tcl

This feature exists for the hard-core types who don't even like GTK. Also, I think I am the first person on the Internet to want to load svg graphics in python3 tkinter. The icon resolution is not as robust in tcl, and the project does not currently bundle any icons of its own.

Tray icon

Also included is a system tray icon! If your panel does not include a quick menu for logout-style actions, you can run "logout-manager-trayicon" in your WM startup list. Right-click to get the menu, or double-click to run "logout- manager." This tool is not related to any of the other executable files and is not necessary for the others to function.

Sources

Check out the entire source on my gitlab. Download the dpkg for Devuan (and should work on Debian) from my repository at the Open Build Service. You can also see the build assets at the OBS.

Auxiliary information

Project goals

  • Be a learning experience and template for future work. I've never worked in tcl/tk (the python3 tkinter library) or ncurses before. One branch now even uses the XApp.StatusIcon instead of the Gtk.StatusIcon (as described in August 2019 Linux Mint blog post)
  • Provide a distro-independent, window-manager independent menu for logout options. I intend to provide desktop support to non-technical users and they will expect such a set of buttons.
  • Avoid dependencies on projects such as dbus, pulseaudio (not relevant here), consolekit, systemd, etc.

Comments