Kinto.sh - 为Linux/Windows提供 Mac风格快捷键

对于在 macOS / Linux / Windows 不断切换平台的技术工作者,非常头疼的是这3个平台的快捷键是不一样的,这导致长期的肌肉记忆很难适应。 github: rbreaves/kinto 是一个为Linux/Windows提供 Mac风格快捷键 的开源软件,特别适合在 MacBook 上安装运行Linux/Windows的用户。

由于我在我不同的Mac设备上安装运行Linux:

所以适配Mac键盘的操作方式特别适合我这样主要在 macOS工作室 完成工作,同时有时会使用Linux平台的人。

警告

Kinto.sh 运行环境是 X Window显示服务器协议 ,由于我现在转为使用 sway - i3兼容Wayland compositor 基于 wayland显示服务器协议 实现,所以已经无法工作,例如运行脚本会提示缺少 /usr/bi/xhost 执行失败,不断重启 xkeysnail.service

不过,本文实践中在 Arch Linux 中部署解决 Python 环境运行 PyGObject 等GUI环境还是有借鉴意义,后续可以参考作为Python GUI运行环境设置。

准备工作

kinto (Linux版本) 依赖 github: mooz/xkeysnail (一种使用Python编写的X环境键盘映射) ,需要有Python运行环境,最好的方法是使用 Python virtualenv 部署好环境,并且安装好 xkeysnail 模块在继续安装 kinto :

arch linux环境设置virtualenv
sudo pacman -S python-pip
python -m venv ~/venv3
. ~/venv3/bin/activate

另外,在后续运行 ~/.config/kinto/gui/kinto-gui.py 会提示缺少 gi 模块:

File "/home/admin/.config/kinto/gui/kinto-gui.py", line 3, in <module>
  import gi,os,time,fcntl,argparse,re
ModuleNotFoundError: No module named 'gi'

如果是是 Ubuntu Linux 可以直接安装 sudo apt install python3-gi ,但是对于 Arch Linux 的则比较麻烦:

通过 Python virtualenvpip 安装 PyGObject 模块
# 会依赖安装 pycairo ,或者显式安装 pycairo
pip install PyGObject

但是,这里会报错: 提示 依赖 gobject-introspection 错误

参考 pygobject-2.28.6 won't configure: No package 'gobject-introspection-1.0' found, how do I resolve? ,这个 gobject-introspection 开发包在不同平台有不同名字:

  • Fedora, CentOS, RHEL, etc.: gobject-introspection-devel

  • Debian, Ubuntu, Mint, etc.: libgirepository1.0-dev

  • Arch: gobject-introspection

  • FreeBSD: gobject-introspection

  • Cygwin: libgirepository1.0-devel

  • msys2: mingw-w64-x86_64-gobject-introspection and/or mingw-w64-i686-gobject-introspection

对于我的 Arch Linux 平台,执行如下命令:

Arch Linux 安装 gobject-introspection
sudo pacman -S gobject-introspection

然后就可以正常执行 pip install PyGObject

接下来报错是:

运行 kinto-gui.py 提示缺少 Vte Namespace
ValueError: Namespace Vte not available

参考 kinto: Namespace Vte not available #302 需要在系统中安装 vte 包,对于 Ubuntu Linux 是安装 sudo apt install vte-2.91 ,不过,在 Arch Linux 则安装 `` vte3`` :

Arch Linux 安装 vte3
sudo pacman -S vte3

接下来报错是:

运行 kinto-gui.py 提示缺少 distutils 模块
...
    from distutils.util import strtobool
ModuleNotFoundError: No module nameed 'distutils'

参考 No module named 'distutils' on Python 3.12 #732 安装 setuptools 模块即可:

通过 pip install setuptools 来获得 disutils 模块
pip install setuptools

原因在 distutils — Building and installing Python modules 已经做了说明,现在Python用户不需要直接使用 distutils 莫阿奎,而是采用替代的 setuptolls 模块

安装

安装kinto依赖需要 pip3 (安装python模块),所以提前在系统中完成pip3安装。例如:

  • Arch Linux 安装 python-pip 包:

  • 执行以下命令安装Kinto

安装kinto
/bin/bash -c "$(wget -qO- https://raw.githubusercontent.com/rbreaves/kinto/HEAD/install/linux.sh || curl -fsSL https://raw.githubusercontent.com/rbreaves/kinto/HEAD/install/linux.sh)"

备注

上述安装所使用的域名 raw.githubusercontent.com 需要 越过长城 :

安装完成后会运行 ~/.config/kinto/gui/kinto-gui.py 进行设置以及启动服务

警告

因为我的工作平台为 sway - i3兼容Wayland compositor ,所以放弃采用本文方案

参考