Skip to content

Instantly share code, notes, and snippets.

@Roy-Orbison
Roy-Orbison / userChrome.css
Last active August 4, 2026 02:23
Restore the "browser.tabs.closeButtons" user preference (except value 3).
/*
* See https://kb.mozillazine.org/Browser.tabs.closeButtons
* 0 is new Firefox default, 3 not possible in CSS alone.
*/
@media -moz-pref('browser.tabs.closeButtons', 1) {
#tabbrowser-tabs[closebuttons="activetab"][orient="horizontal"] .tab-close-button:not([selected], [pinned]) {
display: inline-flex !important;
}
}
@media -moz-pref('browser.tabs.closeButtons', 2) {
@Roy-Orbison
Roy-Orbison / scss.ctags
Last active June 22, 2022 01:26 — forked from dreki/scss-rules-for-ctags
SCSS rules for universal ctags
# Copyright 2019 Roy-Orbison
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
@Roy-Orbison
Roy-Orbison / maestral-open-dropbox.sh
Last active October 10, 2023 06:36
Simple link from Dolphin file manager to file/folder on Dropbox.com using Maestral GUI under KDE. The .desktop file goes under `~/.local/share/kio/servicemenus/` and the script should be anywhere in your PATH, I used `~/.local/bin/`. Script depends on realpath, xdg-open, notify-send, and of course maestral.
#!/bin/bash
if maestral status | grep -qFi 'not running'; then
err='Maestral not running'
elif ! droot="`maestral config get path`"; then
err='Maestral not found'
elif ! real="`realpath -eLPq "$1"`"; then
err='Path does not exist'
elif [[ ${#real} -le ${#droot} || "${real:0:${#droot}}" != "$droot" ]]; then
err="The path $real is not below the Dropbox root directory $droot"
else
@Roy-Orbison
Roy-Orbison / import-from-dir.php
Last active March 16, 2026 12:47 — forked from joshcangit/folder-import.php
Import any .sql[.gz] file, from a specifiable directory, rather than only the default adminer.sql[.gz], with Adminer.
<?php
/**
* Import SQL files from a directory
*
* @author joshcangit, https://github.com/joshcangit
* @author Roy-Orbison, https://github.com/Roy-Orbison
*/
class AdminerImportFromDir {
@Roy-Orbison
Roy-Orbison / dl_ext_webstore_console.js
Last active May 1, 2022 04:56 — forked from tim-hub/dl_ext_webstore_console.js
Download the CRX file of a Chrome extension for inspection or manual installation.
window.location.href = (function() {
var browser = (function() {
var ua = navigator.userAgent,
tem,
M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
if (/trident/i.test(M[1])) {
tem = /\brv[ :]+(\d+)/g.exec(ua) || [];
return {
name: 'IE',
version: (tem[1] || '')
@Roy-Orbison
Roy-Orbison / com.mattermost.calls-config.md
Last active June 9, 2023 12:52
Configure integrated calls plugin for Mattermost

Configure calls plugin for Mattermost

Simple case of Single-instance Team edition

Setting Value
RTC Server Address 0.0.0.0 or [::]
RTC Server Port Leave blank for 8443 default, or change to another available port
ICE Host Override Your chat server's host name, e.g. mm.organisation.example, unless that may not resolve to your public IP address when queried locally on that server. The latter can occur if you have an entry in your hosts file that resolves to a loopback address, or split-horizon DNS, in which case you need to enter the IP address or a different (sub)domain that always resolves to it, e.g. calls-mm.organisation.example.
ICE Servers Configurations Leave blank
@Roy-Orbison
Roy-Orbison / slash-search-fallback.html
Last active April 12, 2023 07:58
A contrived example to demonstrate that you can listen for "/" as a shortcut key *and* still fall back to the native Quick Find, so your site does not completely commandeer a useful browser feature.
<input type=search placeholder=search><br>
<textarea placeholder="won't respond to / shortcut"></textarea>
<script>
document.addEventListener(
'keydown',
(function() {
let lastWasSlash = false,
thisIsSlash,
input = document.querySelector('input');
return evt => {
@Roy-Orbison
Roy-Orbison / dropbox-filenames-fix
Created January 22, 2024 07:02
A bash script to make filenames created on Mac/Linux compatible with Windows for shared Dropbox folders (or similar file syncing services).
#!/bin/bash
set -e
#shopt -s compat32
# illegal on windows
re_ctrl='[:cntrl:]'
re_ctrl="^([^$re_ctrl]*)[$re_ctrl]+(.*)"
re_punct='<>:"\\/|?*'
re_punct="^([^$re_punct]*)[$re_punct]+(.*)"
re_ts_td='[. ]+$'
@Roy-Orbison
Roy-Orbison / README.md
Last active August 4, 2026 00:43
Mozilla APT repository (like PPA) files to install and automatically update Firefox and Thunderbird.

Quick setup of Mozilla's APT repository

The easy way to enable installation of packages, adapted from [Mozilla's][1] [guides][3]. Files should be saved to:

/etc/apt/preferences.d/mozilla
/etc/apt/sources.list.d/mozilla.sources

The PGP key is [Mozilla's][2], which you can compare to the one embedded in the .sources file.

@Roy-Orbison
Roy-Orbison / acmebase64
Created July 19, 2024 07:03
A simple tool for decoding & encoding data saved in acme.sh conf files, denoted by __ACME_BASE64__START_ & __ACME_BASE64__END_.
#!/bin/sh
ts=__ACME_BASE64__START_
te=__ACME_BASE64__END_
case $# in
0)
# loop ensures no final newline is added to input
printf '%s%s%s\n' "$ts" "$(
q=false
f='%s'