1641
コメント:
|
3696
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 1: | 行 1: |
いろいろ | 小物類いろいろ。作りっぱなし置きっぱなし。 |
行 3: | 行 3: |
=== お手軽ストップウォッチ === 1秒未満の精度がいらないとき用。英語の課題でスピーチの原稿を書いているとき、時間が測りたくなって5分足らずで書いた。このとき`difftime()`の存在を初めて知った。 * `clock_t`と`clock()`を使って`(end - start) / CLOCKS_PER_SEC`の方が良かった気がする {{{#!highlight c /* stopwatch.c */ |
<<TableOfContents(3)>> |
行 9: | 行 5: |
#include <stdio.h> #include <time.h> int main(void) { time_t start, end; puts("Enter to start:"); getchar(); start = time(NULL); puts("Enter to stop:"); getchar(); end = time(NULL); printf("%.0f sec.\n", difftime(end, start)); return 0; } }}} === セルフタイマー付きでスクリーンショットを撮る === 一定時間`sleep`した後、ImageMagickの`import`を使って画面全体のキャプチャをするだけ。 * すぐに制御を返すので、このコマンド自体のコマンドラインを隠せる |
== スクリーンショット == === タイマー付き、画面全体 === 第一引数にファイル名、第2引数に待ち時間(指定しなければ0)を与える。すぐに制御を返す。 |
行 35: | 行 10: |
if [ $# -eq 0 ] then echo "usage: desktopcap filename [sleeptime]" exit 0 elif [ $# -eq 2 ] then |
if [ $# -eq 2 ]; then |
行 48: | 行 18: |
=== クリックしたウィンドウのスクリーンショットを撮る === | === クリックしたウィンドウ === 実行するとマウスポインタが十字になるのでスクリーンショットを撮りたいウィンドウをクリックする。 {{{#!highlight sh #!/bin/sh id=$(xwininfo | grep "Window id:" | awk '{ print $4 }') && import -window $id $(date +"scrnshot%y%m%d%H%M%S.png") }}} == dwmのパッチ == dwm 6.0で動作確認。たぶん5.8.2や5.9でも使えるはず。 * [[attachment:dwm-6.0-rotate.diff]] - ウィンドウ配置を時計回りに回転する(タイル配置時) * [[attachment:dwm-6.0-statuscolor.diff]] - ステータス領域に固有の色を設定可能にする * [[attachment:dwm-6.0-moderatetile.diff]] - タイル配置かつ縦横に見てウィンドウ数が1の場合、余白を入れる * 詳細は[[clear/note/2012-05#05/07|こちら]] == dwm用ステータスバー == 環境や起動の仕方によってはdwmが終了しても生き残る場合があるので、そのような場合は生存確認をする。 |
行 50: | 行 35: |
name=$(xprop | grep "WM_NAME(STRING)" | sed 's/.*= "\(.*\)"/\1/') && import -window $name hoge.png | pgrep -aU $(id -u) dwm > /dev/null if [ $? -eq 1 ]; then exit 0 else sleep 30 fi |
行 52: | 行 42: |
* ウィンドウ名(タイトルバーの文字列)を使っているので、同名のウィンドウが複数あると期待した動作をしない | === シンプルなバッテリ状態+時計 === あまり画面に余裕のないラップトップ用。 {{{#!highlight sh #!/bin/sh export LC_TIME=C # 曜日の表記のため while true; do b=$(acpi) state=$(echo $b | awk 'BEGIN{s=" "}/Discharging/{s="- "}/Charging/{s="+ "}END{print s}') remain=$(echo $b | awk '{print $4}'|tr -d '%,') xsetroot -name "$remain$state$(date +"%a %d %R")" sleep 30 done }}} === 普通の時計 === 月日と曜日、時刻。 {{{#!highlight sh #!/bin/sh while true; do xsetroot -name "$(date +"%m/%d(%a) %R")" sleep 30 done }}} == 色 == === 16色端末 === 端末エミュレータの色設定を確認するためのもの。 {{{#!highlight bash #!/usr/local/bin/bash reset="\033[0m" echo -e "\033[30mblack\t\033[1;30mbold black$reset" echo -e "\033[31mred\t\033[1;31mbold red$reset" echo -e "\033[32mgreen\t\033[1;32mbold green$reset" echo -e "\033[33myellow\t\033[1;33mbold yellow$reset" echo -e "\033[34mblue\t\033[1;34mbold blue$reset" echo -e "\033[35mmagenta\t\033[1;35mbold magenta$reset" echo -e "\033[36mcyan\t\033[1;36mbold cyan$reset" echo -e "\033[37mwhite\t\033[1;37mbold white$reset" }}} == デュアルディスプレイ == ノートPCをプロジェクタ等に接続して外部出力する際の設定を行うスクリプト。 {{{#!highlight sh #!/bin/sh # vgaout.sh [l|r|u|b] on|off # monitor on the laptop LCD=LVDS1 # external monitor VGA=VGA1 orientation='--below' if [ $# -gt 1 ]; then case $1 in l) orientation='--left-of' ;; r) orientation='--right-of' ;; u) orientation='--upper' ;; b|*) orientation='--below' ;; esac op=$2 else op=$1 fi case $op in on) echo "$VGA: on($(echo $orientation | tr - \ | sed 's/^ \(.*\)/\1/') $LCD)" xrandr --output $VGA --auto $orientation $LCD ;; off) echo $VGA: off xrandr --output $VGA --off ;; *) echo unknown option exit 1 ;; esac }}} |
小物類いろいろ。作りっぱなし置きっぱなし。
スクリーンショット
タイマー付き、画面全体
第一引数にファイル名、第2引数に待ち時間(指定しなければ0)を与える。すぐに制御を返す。
クリックしたウィンドウ
実行するとマウスポインタが十字になるのでスクリーンショットを撮りたいウィンドウをクリックする。
dwmのパッチ
dwm 6.0で動作確認。たぶん5.8.2や5.9でも使えるはず。
dwm-6.0-rotate.diff - ウィンドウ配置を時計回りに回転する(タイル配置時)
dwm-6.0-statuscolor.diff - ステータス領域に固有の色を設定可能にする
dwm-6.0-moderatetile.diff - タイル配置かつ縦横に見てウィンドウ数が1の場合、余白を入れる
詳細はこちら
dwm用ステータスバー
環境や起動の仕方によってはdwmが終了しても生き残る場合があるので、そのような場合は生存確認をする。
pgrep -aU $(id -u) dwm > /dev/null if [ $? -eq 1 ]; then exit 0 else sleep 30 fi
シンプルなバッテリ状態+時計
あまり画面に余裕のないラップトップ用。
普通の時計
月日と曜日、時刻。
色
16色端末
端末エミュレータの色設定を確認するためのもの。
1 #!/usr/local/bin/bash
2 reset="\033[0m"
3 echo -e "\033[30mblack\t\033[1;30mbold black$reset"
4 echo -e "\033[31mred\t\033[1;31mbold red$reset"
5 echo -e "\033[32mgreen\t\033[1;32mbold green$reset"
6 echo -e "\033[33myellow\t\033[1;33mbold yellow$reset"
7 echo -e "\033[34mblue\t\033[1;34mbold blue$reset"
8 echo -e "\033[35mmagenta\t\033[1;35mbold magenta$reset"
9 echo -e "\033[36mcyan\t\033[1;36mbold cyan$reset"
10 echo -e "\033[37mwhite\t\033[1;37mbold white$reset"
デュアルディスプレイ
ノートPCをプロジェクタ等に接続して外部出力する際の設定を行うスクリプト。
1 #!/bin/sh
2 # vgaout.sh [l|r|u|b] on|off
3
4 # monitor on the laptop
5 LCD=LVDS1
6 # external monitor
7 VGA=VGA1
8
9 orientation='--below'
10 if [ $# -gt 1 ]; then
11 case $1 in
12 l)
13 orientation='--left-of'
14 ;;
15 r)
16 orientation='--right-of'
17 ;;
18 u)
19 orientation='--upper'
20 ;;
21 b|*)
22 orientation='--below'
23 ;;
24 esac
25 op=$2
26 else
27 op=$1
28 fi
29
30 case $op in
31 on)
32 echo "$VGA: on($(echo $orientation | tr - \ | sed 's/^ \(.*\)/\1/') $LCD)"
33 xrandr --output $VGA --auto $orientation $LCD
34 ;;
35 off)
36 echo $VGA: off
37 xrandr --output $VGA --off
38 ;;
39 *)
40 echo unknown option
41 exit 1
42 ;;
43 esac