Add gdm-switch-user, run by dwmstatus

This commit is contained in:
Přemysl Eric Janouch 2016-01-27 20:22:49 +01:00
parent 9908181467
commit 2825c89961
4 changed files with 47 additions and 0 deletions

View File

@ -25,6 +25,9 @@ include (AddThreads)
find_package (PkgConfig REQUIRED) find_package (PkgConfig REQUIRED)
pkg_check_modules (dependencies REQUIRED libpulse x11) pkg_check_modules (dependencies REQUIRED libpulse x11)
pkg_check_modules (gdm gdm glib-2.0 gio-2.0)
option (WITH_GDM "Compile with GDM support" ${gdm_FOUND})
set (project_libraries ${dependencies_LIBRARIES}) set (project_libraries ${dependencies_LIBRARIES})
include_directories (${dependencies_INCLUDE_DIRS}) include_directories (${dependencies_INCLUDE_DIRS})
@ -44,6 +47,12 @@ target_link_libraries (brightness ${project_libraries})
add_executable (fancontrol-ng fancontrol-ng.c) add_executable (fancontrol-ng fancontrol-ng.c)
target_link_libraries (fancontrol-ng ${project_libraries}) target_link_libraries (fancontrol-ng ${project_libraries})
if (WITH_GDM)
include_directories (${gdm_INCLUDE_DIRS})
add_executable (gdm-switch-user gdm-switch-user.c)
target_link_libraries (gdm-switch-user ${gdm_LIBRARIES})
endif (WITH_GDM)
# The files to be installed # The files to be installed
include (GNUInstallDirs) include (GNUInstallDirs)
@ -54,6 +63,10 @@ install (FILES ${PROJECT_BINARY_DIR}/fancontrol-ng.service
install (FILES fancontrol-ng.conf.example install (FILES fancontrol-ng.conf.example
DESTINATION ${CMAKE_INSTALL_DATADIR}/fancontrol-ng) DESTINATION ${CMAKE_INSTALL_DATADIR}/fancontrol-ng)
if (WITH_GDM)
install (TARGETS gdm-switch-user DESTINATION ${CMAKE_INSTALL_BINDIR})
endif (WITH_GDM)
install (TARGETS dwmstatus brightness fancontrol-ng install (TARGETS dwmstatus brightness fancontrol-ng
DESTINATION ${CMAKE_INSTALL_BINDIR}) DESTINATION ${CMAKE_INSTALL_BINDIR})
install (PROGRAMS shellify DESTINATION ${CMAKE_INSTALL_BINDIR}) install (PROGRAMS shellify DESTINATION ${CMAKE_INSTALL_BINDIR})

View File

@ -14,6 +14,8 @@ to other people as well.
in general it doesn't handle everything the original does in general it doesn't handle everything the original does
- 'shellify' is a simple script that sets up a shell for commands like vgdb - 'shellify' is a simple script that sets up a shell for commands like vgdb
and nmcli that are painfully lacking it and nmcli that are painfully lacking it
- 'gdm-switch-user' tells the running GDM daemon, if any, to show the switch
user screen
Don't expect them to work under any OS that isn't Linux. Don't expect them to work under any OS that isn't Linux.

View File

@ -2637,6 +2637,18 @@ on_volume_set (struct app_context *ctx, int arg)
ctx->sink_name, &volume, on_volume_finish, ctx)); ctx->sink_name, &volume, on_volume_finish, ctx));
} }
static void
on_lock (struct app_context *ctx, int arg)
{
(void) arg;
// One of these will work
char *argv_gdm[] = { "gdm-switch-user", NULL };
spawn (ctx, argv_gdm);
char *argv_ldm[] = { "dm-tool", "lock", NULL };
spawn (ctx, argv_ldm);
}
static void static void
on_brightness (struct app_context *ctx, int arg) on_brightness (struct app_context *ctx, int arg)
{ {
@ -2655,6 +2667,9 @@ struct
} }
g_keys[] = g_keys[] =
{ {
// This key should be labeled L on normal Qwert[yz] layouts
{ Mod4Mask, XK_n, on_lock, 0 },
// MPD // MPD
{ Mod4Mask, XK_Up, on_mpd_play, 0 }, { Mod4Mask, XK_Up, on_mpd_play, 0 },
{ Mod4Mask, XK_Down, on_mpd_stop, 0 }, { Mod4Mask, XK_Down, on_mpd_stop, 0 },

17
gdm-switch-user.c Normal file
View File

@ -0,0 +1,17 @@
// Public domain
#include <gdm-user-switching.h>
int
main (int argc, char *argv[])
{
(void) argc;
(void) argv;
GError *e = NULL;
if (!gdm_goto_login_session_sync (g_cancellable_new (), &e))
{
g_printerr ("%s\n", e->message);
return 1;
}
return 0;
}