自打用了cinnamon之后 无比想念gnome的扩展 虽然都是基于gjs的东西 但是gnome的插件在cinnamon上没有就很痛苦
这次修改了个插件 recents 记录历史打开的文件 想添加个功能 鼠标右键文件打开该文件所在的目录
这个功能在gnome上是有的 但是cinnamon上没有
对比半天 找到主要实现方法是 _launchFile(a, event, uri)
在cinnamon的插件recents的applets文件中的函数定义是_launchFile(a, b, c, uri)
给我弄懵了 为啥参数数量不一样 而且这个abc啥玩意
我用global.log打印出来在调试器看(alt+f2 -> lg = melange)
发现a是actor 就是点击的元素 b没有输出 c输出false
往上找发现是调用的Lang.bind()函数
该函数接收两个参数 第一个为元素对象 就是个actor 第二个是触发的事件
直接按照gnome的扩展调用 b.get_button();
果然输出鼠标按下的键
1是左键 2是中键 3是右键
那么直接把原来判断按键的代码复制过来就能用了
_launchFile(a, event, uri) { if (event.get_button() == 3) { uri = Gio.Vfs.get_default().get_file_for_uri(uri).get_parent().get_uri(); } try { Gio.app_info_launch_default_for_uri(uri, global.create_app_launch_context(0, -1)); } catch (err) { Main.notify(_('Recent Manager'), err.message); } }