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)
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})
include_directories (${dependencies_INCLUDE_DIRS})
@ -44,6 +47,12 @@ target_link_libraries (brightness ${project_libraries})
add_executable (fancontrol-ng fancontrol-ng.c)
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
include (GNUInstallDirs)
@ -54,6 +63,10 @@ install (FILES ${PROJECT_BINARY_DIR}/fancontrol-ng.service
install (FILES fancontrol-ng.conf.example
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
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
- 'shellify' is a simple script that sets up a shell for commands like vgdb
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.

View File

@ -2637,6 +2637,18 @@ on_volume_set (struct app_context *ctx, int arg)
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
on_brightness (struct app_context *ctx, int arg)
{
@ -2655,6 +2667,9 @@ struct
}
g_keys[] =
{
// This key should be labeled L on normal Qwert[yz] layouts
{ Mod4Mask, XK_n, on_lock, 0 },
// MPD
{ Mod4Mask, XK_Up, on_mpd_play, 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;
}