Skip to content

Repository files navigation

⚔️ golt

golt is a CLI-based third-party game launcher for OldSchool Runescape.

Why?

The official recommendation points to several community projects, most of which involve running the launcher in Wine or a similar environment. However, I really wanted a native solution, or one that didn't require installing a 1.5GB compatibility layer solely for launcher functionality.

While there is a project that served as the inspiration for this one, and functions seamlessly on Linux, there were some boxes that it didn't tick for me:

  • Its installation size is ~460MB
  • Lack of support for overriding the client launch command/environment
  • It's a bit of a pain to compile

In comparison, the linux-amd64 build for golt is a single 6.8MB binary.

Installation

Either download the latest binary from the Releases page (or build it yourself), and add it to a directory on your PATH.

Then, create a desktop entry for this application:

[Desktop Entry]
Type=Application
Name=golt
Exec=golt %U
StartupNotify=true
Terminal=true
MimeType=x-scheme-handler/jagex;
Categories=Game;
Name[en_US]=golt

Place it under /usr/share/applications/golt.desktop

Then, register it to be the default handler for the jagex:<...> scheme:

xdg-mime default golt.desktop x-scheme-handler/jagex

And reload the MIME-types database:

update-desktop-database

Finally, set up an iptable entry to redirect localhost:80 to localhost:8080:

sudo iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
Why?

The login flow is currently done in the browser:

  • The OAuth login redirects to a page which invokes a scheme handler
  • The game login step redirects to http://localhost

These redirect URLs are validated server side, so cannot be modified on the client side.

As for the iptable entry, most Linux distros don't allow binding to port 80, so golt binds to port 8080 instead.

Configuration

Environment VariableDefaultDescription
GOLT_GAME_PATHRuneLite.AppImageEither a binary on PATH, or an absolute path to the client to launch.
This value is passed to exec.Command(docs)
GOLT_BIND_PORT8080Local port to which golt will bind to to receive the OAuth response callback.
If this is not 80, you must set up an iptable entry to redirect inbound traffic from port 80 to this port.

Disclaimer

This project is not affiliated with or endorsed by Jagex Ltd. It is an independent project created for educational and testing purposes. Please use responsibly and adhere to Jagex's terms of service.

About

CLI-based third-party OldSchool Runescape launcher, for Linux.

Resources

Stars

9 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - chowder/golt: CLI-based third-party OldSchool Runescape launcher, for Linux. · GitHub
Skip to content

Repository files navigation

⚔️ golt

golt is a CLI-based third-party game launcher for OldSchool Runescape.

Why?

The official recommendation points to several community projects, most of which involve running the launcher in Wine or a similar environment. However, I really wanted a native solution, or one that didn't require installing a 1.5GB compatibility layer solely for launcher functionality.

While there is a project that served as the inspiration for this one, and functions seamlessly on Linux, there were some boxes that it didn't tick for me:

  • Its installation size is ~460MB
  • Lack of support for overriding the client launch command/environment
  • It's a bit of a pain to compile

In comparison, the linux-amd64 build for golt is a single 6.8MB binary.

Installation

Either download the latest binary from the Releases page (or build it yourself), and add it to a directory on your PATH.

Then, create a desktop entry for this application:

[Desktop Entry]
Type=Application
Name=golt
Exec=golt %U
StartupNotify=true
Terminal=true
MimeType=x-scheme-handler/jagex;
Categories=Game;
Name[en_US]=golt

Place it under /usr/share/applications/golt.desktop

Then, register it to be the default handler for the jagex:<...> scheme:

xdg-mime default golt.desktop x-scheme-handler/jagex

And reload the MIME-types database:

update-desktop-database

Finally, set up an iptable entry to redirect localhost:80 to localhost:8080:

sudo iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
Why?

The login flow is currently done in the browser:

  • The OAuth login redirects to a page which invokes a scheme handler
  • The game login step redirects to http://localhost

These redirect URLs are validated server side, so cannot be modified on the client side.

As for the iptable entry, most Linux distros don't allow binding to port 80, so golt binds to port 8080 instead.

Configuration

Environment VariableDefaultDescription
GOLT_GAME_PATHRuneLite.AppImageEither a binary on PATH, or an absolute path to the client to launch.
This value is passed to exec.Command(docs)
GOLT_BIND_PORT8080Local port to which golt will bind to to receive the OAuth response callback.
If this is not 80, you must set up an iptable entry to redirect inbound traffic from port 80 to this port.

Disclaimer

This project is not affiliated with or endorsed by Jagex Ltd. It is an independent project created for educational and testing purposes. Please use responsibly and adhere to Jagex's terms of service.

About

CLI-based third-party OldSchool Runescape launcher, for Linux.

Resources

Stars

9 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages

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

Repository files navigation

⚔️ golt

golt is a CLI-based third-party game launcher for OldSchool Runescape.

Why?

The official recommendation points to several community projects, most of which involve running the launcher in Wine or a similar environment. However, I really wanted a native solution, or one that didn't require installing a 1.5GB compatibility layer solely for launcher functionality.

While there is a project that served as the inspiration for this one, and functions seamlessly on Linux, there were some boxes that it didn't tick for me:

  • Its installation size is ~460MB
  • Lack of support for overriding the client launch command/environment
  • It's a bit of a pain to compile

In comparison, the linux-amd64 build for golt is a single 6.8MB binary.

Installation

Either download the latest binary from the Releases page (or build it yourself), and add it to a directory on your PATH.

Then, create a desktop entry for this application:

[Desktop Entry]
Type=Application
Name=golt
Exec=golt %U
StartupNotify=true
Terminal=true
MimeType=x-scheme-handler/jagex;
Categories=Game;
Name[en_US]=golt

Place it under /usr/share/applications/golt.desktop

Then, register it to be the default handler for the jagex:<...> scheme:

xdg-mime default golt.desktop x-scheme-handler/jagex

And reload the MIME-types database:

update-desktop-database

Finally, set up an iptable entry to redirect localhost:80 to localhost:8080:

sudo iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
Why?

The login flow is currently done in the browser:

  • The OAuth login redirects to a page which invokes a scheme handler
  • The game login step redirects to http://localhost

These redirect URLs are validated server side, so cannot be modified on the client side.

As for the iptable entry, most Linux distros don't allow binding to port 80, so golt binds to port 8080 instead.

Configuration

Environment VariableDefaultDescription
GOLT_GAME_PATHRuneLite.AppImageEither a binary on PATH, or an absolute path to the client to launch.
This value is passed to exec.Command(docs)
GOLT_BIND_PORT8080Local port to which golt will bind to to receive the OAuth response callback.
If this is not 80, you must set up an iptable entry to redirect inbound traffic from port 80 to this port.

Disclaimer

This project is not affiliated with or endorsed by Jagex Ltd. It is an independent project created for educational and testing purposes. Please use responsibly and adhere to Jagex's terms of service.

About

CLI-based third-party OldSchool Runescape launcher, for Linux.

Resources

Stars

9 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages

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

Repository files navigation

⚔️ golt

golt is a CLI-based third-party game launcher for OldSchool Runescape.

Why?

The official recommendation points to several community projects, most of which involve running the launcher in Wine or a similar environment. However, I really wanted a native solution, or one that didn't require installing a 1.5GB compatibility layer solely for launcher functionality.

While there is a project that served as the inspiration for this one, and functions seamlessly on Linux, there were some boxes that it didn't tick for me:

  • Its installation size is ~460MB
  • Lack of support for overriding the client launch command/environment
  • It's a bit of a pain to compile

In comparison, the linux-amd64 build for golt is a single 6.8MB binary.

Installation

Either download the latest binary from the Releases page (or build it yourself), and add it to a directory on your PATH.

Then, create a desktop entry for this application:

[Desktop Entry]
Type=Application
Name=golt
Exec=golt %U
StartupNotify=true
Terminal=true
MimeType=x-scheme-handler/jagex;
Categories=Game;
Name[en_US]=golt

Place it under /usr/share/applications/golt.desktop

Then, register it to be the default handler for the jagex:<...> scheme:

xdg-mime default golt.desktop x-scheme-handler/jagex

And reload the MIME-types database:

update-desktop-database

Finally, set up an iptable entry to redirect localhost:80 to localhost:8080:

sudo iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
Why?

The login flow is currently done in the browser:

  • The OAuth login redirects to a page which invokes a scheme handler
  • The game login step redirects to http://localhost

These redirect URLs are validated server side, so cannot be modified on the client side.

As for the iptable entry, most Linux distros don't allow binding to port 80, so golt binds to port 8080 instead.

Configuration

Environment VariableDefaultDescription
GOLT_GAME_PATHRuneLite.AppImageEither a binary on PATH, or an absolute path to the client to launch.
This value is passed to exec.Command(docs)
GOLT_BIND_PORT8080Local port to which golt will bind to to receive the OAuth response callback.
If this is not 80, you must set up an iptable entry to redirect inbound traffic from port 80 to this port.

Disclaimer

This project is not affiliated with or endorsed by Jagex Ltd. It is an independent project created for educational and testing purposes. Please use responsibly and adhere to Jagex's terms of service.

About

CLI-based third-party OldSchool Runescape launcher, for Linux.

Resources

Stars

9 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages

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

Repository files navigation

⚔️ golt

golt is a CLI-based third-party game launcher for OldSchool Runescape.

Why?

The official recommendation points to several community projects, most of which involve running the launcher in Wine or a similar environment. However, I really wanted a native solution, or one that didn't require installing a 1.5GB compatibility layer solely for launcher functionality.

While there is a project that served as the inspiration for this one, and functions seamlessly on Linux, there were some boxes that it didn't tick for me:

  • Its installation size is ~460MB
  • Lack of support for overriding the client launch command/environment
  • It's a bit of a pain to compile

In comparison, the linux-amd64 build for golt is a single 6.8MB binary.

Installation

Either download the latest binary from the Releases page (or build it yourself), and add it to a directory on your PATH.

Then, create a desktop entry for this application:

[Desktop Entry]
Type=Application
Name=golt
Exec=golt %U
StartupNotify=true
Terminal=true
MimeType=x-scheme-handler/jagex;
Categories=Game;
Name[en_US]=golt

Place it under /usr/share/applications/golt.desktop

Then, register it to be the default handler for the jagex:<...> scheme:

xdg-mime default golt.desktop x-scheme-handler/jagex

And reload the MIME-types database:

update-desktop-database

Finally, set up an iptable entry to redirect localhost:80 to localhost:8080:

sudo iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
Why?

The login flow is currently done in the browser:

  • The OAuth login redirects to a page which invokes a scheme handler
  • The game login step redirects to http://localhost

These redirect URLs are validated server side, so cannot be modified on the client side.

As for the iptable entry, most Linux distros don't allow binding to port 80, so golt binds to port 8080 instead.

Configuration

Environment VariableDefaultDescription
GOLT_GAME_PATHRuneLite.AppImageEither a binary on PATH, or an absolute path to the client to launch.
This value is passed to exec.Command(docs)
GOLT_BIND_PORT8080Local port to which golt will bind to to receive the OAuth response callback.
If this is not 80, you must set up an iptable entry to redirect inbound traffic from port 80 to this port.

Disclaimer

This project is not affiliated with or endorsed by Jagex Ltd. It is an independent project created for educational and testing purposes. Please use responsibly and adhere to Jagex's terms of service.

About

CLI-based third-party OldSchool Runescape launcher, for Linux.

Resources

Stars

9 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages

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

Repository files navigation

⚔️ golt

golt is a CLI-based third-party game launcher for OldSchool Runescape.

Why?

The official recommendation points to several community projects, most of which involve running the launcher in Wine or a similar environment. However, I really wanted a native solution, or one that didn't require installing a 1.5GB compatibility layer solely for launcher functionality.

While there is a project that served as the inspiration for this one, and functions seamlessly on Linux, there were some boxes that it didn't tick for me:

  • Its installation size is ~460MB
  • Lack of support for overriding the client launch command/environment
  • It's a bit of a pain to compile

In comparison, the linux-amd64 build for golt is a single 6.8MB binary.

Installation

Either download the latest binary from the Releases page (or build it yourself), and add it to a directory on your PATH.

Then, create a desktop entry for this application:

[Desktop Entry]
Type=Application
Name=golt
Exec=golt %U
StartupNotify=true
Terminal=true
MimeType=x-scheme-handler/jagex;
Categories=Game;
Name[en_US]=golt

Place it under /usr/share/applications/golt.desktop

Then, register it to be the default handler for the jagex:<...> scheme:

xdg-mime default golt.desktop x-scheme-handler/jagex

And reload the MIME-types database:

update-desktop-database

Finally, set up an iptable entry to redirect localhost:80 to localhost:8080:

sudo iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
Why?

The login flow is currently done in the browser:

  • The OAuth login redirects to a page which invokes a scheme handler
  • The game login step redirects to http://localhost

These redirect URLs are validated server side, so cannot be modified on the client side.

As for the iptable entry, most Linux distros don't allow binding to port 80, so golt binds to port 8080 instead.

Configuration

Environment VariableDefaultDescription
GOLT_GAME_PATHRuneLite.AppImageEither a binary on PATH, or an absolute path to the client to launch.
This value is passed to exec.Command(docs)
GOLT_BIND_PORT8080Local port to which golt will bind to to receive the OAuth response callback.
If this is not 80, you must set up an iptable entry to redirect inbound traffic from port 80 to this port.

Disclaimer

This project is not affiliated with or endorsed by Jagex Ltd. It is an independent project created for educational and testing purposes. Please use responsibly and adhere to Jagex's terms of service.

About

CLI-based third-party OldSchool Runescape launcher, for Linux.

Resources

Stars

9 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages

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

Repository files navigation

⚔️ golt

golt is a CLI-based third-party game launcher for OldSchool Runescape.

Why?

The official recommendation points to several community projects, most of which involve running the launcher in Wine or a similar environment. However, I really wanted a native solution, or one that didn't require installing a 1.5GB compatibility layer solely for launcher functionality.

While there is a project that served as the inspiration for this one, and functions seamlessly on Linux, there were some boxes that it didn't tick for me:

  • Its installation size is ~460MB
  • Lack of support for overriding the client launch command/environment
  • It's a bit of a pain to compile

In comparison, the linux-amd64 build for golt is a single 6.8MB binary.

Installation

Either download the latest binary from the Releases page (or build it yourself), and add it to a directory on your PATH.

Then, create a desktop entry for this application:

[Desktop Entry]
Type=Application
Name=golt
Exec=golt %U
StartupNotify=true
Terminal=true
MimeType=x-scheme-handler/jagex;
Categories=Game;
Name[en_US]=golt

Place it under /usr/share/applications/golt.desktop

Then, register it to be the default handler for the jagex:<...> scheme:

xdg-mime default golt.desktop x-scheme-handler/jagex

And reload the MIME-types database:

update-desktop-database

Finally, set up an iptable entry to redirect localhost:80 to localhost:8080:

sudo iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
Why?

The login flow is currently done in the browser:

  • The OAuth login redirects to a page which invokes a scheme handler
  • The game login step redirects to http://localhost

These redirect URLs are validated server side, so cannot be modified on the client side.

As for the iptable entry, most Linux distros don't allow binding to port 80, so golt binds to port 8080 instead.

Configuration

Environment VariableDefaultDescription
GOLT_GAME_PATHRuneLite.AppImageEither a binary on PATH, or an absolute path to the client to launch.
This value is passed to exec.Command(docs)
GOLT_BIND_PORT8080Local port to which golt will bind to to receive the OAuth response callback.
If this is not 80, you must set up an iptable entry to redirect inbound traffic from port 80 to this port.

Disclaimer

This project is not affiliated with or endorsed by Jagex Ltd. It is an independent project created for educational and testing purposes. Please use responsibly and adhere to Jagex's terms of service.

About

CLI-based third-party OldSchool Runescape launcher, for Linux.

Resources

Stars

9 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages

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

Repository files navigation

⚔️ golt

golt is a CLI-based third-party game launcher for OldSchool Runescape.

Why?

The official recommendation points to several community projects, most of which involve running the launcher in Wine or a similar environment. However, I really wanted a native solution, or one that didn't require installing a 1.5GB compatibility layer solely for launcher functionality.

While there is a project that served as the inspiration for this one, and functions seamlessly on Linux, there were some boxes that it didn't tick for me:

  • Its installation size is ~460MB
  • Lack of support for overriding the client launch command/environment
  • It's a bit of a pain to compile

In comparison, the linux-amd64 build for golt is a single 6.8MB binary.

Installation

Either download the latest binary from the Releases page (or build it yourself), and add it to a directory on your PATH.

Then, create a desktop entry for this application:

[Desktop Entry]
Type=Application
Name=golt
Exec=golt %U
StartupNotify=true
Terminal=true
MimeType=x-scheme-handler/jagex;
Categories=Game;
Name[en_US]=golt

Place it under /usr/share/applications/golt.desktop

Then, register it to be the default handler for the jagex:<...> scheme:

xdg-mime default golt.desktop x-scheme-handler/jagex

And reload the MIME-types database:

update-desktop-database

Finally, set up an iptable entry to redirect localhost:80 to localhost:8080:

sudo iptables -t nat -I OUTPUT -p tcp -d 127.0.0.1 --dport 80 -j REDIRECT --to-ports 8080
Why?

The login flow is currently done in the browser:

  • The OAuth login redirects to a page which invokes a scheme handler
  • The game login step redirects to http://localhost

These redirect URLs are validated server side, so cannot be modified on the client side.

As for the iptable entry, most Linux distros don't allow binding to port 80, so golt binds to port 8080 instead.

Configuration

Environment VariableDefaultDescription
GOLT_GAME_PATHRuneLite.AppImageEither a binary on PATH, or an absolute path to the client to launch.
This value is passed to exec.Command(docs)
GOLT_BIND_PORT8080Local port to which golt will bind to to receive the OAuth response callback.
If this is not 80, you must set up an iptable entry to redirect inbound traffic from port 80 to this port.

Disclaimer

This project is not affiliated with or endorsed by Jagex Ltd. It is an independent project created for educational and testing purposes. Please use responsibly and adhere to Jagex's terms of service.

About

CLI-based third-party OldSchool Runescape launcher, for Linux.

Resources

Stars

9 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages