Last active
April 8, 2024 23:00
-
-
Save egel/b7beba6f962110596660 to your computer and use it in GitHub Desktop.
Auto-remove Sublime's license popup
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/python | |
# -*- coding: utf-8 -*- | |
import sublime_plugin | |
import subprocess | |
from time import sleep | |
import sys | |
cl = lambda line: subprocess.Popen(line, shell=True, stdout=subprocess.PIPE).communicate()[0].strip() | |
log = lambda message: sys.stderr.write("Log: %s\n" % message) | |
sublimeMainWindowTitle = " - Sublime Text (UNREGISTERED)" | |
class LicenseWindowKiller(sublime_plugin.EventListener): | |
def seek_n_close(self): | |
sublimePid = int(cl("""wmctrl -lp | grep "%s" | awk '{print $3}'""" % sublimeMainWindowTitle).decode()) | |
if sublimePid: | |
sublimeMainWindowId = cl("""wmctrl -lp | grep "%s" | awk '{print $1}'""" % sublimeMainWindowTitle).decode() | |
sublimeSecondWindowId = cl("""wmctrl -lp | grep %s | awk '{ids[$1]++}{for (id in ids){if (id != "%s"){printf id}}}'""" % (sublimePid, sublimeMainWindowId)).decode() | |
if sublimeSecondWindowId: | |
sublimeSecondWindowTitle = cl("""wmctrl -lp | grep %s | awk '{print $5}'""" % sublimeSecondWindowId).decode() | |
if not sublimeSecondWindowTitle: | |
cl("wmctrl -i -c %s" % sublimeSecondWindowId) | |
return True | |
return False | |
def on_pre_save_async(self, *args): | |
seek = True | |
counter = 10 | |
while seek: | |
sleep(.5) | |
counter -= 1 | |
if counter < 0: | |
seek = False | |
seek = not self.seek_n_close() |
Here is a working windows version: it works by closing the dialog box the moment it appears. its instant more or less, I never see the box anymore.
Windowkill.py
`import sublime_plugin
import ctypes
import time
TARGET_CLASS_NAME = "#32770"
class DialogBoxKiller(sublime_plugin.EventListener):
def close_dialog_boxes(self):
EnumWindowsProc = ctypes.WINFUNCTYPE(ctypes.c_bool, ctypes.POINTER(ctypes.c_int), ctypes.POINTER(ctypes.c_int))
def get_window_class_name(hwnd):
buff = ctypes.create_unicode_buffer(256) # Assuming class name won't be longer than 256 characters
ctypes.windll.user32.GetClassNameW(hwnd, buff, len(buff))
return buff.value
def enum_windows_callback(hwnd, lparam):
class_name = get_window_class_name(hwnd)
if class_name == TARGET_CLASS_NAME:
ctypes.windll.user32.SendMessageW(hwnd, 0x0010, 0, 0) # 0x0010 is WM_CLOSE
return True
ctypes.windll.user32.EnumWindows(EnumWindowsProc(enum_windows_callback), 0)
def on_pre_save_async(self, *args):
time.sleep(0.1) # Brief delay to ensure dialog has time to appear if it does
self.close_dialog_boxes()
`
FYI this also works with SFTP.
For a working windows version and instructions on how to install sublime plugins:
https://gist.github.com/DinleyH/e222834ddb3533d59fd7cafccf612f07
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I'm having the same error like @kassbohm had, have anybody figured out yet?