Add gdm-switch-user, run by dwmstatus
This commit is contained in:
parent
9908181467
commit
2825c89961
@ -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})
|
||||
|
@ -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.
|
||||
|
||||
|
15
dwmstatus.c
15
dwmstatus.c
@ -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
17
gdm-switch-user.c
Normal 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;
|
||||
}
|
Loading…
Reference in New Issue
Block a user