mirror of https://github.com/i3/i3lock.git
Revert "Add option to lock TTY switching"
This reverts commit dcfcba3ed4
.
As-is, this requires i3lock to be run with too many permissions, for a feature
which many users will never need. In issue #231, we concluded that interested
users are better off using a dedicated virtual console locker such as vlock(1).
related to #231
pull/241/head
parent
e30ce8e074
commit
ad056ca396
|
@ -56,7 +56,3 @@ EXTRA_DIST = \
|
||||||
LICENSE \
|
LICENSE \
|
||||||
README.md \
|
README.md \
|
||||||
I3LOCK_VERSION
|
I3LOCK_VERSION
|
||||||
|
|
||||||
# SUID the executable so it has permissions to lock TTY switching
|
|
||||||
install-exec-hook:
|
|
||||||
chmod +s $(DESTDIR)$(bindir)/i3lock$(EXEEXT)
|
|
||||||
|
|
5
i3lock.1
5
i3lock.1
|
@ -28,7 +28,6 @@ i3lock \- improved screen locker
|
||||||
.RB [\|\-u\|]
|
.RB [\|\-u\|]
|
||||||
.RB [\|\-e\|]
|
.RB [\|\-e\|]
|
||||||
.RB [\|\-f\|]
|
.RB [\|\-f\|]
|
||||||
.RB [\|\-l\|]
|
|
||||||
|
|
||||||
.SH DESCRIPTION
|
.SH DESCRIPTION
|
||||||
.B i3lock
|
.B i3lock
|
||||||
|
@ -116,10 +115,6 @@ your computer with the enter key.
|
||||||
.B \-f, \-\-show-failed-attempts
|
.B \-f, \-\-show-failed-attempts
|
||||||
Show the number of failed attempts, if any.
|
Show the number of failed attempts, if any.
|
||||||
|
|
||||||
.TP
|
|
||||||
.B \-l, \-\-lock-console
|
|
||||||
Lock the console to disable TTY switching (Linux only).
|
|
||||||
|
|
||||||
.TP
|
.TP
|
||||||
.B \-\-debug
|
.B \-\-debug
|
||||||
Enables debug logging.
|
Enables debug logging.
|
||||||
|
|
49
i3lock.c
49
i3lock.c
|
@ -40,11 +40,6 @@
|
||||||
#endif
|
#endif
|
||||||
#include <xcb/xcb_aux.h>
|
#include <xcb/xcb_aux.h>
|
||||||
#include <xcb/randr.h>
|
#include <xcb/randr.h>
|
||||||
#if defined(__linux__)
|
|
||||||
#include <fcntl.h>
|
|
||||||
#include <linux/vt.h>
|
|
||||||
#include <sys/ioctl.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "i3lock.h"
|
#include "i3lock.h"
|
||||||
#include "xcb.h"
|
#include "xcb.h"
|
||||||
|
@ -1018,11 +1013,6 @@ int main(int argc, char *argv[]) {
|
||||||
int ret;
|
int ret;
|
||||||
struct pam_conv conv = {conv_callback, NULL};
|
struct pam_conv conv = {conv_callback, NULL};
|
||||||
#endif
|
#endif
|
||||||
#if defined(__linux__)
|
|
||||||
bool lock_tty_switching = false;
|
|
||||||
int term = -1;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int curs_choice = CURS_NONE;
|
int curs_choice = CURS_NONE;
|
||||||
int o;
|
int o;
|
||||||
int longoptind = 0;
|
int longoptind = 0;
|
||||||
|
@ -1042,7 +1032,6 @@ int main(int argc, char *argv[]) {
|
||||||
{"ignore-empty-password", no_argument, NULL, 'e'},
|
{"ignore-empty-password", no_argument, NULL, 'e'},
|
||||||
{"inactivity-timeout", required_argument, NULL, 'I'},
|
{"inactivity-timeout", required_argument, NULL, 'I'},
|
||||||
{"show-failed-attempts", no_argument, NULL, 'f'},
|
{"show-failed-attempts", no_argument, NULL, 'f'},
|
||||||
{"lock-console", no_argument, NULL, 'l'},
|
|
||||||
{NULL, no_argument, NULL, 0}};
|
{NULL, no_argument, NULL, 0}};
|
||||||
|
|
||||||
if ((pw = getpwuid(getuid())) == NULL)
|
if ((pw = getpwuid(getuid())) == NULL)
|
||||||
|
@ -1050,7 +1039,7 @@ int main(int argc, char *argv[]) {
|
||||||
if ((username = pw->pw_name) == NULL)
|
if ((username = pw->pw_name) == NULL)
|
||||||
errx(EXIT_FAILURE, "pw->pw_name is NULL.");
|
errx(EXIT_FAILURE, "pw->pw_name is NULL.");
|
||||||
|
|
||||||
char *optstring = "hvnbdc:p:ui:teI:fl";
|
char *optstring = "hvnbdc:p:ui:teI:f";
|
||||||
while ((o = getopt_long(argc, argv, optstring, longopts, &longoptind)) != -1) {
|
while ((o = getopt_long(argc, argv, optstring, longopts, &longoptind)) != -1) {
|
||||||
switch (o) {
|
switch (o) {
|
||||||
case 'v':
|
case 'v':
|
||||||
|
@ -1110,16 +1099,9 @@ int main(int argc, char *argv[]) {
|
||||||
case 'f':
|
case 'f':
|
||||||
show_failed_attempts = true;
|
show_failed_attempts = true;
|
||||||
break;
|
break;
|
||||||
case 'l':
|
|
||||||
#if defined(__linux__)
|
|
||||||
lock_tty_switching = true;
|
|
||||||
#else
|
|
||||||
errx(EXIT_FAILURE, "TTY switch locking is only supported on Linux.");
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
errx(EXIT_FAILURE, "Syntax: i3lock [-v] [-n] [-b] [-d] [-c color] [-u] [-p win|default]"
|
errx(EXIT_FAILURE, "Syntax: i3lock [-v] [-n] [-b] [-d] [-c color] [-u] [-p win|default]"
|
||||||
" [-i image.png] [-t] [-e] [-I timeout] [-f] [-l]");
|
" [-i image.png] [-t] [-e] [-I timeout] [-f]");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1291,21 +1273,6 @@ int main(int argc, char *argv[]) {
|
||||||
if (main_loop == NULL)
|
if (main_loop == NULL)
|
||||||
errx(EXIT_FAILURE, "Could not initialize libev. Bad LIBEV_FLAGS?");
|
errx(EXIT_FAILURE, "Could not initialize libev. Bad LIBEV_FLAGS?");
|
||||||
|
|
||||||
#if defined(__linux__)
|
|
||||||
|
|
||||||
/* Lock tty switching */
|
|
||||||
if (lock_tty_switching) {
|
|
||||||
if ((term = open("/dev/console", O_RDWR)) == -1) {
|
|
||||||
perror("error locking TTY switching: opening console failed");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (term != -1 && (ioctl(term, VT_LOCKSWITCH)) == -1) {
|
|
||||||
perror("error locking TTY switching: locking console failed");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Explicitly call the screen redraw in case "locking…" message was displayed */
|
/* Explicitly call the screen redraw in case "locking…" message was displayed */
|
||||||
auth_state = STATE_AUTH_IDLE;
|
auth_state = STATE_AUTH_IDLE;
|
||||||
redraw_screen();
|
redraw_screen();
|
||||||
|
@ -1333,18 +1300,6 @@ int main(int argc, char *argv[]) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(__linux__)
|
|
||||||
/* Restore tty switching */
|
|
||||||
if (lock_tty_switching) {
|
|
||||||
if (term != -1 && (ioctl(term, VT_UNLOCKSWITCH)) == -1) {
|
|
||||||
perror("error unlocking TTY switching: unlocking console failed");
|
|
||||||
}
|
|
||||||
|
|
||||||
close(term);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
DEBUG("restoring focus to X11 window 0x%08x\n", stolen_focus);
|
DEBUG("restoring focus to X11 window 0x%08x\n", stolen_focus);
|
||||||
xcb_ungrab_pointer(conn, XCB_CURRENT_TIME);
|
xcb_ungrab_pointer(conn, XCB_CURRENT_TIME);
|
||||||
xcb_ungrab_keyboard(conn, XCB_CURRENT_TIME);
|
xcb_ungrab_keyboard(conn, XCB_CURRENT_TIME);
|
||||||
|
|
Loading…
Reference in New Issue