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