Linuxデスクトップ環境で、しばらく操作しないと画面が真っ黒になるが、このタイミングで任意のスクリプトを実行したい

投稿者: Anonymous Linuxデスクトップ環境を使用しています。しばらくキーボードやマウスを操作しないでいると、画面が真っ黒になり、キーボードやマウスを操作すると復帰します。このタイミングをトリガにして、自分の用意したスクリプトを走らせることは可能でしょうか? 具体的にやりたいことは、Raspberry Piに接続された専用液晶モニタで、消灯時にはバックライトをオフにし、点灯時にはバックライトを元に戻したいのです。専用液晶モニタなので、HDMI等の汎用ディスプレイポートを使用しておらず、バックライトを制御するには、そのためのコマンドを実行する必要があります。 省電力イベントが発生したときに、バックライトの制御を行いたいと思っています。バックライトのオンオフを制御するコマンドはありますが、イベントでスクリプトを実行させる方法が分かりません。 環境は、Raspbery Pi, 2015-11-21-raspbian-jessie, Xfce4 です。 解決 自分で調査した結果を報告します。 まず、スクリーンセーバーを無効にします。 $ xset s off DPMS (Display Power Management Signaling) の設定を行い、消灯までの時間を設定します。 $ xset dpms 60 60 60 ディスプレイの状態を取得します。 $ xset q|grep Monitor Monitor is On この表示結果をポーリングすれば、ディスプレイがオフになったことを知ることができます。 ただし、xset qコマンドは、多くの情報を取得するため、無駄が多いので、知りたい情報に限定して取得するプログラムをCで書きます。 #include <X11/Xlib.h> #include <X11/extensions/dpms.h> int main() { Display *d = XOpenDisplay(0); if (d) {…(Continue Reading)

Xlibでの日本語の表示について

投稿者: Anonymous 目標 Xlibで作成したウィンドウ上に、XmbDrawStringで日本語の文字列を表示する。 状況 Xlibを使用したソフトウェアの開発過程で日本語の描画方法の確認として、あるサイト上で紹介されていた以下のサンプルコードを実行しました。 #include <X11/Xlib.h> 2 #include <X11/Xlocale.h> /* ロケール用ヘッダーファイル */ 3 #include <stdio.h> 4 #include <string.h> 5 6 #define WIN_W 350 /* ウィンドウの幅 */ 7 #define WIN_H 250 /* ウィンドウの高さ */ 8 #define WIN_X 100 /* ウィンドウ表示位置(X) */ 9 #define WIN_Y 100 /* ウィンドウ表示位置(Y) */ 10 #define BORDER 2 /* ボーダの幅…(Continue Reading)

x forwarding した [email protected] で日本語入力ができない

投稿者: Anonymous Windows7, PuTTY (0.66), Xming (6.9.0.31) 上記の構成で、 ubuntu14.04 から x forwarding しています。ubuntu 14.04 は、 vagrant の box を利用していて、日本語対応などが特に行われていない ubuntu です。 この状態で、 x forwarding を行って、 firefox (入力を伴う x11 アプリならなんでもよく、 xterm においても) を起動して、 windows 側で画面を表示させることはできているのですが、この状態から日本語入力を可能にするために、何を行ったらよいのかがわかりません。 質問: どうやったら、 x forward された画面の上で日本語入力を行えるようになりますか? 解決 ibusデーモンを起動すると日本語入力できるようになると思います。 ご参考) http://slavartemp.blogspot.jp/2013/06/xming-teraterm-ssh-lubuntu-x.html 回答者: Anonymous

型変換の警告が出る

投稿者: Anonymous X window プログラミングで、 STRUCTURES The XTextProperty structure contains: typedef struct { unsigned char *value; /* property data */ Atom encoding; /* type of property */ int format; /* 8, 16, or 32 */ unsigned long nitems; /* number of items in value */ } XTextProperty; を用いて XTextProperty window_name; と宣言し、 window_name.value = “hoge”; のように代入を行うと。…(Continue Reading)

Xlibを用いた透過ウィンドウの作成

投稿者: Anonymous はじめてご質問させていただきます。 私は現在Rasbian上で動作するソフトウェアの開発を行っており、その中で背景が透明なウィンドウをXlibで実装する必要が出てきました。 ネット上のドキュメントやXlibのリファレンスなどをもとに、現在以下のようなコードとなっています。 #include <X11/Xlib.h> #include <X11/Xutil.h> int main(int argc, char* argv[]) { Display* display = XOpenDisplay(NULL); XVisualInfo vinfo; XMatchVisualInfo(display, DefaultScreen(display), 32, TrueColor, &vinfo); XSetWindowAttributes attr; attr.colormap = XCreateColormap(display, DefaultRootWindow(display), vinfo.visual, AllocNone); attr.border_pixel = 0; attr.background_pixel = 0x00ffffff; Window win = XCreateWindow(display, DefaultRootWindow(display), 0, 0, 300, 200, 0, vinfo.depth, InputOutput, vinfo.visual, CWColormap |…(Continue Reading)

WSL2の中のX clientから VcXsrv に xauth で接続したい

投稿者: Anonymous WSLでUbuntu18.04 を使っています。WSLからWSL2に上げてみたところ、VcXsrvに接続できなくなりました。 magic cookieを用いた昔ながらのリモート接続を実現しようとしていますが、うまくできません。 Xサーバの側でセキュリティチェックを全部外せば動くので、実用上はそれでもよいのですが、動かない理由が分からないのが気持ち悪いので、できたら解明したいと思っています。 いままでは WSL の中から DISPLAY=localhost:0.0 につなぎにいくと、Windows側のVcXsrvにつなぎに行っていました。これは、WSLではIPのスタックがWindowsのものだったため、成り立っていました。VcXsrvではローカルマシンからの接続はうけつけています。それはxhostで確認できます。 C:Program FilesVcXsrv>set DISPLAY=localhost:0.0 C:Program FilesVcXsrv>xhost access control enabled, only authorized clients can connect INET:myhost.mshome.net LOCAL: INET:myhost INET6:myhost 追記:いただいたコメントを参考に、xhostベースで、WSL2からのアクセスのみ許可するやり方がわかりましたので、末尾に書きます。 WSL2になり、IPのスタックがWindowsと独立になり、WindowsとWSL2とではIPとしては別ホストになりました。IPアドレスをそれぞれで確認すると、Windowsでは次のようになります。 C:Program FilesVcXsrv>ipconfig /all Windows IP 構成 ホスト名. . . . . . . . . . . . . . .: myhost … イーサネット…(Continue Reading)