星期五, 11月 28, 2008

quake console !

今天看到學長說到quake console, 由於我沒玩過quake 不知道那到底是啥, google 了一下才發現原來是一種型態的terminal, 就是模仿 遊戲quake 裡面的指令視窗, 透過快捷鍵可以收放. 目前知道可以提供這樣的軟體有 tilda, yakuake, yeahconsole. 其中我覺得yeahconsole 還算不錯用.
yeahconsole 的設定不難, 我用的terminal 是 rxvt 所以在 ~/.Xresource 加入以下設定
yeahconsole.toggleKey: None+Print
yeahconsole.consoleHeight: 30
yeahconsole.term:urxvtc
yeahconsole.restart:1 #
yeahconsole.aniDelay: 0
然後更新 Xresources 的資訊
xrdb .Xresources
再打開yeahconsole 就行了, 依照我上面的設定的話,是用Print Screen 來顯示, 當然你可以使用任何其他的按鍵, 如果不知道按下去的按鈕應該用什麼名稱表示, 可以用 xev 來查詢. 還有其他很多可以設定的屬性可以 man yeahconsole

另外我也把yeahconsole 做了一點hack, 因為我覺得他顯示或消失的動畫實在太多餘. 直接開source code 把 roll(UP) 跟 roll(DOWN) comment 掉然後重新compile, 就不會有動畫了. 乾淨迅速.

--------------------------------------------
不過後來又看到這篇
http://eexpress.blog.ubuntu.org.cn/2008/04/29/通用的quake-console模式/
想說, 這樣我的fluxbox 應該也可以設定, 就不用另外的軟體來提供這個功能(還是要wmctrl 啦..), 心動不如行動, 馬上來設定一下.

由於我都沒有在用Print Screen, 就拿來當shortcut 吧.
我的方法是多開一個workspace, 然後平常把一個terminal 藏在那邊, 要用的時候用wmctrl 呼叫出來, 然後不要用的時候再藏回去.
-------------
.fluxbox/key:
加入
Print :ToggleCmd {ExecCommand /usr/bin/wmctrl -R 'quaketerm'} {ExecCommand /usr/bin/wmctrl -r 'quaketerm' -t 4}
其中 -t 4 表示切換到第5個 workspace
然後新增
~/bin/bashloop
#!/bin/dash
while true; do bash; done

及 ~/bin/qc
#!/bin/dash
urxvtc -name quaketerm -title quaketerm -e bashloop
然後在 .fluxbox/init
找到 (每個人設定可能不同)
session.screen0.workspaces: 4
改成 (加一個workspace, 來放你的console)
session.screen0.workspaces: 5

.fluxbox/startup: 加入
qc &
這樣開了qc 以後, 可以用 Print 鍵在 current workspace 跟 workspace 4 (第五個) 切換, 達到類似quakeconsole 的效果. 之所以是用切換是因為wmctrl 的hidden 指令好像只能夠最小化視窗,沒辦法達到隱藏視窗的效果,所以藉由把視窗藏到另一個workspace 來達成.
--------------------------
是說用過了以後覺得還是yeahconsole 比較好用,體積也不是說很大,所以後來還是選用了yeahconsole,有興趣的自己可以兩個都試試。至於tilda 跟 yakuake 對我來說似乎是龐大了點,也多了些不必要的功能。還是推薦 yeahconsole 啦!
連結

星期三, 11月 12, 2008

Mumble

因為跟同學在外面住一整棟透天的, 我住最高:五樓, 一樓的如果要找我就要爬樓梯爬到死才找得到我, msn 有時候又講不清, skype 的話好像有點多此一舉(耗頻寬阿 :( ), 所以找了個LAN 對講軟體, 其實本來是要給玩遊戲(CS, WOW, WarIII) 的人用的, 可是也沒說不可以拿來節省體力阿. 此外mumble 還有個神奇的overlay 功能, 可以直接把user list 貼在你的game screen.

試過了TeamSpeak, 雖說是老軟體了, 發展一段時間了其實功能滿齊全的, 可是 Linux 版只支援 OSS, 用aoss 不知道為啥音質是差到了極點. 所以改用 Mumble , ubuntu 預設的套件庫裡面就有 mumble 了, 可以直接裝.
sudo apt-get install mumble mumble-server
註: mumble-server 是 mumble 的 server, 可以不裝, 不過你跟你朋友至少要有一個人裝

其他設定都還蠻簡單的..不多講了. 請 man mumble, murmurd

PulseAudio & Skype 新解!

PulseAudio 還是有不完全的地方阿.. 今天剛考完期中考本來想跟同學打個SC (not CS!) 開了cedega 進去SC 發現沒聲音, 囧掉了, 沒法已經開了遊戲打完那場(還是贏嘛, 喔喝喝) 開始了我與PA 奮鬥的旅程..

Cedega 之所以沒聲音其實我也不太確定為什麼.. 總而言之應該是ALSA 跟 PA 接軌的地方有點問題(因為wine 並沒有直接支援 PA, 所以應該是透過libasound 再由 PA 輸出). 網路上的同好似乎也都有相同無解的問題, 後來看到這篇 又挑起我的希望. 其重點是把 PulseAudio 當作ALSA 其中一個channel, 用dmix 來混合輸出.

步驟記錄一下:
( ~/.pulse/default.pa )
找到
#load-module module-alsa-sink

在他下面加兩行:
load-module module-alsa-source device=dsnooped
load-module module-alsa-sink device=dmix
這是讓pa 把聲音輸出到 dmix, 且增加一個source: dsnooped(等一下解釋), 接下來再把
load-module module-hal-detect
comment 掉, (改成 #load-module module-hal-detect )
然後重開pulseaudio, 重新登出登入或是 (killall pulseaudio && pulseaudio -D)
如此一來, pa 就會輸出到 dmix, 成為alsa 的屬下! (誤

接下來是改 ~/.asoundrc
如果你有照pa 官方或是網路上很多的教學, 可能已經把pcm.!default 設成輸出到pulse, 那麼你可以把 pcm.!default, ctl.!default 刪掉了, 留pcm.pulse & ctl.pulse 就好.

此外, 我又加了
pcm.dsnooped {
type dsnoop
ipc_key 12345
slave {
pcm "hw:1,0"
channels 1
}
}
是要讓skype 不霸佔整個input source.
---
好了! 在這邊大概是告一段落. 接下來就依自己的喜好而調整設定了.
若是希望程式使用 pulseaudio (可以調整個別程式的音量) 且程式直接支援pa, 那當然是直接選pulseaudio, 若只支援alsa, 則選 pulse (pcm.pulse). 若不希望使用pa, 則自行選其他的.

Skype 方面的設定. 我是將input 選 dsnooped (alsa), output兩個選pulse (pa through alsa) 這樣能正常講話又不會把音樂調小聲連 skype 都變小聲.

Cedega 的地方由於之前說過了, pa 用起來有問題, 所以選default (alsa) 來輸出聲音. 這樣就沒問題了!
--------------------
使用dsnoop 的原因是, 我跟朋友玩遊戲時會需要使用 mumble, 可是如果我選我的alsa input source 的話, skype 有電話來我就不能接了, 因為 alsa input 不給分享 source, 但是透過alsa 的 dsnoop plugin, 就可以分享這個input source (其實就有點像dmix).

星期一, 11月 10, 2008

Skype & PulseAudio

使用了PulseAudio 馬上遇到的問題就是 skype 掛了 ( >"< ), 用盡各種手段就是沒法讓skype 正常的播放/接收聲音. 後來找到了PA 的official site 裡面居然有解決的辦法!? (怪了怎麼我一開始沒來找.) http://www.pulseaudio.org/wiki/PerfectSetup

裡面寫到 (其實也好像也是從 Ubuntu forum 轉過來的):
編輯 /etc/pulse/daemon.conf
加入(或uncomment)
default-fragments = 8
default-fragment-size-msec = 5
這之後要重開 pulseaudio 才會讀入這些設定. 一般Ubuntu 的使用者應該只需要登入再登出就可以了
然後在 ~/.asoundrc 加入(這些我之前就有加了)
pcm.pulse { type pulse }
ctl.pulse { type pulse }

然後在skype 的設定裡面把 鈴聲(Ring) 跟 聲音出來(Sound Out)設定成pulse
再把 聲音進去(Sound In) 設定成你的 mic (使用plughw), 然後就沒問題了
我不是很瞭解為什麼要這樣做 skype 才會正常, 不過至少現在可以用了 :p

星期日, 11月 09, 2008

PulseAudio

PulseAudio 是一個 sound server, 基本上就有點像廣播電台一樣, 程式連線上去就可以接收.

用了兩天以後, 我覺得PA 的好處是, 每個程式都是獨立的client, 所以音量控制是分開的. 也許ALSA 也可以做到同樣的管理(不過我沒研究就是), 但是我之前使用ALSA 的時候, mplayer 一調音量整個系統的音量就會受影響. 而PA 接收到的音量控制訊息是只針對一個client 的音量控制, 所以每個程式的音量可以分開設定(好像DJ 喔, 好帥 :p )

壞處是 pulseaudio 其實還蠻耗系統資源的, 有時候pulseaudio 會佔掉4~7% of my cpu, 實在有點難接受一個sound server 就這麼耗資源. 另一個壞處就是我切到別的tty 的時候, pulseaudio 就會停掉. 當我切回來才會繼續播放, 可以解決的話比較好不過不造成嚴重的缺點.

Ubuntu 8.04 以後內建就使用 PulseAudio, 不過不知道為什麼我的好像預設沒有打開, 可能是因為我用的是fluxbox, 如果要在進入desktop 就打開的話只要在 ~/.fluxbox/startup 裡面加入
pulseaudio &
這樣fluxbox 在initialize 的時候就會自動開啟了.

mplayer 開啟的時候似乎就直接會去找pulseaudio 的server, 所以不太需要設定. 但是其他可能沒有支援pulseaudio 的軟體, 就要靠pulseaudio 的 alsa plugin 來把聲音導入/出

方法大概是這樣:
1. 安裝 libasound2-plugins
sudo apt-get install libasound2-plugins
2. 更改 alsa 的預設值, 讓它直接導到 pulseaudio
vim ~/.asoundrc
如果原本有的設定可以留著, 但我是全部都comment 掉了, 想說要用就全部都用PulseAudio, 加入以下設定:
pcm.pulse {
type pulse
}
ctl.pulse {
type pulse
}

pcm.!default {
type pulse
}
ctl.!default {
type pulse
}
這樣alsa 就會預設把聲音輸出給PulseAudio.
基本上這樣設定完大部分的程式都沒什麼問題.