Linux/WindowManager/awesome

Debian stretch では 3.5 になって設定が少し変わっているのでメモ.Ubuntu 15.10 wily も 3.5 になるようです.

設定ファイルとテーマファイルの差し替え

$ cp /etc/xdg/awesome/rc.lua ~/.config/awesome/
$ cp /usr/share/awesome/themes/default/theme.lua ~/.config/awesome/

メニューファイルをシステムのものに

システムが更新されても ~/.config/awesome/debian/menu.lua は更新されない./etc/xdg/awesome/debian/menu.lua は更新されるのでそちらを見るようにする.

$ rm -rf ~/.config/awesome/debian
$ ln -s /etc/xdg/awesome/debian ~/.config/awesome/debian

設定ファイル修正( ~/.config/awesome/rc.lua )

テーマファイル変更(3.4と同じ)

-beautiful.init("/usr/share/awesome/themes/default/theme.lua")
+beautiful.init("~/.config/awesome/theme.lua")

端末アプリ変更(3.4と同じ)

-terminal = "x-terminal-emulator"
+terminal = "mate-terminal"

スクリーンショット設定(3.5)

-- Standard program の前か後ろ辺りに以下を追加.

-- bind PrintScrn to capture a screen
    awful.key({                   }, "Print", function () awful.util.spawn("/home/mk/.config/awesome/bin/ss.sh root",false)   end),
    awful.key({ "Mod1"            }, "Print", function () awful.util.spawn("/home/mk/.config/awesome/bin/ss.sh window",false) end),
    awful.key({ "Shift"           }, "Print", function () awful.util.spawn("/home/mk/.config/awesome/bin/ss.sh area",false)   end),

別途スクリーンショット取得用のscript も用意する.

#!/bin/bash

case "$1" in
  "root" ) 
    import -quality 100 -window root ~/Pictures/`date +%Y%m%d_%H:%m:%S-$$.jpg`
  ;;

  "window" ) 
    xwininfo |grep '^xwininfo: Window id:' | awk '{print $4}' | xargs -I{} import -quality 100 -window {} ~/Pictures/`date +%Y%m%d_%H:%m:%S-$$.jpg`
  ;;

  "area" ) 
    import -quality 100 ~/Pictures/`date +%Y%m%d_%H:%m:%S-$$.jpg`
  ;;
esac

https://gist.github.com/9e315d2ed10bab19f7c7

音量ボタン設定(3.5)

-- Standard program の前か後ろ辺りに以下を追加.

    -- Audio Controle
    awful.key({         }, "XF86AudioMute", function () awful.util.spawn("/home/mk/script/awesome-audio.bash XF86AudioMute",false)       end),
    awful.key({         }, "XF86AudioRaiseVolume", function () awful.util.spawn("/home/mk/script/awesome-audio.bash XF86AudioRaiseVolume",false) end),
    awful.key({         }, "XF86AudioLowerVolume", function () awful.util.spawn("/home/mk/script/awesome-audio.bash XF86AudioLowerVolume",false) end),

別途ボリュームコントロール用のscript も用意する. 機種によりキーコードやサウンドカードの番号などを変更する必要があると思う.キーコードは xev とかで. 以下は Thinkpad x201s で確認.

#!/bin/bash

MUTE=`amixer -c 0 get Master|tail -1|cut -d '[' -f 4|sed s/\]//`

if [ $MUTE = "on" ] ; then
  ICON="/usr/share/icons/ContrastHigh/scalable/status/audio-volume-medium.svg"
else
  ICON="/usr/share/icons/ContrastHigh/scalable/status/audio-volume-muted.svg"
fi

case "$1" in
  "XF86AudioMute" ) 
    if [ $MUTE = "on" ] ; then
      amixer -q -c 0 set Master mute
      xset -b
      echo -e "🔊☓\nmute!"
      notify-send -u low -t 500 -i '/usr/share/icons/ContrastHigh/scalable/status/audio-volume-muted.svg' mute "☓"
    else
      amixer -q -c 0 set Master unmute
      amixer -q -c 0 set Speaker unmute
      amixer -q -c 0 set Headphone unmute
      xset b
      echo -e "🔊\nunmute!"
      amixer -c 0 get Master | tail -1 | cut -d '[' -f 2 | sed s/\]// | xargs notify-send -u low -t 500 -i '/usr/share/icons/ContrastHigh/scalable/status/audio-volume-high.svg' numute
    fi
  ;;
  "XF86AudioRaiseVolume" ) 
    amixer -c 0 set Master 2dB+ | tail -1 | cut -d '[' -f 2 | sed s/\]// | xargs notify-send -u low -t 500 -i $ICON "Vol ⤴"
  ;;
  "XF86AudioLowerVolume" ) 
    amixer -c 0 set Master 2dB- | tail -1 | cut -d '[' -f 2 | sed s/\]// | xargs notify-send -u low -t 500 -i $ICON "Vol ⤵"
  ;;
esac

gist

  • ボタンのキーコード
    • mute -> XF86AudioMute?
    • VolUp? -> XF86AudioRaiseVolume?
    • VolDown? -> XF86AudioLowerVolume?

Script 実行時に キーコードを引数で渡す.

アンミュート状態でミュートボタンを押されると,以下のコマンドでミュートして

amixer -q -c 0 set Master mute

beep も無効にして

xset -b

notify-send でメッセージを表示する

ミュート状態でミュートボタンを押されると,以下のコマンドでアンミュートして

amixer -q -c 0 set Master unmute
amixer -q -c 0 set Speaker unmute
amixer -q -c 0 set Headphone unmute

beep も有効にして

xset b

notify-send でメッセージを表示する

アンミュート時に Master だけでなく Speaker / Headphone もアンミュートするのは Master をアンミュートしても Speaker / Headphone はアンミュートされないから.Speaker / Headphone については排他利用になっているので両方有効にしても問題ない(恐らくALSAが面倒を見てくれている)

ボリュームUp ボタンを押されると,以下のコマンドで 2dB Up してその結果から変更後のボリューム% を notify-send でメッセージを表示する.メッセージのアイコンはミュート時とアンミュート時で変わる

amixer -c 0 set Master 2dB+ | tail -1 | cut -d '[' -f 2 | sed s/\]// | xargs notify-send -u low -t 500 -i $ICON "Vol ⤴"

ボリュームDown ボタンを押されると,以下のコマンドで 2dB Down してその結果から変更後のボリューム% を notify-send でメッセージを表示する.メッセージのアイコンはミュート時とアンミュート時で変わる

amixer -c 0 set Master 2dB- | tail -1 | cut -d '[' -f 2 | sed s/\]// | xargs notify-send -u low -t 500 -i $ICON "Vol ⤵"

スクリーンロック設定

-- Standard program の前か後ろ辺りに以下を追加.

    -- lock screen
    awful.key({ "Mod1"  }, "l", function () awful.util.spawn( "xscreensaver-command -lock",false) end),

はじめ Mod4(Super) + l にしてたけど awesome のウィンドウサイズ変更と当たるので Mod1(Alt) + l に変えた.

自動起動アプリ指定(3.4と同じ)

rc.lua の最後辺りに以下を

-- {{{ auto run
-- "Autostart - awesome"
-- http://awesome.naquadah.org/wiki/Autostart
awful.util.spawn_with_shell("~/script/run_once.bash xscreensaver -nosplash")
awful.util.spawn_with_shell("~/script/run_once.bash nm-applet")
awful.util.spawn_with_shell("~/script/run_once.bash blueman-applet")
awful.util.spawn_with_shell("~/script/run_once.bash synergy")
awful.util.spawn_with_shell("~/script/run_once.bash clipit")
awful.util.spawn_with_shell("~/script/run_once.bash owncloud")
awful.util.spawn_with_shell("~/script/run_once.bash dropbox")
awful.util.spawn_with_shell("~/script/run_once.bash SpiderOakONE")
awful.util.spawn_with_shell("~/script/run_once.bash ~/opt/copy/x86_64/CopyAgent -nosplash")
awful.util.spawn_with_shell("~/script/run_once.bash xchat")
awful.util.spawn_with_shell("~/script/run_once.bash pidgin")
awful.util.spawn_with_shell("~/script/run_once.bash blueproximity")
awful.util.spawn_with_shell("~/script/run_once.bash remmina -i")
-- }}}

~/script/run_once.bash は重複起動を回避するためのscript

#!/bin/bash
#Alternative
pgrep -u $USER -f $1 > /dev/null || ($@ &)

時計カスタム

右上の時計で秒を表示したい.awful.widget.textclock() で実現しているようなのでここのパラメーターを変更する.

  • awesome API documentation
    Parameters:
    
    format The time format. Default is " %a %b %d, %H:%M ".
    timeout How often update the time. Default is 60.

以下のように書き換えた.

-- {{{ Wibox
-- Create a textclock widget
mytextclock = awful.widget.textclock("%a %b %d, %H:%M:%S", 1)

規定値は "%a %b %d, %H:%M", 60 で前半の " で囲ってある部分は date の FORMAT のようなので man date を参照して設定.後半の 60 は更新時間(秒),60秒に1回しか更新されないので,1秒単位で更新されるように 1 を指定する.

テーマファイル修正( ~/.config/awesome/theme.lua )

壁紙変更(3.5)

-theme.wallpaper             = "/usr/share/awesome/themes/sky/sky-background.png"
+theme.wallpaper             = "~/Pictures/wp/futur_by_takaju-d60mg7y.png"

Ubuntu 15.10 wily

Debian stretch の設定を元にこんな感じで導入&反映した.
関連 script は awesome の設定の下に持って行って,スクリーンショットの script は1つにまとめたりした.
ホームディレクトリの下のパスがフルパスなのは sed で置き換えるようにして吸収してみた.

mkdir -p ~/.config/awesome/bin
cp /usr/share/awesome/themes/default/theme.lua ~/.config/awesome/
curl https://gist.github.com/matoken/9e315d2ed10bab19f7c7/raw/ac1b11716c996aea56855229758b4231c1edae07/ss.sh -o ~/.config/awesome/bin/ss.sh
curl https://gist.github.com/matoken/16f6841cdbf79e51b718/raw/e40c4e7311d8d339ee55ec6d76826dc5a292c20e/awesome-audio.bash -o ~/.config/awesome/bin/awesome-audio.bash
curl -L https://gist.github.com/matoken/48acc08ef758b1f27e56/raw/460b845f6a4c9e386ef65264c8a355beaa4722c0/rc.lua | sed -e "s|/home/mk|$HOME|" > ~/.config/awesome/rc.lua
kill -HUP `pgrep awesome`

関連URL



spam 避けですcheck を付けて下さい

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-09-27 (日) 13:00:17 (512d)