【瞎折腾】Hack Deepin Desktop Environment
Contents
我想要什么?
初来乍到 Deepin,界面不可谓不美观。试用不久就发现一个不爽的地方,键盘快捷方式太少了,特别是没有控制窗口停靠贴标的快捷方式,根本就没有这个选项。
在官方论坛里搜索一番,deepin-wm
的 commit message 中有一条 :feat: support interactive tiling
,这个新功能在官方论坛中也有介绍:
1、当一个窗口拖到边界分屏的时候; 2、剩下的应用窗口会全部平铺展示; 3、这时候点击剩下的应用窗口,会自动放置在另一半屏幕,方便左右对比;
于是,我就安装了这个版本的deepin-wm,并找到了这段代码的位置
这个拖动的过程大概可以分成:
- 鼠标移动到 window title 部分,触控板按下不放
- 开始移动
- 移动到特定的触发区域(屏幕边界),显示 window preview
- 放开触控板,窗口改变位置至屏幕的一侧,大小为屏幕宽度的一半。
- 显示
TileSelector
,来选择另一个需要平铺的窗口。
开发环境
-
各种依赖(官方文档里有具体的)
-
deepin-wm (
git reset ce50 --hard
)1 2
./autogen.sh --prefix=/usr && make sudo make install
但是都不是我想要的,没有快捷方式!!不想用鼠标来拖动啊!!
继续折腾
意外的在vi /usr/share/dde-daemon/gesture.json
发现下面的配置:
|
|
这也算是一个意外的收获,毕竟不需要拖动窗口了,只需要用三根手指滑动。但是想想这姿势,就有点尴尬。。。
于是找到dde-daemon
这个项目,发现时用 go 写的,还行。在 gesture
包下的 built-in.go即是这个配置文件中 action 的实现。但是其实只有对wm
方法的调用:
|
|
其中wmTileDirectionLeft
为 1,wmTileDirectionRight
为 2。使用到的 wm
是在go-debug-factory
下的com.deepin.wm/auto.go
:
|
|
最终是用 dbus 调用 com.deepin.wm.TileActiveWindow 1
, 1 代表左边,2 代表右边。
所以,可以新建两个快捷方式:
qdbus com.deepin.wm.TileActiveWindow 1
qdbus com.deepin.wm.TileActiveWindow 2
触控板横向滑动
Deepin 默认没有开启触控板的左右滑动,需要在终端执行:
在官方论坛里找到的解决方案:
|
|
O(≧口≦)O
一波折腾,重启电脑,开不了机了,大概卡在了启动桌面环境?又出现和上次一样的迷之错误,(今年三月份的时候也遇到过,记得当时也是换了桌面环境之后遇到的,结果重装了系统)CTRL + ALT + F2
之类也进不去终端。
似乎是预感到会开不了机,在关机之前,我做了一个Ubuntu16.04
启动盘。使用启动盘的Try ubuntu
功能,进入新系统备份了一些重要的资料。这已经是在为重装系统做准备了吧。。。
最后试了试recovery
模式进入原来的系统,可以使用CTRL + ALT + F2
进去终端,只要可以进去就有解决的方法了。于是我卸载了 dde
和 deepin-wm
,切换 DM
为 lightdm
。
|
|
退出recovery
模式,进入原来的系统,终于不在出现那个迷之错误了,但是还是只能进入终端,没有图形界面。可以用这个命令启动图形界面:
|
|
终于,一道光闪过,进入了 unity 桌面。
不过我不甘心啊,又重新装了 dde
,总觉得是gdm3
的问题,这次使用 lightdm
进入 deepin 桌面,没什么大问题(就是不能开启 windows effect)。重启后还是一切正常。接着我把DM
换成gdm3
,又进不去了。。还是稳稳的用lightdm
吧。
真香!