Repository files navigation

update jailbreak apps/tweaks for roothide

  1. install roothide/theos

    bash -c "$(curl -fsSL https://raw.githubusercontent.com/roothide/theos/master/bin/install-theos)"

    and it's always automatically synchronized and maintains 100% compatibility with the original theos.

  2. Build package for roothide

    for those simple tweaks that don't use the file api to access jailbreak files, just

    make package with THEOS_PACKAGE_SCHEME=roothide

  3. Using roothide APIs if you need to use the file apis to access jailbreak files in source code

    #include <roothide.h>
    //then using roothide api to access jailbreak files
    const char* c_path = jbroot("/path/to/jb/file");
    NSString* objc_path = jbroot(@"/path/to/jb/file");
    std::string cpp_path = jbroot(std::string("/path/to/jb/file"));
    

    the jbroot API can be used in C/C++/Objective-C/Swift and its fully compatible with building rootful/rootless package

    In Swift project, it's better to use a swift bridging header file for #include <roothide.h> instead of using import roothide in swift source files. this will ensure your project is compatible with building rootful/rootless, ref to https://theos.dev/docs/swift#:~:text=Objective%2DC%20to%20Swift

  4. Add these entitlements to your executable/app to make them work correctly with roothide:

    <key>platform-application</key>
    <true/>
    <key>com.apple.private.security.no-sandbox</key>
    <true/>
    <key>com.apple.private.security.storage.AppBundles</key>
    <true/>
    <key>com.apple.private.security.storage.AppDataContainers</key>
    <true/>
    
  5. If you want to build your project with Xcode instead of theos,
    here is the roothide sdk: devkit.zip

  6. roothide/theos is now compatible with building roothide packages from existing tweak projects that use rootless path macros, there is a warning message to ensure you have read this document and you can define the DISABLE_ROOTLESS_COMPAT_WARNING macro to silence the message.

  7. For more details about roothide, please refer to

support

more info

About

document for tweak Developers

Topics

Resources

Stars

522 stars

Watchers

43 watching

Forks

Releases

Packages

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

Repository files navigation

update jailbreak apps/tweaks for roothide

  1. install roothide/theos

    bash -c "$(curl -fsSL https://raw.githubusercontent.com/roothide/theos/master/bin/install-theos)"

    and it's always automatically synchronized and maintains 100% compatibility with the original theos.

  2. Build package for roothide

    for those simple tweaks that don't use the file api to access jailbreak files, just

    make package with THEOS_PACKAGE_SCHEME=roothide

  3. Using roothide APIs if you need to use the file apis to access jailbreak files in source code

    #include <roothide.h>
    //then using roothide api to access jailbreak files
    const char* c_path = jbroot("/path/to/jb/file");
    NSString* objc_path = jbroot(@"/path/to/jb/file");
    std::string cpp_path = jbroot(std::string("/path/to/jb/file"));
    

    the jbroot API can be used in C/C++/Objective-C/Swift and its fully compatible with building rootful/rootless package

    In Swift project, it's better to use a swift bridging header file for #include <roothide.h> instead of using import roothide in swift source files. this will ensure your project is compatible with building rootful/rootless, ref to https://theos.dev/docs/swift#:~:text=Objective%2DC%20to%20Swift

  4. Add these entitlements to your executable/app to make them work correctly with roothide:

    <key>platform-application</key>
    <true/>
    <key>com.apple.private.security.no-sandbox</key>
    <true/>
    <key>com.apple.private.security.storage.AppBundles</key>
    <true/>
    <key>com.apple.private.security.storage.AppDataContainers</key>
    <true/>
    
  5. If you want to build your project with Xcode instead of theos,
    here is the roothide sdk: devkit.zip

  6. roothide/theos is now compatible with building roothide packages from existing tweak projects that use rootless path macros, there is a warning message to ensure you have read this document and you can define the DISABLE_ROOTLESS_COMPAT_WARNING macro to silence the message.

  7. For more details about roothide, please refer to

support

more info

About

document for tweak Developers

Topics

Resources

Stars

522 stars

Watchers

43 watching

Forks

Releases

Packages

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

Repository files navigation

update jailbreak apps/tweaks for roothide

  1. install roothide/theos

    bash -c "$(curl -fsSL https://raw.githubusercontent.com/roothide/theos/master/bin/install-theos)"

    and it's always automatically synchronized and maintains 100% compatibility with the original theos.

  2. Build package for roothide

    for those simple tweaks that don't use the file api to access jailbreak files, just

    make package with THEOS_PACKAGE_SCHEME=roothide

  3. Using roothide APIs if you need to use the file apis to access jailbreak files in source code

    #include <roothide.h>
    //then using roothide api to access jailbreak files
    const char* c_path = jbroot("/path/to/jb/file");
    NSString* objc_path = jbroot(@"/path/to/jb/file");
    std::string cpp_path = jbroot(std::string("/path/to/jb/file"));
    

    the jbroot API can be used in C/C++/Objective-C/Swift and its fully compatible with building rootful/rootless package

    In Swift project, it's better to use a swift bridging header file for #include <roothide.h> instead of using import roothide in swift source files. this will ensure your project is compatible with building rootful/rootless, ref to https://theos.dev/docs/swift#:~:text=Objective%2DC%20to%20Swift

  4. Add these entitlements to your executable/app to make them work correctly with roothide:

    <key>platform-application</key>
    <true/>
    <key>com.apple.private.security.no-sandbox</key>
    <true/>
    <key>com.apple.private.security.storage.AppBundles</key>
    <true/>
    <key>com.apple.private.security.storage.AppDataContainers</key>
    <true/>
    
  5. If you want to build your project with Xcode instead of theos,
    here is the roothide sdk: devkit.zip

  6. roothide/theos is now compatible with building roothide packages from existing tweak projects that use rootless path macros, there is a warning message to ensure you have read this document and you can define the DISABLE_ROOTLESS_COMPAT_WARNING macro to silence the message.

  7. For more details about roothide, please refer to

support

more info

About

document for tweak Developers

Topics

Resources

Stars

522 stars

Watchers

43 watching

Forks

Releases

Packages

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

Repository files navigation

update jailbreak apps/tweaks for roothide

  1. install roothide/theos

    bash -c "$(curl -fsSL https://raw.githubusercontent.com/roothide/theos/master/bin/install-theos)"

    and it's always automatically synchronized and maintains 100% compatibility with the original theos.

  2. Build package for roothide

    for those simple tweaks that don't use the file api to access jailbreak files, just

    make package with THEOS_PACKAGE_SCHEME=roothide

  3. Using roothide APIs if you need to use the file apis to access jailbreak files in source code

    #include <roothide.h>
    //then using roothide api to access jailbreak files
    const char* c_path = jbroot("/path/to/jb/file");
    NSString* objc_path = jbroot(@"/path/to/jb/file");
    std::string cpp_path = jbroot(std::string("/path/to/jb/file"));
    

    the jbroot API can be used in C/C++/Objective-C/Swift and its fully compatible with building rootful/rootless package

    In Swift project, it's better to use a swift bridging header file for #include <roothide.h> instead of using import roothide in swift source files. this will ensure your project is compatible with building rootful/rootless, ref to https://theos.dev/docs/swift#:~:text=Objective%2DC%20to%20Swift

  4. Add these entitlements to your executable/app to make them work correctly with roothide:

    <key>platform-application</key>
    <true/>
    <key>com.apple.private.security.no-sandbox</key>
    <true/>
    <key>com.apple.private.security.storage.AppBundles</key>
    <true/>
    <key>com.apple.private.security.storage.AppDataContainers</key>
    <true/>
    
  5. If you want to build your project with Xcode instead of theos,
    here is the roothide sdk: devkit.zip

  6. roothide/theos is now compatible with building roothide packages from existing tweak projects that use rootless path macros, there is a warning message to ensure you have read this document and you can define the DISABLE_ROOTLESS_COMPAT_WARNING macro to silence the message.

  7. For more details about roothide, please refer to

support

more info

About

document for tweak Developers

Topics

Resources

Stars

522 stars

Watchers

43 watching

Forks

Releases

Packages

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

Repository files navigation

update jailbreak apps/tweaks for roothide

  1. install roothide/theos

    bash -c "$(curl -fsSL https://raw.githubusercontent.com/roothide/theos/master/bin/install-theos)"

    and it's always automatically synchronized and maintains 100% compatibility with the original theos.

  2. Build package for roothide

    for those simple tweaks that don't use the file api to access jailbreak files, just

    make package with THEOS_PACKAGE_SCHEME=roothide

  3. Using roothide APIs if you need to use the file apis to access jailbreak files in source code

    #include <roothide.h>
    //then using roothide api to access jailbreak files
    const char* c_path = jbroot("/path/to/jb/file");
    NSString* objc_path = jbroot(@"/path/to/jb/file");
    std::string cpp_path = jbroot(std::string("/path/to/jb/file"));
    

    the jbroot API can be used in C/C++/Objective-C/Swift and its fully compatible with building rootful/rootless package

    In Swift project, it's better to use a swift bridging header file for #include <roothide.h> instead of using import roothide in swift source files. this will ensure your project is compatible with building rootful/rootless, ref to https://theos.dev/docs/swift#:~:text=Objective%2DC%20to%20Swift

  4. Add these entitlements to your executable/app to make them work correctly with roothide:

    <key>platform-application</key>
    <true/>
    <key>com.apple.private.security.no-sandbox</key>
    <true/>
    <key>com.apple.private.security.storage.AppBundles</key>
    <true/>
    <key>com.apple.private.security.storage.AppDataContainers</key>
    <true/>
    
  5. If you want to build your project with Xcode instead of theos,
    here is the roothide sdk: devkit.zip

  6. roothide/theos is now compatible with building roothide packages from existing tweak projects that use rootless path macros, there is a warning message to ensure you have read this document and you can define the DISABLE_ROOTLESS_COMPAT_WARNING macro to silence the message.

  7. For more details about roothide, please refer to

support

more info

About

document for tweak Developers

Topics

Resources

Stars

522 stars

Watchers

43 watching

Forks

Releases

Packages

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

Repository files navigation

update jailbreak apps/tweaks for roothide

  1. install roothide/theos

    bash -c "$(curl -fsSL https://raw.githubusercontent.com/roothide/theos/master/bin/install-theos)"

    and it's always automatically synchronized and maintains 100% compatibility with the original theos.

  2. Build package for roothide

    for those simple tweaks that don't use the file api to access jailbreak files, just

    make package with THEOS_PACKAGE_SCHEME=roothide

  3. Using roothide APIs if you need to use the file apis to access jailbreak files in source code

    #include <roothide.h>
    //then using roothide api to access jailbreak files
    const char* c_path = jbroot("/path/to/jb/file");
    NSString* objc_path = jbroot(@"/path/to/jb/file");
    std::string cpp_path = jbroot(std::string("/path/to/jb/file"));
    

    the jbroot API can be used in C/C++/Objective-C/Swift and its fully compatible with building rootful/rootless package

    In Swift project, it's better to use a swift bridging header file for #include <roothide.h> instead of using import roothide in swift source files. this will ensure your project is compatible with building rootful/rootless, ref to https://theos.dev/docs/swift#:~:text=Objective%2DC%20to%20Swift

  4. Add these entitlements to your executable/app to make them work correctly with roothide:

    <key>platform-application</key>
    <true/>
    <key>com.apple.private.security.no-sandbox</key>
    <true/>
    <key>com.apple.private.security.storage.AppBundles</key>
    <true/>
    <key>com.apple.private.security.storage.AppDataContainers</key>
    <true/>
    
  5. If you want to build your project with Xcode instead of theos,
    here is the roothide sdk: devkit.zip

  6. roothide/theos is now compatible with building roothide packages from existing tweak projects that use rootless path macros, there is a warning message to ensure you have read this document and you can define the DISABLE_ROOTLESS_COMPAT_WARNING macro to silence the message.

  7. For more details about roothide, please refer to

support

more info

About

document for tweak Developers

Topics

Resources

Stars

522 stars

Watchers

43 watching

Forks

Releases

Packages

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

Repository files navigation

update jailbreak apps/tweaks for roothide

  1. install roothide/theos

    bash -c "$(curl -fsSL https://raw.githubusercontent.com/roothide/theos/master/bin/install-theos)"

    and it's always automatically synchronized and maintains 100% compatibility with the original theos.

  2. Build package for roothide

    for those simple tweaks that don't use the file api to access jailbreak files, just

    make package with THEOS_PACKAGE_SCHEME=roothide

  3. Using roothide APIs if you need to use the file apis to access jailbreak files in source code

    #include <roothide.h>
    //then using roothide api to access jailbreak files
    const char* c_path = jbroot("/path/to/jb/file");
    NSString* objc_path = jbroot(@"/path/to/jb/file");
    std::string cpp_path = jbroot(std::string("/path/to/jb/file"));
    

    the jbroot API can be used in C/C++/Objective-C/Swift and its fully compatible with building rootful/rootless package

    In Swift project, it's better to use a swift bridging header file for #include <roothide.h> instead of using import roothide in swift source files. this will ensure your project is compatible with building rootful/rootless, ref to https://theos.dev/docs/swift#:~:text=Objective%2DC%20to%20Swift

  4. Add these entitlements to your executable/app to make them work correctly with roothide:

    <key>platform-application</key>
    <true/>
    <key>com.apple.private.security.no-sandbox</key>
    <true/>
    <key>com.apple.private.security.storage.AppBundles</key>
    <true/>
    <key>com.apple.private.security.storage.AppDataContainers</key>
    <true/>
    
  5. If you want to build your project with Xcode instead of theos,
    here is the roothide sdk: devkit.zip

  6. roothide/theos is now compatible with building roothide packages from existing tweak projects that use rootless path macros, there is a warning message to ensure you have read this document and you can define the DISABLE_ROOTLESS_COMPAT_WARNING macro to silence the message.

  7. For more details about roothide, please refer to

support

more info

About

document for tweak Developers

Topics

Resources

Stars

522 stars

Watchers

43 watching

Forks

Releases

Packages

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

Repository files navigation

update jailbreak apps/tweaks for roothide

  1. install roothide/theos

    bash -c "$(curl -fsSL https://raw.githubusercontent.com/roothide/theos/master/bin/install-theos)"

    and it's always automatically synchronized and maintains 100% compatibility with the original theos.

  2. Build package for roothide

    for those simple tweaks that don't use the file api to access jailbreak files, just

    make package with THEOS_PACKAGE_SCHEME=roothide

  3. Using roothide APIs if you need to use the file apis to access jailbreak files in source code

    #include <roothide.h>
    //then using roothide api to access jailbreak files
    const char* c_path = jbroot("/path/to/jb/file");
    NSString* objc_path = jbroot(@"/path/to/jb/file");
    std::string cpp_path = jbroot(std::string("/path/to/jb/file"));
    

    the jbroot API can be used in C/C++/Objective-C/Swift and its fully compatible with building rootful/rootless package

    In Swift project, it's better to use a swift bridging header file for #include <roothide.h> instead of using import roothide in swift source files. this will ensure your project is compatible with building rootful/rootless, ref to https://theos.dev/docs/swift#:~:text=Objective%2DC%20to%20Swift

  4. Add these entitlements to your executable/app to make them work correctly with roothide:

    <key>platform-application</key>
    <true/>
    <key>com.apple.private.security.no-sandbox</key>
    <true/>
    <key>com.apple.private.security.storage.AppBundles</key>
    <true/>
    <key>com.apple.private.security.storage.AppDataContainers</key>
    <true/>
    
  5. If you want to build your project with Xcode instead of theos,
    here is the roothide sdk: devkit.zip

  6. roothide/theos is now compatible with building roothide packages from existing tweak projects that use rootless path macros, there is a warning message to ensure you have read this document and you can define the DISABLE_ROOTLESS_COMPAT_WARNING macro to silence the message.

  7. For more details about roothide, please refer to

support

more info

About

document for tweak Developers

Topics

Resources

Stars

522 stars

Watchers

43 watching

Forks

Releases

Packages

Contributors

Languages