X의 VT를 변경하지 않고 vlock 사용

X의 VT를 변경하지 않고 vlock 사용

X 화면 보관함은 훌륭하지만 때로는 다른 TTY에서 열린 콘텐츠를 잠그고 싶을 때도 있습니다. 이러한 이유로 나는 vlock -a모든 TTY를 동시에 잠그고 싶습니다. 그러나 이 명령을 실행하려고 할 때는 일반적으로 X 세션에 있습니다.

vlock현재 터미널이 가상 콘솔이 아니라고 불평하기 때문에 X 내에서 실행할 수 없습니다. 몇 가지 해결책을 찾으려고 노력했지만 chvt해당 콘솔에서 명령을 실행하는 방법을 모르겠습니다.

X를 종료하지 않고 모든 TTY를 잠그려면 어떻게 해야 합니까 vlock? (를 사용하는 것이 바람직하지만 다른 제안도 가능합니다)

답변1

다음 명령줄 옵션을 참조하세요.

   -n,--new
          Switch to a new virtual console before locking all console sessions.

내가 항상 하는 일은 sudo vlock -ansXorg 내부/외부에서 작업하는 것입니다.

잠금을 해제하면 원래 VT로 돌아갑니다.

편집하다

불행하게도 Arch Linux는 원래 vlock 패키지를 package 에서 제공하는 패키지로 대체했습니다 kbd. 이는 현재 콘솔만 잠그므로 사용자에게는 쓸모가 없습니다. (둘 다 -a -n -s지원하지 않습니다. 아쉽게도)

해결 방법은 까다로울 수 있습니다. 원본 vlock을 수동으로 설치하고 kbd업그레이드를 차단해야 합니다.pacman.conf

자세한 내용은 이 링크를 참조하세요.

답변2

사용하지 않을 예정이라면 vlock꼭 살펴보세요physlock. Physlock은 사용자가 찾고 있는 작업을 정확하게 수행합니다. 즉, 새 VT로 전환하고 이를 잠그고 콘솔 전환을 비활성화합니다. 잠금이 해제되면 호출한 콘솔로 돌아갑니다(X 또는 TTY에서 호출할 수 있음).

옵션이 많고 여전히 매우 가볍습니다 xautolock.

답변3

너무 길어요.당신의 아이디어 chvt는 거의 바로 여기에 명령줄이 있습니다

sudo openvt -s -- sudo -u "$(whoami)" "$SHELL" -c \
  'vlock -a; chvt '"$(sed 's/^tty//' < /sys/devices/virtual/tty/tty0/active)" 

openvt -s/--switch새로 열린 tty에서 vlock을 실행하고 이전에 검색된 tty /sys/devices/virtual/tty/tty0/active(즉, X를 실행하는 tty) 를 잠금 해제한 후 다시 전환하는 데 사용됩니다 .

아주 긴 이야기

그리고 질문 제목

X의 VT를 변경하지 않고 us[e] vlock

변경을 방지하는 답변이 필요하다고 제안하는 것 같습니다 vt/ tty여전히 해당 기능을 원 vlock -a하고 사용해 보시는 것 같습니다 chvt. 이 답변은 원래 아이디어를 따르는 솔루션을 제공합니다 chvt.

# get the currently active tty 
# (via https://unix.stackexchange.com/q/554600/24394)
ACTIVE_TTY="$(cat /sys/devices/virtual/tty/tty0/active)"
# get current user 
ACTIVE_USER="$(whoami)"

# get the current shell or fallback
test -x "$SHELL" && ACTIVE_SHELL="$SHELL" || ACTIVE_SHELL="/bin/bash"

# 1. sudo open and switch to new tty 
# 2. sudo run as ACTIVE_USER the ACTIVE_SHELL with
# 3. vlock -a to lock down
# 4. and upon unlock print unlocked and
# 5. switch back to previous shell
sudo openvt --switch --\
  sudo -u "$ACTIVE_USER" "$ACTIVE_SHELL" -c \
    'vlock -a; echo unlocked; chvt '"${ACTIVE_TTY/tty/}"  


sudo openvt --switch -- sudo -u "$(whoami)" "$SHELL" -c 'vlock -a; chvt '"$(sed 's/^tty//' < /sys/devices/virtual/tty/tty0/active)"

관련 정보