ノートパソコンで映画を観ているときは、画面を巧みに無効にする必要があります。
- 外部画面が接続されていない場合は無効にしないでください。
- ムービーを開くために修飾キーが使用されている場合は、無効にしないでください。
- 外部画面が接続されていて、修飾子が使用されていない場合は、ラップトップ画面を無効にします。
- メディア プレーヤーが終了したら、ラップトップの画面を復元します。
次のスクリプトを書きました:
#!/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 つのアクションを使用する必要があることです。
答え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