在將wxX11裏在程序在arm板子上運行之後,我們發現那上面的程序運行的時候沒有邊框和標題欄。於是我們就找這方面的解決方法。首先在tinyx裏找到了一個窗口管理器twm,當把twm交叉編譯完以後,拷到板子上運行,發現在那上面是可以運行的。運行時首先要開啓Xfbdev服務器,然後設置好變量DISPLAY,之後twm就可以在那上面運行了。然後我們又做了一些配置工作,比方說板子上的字體的配置等。就是我們要在上面修改twm的源代碼,給這個窗口管理器增加關閉按鈕的時候,發現基於X的窗口管理器還有很多。於是我們嘗試了幾個,經歷了幾番編譯失敗之後,選擇了使用blackbox(這是唯一一個可以編譯成功的)。
//編譯twm窗口管理器時所用的命令
arm-linux-uclibc-gcc -o twm twm.c add_window.c cursor.c events.c gc.c iconmgr.c icons.c list.c menus.c parse.c resize.c session.c util.c version.c -I/home/wxX11/wxX11-arm/include -L/home/wxX11/wxX11-arm/lib -lX11 -lz -lXext -ldl -lm -fno-exceptions -Wall
-Wundef /home/wxX11/wxX11-arm/lib/libX11.so /home/wxX11/wxX11-arm/lib/libXau.a /home/wxX11/wxX11-arm/lib/libXdmcp.a /home/wxX11/wxX11-arm/lib/libXext.so /home/wxX11/wxX11-arm/lib/libXpm.so /home/wxX11/wxX11-arm/lib/libXmu.so /home/wxX11/wxX11-arm/lib/libXmuu.so
/home/wxX11/wxX11-arm/lib/libICE.so /home/wxX11/wxX11-arm/lib/libXt.so.6 /home/wxX11/wxX11-arm/lib/libSM.so.6
編譯時使用的命令爲(這裏不使用the X font library,否則編譯會出錯)
./configure --prefix=/home/wxX11/wxX11-arm --host=arm-linux --target=arm-linux --build=i686-pc-linux --disable-shared --enable-static --with-x --enable-xft=no --enable-nls=no CC=arm-linux-uclibc-gcc CXX=arm-linux-uclibc-g++ CFLAGS=-I/home/wxX11/wxX11-arm/include
CXXFLAGS=-I/home/wxX11/wxX11-arm/include LDFLAGS=-L/home/wxX11/wxX11-arm/lib CPPFLAGS=-I/home/wxX11/wxX11-arm/include --x-libraries=/home/wxX11/wxX11-arm/lib --x-includes=/home/wxX11/wxX11-arm/include
make
make install
然後在板子上運行,發現這個窗口管理器是要比twm好多了,我覺得這上面的功能足夠我們使用的了。
這裏還是要對它進行配置。
因爲在編譯的時候沒有使用the X font library,所以就使用了系統默認的X LOGICAL FONT DESCRIPTION (XLFD)
http://blog.tianya.cn/blogger/post_read.asp?BlogID=1037681&PostID=14142861
上面的這個網頁對這種字體的介紹如下
X LOGICAL FONT DESCRIPTION (XLFD)
*XLFD*
XLFD 是 X 中使用的包括字體大小,字符集等信息的字體名。格式如下:
FOUNDRY-FAMILY-WEIGHT-SLANT-WIDTH-STYLE-PIXEL-POINT-X-Y-SPACE-AVE-CR-CE
每個字段的意思是:
- FOUNDRY: FOUNDRY 字段,編寫字體的公司名稱。
- FAMILY: FAMILY_NAME 字段,基本的字體族名稱 (helvetica、gothic、times 等等)
- WEIGHT: WEIGHT_NAME 字段,字母的粗細。(淺 light、中等 medium、粗 bold 等)
- SLANT: SLANT 字段。
r: 羅馬體 Roman (沒有傾斜度)
i: 斜體 Italic
o: 傾斜體 Oblique
ri: 反向斜體 Reverse Italic
ro: 反向傾斜體 Reverse Oblique
ot: 其他
number: 可縮放字體
- WIDTH: SETWIDTH_NAME 字段,字符寬度 (正常 normal、壓縮 condensed、窄
narrow、雙寬度 double wide 等)
- STYLE: ADD_STYLE_NAME 字段,字體的額外信息 (Serif、Sans-Serif、
Informal、Decorated 等等)。
- PIXEL: PIXEL_SIZE 字段,字體以像素計的高度。
- POINT: POINT_SIZE 字段,10 倍字體以 point 數計的高度。
- X: RESOLUTION_X 字段,X 的位數 (每英寸多少點)
- Y: RESOLUTION_Y 字段,Y 的位數 (每英寸多少點)
- SPACE: SPACING 字段
p:比例 (Proportional)
m:等寬 (Monospaced)
c:等寬等高 (CharCell)
- AVE: AVERAGE_WIDTH 字段,10 倍字體的以像素計的寬度。
- CR: CHARSET_REGISTRY 字段。字符集的組名。
- CE: CHARSET_ENCODING 字段。字符集名的其餘部分。對有些字符集,比如 JIS
X 0208,來說,如果該字段爲 0,編碼點 (code point) 取 GL 的值, 若
爲 1,則取 GR 的值。
舉個例子,設置大小爲 14,對應 JIS X 0208 編碼,可以寫成以下格式
-misc-fixed-medium-r-normal--16-110-100-100-c-160-jisx0208.1990-0
X FONTSET
*fontset* *xfontset*
單字節字符通常只用一個字體,而對多字節來講,經常用到字體的組合,這意味着一組字
符使用了一種字體,而另一組字符使用別的字體 (也許是雙寬度),字體的集合就叫做字
體集 (fontset)。
字體集裏的字體依賴於你係統的 locale,X windows 維護着這個 locale 所需要的字符
組信息的表,你需要在 'guifontset' 裏指定 locale 所需要的全部字體。
備註: 字體集總是使用當前的 locale,即使 'encoding' 已設置成另一種編碼。在那種
情況下,你要設置 'guifont' 和 'guifontwide' 而不是 'guifontset'。
例如:
|charset| 語言 "字符組"
GB2312 中文 (簡體) ISO-8859-1 及 GB 2312
Big5 中文 (繁體) ISO-8859-1 及 Big5
CNS-11643 中文 (繁體) ISO-8859-1、CNS 11643-1 及 CNS 11643-2
EUC-JP 日語 JIS X 0201 及 JIS X 0208
EUC-KR 韓語 ISO-8859-1 及 KS C 5601 (KS X 1001)
你可以用 xlsfonts 命令來查找字體,例如,你需要找 KS C 5601 的一種字體:
xlsfonts | grep ksc5601
這個比較複雜,也令人迷惑,也許你需要閱讀 X-Windows 的文檔,它可以幫助你理解你
不懂的地方。
*base_font_name_list*
當你找到你所需要的字體以後,你就可以通過設置 'guifontset' 來設置字體。要使用一
系列的字體,你可以用逗號把它們隔開。
例如,如果你要使用 ja_JP.eucJP locale,你需要 JIS X 0201 和 JIS X 0208。你可以
提供顯式指定字符集的字體列表,就像這樣:
:set guifontset=-misc-fixed-medium-r-normal--14-130-75-75-c-140-jisx0208.1983-0,
\-misc-fixed-medium-r-normal--14-130-75-75-c-70-jisx0201.1976-0
另外,你也可以設置一個省略編碼名的基本字體名列表,讓 X-Windows 選擇 locale 所
需要的字體字符。例如:
:set guifontset=-misc-fixed-medium-r-normal--14-130-75-75-c-140,
\-misc-fixed-medium-r-normal--14-130-75-75-c-70
另外,你也可以提供單個基本字體名,讓 X-Windows 選擇系統可用的所有字體,例
如:
:set guifontset=-misc-fixed-medium-r-normal--14-*
另外,你也可以指定字體別名,請參考 fonts 目錄下的 fonts.alias 文件 (例如,
/usr/X11R6/lib/X11/fonts)。例如:
:set guifontset=k14,r14
*E253*
在東亞字體中,正規的字符單元是正方形,當你混合 Latin 字體和東亞字體的時候,東
亞字體的寬度應該是 Latin 字體的兩倍。
如果 'guifontset' 不爲空,|:highlight| 命令的 "font" 參數也被解釋爲字體集。例
如,你可以設置高亮顯示:
:hi Comment font=英文_字體,你的_字體
如果你使用了一個錯誤的 "font" 參數,你會收到錯誤信息。
也要確定你在設置高亮組的字體之前設置 'guifontset'。
在板子上可以使用的兩種字體爲:
-adobe-helvetica-bold-r-normal--30-120-75-75-m-60-hp-roman8
-adobe-courier-bold-o-normal--30-100-75-75-m-60-hp-roman8