Add x11
This commit is contained in:
87
x11/ahk.py
Executable file
87
x11/ahk.py
Executable file
@@ -0,0 +1,87 @@
|
||||
#!/usr/bin/env python3
|
||||
import os, sys, subprocess
|
||||
os.environ['DISPLAY'] = ':0'
|
||||
|
||||
def cmd(*args): return subprocess.run([str(a) for a in args], capture_output=True, text=True).stdout.strip()
|
||||
|
||||
def tile_window(position):
|
||||
window_id = subprocess.run(['xdotool', 'getactivewindow'],
|
||||
capture_output=True, text=True).stdout.strip()
|
||||
|
||||
cmd('wmctrl', '-i', '-r', window_id, '-b', 'remove,maximized_vert,maximized_horz')
|
||||
|
||||
if position == 'maximize':
|
||||
cmd('wmctrl', '-i', '-r', window_id, '-b', 'add,maximized_vert,maximized_horz')
|
||||
return
|
||||
|
||||
SCREEN_WIDTH, SCREEN_HEIGHT, TASKBAR = 3840, 2160, 48
|
||||
work_height = SCREEN_HEIGHT - TASKBAR
|
||||
quarter = SCREEN_WIDTH // 4
|
||||
positions = {
|
||||
'left': (0, 0, quarter, work_height),
|
||||
'center': (quarter, 0, quarter * 2, work_height),
|
||||
'right': (quarter * 3, 0, quarter, work_height),
|
||||
}
|
||||
x, y, width, height = positions[position]
|
||||
if 'xfce4-terminal' in cmd('xprop', '-id', window_id, 'WM_CLASS').lower():
|
||||
height -= 10
|
||||
cmd('xdotool', 'windowsize', window_id, width, height)
|
||||
cmd('xdotool', 'windowmove', window_id, x, y)
|
||||
|
||||
def XButton1():
|
||||
for line in cmd('xdotool', 'getmouselocation', '--shell').splitlines():
|
||||
if 'WINDOW=' in line:
|
||||
window = line.split('=')[1]
|
||||
cmd('xdotool', 'windowactivate', '--sync', window)
|
||||
classname = cmd('xdotool', 'getwindowclassname', window)
|
||||
name = cmd('xdotool', 'getwindowname', window)
|
||||
if classname == 'Xfce4-terminal': key = 'alt+F4'
|
||||
elif name.startswith('New tab - obsidian'): key = 'alt+F4'
|
||||
else: key = 'ctrl+w'
|
||||
cmd('xdotool', 'key', key)
|
||||
|
||||
def popup(message): cmd("zenity", "--info", f"--text={message}", "--timeout=1")
|
||||
|
||||
def F1():
|
||||
import random,time
|
||||
SCREEN_WIDTH, SCREEN_HEIGHT, TASKBAR = 3840, 2160, 48
|
||||
work_height = SCREEN_HEIGHT - TASKBAR
|
||||
quarter = SCREEN_WIDTH // 4
|
||||
x, y, w, h = 0, 0, quarter, work_height
|
||||
cmd("chromium-browser",
|
||||
"--disable-features=ExtensionManifestV2Unsupported,ExtensionManifestV2Disabled", "--new-window", "https://yauk.net")
|
||||
time.sleep(0.1)
|
||||
window_id = cmd('xdotool', 'getactivewindow')
|
||||
|
||||
cmd('xdotool', 'windowsize', window_id, w, h)
|
||||
cmd('xdotool', 'windowmove', window_id, x, y)
|
||||
|
||||
def F12():
|
||||
if ret := subprocess.run(['wmctrl', '-x', '-a', 'obsidian']).returncode:
|
||||
cmd('dbus-launch', 'flatpak', 'run', 'md.obsidian.Obsidian')
|
||||
|
||||
def F10():
|
||||
cmd('killall', 'xbindkeys')
|
||||
cmd('xbindkeys')
|
||||
popup('Reload')
|
||||
|
||||
def Win():
|
||||
cmd('xfce4-popup-whiskermenu')
|
||||
|
||||
def Win_1():
|
||||
cmd("chromium-browser",
|
||||
"--disable-features=ExtensionManifestV2Unsupported,ExtensionManifestV2Disabled")
|
||||
|
||||
if __name__ == '__main__':
|
||||
match sys.argv[1]:
|
||||
case 'Win+Up': tile_window('maximize')
|
||||
case 'Win+Left': tile_window('left')
|
||||
case 'Win+Down': tile_window('center')
|
||||
case 'Win+Right': tile_window('right')
|
||||
case 'Win': Win()
|
||||
case 'Win+1': Win_1()
|
||||
case 'F1': F1()
|
||||
case "XButton1": XButton1()
|
||||
case "XButton2": cmd("xdotool", "key", "ctrl+Tab")
|
||||
case "F10": F10()
|
||||
case "F12": F12()
|
||||
35
x11/xbindkeysrc
Normal file
35
x11/xbindkeysrc
Normal file
@@ -0,0 +1,35 @@
|
||||
"ahk.py XButton1"
|
||||
b:8
|
||||
|
||||
"ahk.py XButton2"
|
||||
b:9
|
||||
|
||||
"xte 'keydown Control_L' 'keydown Shift_L' 'key Tab' 'keyup Shift_L' 'keyup Control_L'"
|
||||
Shift + b:9
|
||||
|
||||
"ahk.py F12"
|
||||
F12
|
||||
|
||||
"ahk.py F1"
|
||||
F1
|
||||
|
||||
"ahk.py F10"
|
||||
F10
|
||||
|
||||
"ahk.py Win+1"
|
||||
Mod4 + 1
|
||||
|
||||
"ahk.py Win+Up"
|
||||
Mod4 + Up
|
||||
|
||||
"ahk.py Win+Left"
|
||||
Mod4 + Left
|
||||
|
||||
"ahk.py Win+Down"
|
||||
Mod4 + Down
|
||||
|
||||
"ahk.py Win+Right"
|
||||
Mod4 + Right
|
||||
|
||||
"ahk.py Win"
|
||||
Alt + F1
|
||||
Reference in New Issue
Block a user