Latest commit

History

21 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Macro-Manager

Searches and executes a script that is associated with the given ID and SET for the active application.

If the current current executable isn't configured or a fallback is allowed for the current set it will try to use the default as fallback if available.

If the script config says the current script is switchable it will stop already running instance of that script or otherwise start a new one. This is intended for turning infinite running scripts on and off.

Make sure your script is marked as executable.

  • Config file location: $XDG_CONFIG_HOME/macro-manager/config.toml
  • Script search location: $XDG_DATA_HOME/macro-manager/

It exposes the following environment variables to called scripts when optional dependencies are available:

MACRO_MANAGER_WINDOW
MACRO_MANAGER_WINDOW_BIN
MACRO_MANAGER_WINDOW_PID
MACRO_MANAGER_WINDOW_WIDTH
MACRO_MANAGER_WINDOW_HEIGHT
MACRO_MANAGER_MOUSE_X // Only on X11
MACRO_MANAGER_MOUSE_Y // Only on X11
MACRO_MANAGER_MOUSE_SCREEN // Only on X11
  • On X11 xdotool will request the information.
  • On Gnome Wayland the extension Window Calls will request the information. dbus is required for this.

Installation

Build with make build or directly with cargo build --release.
The executable is in target/release/macro-manager.

Install with make install.
Adjust PREFIX and DESTDIR as needed.

By default the library libmacro_manager.so will be installed which exposes the Manager::new() object together with get_macro(set: String, id: String). The Macro object runs with the run() method.

Example config

[default.set1.id3]
script = ["autoclicker.sh"]
toggle = true
["program.exe".set1]
default_fallback = true
["program.exe".set1.id8]
script = ["awesome_script1.sh"]
[firefox.m1]
g13.script = ["awesome_script2.sh", "arg1", "arg2"]
g14 = { script = ["subfolder/awesome_script3.sh"], toggle = true }

Example scripts

Generic dotool wrapper

#!/bin/bashecho"$@"| dotoolc
# example config:# [default.m1]# g3.script = ["general/dotool.sh", "mousemove", "0", "-1"] # mouse 1px up

Autoclicker

#!/bin/bash# using https://sr.ht/~geb/dotool/# define signal handlerterm_handler() {
sleep 0.5
echo buttonup left | dotoolc
exit 0
}
# register signal handlertrap term_handler SIGTERM
whiletrue;do
{
echo buttondown left
sleep 0.021
echo buttonup left
sleep 0.021
} | dotoolc
done

Emergency script - close all currently running scripts

#!/bin/sh
find "$XDG_RUNTIME_DIR/macro-manager" -name "*.pid" -exec pkill -TERM -F {} \; -exec rm {} \;

About

Searches and executes a script that is associated with the given ID and SET

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

21 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Macro-Manager

Searches and executes a script that is associated with the given ID and SET for the active application.

If the current current executable isn't configured or a fallback is allowed for the current set it will try to use the default as fallback if available.

If the script config says the current script is switchable it will stop already running instance of that script or otherwise start a new one. This is intended for turning infinite running scripts on and off.

Make sure your script is marked as executable.

  • Config file location: $XDG_CONFIG_HOME/macro-manager/config.toml
  • Script search location: $XDG_DATA_HOME/macro-manager/

It exposes the following environment variables to called scripts when optional dependencies are available:

MACRO_MANAGER_WINDOW
MACRO_MANAGER_WINDOW_BIN
MACRO_MANAGER_WINDOW_PID
MACRO_MANAGER_WINDOW_WIDTH
MACRO_MANAGER_WINDOW_HEIGHT
MACRO_MANAGER_MOUSE_X // Only on X11
MACRO_MANAGER_MOUSE_Y // Only on X11
MACRO_MANAGER_MOUSE_SCREEN // Only on X11
  • On X11 xdotool will request the information.
  • On Gnome Wayland the extension Window Calls will request the information. dbus is required for this.

Installation

Build with make build or directly with cargo build --release.
The executable is in target/release/macro-manager.

Install with make install.
Adjust PREFIX and DESTDIR as needed.

By default the library libmacro_manager.so will be installed which exposes the Manager::new() object together with get_macro(set: String, id: String). The Macro object runs with the run() method.

Example config

[default.set1.id3]
script = ["autoclicker.sh"]
toggle = true
["program.exe".set1]
default_fallback = true
["program.exe".set1.id8]
script = ["awesome_script1.sh"]
[firefox.m1]
g13.script = ["awesome_script2.sh", "arg1", "arg2"]
g14 = { script = ["subfolder/awesome_script3.sh"], toggle = true }

Example scripts

Generic dotool wrapper

#!/bin/bashecho"$@"| dotoolc
# example config:# [default.m1]# g3.script = ["general/dotool.sh", "mousemove", "0", "-1"] # mouse 1px up

Autoclicker

#!/bin/bash# using https://sr.ht/~geb/dotool/# define signal handlerterm_handler() {
sleep 0.5
echo buttonup left | dotoolc
exit 0
}
# register signal handlertrap term_handler SIGTERM
whiletrue;do
{
echo buttondown left
sleep 0.021
echo buttonup left
sleep 0.021
} | dotoolc
done

Emergency script - close all currently running scripts

#!/bin/sh
find "$XDG_RUNTIME_DIR/macro-manager" -name "*.pid" -exec pkill -TERM -F {} \; -exec rm {} \;

About

Searches and executes a script that is associated with the given ID and SET

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

21 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Macro-Manager

Searches and executes a script that is associated with the given ID and SET for the active application.

If the current current executable isn't configured or a fallback is allowed for the current set it will try to use the default as fallback if available.

If the script config says the current script is switchable it will stop already running instance of that script or otherwise start a new one. This is intended for turning infinite running scripts on and off.

Make sure your script is marked as executable.

  • Config file location: $XDG_CONFIG_HOME/macro-manager/config.toml
  • Script search location: $XDG_DATA_HOME/macro-manager/

It exposes the following environment variables to called scripts when optional dependencies are available:

MACRO_MANAGER_WINDOW
MACRO_MANAGER_WINDOW_BIN
MACRO_MANAGER_WINDOW_PID
MACRO_MANAGER_WINDOW_WIDTH
MACRO_MANAGER_WINDOW_HEIGHT
MACRO_MANAGER_MOUSE_X // Only on X11
MACRO_MANAGER_MOUSE_Y // Only on X11
MACRO_MANAGER_MOUSE_SCREEN // Only on X11
  • On X11 xdotool will request the information.
  • On Gnome Wayland the extension Window Calls will request the information. dbus is required for this.

Installation

Build with make build or directly with cargo build --release.
The executable is in target/release/macro-manager.

Install with make install.
Adjust PREFIX and DESTDIR as needed.

By default the library libmacro_manager.so will be installed which exposes the Manager::new() object together with get_macro(set: String, id: String). The Macro object runs with the run() method.

Example config

[default.set1.id3]
script = ["autoclicker.sh"]
toggle = true
["program.exe".set1]
default_fallback = true
["program.exe".set1.id8]
script = ["awesome_script1.sh"]
[firefox.m1]
g13.script = ["awesome_script2.sh", "arg1", "arg2"]
g14 = { script = ["subfolder/awesome_script3.sh"], toggle = true }

Example scripts

Generic dotool wrapper

#!/bin/bashecho"$@"| dotoolc
# example config:# [default.m1]# g3.script = ["general/dotool.sh", "mousemove", "0", "-1"] # mouse 1px up

Autoclicker

#!/bin/bash# using https://sr.ht/~geb/dotool/# define signal handlerterm_handler() {
sleep 0.5
echo buttonup left | dotoolc
exit 0
}
# register signal handlertrap term_handler SIGTERM
whiletrue;do
{
echo buttondown left
sleep 0.021
echo buttonup left
sleep 0.021
} | dotoolc
done

Emergency script - close all currently running scripts

#!/bin/sh
find "$XDG_RUNTIME_DIR/macro-manager" -name "*.pid" -exec pkill -TERM -F {} \; -exec rm {} \;

About

Searches and executes a script that is associated with the given ID and SET

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

21 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Macro-Manager

Searches and executes a script that is associated with the given ID and SET for the active application.

If the current current executable isn't configured or a fallback is allowed for the current set it will try to use the default as fallback if available.

If the script config says the current script is switchable it will stop already running instance of that script or otherwise start a new one. This is intended for turning infinite running scripts on and off.

Make sure your script is marked as executable.

  • Config file location: $XDG_CONFIG_HOME/macro-manager/config.toml
  • Script search location: $XDG_DATA_HOME/macro-manager/

It exposes the following environment variables to called scripts when optional dependencies are available:

MACRO_MANAGER_WINDOW
MACRO_MANAGER_WINDOW_BIN
MACRO_MANAGER_WINDOW_PID
MACRO_MANAGER_WINDOW_WIDTH
MACRO_MANAGER_WINDOW_HEIGHT
MACRO_MANAGER_MOUSE_X // Only on X11
MACRO_MANAGER_MOUSE_Y // Only on X11
MACRO_MANAGER_MOUSE_SCREEN // Only on X11
  • On X11 xdotool will request the information.
  • On Gnome Wayland the extension Window Calls will request the information. dbus is required for this.

Installation

Build with make build or directly with cargo build --release.
The executable is in target/release/macro-manager.

Install with make install.
Adjust PREFIX and DESTDIR as needed.

By default the library libmacro_manager.so will be installed which exposes the Manager::new() object together with get_macro(set: String, id: String). The Macro object runs with the run() method.

Example config

[default.set1.id3]
script = ["autoclicker.sh"]
toggle = true
["program.exe".set1]
default_fallback = true
["program.exe".set1.id8]
script = ["awesome_script1.sh"]
[firefox.m1]
g13.script = ["awesome_script2.sh", "arg1", "arg2"]
g14 = { script = ["subfolder/awesome_script3.sh"], toggle = true }

Example scripts

Generic dotool wrapper

#!/bin/bashecho"$@"| dotoolc
# example config:# [default.m1]# g3.script = ["general/dotool.sh", "mousemove", "0", "-1"] # mouse 1px up

Autoclicker

#!/bin/bash# using https://sr.ht/~geb/dotool/# define signal handlerterm_handler() {
sleep 0.5
echo buttonup left | dotoolc
exit 0
}
# register signal handlertrap term_handler SIGTERM
whiletrue;do
{
echo buttondown left
sleep 0.021
echo buttonup left
sleep 0.021
} | dotoolc
done

Emergency script - close all currently running scripts

#!/bin/sh
find "$XDG_RUNTIME_DIR/macro-manager" -name "*.pid" -exec pkill -TERM -F {} \; -exec rm {} \;

About

Searches and executes a script that is associated with the given ID and SET

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

21 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Macro-Manager

Searches and executes a script that is associated with the given ID and SET for the active application.

If the current current executable isn't configured or a fallback is allowed for the current set it will try to use the default as fallback if available.

If the script config says the current script is switchable it will stop already running instance of that script or otherwise start a new one. This is intended for turning infinite running scripts on and off.

Make sure your script is marked as executable.

  • Config file location: $XDG_CONFIG_HOME/macro-manager/config.toml
  • Script search location: $XDG_DATA_HOME/macro-manager/

It exposes the following environment variables to called scripts when optional dependencies are available:

MACRO_MANAGER_WINDOW
MACRO_MANAGER_WINDOW_BIN
MACRO_MANAGER_WINDOW_PID
MACRO_MANAGER_WINDOW_WIDTH
MACRO_MANAGER_WINDOW_HEIGHT
MACRO_MANAGER_MOUSE_X // Only on X11
MACRO_MANAGER_MOUSE_Y // Only on X11
MACRO_MANAGER_MOUSE_SCREEN // Only on X11
  • On X11 xdotool will request the information.
  • On Gnome Wayland the extension Window Calls will request the information. dbus is required for this.

Installation

Build with make build or directly with cargo build --release.
The executable is in target/release/macro-manager.

Install with make install.
Adjust PREFIX and DESTDIR as needed.

By default the library libmacro_manager.so will be installed which exposes the Manager::new() object together with get_macro(set: String, id: String). The Macro object runs with the run() method.

Example config

[default.set1.id3]
script = ["autoclicker.sh"]
toggle = true
["program.exe".set1]
default_fallback = true
["program.exe".set1.id8]
script = ["awesome_script1.sh"]
[firefox.m1]
g13.script = ["awesome_script2.sh", "arg1", "arg2"]
g14 = { script = ["subfolder/awesome_script3.sh"], toggle = true }

Example scripts

Generic dotool wrapper

#!/bin/bashecho"$@"| dotoolc
# example config:# [default.m1]# g3.script = ["general/dotool.sh", "mousemove", "0", "-1"] # mouse 1px up

Autoclicker

#!/bin/bash# using https://sr.ht/~geb/dotool/# define signal handlerterm_handler() {
sleep 0.5
echo buttonup left | dotoolc
exit 0
}
# register signal handlertrap term_handler SIGTERM
whiletrue;do
{
echo buttondown left
sleep 0.021
echo buttonup left
sleep 0.021
} | dotoolc
done

Emergency script - close all currently running scripts

#!/bin/sh
find "$XDG_RUNTIME_DIR/macro-manager" -name "*.pid" -exec pkill -TERM -F {} \; -exec rm {} \;

About

Searches and executes a script that is associated with the given ID and SET

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

21 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Macro-Manager

Searches and executes a script that is associated with the given ID and SET for the active application.

If the current current executable isn't configured or a fallback is allowed for the current set it will try to use the default as fallback if available.

If the script config says the current script is switchable it will stop already running instance of that script or otherwise start a new one. This is intended for turning infinite running scripts on and off.

Make sure your script is marked as executable.

  • Config file location: $XDG_CONFIG_HOME/macro-manager/config.toml
  • Script search location: $XDG_DATA_HOME/macro-manager/

It exposes the following environment variables to called scripts when optional dependencies are available:

MACRO_MANAGER_WINDOW
MACRO_MANAGER_WINDOW_BIN
MACRO_MANAGER_WINDOW_PID
MACRO_MANAGER_WINDOW_WIDTH
MACRO_MANAGER_WINDOW_HEIGHT
MACRO_MANAGER_MOUSE_X // Only on X11
MACRO_MANAGER_MOUSE_Y // Only on X11
MACRO_MANAGER_MOUSE_SCREEN // Only on X11
  • On X11 xdotool will request the information.
  • On Gnome Wayland the extension Window Calls will request the information. dbus is required for this.

Installation

Build with make build or directly with cargo build --release.
The executable is in target/release/macro-manager.

Install with make install.
Adjust PREFIX and DESTDIR as needed.

By default the library libmacro_manager.so will be installed which exposes the Manager::new() object together with get_macro(set: String, id: String). The Macro object runs with the run() method.

Example config

[default.set1.id3]
script = ["autoclicker.sh"]
toggle = true
["program.exe".set1]
default_fallback = true
["program.exe".set1.id8]
script = ["awesome_script1.sh"]
[firefox.m1]
g13.script = ["awesome_script2.sh", "arg1", "arg2"]
g14 = { script = ["subfolder/awesome_script3.sh"], toggle = true }

Example scripts

Generic dotool wrapper

#!/bin/bashecho"$@"| dotoolc
# example config:# [default.m1]# g3.script = ["general/dotool.sh", "mousemove", "0", "-1"] # mouse 1px up

Autoclicker

#!/bin/bash# using https://sr.ht/~geb/dotool/# define signal handlerterm_handler() {
sleep 0.5
echo buttonup left | dotoolc
exit 0
}
# register signal handlertrap term_handler SIGTERM
whiletrue;do
{
echo buttondown left
sleep 0.021
echo buttonup left
sleep 0.021
} | dotoolc
done

Emergency script - close all currently running scripts

#!/bin/sh
find "$XDG_RUNTIME_DIR/macro-manager" -name "*.pid" -exec pkill -TERM -F {} \; -exec rm {} \;

About

Searches and executes a script that is associated with the given ID and SET

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

21 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Macro-Manager

Searches and executes a script that is associated with the given ID and SET for the active application.

If the current current executable isn't configured or a fallback is allowed for the current set it will try to use the default as fallback if available.

If the script config says the current script is switchable it will stop already running instance of that script or otherwise start a new one. This is intended for turning infinite running scripts on and off.

Make sure your script is marked as executable.

  • Config file location: $XDG_CONFIG_HOME/macro-manager/config.toml
  • Script search location: $XDG_DATA_HOME/macro-manager/

It exposes the following environment variables to called scripts when optional dependencies are available:

MACRO_MANAGER_WINDOW
MACRO_MANAGER_WINDOW_BIN
MACRO_MANAGER_WINDOW_PID
MACRO_MANAGER_WINDOW_WIDTH
MACRO_MANAGER_WINDOW_HEIGHT
MACRO_MANAGER_MOUSE_X // Only on X11
MACRO_MANAGER_MOUSE_Y // Only on X11
MACRO_MANAGER_MOUSE_SCREEN // Only on X11
  • On X11 xdotool will request the information.
  • On Gnome Wayland the extension Window Calls will request the information. dbus is required for this.

Installation

Build with make build or directly with cargo build --release.
The executable is in target/release/macro-manager.

Install with make install.
Adjust PREFIX and DESTDIR as needed.

By default the library libmacro_manager.so will be installed which exposes the Manager::new() object together with get_macro(set: String, id: String). The Macro object runs with the run() method.

Example config

[default.set1.id3]
script = ["autoclicker.sh"]
toggle = true
["program.exe".set1]
default_fallback = true
["program.exe".set1.id8]
script = ["awesome_script1.sh"]
[firefox.m1]
g13.script = ["awesome_script2.sh", "arg1", "arg2"]
g14 = { script = ["subfolder/awesome_script3.sh"], toggle = true }

Example scripts

Generic dotool wrapper

#!/bin/bashecho"$@"| dotoolc
# example config:# [default.m1]# g3.script = ["general/dotool.sh", "mousemove", "0", "-1"] # mouse 1px up

Autoclicker

#!/bin/bash# using https://sr.ht/~geb/dotool/# define signal handlerterm_handler() {
sleep 0.5
echo buttonup left | dotoolc
exit 0
}
# register signal handlertrap term_handler SIGTERM
whiletrue;do
{
echo buttondown left
sleep 0.021
echo buttonup left
sleep 0.021
} | dotoolc
done

Emergency script - close all currently running scripts

#!/bin/sh
find "$XDG_RUNTIME_DIR/macro-manager" -name "*.pid" -exec pkill -TERM -F {} \; -exec rm {} \;

About

Searches and executes a script that is associated with the given ID and SET

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

21 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Macro-Manager

Searches and executes a script that is associated with the given ID and SET for the active application.

If the current current executable isn't configured or a fallback is allowed for the current set it will try to use the default as fallback if available.

If the script config says the current script is switchable it will stop already running instance of that script or otherwise start a new one. This is intended for turning infinite running scripts on and off.

Make sure your script is marked as executable.

  • Config file location: $XDG_CONFIG_HOME/macro-manager/config.toml
  • Script search location: $XDG_DATA_HOME/macro-manager/

It exposes the following environment variables to called scripts when optional dependencies are available:

MACRO_MANAGER_WINDOW
MACRO_MANAGER_WINDOW_BIN
MACRO_MANAGER_WINDOW_PID
MACRO_MANAGER_WINDOW_WIDTH
MACRO_MANAGER_WINDOW_HEIGHT
MACRO_MANAGER_MOUSE_X // Only on X11
MACRO_MANAGER_MOUSE_Y // Only on X11
MACRO_MANAGER_MOUSE_SCREEN // Only on X11
  • On X11 xdotool will request the information.
  • On Gnome Wayland the extension Window Calls will request the information. dbus is required for this.

Installation

Build with make build or directly with cargo build --release.
The executable is in target/release/macro-manager.

Install with make install.
Adjust PREFIX and DESTDIR as needed.

By default the library libmacro_manager.so will be installed which exposes the Manager::new() object together with get_macro(set: String, id: String). The Macro object runs with the run() method.

Example config

[default.set1.id3]
script = ["autoclicker.sh"]
toggle = true
["program.exe".set1]
default_fallback = true
["program.exe".set1.id8]
script = ["awesome_script1.sh"]
[firefox.m1]
g13.script = ["awesome_script2.sh", "arg1", "arg2"]
g14 = { script = ["subfolder/awesome_script3.sh"], toggle = true }

Example scripts

Generic dotool wrapper

#!/bin/bashecho"$@"| dotoolc
# example config:# [default.m1]# g3.script = ["general/dotool.sh", "mousemove", "0", "-1"] # mouse 1px up

Autoclicker

#!/bin/bash# using https://sr.ht/~geb/dotool/# define signal handlerterm_handler() {
sleep 0.5
echo buttonup left | dotoolc
exit 0
}
# register signal handlertrap term_handler SIGTERM
whiletrue;do
{
echo buttondown left
sleep 0.021
echo buttonup left
sleep 0.021
} | dotoolc
done

Emergency script - close all currently running scripts

#!/bin/sh
find "$XDG_RUNTIME_DIR/macro-manager" -name "*.pid" -exec pkill -TERM -F {} \; -exec rm {} \;

About

Searches and executes a script that is associated with the given ID and SET

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Contributors

Languages