-
-
Save egel/b7beba6f962110596660 to your computer and use it in GitHub Desktop.
#!/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() |
ValueError: invalid literal for int() with base 10: '' Writing file filename.js with encoding UTF-8 (atomic) Traceback (most recent call last): File "/opt/sublime_text/sublime_plugin.py", line 247, in on_pre_save_async callback.on_pre_save_async(v) File "/home/vijay/.config/sublime-text-3/Packages/own/windowKiller.py", line 36, in on_pre_save_async seek = not self.seek_n_close() File "/home/vijay/.config/sublime-text-3/Packages/own/windowKiller.py", line 17, in seek_n_close sublimePid = int(cl("""wmctrl -lp | grep "%s" | awk '{print $3}'""" % sublimeMainWindowTitle).decode()) ValueError: invalid literal for int() with base 10: ''Seems your plugin doesn't work anymore.
I suspect the reason it's not working is because you don't have the wmctrl prerequisite installed.
sudo apt install wmctrl
should resolve your issues.
Confirmed NOT working on Mac OSX 10.15.7 (see edit)
- first you need
wmctrl
. I didbrew install wmctrl
and it installed over a HUNDRED dependencies, but it worked. If you dont have brew then just know its trivial to install, google it. - follow instructions in the post by
cardaba commented on Sep 15, 2017
- View the console to make sure it didn't throw any errors. Select sublime text -> View -> Show Console
- Save a document and look for errors in the console
EDIT: This is extremely flaky and does not work most of the time. Despite installing wmctrl, I still get errors regarding ValueError: invalid literal for int() with base 10: ''
does this plugin still work in sublime text build 4107?
@aliazhar-id not working I'm on macOS, if you get any solution please help
@SudhanshuBlaze sorry I don't know, now I've moved to visual studio code.
As others said, there is a code that prevents the pop up to show, but also prevents any pop up to show (tried to delete a folder, i couldn't because it was always closing). It was the code here that closes everything and i can't do anything
Thanks egel, but at the moment it's working in Linux - maybe because of this error:
killer.py", line 17, in seek_n_close sublimePid = int(cl("""wmctrl -lp | grep "%s" | awk '{print $3}'""" % sublimeMainWindowTitle).decode()) ValueError: invalid literal for int() with base 10: '741430\n741430'
I'm having the same error like @kassbohm had, have anybody figured out yet?
line 17, in seek_n_close
sublimePid = int(cl("""wmctrl -lp | grep "%s" | awk '{print $3}'""" % sublimeMainWindowTitle).decode())
ValueError: invalid literal for int() with base 10: ''
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
Hi guyz! This thing removes that UNREGISTERED Annoying bullcrapp? I dont know how to use this script, no stubid proof readme or howto do this i find for it...? Is it possibru to someone guide me where to find, and what to search to work this out?
Or suggest me pls alternatives?
Code, or VSCodium? Or what should be annoyance free? And know functions what Sublime text knows?
I think this shaming thing with UNREGISTERED is distgusting... need to puke
Works on Ubuntu 20.04 with build 3211, but only from second pop-up onward. The first one is show around the 5th save time. I can live with this.
Thanks!