又要开始折腾了(第4轮折腾):设法同时启动起来两套WM,和平共存与一个桌面。

仅供存放个人的配置文件,不要在本版发问。
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

又要开始折腾了(第4轮折腾):设法同时启动起来两套WM,和平共存与一个桌面。

#1

帖子 ljj_jjl2008 » 2011-08-06 9:12

先总结一下前三轮折腾:
1,debootstrap安装系统,并给系统安装了一个jwm+rox-filer的简单桌面
2,新一轮折腾:让系统启动完成后就一个黑屏幕,没有鼠标光标,没有面板,没有桌面,没有图标,没有任何菜单,可是还能用。
折腾出来一个openbox(窗口管理器)+trayer(独立托盘)+unclutter(隐藏鼠标光标)+apwal(图形化启动菜单)+kdocker(最小化程序到托盘)的环境。
3,再一次折腾:启动后把几个最常用的程序都自动启动起来,然后缩小窗口,布置在屏幕四周,鼠标点到谁谁就自动放大(其他的自动缩小)
折腾出来一个:特别配置的awesome。

第四轮折腾的思路来源于:
viewtopic.php?f=15&t=340641
现在内存这么大,cpu核心也不少。能不能从硬件上或软件上实现多系统并行呢?
这样切换系统就像切换桌面一样,可以随时关闭打开一个系统,可以随时休眠一个系统,可以一个Linux系统用这两个核心编译着程序,那两个核心开着水果做图。

技术难度方面不太懂,不过我觉得能实现还是比较值得的。
大家有什么技术上的或应用上的想法?

高人,闲人,都来说说吧。
我没有那个帖子里面那么伟大的思想。我只是想在一个桌面上不用虚拟机开两套linux的WM。(不是tty7上开一个WM,tty8上面再开一个那种,那个没有什么意思)
正好我前面折腾出3个环境了,本来折腾这些是为了给我住处的老爷机用的,可发现openbox的和awesome的我都比较喜欢,现在这两个环境我轮流着使用着,已经有取代原来kde环境用于日常工作的趋势了。可是这两个环境风格特色上差异也太大了,我于是有了这个想法。另外一个原因是我是在上班时间折腾这些的,可是我不能因此耽误我的工作,我在以后折腾新风格新wm时,希望有一个环境可以开着飞鸽(公司制度有规定,开机必须开飞鸽,随时联系),而且能处理公文,另一个环境随便折腾,所以折腾的同时必须要保证不要丢了飞鸽的信息,及时接收别人传递的文件。
目标:
一个虚拟桌面启动openbox风格的,一个虚拟桌面启动awesome风格的。
如果做不到,就以一个为主,另一个在一个独立窗口里面启动和运行。
如果还是做不到,就加一个按钮或命令,能够在不用关闭已经打开的程序和文件,也不注销的前提下,快速切换wm和风格。

同样还是暂时没有任何思路和办法,不知道怎么解决呀!
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

Re: 又要开始折腾了(第4轮折腾):设法同时启动起来两套WM,和平共存与一个桌面。

#3

帖子 ljj_jjl2008 » 2011-08-06 10:41

看到了一点希望:
好像有个:Xephyr,用于在xserver里面在启动一个Xephyr,然后在里面可以运行图形界面。
在新立得里面过滤Xephyr时,结果过滤出来一个:
Sugar graphical shell - emulator

Sugar is a graphical user interface aimed at children.

Originating as intregral part of the OLPC "XO" a.k.a. the $100 laptop,
Sugar has since grown into a more widely usable low-ressource desktop
environment for kids.

This package contains a wrapper script to run Sugar in a Xephyr window,
making it possible to run it from inside another Desktop environment.
然后我安装了这个sugar,果然可以启动起一个窗口,里面出现了图形界面。

总算有点希望了。
头像
leeaman
帖子: 30702
注册时间: 2007-02-02 18:14
系统: debian sid

Re: 又要开始折腾了(第4轮折腾):设法同时启动起来两套WM,和平共存与一个桌面。

#4

帖子 leeaman » 2011-08-06 10:49

瞎折腾,这个去问ee先就好了
醉了星星,醉月亮●●●●●The Long Way To Go(*^_^*)
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

Re: 又要开始折腾了(第4轮折腾):设法同时启动起来两套WM,和平共存与一个桌面。

#5

帖子 ljj_jjl2008 » 2011-08-06 11:04

代码: 全选

Xephyr :2 -host-cursor -screen 800x480x16 -dpi 96 -ac
DISPLAY=:2 glxgears &
找到了启动命令。
头像
月下叹逍遥
论坛版主
帖子: 33994
注册时间: 2010-10-07 14:23
系统: Archdows10
来自: 某系某星某洲某国某省某市
联系:

Re: 又要开始折腾了(第4轮折腾):设法同时启动起来两套WM,和平共存与一个桌面。

#6

帖子 月下叹逍遥 » 2011-08-06 11:14

:em01
浮生七十今三十,从此凄惶未可知
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

Re: 又要开始折腾了(第4轮折腾):设法同时启动起来两套WM,和平共存与一个桌面。

#7

帖子 ljj_jjl2008 » 2011-08-06 12:09

已经测试,在openbox环境里面,打开Xephyr 窗口里面又运行了jwm环境。
有一些有趣的问题:
1,jwm里面用菜单和命令打开的窗口是jwm风格的,可是他们离不开这个Xephyr窗口,是这个窗口的子窗口了(虽然不喜欢这样,不过这是预料之中的)。
2,jwm里面用菜单打开的的chromium居然跳到了Xephyr外面,成了openbox风格的了(这可就是意料之外了)!
3,不能共享剪切板呀!这是个大问题。
头像
photor
论坛版主
帖子: 11004
注册时间: 2008-04-26 12:41

Re: 又要开始折腾了(第4轮折腾):设法同时启动起来两套WM,和平共存与一个桌面。

#8

帖子 photor » 2011-08-06 14:18

ljj_jjl2008 写了:已经测试,在openbox环境里面,打开Xephyr 窗口里面又运行了jwm环境。
有一些有趣的问题:
1,jwm里面用菜单和命令打开的窗口是jwm风格的,可是他们离不开这个Xephyr窗口,是这个窗口的子窗口了(虽然不喜欢这样,不过这是预料之中的)。
2,jwm里面用菜单打开的的chromium居然跳到了Xephyr外面,成了openbox风格的了(这可就是意料之外了)!
3,不能共享剪切板呀!这是个大问题。
跟2楼说的不同虚拟桌面是一回事吗? :em09
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

Re: 又要开始折腾了(第4轮折腾):设法同时启动起来两套WM,和平共存与一个桌面。

#9

帖子 ljj_jjl2008 » 2011-08-06 16:04

应该不是一回事。
又发现几个问题:
1,openbox里面可以打开awesome,但awesome里面不能打开openbox。
2,键盘映射错误。我用的这种安装方式系统的,没有自动设置键盘。在主系统中基本正常的,在Xephyr里面就全部混乱了。

这是英文的设置键盘的过程:

Example: Keyboard layout and model on Acer 5920G Laptop
Keyboard model and layout may be set in the file /etc/X11/xorg.conf.d/keyboard.conf or any other .conf file in the same directory.

MatchIsKeyboard "yes": set the input device to a keyboard
Option "XkbModel" "acer_laptop": set the keyboard model to an Acer * Option "XkbLayout" "be": set the keyboard layout to belgian. You may replace be with whatever layout you have.
Option "XkbVariant" "sundeadkeys": set the layout variant to Sun dead keys. You may omit the XkbVariant option if you stick with the default variant.
laptop keyboard. You may replace acer_laptop with your actual keyboard layout.

Note that a list of keyboard layouts and models can be found in /usr/share/X11/xkb/rules/base.lst

Section "InputClass"
Identifier "Keyboard Defaults"
MatchIsKeyboard "yes"
Option "XkbModel" "acer_laptop"
Option "XkbLayout" "be"
Option "XkbVariant" "sundeadkeys"
EndSection
Keyboard settings
Xorg may fail to detect your keyboard correctly. This might give problems with your keyboard layout or keyboard model not being set correctly.

To see a full list of keyboard models, layouts, variants and options, open:

/usr/share/X11/xkb/rules/xorg.lst
To set the keymap for the current Xorg session:

# setxkbmap dvorak
Key repeat delay and rate
Use xset r rate DELAY RATE to change them, then use xinitrc to make it permanent.

Viewing Keyboard Settings
$ setxkbmap -print -verbose 10
Setting verbose level to 10
locale is C
Applied rules from evdev:
model: evdev
layout: us
options: terminate:ctrl_alt_bksp
Trying to build keymap using the following components:
keycodes: evdev+aliases(qwerty)
types: complete
compat: complete
symbols: pc+us+inet(evdev)+terminate(ctrl_alt_bksp)
geometry: pc(pc104)
xkb_keymap {
xkb_keycodes { include "evdev+aliases(qwerty)" };
xkb_types { include "complete" };
xkb_compat { include "complete" };
xkb_symbols { include "pc+us+inet(evdev)+terminate(ctrl_alt_bksp)" };
xkb_geometry { include "pc(pc104)" };
};
Setting Keyboard Layout With Hot-Plugging
To permanently change your keyboard layout, add the following to xorg.conf:

Section "InputClass"
Identifier "Keyboard Defaults"
MatchIsKeyboard "yes"
Option "XkbLayout" "dvorak"
EndSection
Note that this is in an InputClass Section and not the InputDevice section for the keyboard.

Setting Keyboard Layout Without Hot-Plugging (deprecated)
Note: Changing the keyboard layout through this method requires disabling input hot-plugging.
To change the keyboard layout, use the XkbLayout option in the keyboard InputDevice section. For example, if you have a keyboard with English (Great Britain) layout, your keyboard InputDevice section might look similar to this:

Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbLayout" "gb"
EndSection
To change the keyboard model, use the XkbModel option in the keyboard InputDevice section. For example, if you have a Microsoft Wireless Multimedia Keyboard:

Option "XkbModel" "microsoftmult"
Switching Between Keyboard Layouts
To be able to easily switch keyboard layouts, modify the Options used in either of the above two methods. For example, to switch between a US and a Swedish layout using the Caps Lock key, use:

Option "XkbLayout" "us, se"
Option "XkbOptions" "grp:caps_toggle"
This is mainly useful if you run a Desktop Environment which does not take care of keyboard layouts for you.

Disable mousekeys Permanently
Note: Now this is disabled by default. [1]
To disable the mousekeys permanently and prevent Shift+NumLock or Shift+Alt+NumLock to enable, edit:

/usr/share/X11/xkb/compat/complete
and comment out:

augment "mousekeys"
augment "accessx(full)"

键盘设置
Xorg 可能会探测键盘失败,这可能是没有正确设置键盘布局(keyboard layout)和键盘模型(keyboard model)。

想看keyboard models, layouts, variants and options的完整的列表, 请打开.


/usr/share/X11/xkb/rules/xorg.lst
键盘布局 Keyboard Layout
在keyboard InputDevice section中使用XkbLayout选项来改变键盘布局。如果你有一个英文布局的键盘,如下所示:

Option "XkbLayout" "gb"
键盘模型 Keyboard Model
在keyboard InputDevice section中使用XkbModel选项来改变键盘模型。如果你有一个M$的无线多媒体键盘,如下所示:

Option "XkbModel" "microsoftmult"
头像
月下叹逍遥
论坛版主
帖子: 33994
注册时间: 2010-10-07 14:23
系统: Archdows10
来自: 某系某星某洲某国某省某市
联系:

Re: 又要开始折腾了(第4轮折腾):设法同时启动起来两套WM,和平共存与一个桌面。

#10

帖子 月下叹逍遥 » 2011-08-06 16:04

:em01
浮生七十今三十,从此凄惶未可知
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: 又要开始折腾了(第4轮折腾):设法同时启动起来两套WM,和平共存与一个桌面。

#11

帖子 eexpress » 2011-08-06 16:06

不就是Xnew的脚本。。。。
没意思。

调试配置用的。
● 鸣学
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

Re: 又要开始折腾了(第4轮折腾):设法同时启动起来两套WM,和平共存与一个桌面。

#12

帖子 ljj_jjl2008 » 2011-08-06 20:14

已经做出了想要的效果了,不过命令在班上放着,我现在在家里,到明天再贴上来。
另外,.org.cn的网址挂了,不能访问了。我现在用.com.cn访问的。
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

Re: 又要开始折腾了(第4轮折腾):设法同时启动起来两套WM,和平共存与一个桌面。

#13

帖子 ljj_jjl2008 » 2011-08-07 8:31

代码: 全选

Xephyr :3 -fullscreen -noreset  -dpi 96 -ac -name awesome -title awesome &
sleep 4
xkbcomp :0 :3 &
DISPLAY=:3 exec awesome &
DISPLAY=:3 geany &
DISPLAY=:3 dolphin &
DISPLAY=:3 sakura &
DISPLAY=:3 chromium-browser &
DISPLAY=:3 fcitx &

代码: 全选

Xephyr :4 -fullscreen -noreset  -dpi 96 -ac -name openbox -title openbox &
sleep 5
xkbcomp :0 :4 &
DISPLAY=:4 exec openbox-session &
DISPLAY=:4 fcitx &

代码: 全选

Xephyr :2 -fullscreen -noreset  -dpi 96 -ac -name jwm -title jwm &
sleep 4 
xkbcomp :0 :2 &
DISPLAY=:2 jwm &
DISPLAY=:2 rox-filer -p default &
DISPLAY=:2 fcitx &
头像
ljj_jjl2008
论坛版主
帖子: 14255
注册时间: 2007-09-16 8:29

Re: 又要开始折腾了(第4轮折腾):设法同时启动起来两套WM,和平共存与一个桌面。

#15

帖子 ljj_jjl2008 » 2011-08-07 10:55

疯狂的Windows manager---如何让多套WM同时启动,并疯狂测试及调试WM?
先总结一下前三轮折腾:
1,通过debootstrap,依靠网络从ubuntu软件源安装最小化的ubuntu系统,并给系统安装了一个jwm+rox-filer的简单桌面
2,新一轮折腾:让系统启动完成后就一个黑屏幕,没有鼠标光标,没有面板,没有桌面,没有图标,没有任何菜单,可是还能用。
折腾出来一个openbox(窗口管理器)+trayer(独立托盘)+unclutter(隐藏鼠标光标)+apwal(图形化启动菜单)+kdocker(最小化程序到托盘)的环境。
3,再一次折腾:启动后把几个最常用的程序都自动启动起来,然后缩小窗口,布置在屏幕四周,鼠标点到谁谁就自动放大(其他的自动缩小)
折腾出来一个:特别配置的awesome。

第四轮折腾的思路来源于:
viewtopic.php?f=15&t=340641
现在内存这么大,cpu核心也不少。能不能从硬件上或软件上实现多系统并行呢?
这样切换系统就像切换桌面一样,可以随时关闭打开一个系统,可以随时休眠一个系统,可以一个Linux系统用这两个核心编译着程序,那两个核心开着水果做图。

技术难度方面不太懂,不过我觉得能实现还是比较值得的。
大家有什么技术上的或应用上的想法?

高人,闲人,都来说说吧。
我没有那个帖子里面那么伟大的思想。我只是想在一个桌面上不用虚拟机开两套linux的WM。(不是tty7上开一个WM,tty8上面再开一个那种,那个没有什么意思)
正好我前面折腾出3个环境了,本来折腾这些是为了给我住处的老爷机用的,可发现openbox的和awesome的我都比较喜欢,现在这两个环境我轮流着使用着,已经有取代原来kde环境用于日常工作的趋势了。可是这两个环境风格特色上差异也太大了,我于是有了这个想法。另外一个原因是我是在上班时间折腾这些的,可是我不能因此耽误我的工作,我在以后折腾新风格新wm时,希望有一个环境可以开着飞鸽(公司制度有规定,开机必须开飞鸽,随时联系),而且能处理公文,另一个环境随便折腾,所以折腾的同时必须要保证不要丢了飞鸽的信息,及时接收别人传递的文件。
目标:
一个虚拟桌面启动openbox风格的,一个虚拟桌面启动awesome风格的。
如果做不到,就以一个为主,另一个在一个独立窗口里面启动和运行。
如果还是做不到,就加一个按钮或命令,能够在不用关闭已经打开的程序和文件,也不注销的前提下,快速切换wm和风格。

同样还是暂时没有任何思路和办法,不知道怎么解决呀!
后来经过不停google,并用我那可怜的英语水平阅读着英语文档,借助google翻译那语法不通的翻译结果,忙了一天时间,终于找到了解决方案。

其实方法并不特别,只是借助了一个叫Xephyr的软件。

****先是知识培训****(高手跳过)

代码: 全选

sudo apt-get install xserver-xephyr
Xephyr is a X server that runs as a small window within your current X session.

Xephyr 是一个 Xnest 的替代产品,因为 Xnest 不提供现代 X server 的一些 高级特性,比如图形加速的支持。简而言之,Xephyr 是一个 X server,但是 它执行在一个存在的 X server 里面,这个可以用来做很多事情,比如需要通 过 XDMCP 连接到另外一台主机,那么不需要另外打开一个新的 X server;又 比如正在写一个 window manager,那么在一个 X server 里面打开的 X server 里面调试,将会比直接在现有的 X server 里面替换现有的 window manager 方便很多。对于热衷于更换自己的 window manager 的狂热爱好 者,Xephyr 提供了绝佳的试验环境。

Debian 里的 xserver-xephyr 包:

root@jianlee:~# dpkg -L xserver-xephyr
/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/xserver-xephyr
/usr/share/doc/xserver-xephyr/changelog.gz
/usr/share/doc/xserver-xephyr/changelog.Debian.gz
/usr/share/doc/xserver-xephyr/copyright
/usr/share/doc/xserver-xephyr/README
/usr/bin
/usr/bin/Xephyr
运行 -help 获得帮助,基本的使用方式是 Xephyr :n -options。这里 :n 是 DISPLAY 的值,Xephyr 本身是一个 X client,也是一个 X server,它是 client 通过环境变量 DISPLAY 设置显示的 X server,这里的 :n 指定的是它 作为 X server 的序号,也就是说 X client 可以通过 -display 或者更改环 境变量。我们这里简单介绍一些其他的参数,如 -query 和 -indirect 可以用 来向打开了 XDMCP 的主机发送连接请求,-screen 指定屏幕大小,-fullscreen 全屏。

简单说,Xephyr作用就是在我们屏幕上开一个窗口(或全屏),当一个虚拟的屏幕使用,并可以指定这个虚拟屏幕的代号为 :n 。以后我们打开的图形界面的程序,直接打开的就是在真实屏幕上运行的,而用以下方式打开就会到新开的虚拟屏幕中运行了:

代码: 全选

Xephyr :n -options
DISPLAY=:n command 
我们关心的参数是:
-screen 1024x768x16/-fullscreen(屏幕大小色深/全屏:二选一)
-dpi 96 (dpi值)
:n (虚拟屏幕代号)
-name [name](屏幕名称)
-title [title](屏幕标题)
-noreset(不加此选项,最后一个图形界面的程序关闭后,窗口自动关闭。加上则需要手工关闭。)
-host-cursor(加上以后光标不会被虚拟屏幕里面的程序改变,即鼠标光标是固定样式的,但光标移动速度比较快。不加则光标会改变,但有时反应迟钝)
-keybd(设置键盘类型)
希望我画的这个简单的图能说明Xephyr的工作原理:

代码: 全选

                硬 件
                    |
               Xserver----------------
               |        |              |
          Xephyr1      WM1----      Xephyr2
               |        |       |       |
            WM2      soft1    soft2   WM3                  
               |                        |
             soft                     soft
一般linux要显示窗口和图形界面需要3层:Xserver(图形驱动)、WM(窗口管理器)和soft(图形界面软件)。并且两个WM不能并存,如果新启动起来一个WM,个必然会替代掉先前启动的那一个WM。
但是Xephyr在Xserver(图形驱动)和 WM(窗口管理器)中间加上了一层,让后来启动起来的WM看不见Xserver,而把对应的Xephyr当成Xserver,就不会替代掉前面启动的WM。所以我们启动多少Xephyr,就可以对应启动多少WM(只要你的机器撑得住)。

咋一看,这好像是一种虚拟机,其实这和虚拟机是有很大区别的:我们在Xephyr内的程序和在Xephyr外的程序其实都是实实在在的进程,如果Xephyr内外都运行了一个gedit,不管我们在哪里发出一个killall gedit命令,这两个gedit就都被kill掉了。

并且我google到这么一段很有趣的内容:
Xephyr是一个替代的Xnest嵌套X服务器上周提到。这些方案都提供了嵌套的X显示-到一个窗口父X服务器,而不是直接绘制到一个硬屏绘图-但他们在非常不同的方式完成这一。Xnest代理X请求到父服务器(实际上不是执行的操作本身),而Xephyr行为对每个请求和汲取到的X图像,然后将其显示在父服务器上的一个窗口 。
这意味着,Xephyr可以处理父服务器无法处理请求。例如,它可以提供渲染扩展,使客户能够快速显示消除锯齿的文本父显示即使没有渲染扩展。
并且通过测试发现:还真是这样,在Xephyr里面的chromium-browser的字体渲染比在外面的果然要好一些。
****测试环境、内容和结果****

测试的环境是上面提到的3个环境。具体看以下链接:
viewtopic.php?f=77&t=338764
测试前的准备:

代码: 全选

setxkbmap -query 
输出内容大致如下:
rules: evdev
model: pc105
layout: us
variant: intl
每一项的可选值和含义到这个文件去查:/usr/share/X11/xkb/rules/base.lst
如果内容是空或者明显是错误的,网上的说法是修改xorg.conf的键盘对应项的键值,可是我改了却不起作用。后来google到一个办法:修改文件 /etc/default/keyboard ,内容还是参照上面那个文件,不过如果是台式机,一般按我的这个设法就可以了。这个文件中有警告,是建议我们去xorg.conf里面去改。
改正确以后,记下这些值。
测试内容:
1,下面这写命令请写成shell文件(可执行权限),用各种方式调用(菜单、快捷键、命令行等),也可以放入WM的启动文件中自动启动,都可以启动Xephyr新环境,命令行如下:
(Xephyr这一行请根据需要来修改,比如键盘布局部分,比如加上-host-cursor等)

代码: 全选

Xephyr :3 -fullscreen -keybd ephyr,,,xkbmodel=pc105,xkblayout=us,xkbrules=evdev,xkboption=intl -noreset  -dpi 96 -ac -name awesome -title awesome &
sleep 4
#xkbcomp :0 :3 &
DISPLAY=:3 exec awesome &
DISPLAY=:3 geany &
DISPLAY=:3 dolphin &
DISPLAY=:3 sakura &
DISPLAY=:3 chromium-browser &
DISPLAY=:3 fcitx &

代码: 全选

Xephyr :4 -fullscreen -keybd ephyr,,,xkbmodel=pc105,xkblayout=us,xkbrules=evdev,xkboption=intl -noreset  -dpi 96 -ac -name openbox -title openbox &
sleep 5
#xkbcomp :0 :4 &
DISPLAY=:4 exec openbox-session &
DISPLAY=:4 fcitx &

代码: 全选

Xephyr :2 -fullscreen -keybd ephyr,,,xkbmodel=pc105,xkblayout=us,xkbrules=evdev,xkboption=intl -noreset  -dpi 96 -ac -name jwm -title jwm &
sleep 4 
#xkbcomp :0 :2 &
DISPLAY=:2 jwm &
DISPLAY=:2 rox-filer -p default &
DISPLAY=:2 fcitx &
测试结果:正常。
(1),需要在Xephyr中单独启动一个fcitx进程,才能输入汉字。我估计有的输入法不能同时开多个进程,就无法在这个环境中使用了。
(2),xkbcomp :0 :n的作用是调整Xephyr的键盘布局,这条指令是我花了接近3个小时才google到的,是最简单最有效的指令,如果不输入这条指令,Xephyr内的键盘是混乱的,很多按键都错位了。当时郁闷死了,还好最后找到了办法解决。
因为已经改变了Xephyr指令的写法,这句指令可以省略了-----2011.08.07 注
(3),等用指令启动起来在Xephyr中WM以后,利用WM的菜单(以及快捷键)打开的程序是在Xephyr窗口里面的,不能切换到Xephyr窗口外面去(如果Xephyr是全屏模式,其实也不行,只是看不出来了),并且是Xephyr里面WM的风格布局。
但也有例外,比如chromium,假如主WM里面已经开了一个chromium,Xephyr窗口里面再打开的chromium就会跑到主窗口来,反之则不跑出来。
(4),可以在openbox里面再次打开openbox,诸如此类,这主要用于调试,比如改了配置文件,担心出错,就可以这么先来一次看看效果。同样适用于awesome等。调试awesome的命令是:

代码: 全选

awesome -c ~/.config/awesome/rc.lua.new
(5),快捷键:主WM中的快捷键会覆盖Xephyr窗口WM中相同的快捷键,所以设置的快捷键不要冲突。
(6),软件设置:几个WM中打开的软件其实用的是一个~目录,一套设置文件,所以有时有点影响:在awesome中打开一次某个软件然后关闭,再到openbox里面打开他,往往发现这个软件就出现在awesome打开时布局到的位置和大小了,然后把他最大化,再关闭,在到awesome里面打开,软件很可能还是最大化状态,没有被自动布局,需要win-m切换一下。
(7),剪切板有问题:不能共享主WM中打开的全局剪切板,也不能在Xephyr窗口WM中开独立进程,Xephyr窗口WM没有全局剪切板可用。开另外一种类型的全局剪切板可用,但是我担心安全问题,没有开。与主WM共享剪切板有解决方案,如下:
(发现了BUG,慎用此代码,一次复制成千上万数据时同步不能正确完成,出现乱码----2011.08.09)
先安装xsel:

代码: 全选

sudo apt-get install xsel
然后建立一个shell文件

代码: 全选

#! /bin/bash
firstxserver=$1
secondxserver=$2
#set the variables to the default
echo . | xsel --display $firstxserver -b -i 
echo . | xsel --display $secondxserver -b -i
clipboard=.

while [ 1 ]
do
#get the values of the clipboard
firstdislpayclipboard=$(xsel --display $firstxserver -b -o)
seconddislpayclipboard=$(xsel --display $secondxserver -b -o)

#if the first x servers clipboad chages
if [ "$firstdislpayclipboard" != "$clipboard" ]
then

#if it doesnt change to be blank
if [ $(echo $firstdislpayclipboard | grep ^$ -c) -ne 1 ]
then
#set the appropriate variables to be the contents of the first comand
seconddislpayclipboard=$firstdislpayclipboard
clipboard=$firstdislpayclipboard
xsel --display $firstxserver -b -o | xsel --display $secondxserver -b -i
else
#if it is blank set it to be .in case if its because the x server went  down
echo . | xsel --display $firstxserver -b -i 
fi

fi

#if the second x servers clipboad chages
if [ "$seconddislpayclipboard" != "$clipboard" ]
then

#if it doesnt change to be blank
if [ $(echo $seconddislpayclipboard | grep ^$ -c) -ne 1 ]
then
#set the appropriate variables to be the contents of the first comand
firstdislpayclipboard=$seconddislpayclipboard
clipboard=$seconddislpayclipboard
xsel --display $secondxserver -b -o | xsel --display $firstxserver -b -i
else
#if it is blank set it to be .in case if its because the x server went  down
echo . | xsel --display $secondxserver -b -i 
fi

fi

sleep 3
done
sleep 3 则是每3秒同步一下两个窗口的剪切板。
用下列命令打开这个文件:

代码: 全选

/path/to/file :0 :n
n是启动Xephyr 时指定的,比如:Xephyr :2....,则是/path/to/file :0 :2

我还在继续测试中,如果能改进,会汇报出来。

****这个,有什么作用?****

1,装酷唬人:
启动到openbox里面,切换到桌面2,全屏启动一个awesome,再切换到桌面3里面,启动一个jwm......
唬人绰绰有余了,骗个女朋友什么的不难吧。
2,调试系统:
这个就不用说了
3,测试其他WM
也不用多说了
4,提高工作效率
这是我自己折腾这套系统的目的:
awesome工作效率高,但不适合用于im(即时通讯工具),因为他会自动把IM的窗口给“布局”了,并且不能随意移动。
openbox适用于IM,可是在处理事物型工作方面比awesome低太多了,awesome把几个窗口一起开着,布局一下,就是方便。
也许有人有本领把awesome设置成浮动窗口可以自由移动,也许有人能够把openbox设置成可以自动布局,但总归这不是他们擅长的东西,强硬设置成了那样子也不会真正好用,还不如干脆把他们都启动起来。分工合作。
有了这个,鱼和熊掌就能兼得了。我的机器同时开openbox和awesome,并不很慢(这两个都是轻量级的)

几个注意事项:
1,一定要记住主WM关闭窗口的快捷键,Xephyr窗口全屏时,关闭掉里面的WM,Xephyr窗口很可能不会自动关闭,这时需要按一下关闭窗口的快捷键(openbox和大多数WM里面是ctrl+f4,awesome里面默认是win+shift+c)
2,注销主WM时,有很大可能会把Xephyr和里面的WM一起灭掉。所以尽量先关闭掉Xephyr窗口(包括全屏窗口)再注销主WM。
(全文终)
(测试还在进行中,请关注最新进展)
回复