- 安装xdotool
sudo apt install xdotool
-
找到idea运行的jdk路径
我这里是/home/nfhm/.local/share/JetBrains/Toolbox/apps/IDEA-U/ch-0/183.6156.11/jre64/bin
-
修改脚本中appdir为jdk路径
#!/usr/bin/env python3
import subprocess
import time
import os
appdir = "/home/nfhm/.local/share/JetBrains/Toolbox/apps/IDEA-U/ch-0/183.6156.11/jre64/bin"
f = os.path.join(os.environ["HOME"], "keylist")
def run(cmd):
subprocess.call(cmd)
def get(cmd):
try:
return subprocess.check_output(cmd).decode("utf-8").strip()
except:
pass
def getactive():
return get(["xdotool", "getactivewindow"])
def setkeys(val):
# --- add the keys to be disabled below
keys = [
["org.gnome.desktop.wm.keybindings", "toggle-shaded"],
["org.gnome.desktop.wm.keybindings", "begin-move"],
["org.gnome.desktop.wm.keybindings", "switch-to-workspace-down"],
["org.gnome.desktop.wm.keybindings", "switch-to-workspace-up"],
["org.gnome.desktop.wm.keybindings", "switch-to-workspace-left"],
["org.gnome.desktop.wm.keybindings", "switch-to-workspace-right"],
["org.gnome.desktop.wm.keybindings", "begin-resize"],
["org.gnome.settings-daemon.plugins.media-keys", "screensaver"],
["org.gnome.settings-daemon.plugins.media-keys", "terminal"],
]
# ---
writelist = []
if not val:
try:
values = open(f).read().splitlines()
except FileNotFoundError:
values = []
# for key in keys:
for i, key in enumerate(keys):
try:
cmd = ["gsettings", "set"]+key+[values[i]]
except IndexError:
cmd = ["gsettings", "reset"]+key
run(cmd)
else:
for key in keys:
cmd = ["gsettings", "set"]+key+["['']"]
read = get(["gsettings", "get"]+key)
writelist.append(read)
run(cmd)
if writelist:
open(f, "wt").write("\n".join(writelist))
front1 = None
while True:
time.sleep(1)
# check if any of the apps runs at all
checkpids = get(["pgrep", "-f", appdir])
# if so:
if checkpids:
checkpids = checkpids.splitlines()
active = getactive()
# get pid frontmost (doesn't work on pid 0)
match = [l for l in get(["xprop", "-id", active]).splitlines()\
if "_NET_WM_PID(CARDINAL)" in l]
if match:
# check if pid is of any of the relevant apps
pid = match[0].split("=")[1].strip()
front2 = True if pid in checkpids else False
else:
front2 = False
else:
front2 = False
if front2 != front1:
if front2:
setkeys(True)
else:
setkeys(False)
front1 = front2
- 保存脚本为
idea-key.sh
, 并赋予可执行权限, 执行
chmod a+x idea-key.sh
./idea-key.sh
- 修改idea的keymap为default风格(默认是default for gnome)
网友评论