노트북에서 영화를 볼 때 화면을 교묘하게 비활성화해야 합니다.
- 외부 화면이 연결되어 있지 않으면 비활성화하지 마십시오.
- 수정자 키를 사용하여 영화를 여는 경우 비활성화하지 마십시오.
- 외부 화면이 연결되어 있고 수정자를 사용하지 않는 경우 노트북 화면을 비활성화합니다.
- 미디어 플레이어가 종료되면 노트북 화면을 복원합니다.
나는 다음 스크립트를 작성했습니다.
#!/bin/bash
if [ "$(cat /sys/class/drm/card0-VGA-1/status)" = connected ]
then
xrandr --output eDP1 --off
vlc "$1"
while [ "$(pidof vlc)" > 0 ]
do
sleep 1
done
xrandr --output eDP1 --auto --below VGA1
else
vlc "$1"
fi
eDP1은 노트북 화면을 나타내고, VGA1은 외부 화면을 나타냅니다. 스크립트는 동영상 파일을 ~/.local/share/applications/mimeapps.list
다음 데스크탑 파일과 연결하여 사용됩니다.
[Desktop Entry]
Name=VLC
Comment=
Exec=path/to/the/above/script
Icon=vlc
Terminal=false
Type=Application
StartupNotify=true
스크립트나 데스크톱 파일을 수정하는 방법이나 수정자 키를 확인하는 다른 방법을 제안할 수 있습니까? 유일한 제한 사항은 동영상을 열려면 단일 작업을 사용해야 한다는 것입니다.
답변1
기성 솔루션이없는 것 같습니다. 하지만 Xlib와 Xkb를 직접 사용하는 것은 어렵지 않습니다.
파일 만들기 getmodkey.c
:
#include <X11/Xlib.h>
#include <stdio.h>
#include <X11/XKBlib.h>
int main() {
XkbStateRec r;
Display* d = XOpenDisplay(NULL);
XkbGetState(d, XkbUseCoreKbd, &r);
printf("mod: 0x%x\n", r.mods);
XCloseDisplay(d);
return !( r.mods & 1 );
}
-lX11
예를 들어 로 컴파일합니다.
make LDLIBS="-lX11" getmodkey
프로그램의 종료 상태 코드는 0
Shift 키를 누른 경우이고, 1
그렇지 않은 경우입니다. 다른 수정자를 테스트하려면 (r.mods & keymask)
조건을 조정하십시오(Shift의 마스크는 1임).
그러면 이 프로그램은 통합하기 쉬워야 합니다.
if getmodkey; then
echo "shift!"
else
echo "no shift"
fi