解决Ubuntu idea快捷键冲突问题

  1. 安装xdotool
sudo apt install xdotool
  1. 找到idea运行的jdk路径
    我这里是/home/nfhm/.local/share/JetBrains/Toolbox/apps/IDEA-U/ch-0/183.6156.11/jre64/bin

  2. 修改脚本中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
  1. 保存脚本为idea-key.sh, 并赋予可执行权限, 执行
chmod a+x idea-key.sh
./idea-key.sh
  1. 修改idea的keymap为default风格(默认是default for gnome)

你可能感兴趣的:(解决Ubuntu idea快捷键冲突问题)