Latest commit

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

case-scripts

Explanation how to fit an unlimited number of scripts into one, called "cases"

I no longer use separate bash scripts - one file for each task, which is why I deleted the repository named "convenience bash scripts". I moved to the so called "cases" which I'm gonna explain here how to create and use them.

"Why cases?" - Because case files means less separate files for each task. If until now you have had zero-compression.sh, max-compression.sh, max-compression-w-password.sh, now you need just one file. I used to have 260 .sh scripts. Now, thanks to the cases, I've reduced that numer to just 67 script files.

First, create an empty file to which (for your own convenience) you can give the .sh extension. For the following example and explanations I'm going to use file names and code from my own case scripts. But you can name them whatever you want.

Secondly, at the first and second lines of that empty file put this:

#!/usr/bin/env bash set -euo pipefail

The pipefail code makes the script to stop execution, if it encounters any error.

For this explanation I'll start with probably the most used command ever - archiving files.

Leave one line empty after pipefail (that's just for better readability) and write this: (please note that -mmt20 is the number of threads your CPU has; you can leave it as it is - if your CPU has less than 20 threads, it will still use all available threads. If it has more than 20 threads, I recommend you to change that number to match your CPU's threads) (-mx0 means zero compression, otherwise known as "Store"; -mx9 means maximum compression or the highest available - slower but highly effective)

options0="-mx0 -mmt20"
options9="-mx9 -mmt20"
case "$1" in
7z0)
if [[ -z "${2:-}" ]]; then
read -rp "Enter dir name to archive. Use double quotes if the name has spaces: " target
else
target="$2"
fi
7z a "$target".7z "$target" $options0
;;
7z9)
if [[ -z "${2:-}" ]]; then
read -rp "Enter dir name to archive. Use double quotes if the name has spaces: " target
else
target="$2"
fi
7z a "$target".7z "$target" $options9
;;
*)
echo "Bla!"
;;
esac

Save the file as PACK-UNPACK-CASE.sh or whatever else you prefer that will indicate it contains a case script. After that you can create an alias and the usage will be like this:

$ aliasname casename argument

Here's a visual example of how I use this case script:

$ pack 7z0 NFS_PAYBACK

This will create NFS_PAYBACK.7z in the same directory where the game directory is located. In my case NFS_PAYBACK is in /B/GAMES, so it will create /B/GAMES/NFS_PAYBACK.7z.

A case script can have even $3, $4, $5 or as many arguments as you want.

I suppose this could look harder than the regular scripts, especially at first use, but it has one advantage: you define the variables outside the case block and after that just place them on their relevant places using $ in front of them. This makes the script much easier to maintain and edit bc you only have to edit the variable, not every single line of the script.

The *) is there to tip you off, if you enter the wrong case name. You can replace the "Bla!" in the echo line with whatever you want. Personally, I prefer to list the available case names. The case name is 7z0.

And here's another example of how you can fit as many cases as you want in just one file. I have my reasons to dislike ZeroRPM, that's why I created the NVIDIA-CASE.sh:

#!/usr/bin/env bash
set -euo pipefail
case "$1" in
#FOR RTX 3070 Ti THE MINIMUM SPEED IS 45%, MAX - 70%. 75%+ NOT RECOMMENDED!
45|50|55|60|65|70)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=$1"
;;
low)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=50"
;;
med)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=60"
;;
high)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=70"
;;
auto)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=0"
;;
*)
echo "Cases: auto, 45, 50, 55, 60, 65, 70, low, med, high. Low, med, high = 50, 60, 70."
;;
esac

With NVIDIA-CASE.sh I have FULL control over the videocard's fan speed at my leisure. These are 9 different scripts all united into a single .sh file. I use this one like this (usually):

$ fans med

I'll keep an eye on this repository, so if you have any questions, just post an issue.

About

Explanation how to fit an unlimited number of scripts into one, called "cases"

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

, '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

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

case-scripts

Explanation how to fit an unlimited number of scripts into one, called "cases"

I no longer use separate bash scripts - one file for each task, which is why I deleted the repository named "convenience bash scripts". I moved to the so called "cases" which I'm gonna explain here how to create and use them.

"Why cases?" - Because case files means less separate files for each task. If until now you have had zero-compression.sh, max-compression.sh, max-compression-w-password.sh, now you need just one file. I used to have 260 .sh scripts. Now, thanks to the cases, I've reduced that numer to just 67 script files.

First, create an empty file to which (for your own convenience) you can give the .sh extension. For the following example and explanations I'm going to use file names and code from my own case scripts. But you can name them whatever you want.

Secondly, at the first and second lines of that empty file put this:

#!/usr/bin/env bash set -euo pipefail

The pipefail code makes the script to stop execution, if it encounters any error.

For this explanation I'll start with probably the most used command ever - archiving files.

Leave one line empty after pipefail (that's just for better readability) and write this: (please note that -mmt20 is the number of threads your CPU has; you can leave it as it is - if your CPU has less than 20 threads, it will still use all available threads. If it has more than 20 threads, I recommend you to change that number to match your CPU's threads) (-mx0 means zero compression, otherwise known as "Store"; -mx9 means maximum compression or the highest available - slower but highly effective)

options0="-mx0 -mmt20"
options9="-mx9 -mmt20"
case "$1" in
7z0)
if [[ -z "${2:-}" ]]; then
read -rp "Enter dir name to archive. Use double quotes if the name has spaces: " target
else
target="$2"
fi
7z a "$target".7z "$target" $options0
;;
7z9)
if [[ -z "${2:-}" ]]; then
read -rp "Enter dir name to archive. Use double quotes if the name has spaces: " target
else
target="$2"
fi
7z a "$target".7z "$target" $options9
;;
*)
echo "Bla!"
;;
esac

Save the file as PACK-UNPACK-CASE.sh or whatever else you prefer that will indicate it contains a case script. After that you can create an alias and the usage will be like this:

$ aliasname casename argument

Here's a visual example of how I use this case script:

$ pack 7z0 NFS_PAYBACK

This will create NFS_PAYBACK.7z in the same directory where the game directory is located. In my case NFS_PAYBACK is in /B/GAMES, so it will create /B/GAMES/NFS_PAYBACK.7z.

A case script can have even $3, $4, $5 or as many arguments as you want.

I suppose this could look harder than the regular scripts, especially at first use, but it has one advantage: you define the variables outside the case block and after that just place them on their relevant places using $ in front of them. This makes the script much easier to maintain and edit bc you only have to edit the variable, not every single line of the script.

The *) is there to tip you off, if you enter the wrong case name. You can replace the "Bla!" in the echo line with whatever you want. Personally, I prefer to list the available case names. The case name is 7z0.

And here's another example of how you can fit as many cases as you want in just one file. I have my reasons to dislike ZeroRPM, that's why I created the NVIDIA-CASE.sh:

#!/usr/bin/env bash
set -euo pipefail
case "$1" in
#FOR RTX 3070 Ti THE MINIMUM SPEED IS 45%, MAX - 70%. 75%+ NOT RECOMMENDED!
45|50|55|60|65|70)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=$1"
;;
low)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=50"
;;
med)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=60"
;;
high)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=70"
;;
auto)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=0"
;;
*)
echo "Cases: auto, 45, 50, 55, 60, 65, 70, low, med, high. Low, med, high = 50, 60, 70."
;;
esac

With NVIDIA-CASE.sh I have FULL control over the videocard's fan speed at my leisure. These are 9 different scripts all united into a single .sh file. I use this one like this (usually):

$ fans med

I'll keep an eye on this repository, so if you have any questions, just post an issue.

About

Explanation how to fit an unlimited number of scripts into one, called "cases"

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

, '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

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

case-scripts

Explanation how to fit an unlimited number of scripts into one, called "cases"

I no longer use separate bash scripts - one file for each task, which is why I deleted the repository named "convenience bash scripts". I moved to the so called "cases" which I'm gonna explain here how to create and use them.

"Why cases?" - Because case files means less separate files for each task. If until now you have had zero-compression.sh, max-compression.sh, max-compression-w-password.sh, now you need just one file. I used to have 260 .sh scripts. Now, thanks to the cases, I've reduced that numer to just 67 script files.

First, create an empty file to which (for your own convenience) you can give the .sh extension. For the following example and explanations I'm going to use file names and code from my own case scripts. But you can name them whatever you want.

Secondly, at the first and second lines of that empty file put this:

#!/usr/bin/env bash set -euo pipefail

The pipefail code makes the script to stop execution, if it encounters any error.

For this explanation I'll start with probably the most used command ever - archiving files.

Leave one line empty after pipefail (that's just for better readability) and write this: (please note that -mmt20 is the number of threads your CPU has; you can leave it as it is - if your CPU has less than 20 threads, it will still use all available threads. If it has more than 20 threads, I recommend you to change that number to match your CPU's threads) (-mx0 means zero compression, otherwise known as "Store"; -mx9 means maximum compression or the highest available - slower but highly effective)

options0="-mx0 -mmt20"
options9="-mx9 -mmt20"
case "$1" in
7z0)
if [[ -z "${2:-}" ]]; then
read -rp "Enter dir name to archive. Use double quotes if the name has spaces: " target
else
target="$2"
fi
7z a "$target".7z "$target" $options0
;;
7z9)
if [[ -z "${2:-}" ]]; then
read -rp "Enter dir name to archive. Use double quotes if the name has spaces: " target
else
target="$2"
fi
7z a "$target".7z "$target" $options9
;;
*)
echo "Bla!"
;;
esac

Save the file as PACK-UNPACK-CASE.sh or whatever else you prefer that will indicate it contains a case script. After that you can create an alias and the usage will be like this:

$ aliasname casename argument

Here's a visual example of how I use this case script:

$ pack 7z0 NFS_PAYBACK

This will create NFS_PAYBACK.7z in the same directory where the game directory is located. In my case NFS_PAYBACK is in /B/GAMES, so it will create /B/GAMES/NFS_PAYBACK.7z.

A case script can have even $3, $4, $5 or as many arguments as you want.

I suppose this could look harder than the regular scripts, especially at first use, but it has one advantage: you define the variables outside the case block and after that just place them on their relevant places using $ in front of them. This makes the script much easier to maintain and edit bc you only have to edit the variable, not every single line of the script.

The *) is there to tip you off, if you enter the wrong case name. You can replace the "Bla!" in the echo line with whatever you want. Personally, I prefer to list the available case names. The case name is 7z0.

And here's another example of how you can fit as many cases as you want in just one file. I have my reasons to dislike ZeroRPM, that's why I created the NVIDIA-CASE.sh:

#!/usr/bin/env bash
set -euo pipefail
case "$1" in
#FOR RTX 3070 Ti THE MINIMUM SPEED IS 45%, MAX - 70%. 75%+ NOT RECOMMENDED!
45|50|55|60|65|70)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=$1"
;;
low)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=50"
;;
med)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=60"
;;
high)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=70"
;;
auto)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=0"
;;
*)
echo "Cases: auto, 45, 50, 55, 60, 65, 70, low, med, high. Low, med, high = 50, 60, 70."
;;
esac

With NVIDIA-CASE.sh I have FULL control over the videocard's fan speed at my leisure. These are 9 different scripts all united into a single .sh file. I use this one like this (usually):

$ fans med

I'll keep an eye on this repository, so if you have any questions, just post an issue.

About

Explanation how to fit an unlimited number of scripts into one, called "cases"

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

, '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

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

case-scripts

Explanation how to fit an unlimited number of scripts into one, called "cases"

I no longer use separate bash scripts - one file for each task, which is why I deleted the repository named "convenience bash scripts". I moved to the so called "cases" which I'm gonna explain here how to create and use them.

"Why cases?" - Because case files means less separate files for each task. If until now you have had zero-compression.sh, max-compression.sh, max-compression-w-password.sh, now you need just one file. I used to have 260 .sh scripts. Now, thanks to the cases, I've reduced that numer to just 67 script files.

First, create an empty file to which (for your own convenience) you can give the .sh extension. For the following example and explanations I'm going to use file names and code from my own case scripts. But you can name them whatever you want.

Secondly, at the first and second lines of that empty file put this:

#!/usr/bin/env bash set -euo pipefail

The pipefail code makes the script to stop execution, if it encounters any error.

For this explanation I'll start with probably the most used command ever - archiving files.

Leave one line empty after pipefail (that's just for better readability) and write this: (please note that -mmt20 is the number of threads your CPU has; you can leave it as it is - if your CPU has less than 20 threads, it will still use all available threads. If it has more than 20 threads, I recommend you to change that number to match your CPU's threads) (-mx0 means zero compression, otherwise known as "Store"; -mx9 means maximum compression or the highest available - slower but highly effective)

options0="-mx0 -mmt20"
options9="-mx9 -mmt20"
case "$1" in
7z0)
if [[ -z "${2:-}" ]]; then
read -rp "Enter dir name to archive. Use double quotes if the name has spaces: " target
else
target="$2"
fi
7z a "$target".7z "$target" $options0
;;
7z9)
if [[ -z "${2:-}" ]]; then
read -rp "Enter dir name to archive. Use double quotes if the name has spaces: " target
else
target="$2"
fi
7z a "$target".7z "$target" $options9
;;
*)
echo "Bla!"
;;
esac

Save the file as PACK-UNPACK-CASE.sh or whatever else you prefer that will indicate it contains a case script. After that you can create an alias and the usage will be like this:

$ aliasname casename argument

Here's a visual example of how I use this case script:

$ pack 7z0 NFS_PAYBACK

This will create NFS_PAYBACK.7z in the same directory where the game directory is located. In my case NFS_PAYBACK is in /B/GAMES, so it will create /B/GAMES/NFS_PAYBACK.7z.

A case script can have even $3, $4, $5 or as many arguments as you want.

I suppose this could look harder than the regular scripts, especially at first use, but it has one advantage: you define the variables outside the case block and after that just place them on their relevant places using $ in front of them. This makes the script much easier to maintain and edit bc you only have to edit the variable, not every single line of the script.

The *) is there to tip you off, if you enter the wrong case name. You can replace the "Bla!" in the echo line with whatever you want. Personally, I prefer to list the available case names. The case name is 7z0.

And here's another example of how you can fit as many cases as you want in just one file. I have my reasons to dislike ZeroRPM, that's why I created the NVIDIA-CASE.sh:

#!/usr/bin/env bash
set -euo pipefail
case "$1" in
#FOR RTX 3070 Ti THE MINIMUM SPEED IS 45%, MAX - 70%. 75%+ NOT RECOMMENDED!
45|50|55|60|65|70)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=$1"
;;
low)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=50"
;;
med)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=60"
;;
high)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=70"
;;
auto)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=0"
;;
*)
echo "Cases: auto, 45, 50, 55, 60, 65, 70, low, med, high. Low, med, high = 50, 60, 70."
;;
esac

With NVIDIA-CASE.sh I have FULL control over the videocard's fan speed at my leisure. These are 9 different scripts all united into a single .sh file. I use this one like this (usually):

$ fans med

I'll keep an eye on this repository, so if you have any questions, just post an issue.

About

Explanation how to fit an unlimited number of scripts into one, called "cases"

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

, '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

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

case-scripts

Explanation how to fit an unlimited number of scripts into one, called "cases"

I no longer use separate bash scripts - one file for each task, which is why I deleted the repository named "convenience bash scripts". I moved to the so called "cases" which I'm gonna explain here how to create and use them.

"Why cases?" - Because case files means less separate files for each task. If until now you have had zero-compression.sh, max-compression.sh, max-compression-w-password.sh, now you need just one file. I used to have 260 .sh scripts. Now, thanks to the cases, I've reduced that numer to just 67 script files.

First, create an empty file to which (for your own convenience) you can give the .sh extension. For the following example and explanations I'm going to use file names and code from my own case scripts. But you can name them whatever you want.

Secondly, at the first and second lines of that empty file put this:

#!/usr/bin/env bash set -euo pipefail

The pipefail code makes the script to stop execution, if it encounters any error.

For this explanation I'll start with probably the most used command ever - archiving files.

Leave one line empty after pipefail (that's just for better readability) and write this: (please note that -mmt20 is the number of threads your CPU has; you can leave it as it is - if your CPU has less than 20 threads, it will still use all available threads. If it has more than 20 threads, I recommend you to change that number to match your CPU's threads) (-mx0 means zero compression, otherwise known as "Store"; -mx9 means maximum compression or the highest available - slower but highly effective)

options0="-mx0 -mmt20"
options9="-mx9 -mmt20"
case "$1" in
7z0)
if [[ -z "${2:-}" ]]; then
read -rp "Enter dir name to archive. Use double quotes if the name has spaces: " target
else
target="$2"
fi
7z a "$target".7z "$target" $options0
;;
7z9)
if [[ -z "${2:-}" ]]; then
read -rp "Enter dir name to archive. Use double quotes if the name has spaces: " target
else
target="$2"
fi
7z a "$target".7z "$target" $options9
;;
*)
echo "Bla!"
;;
esac

Save the file as PACK-UNPACK-CASE.sh or whatever else you prefer that will indicate it contains a case script. After that you can create an alias and the usage will be like this:

$ aliasname casename argument

Here's a visual example of how I use this case script:

$ pack 7z0 NFS_PAYBACK

This will create NFS_PAYBACK.7z in the same directory where the game directory is located. In my case NFS_PAYBACK is in /B/GAMES, so it will create /B/GAMES/NFS_PAYBACK.7z.

A case script can have even $3, $4, $5 or as many arguments as you want.

I suppose this could look harder than the regular scripts, especially at first use, but it has one advantage: you define the variables outside the case block and after that just place them on their relevant places using $ in front of them. This makes the script much easier to maintain and edit bc you only have to edit the variable, not every single line of the script.

The *) is there to tip you off, if you enter the wrong case name. You can replace the "Bla!" in the echo line with whatever you want. Personally, I prefer to list the available case names. The case name is 7z0.

And here's another example of how you can fit as many cases as you want in just one file. I have my reasons to dislike ZeroRPM, that's why I created the NVIDIA-CASE.sh:

#!/usr/bin/env bash
set -euo pipefail
case "$1" in
#FOR RTX 3070 Ti THE MINIMUM SPEED IS 45%, MAX - 70%. 75%+ NOT RECOMMENDED!
45|50|55|60|65|70)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=$1"
;;
low)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=50"
;;
med)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=60"
;;
high)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=70"
;;
auto)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=0"
;;
*)
echo "Cases: auto, 45, 50, 55, 60, 65, 70, low, med, high. Low, med, high = 50, 60, 70."
;;
esac

With NVIDIA-CASE.sh I have FULL control over the videocard's fan speed at my leisure. These are 9 different scripts all united into a single .sh file. I use this one like this (usually):

$ fans med

I'll keep an eye on this repository, so if you have any questions, just post an issue.

About

Explanation how to fit an unlimited number of scripts into one, called "cases"

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

, '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

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

case-scripts

Explanation how to fit an unlimited number of scripts into one, called "cases"

I no longer use separate bash scripts - one file for each task, which is why I deleted the repository named "convenience bash scripts". I moved to the so called "cases" which I'm gonna explain here how to create and use them.

"Why cases?" - Because case files means less separate files for each task. If until now you have had zero-compression.sh, max-compression.sh, max-compression-w-password.sh, now you need just one file. I used to have 260 .sh scripts. Now, thanks to the cases, I've reduced that numer to just 67 script files.

First, create an empty file to which (for your own convenience) you can give the .sh extension. For the following example and explanations I'm going to use file names and code from my own case scripts. But you can name them whatever you want.

Secondly, at the first and second lines of that empty file put this:

#!/usr/bin/env bash set -euo pipefail

The pipefail code makes the script to stop execution, if it encounters any error.

For this explanation I'll start with probably the most used command ever - archiving files.

Leave one line empty after pipefail (that's just for better readability) and write this: (please note that -mmt20 is the number of threads your CPU has; you can leave it as it is - if your CPU has less than 20 threads, it will still use all available threads. If it has more than 20 threads, I recommend you to change that number to match your CPU's threads) (-mx0 means zero compression, otherwise known as "Store"; -mx9 means maximum compression or the highest available - slower but highly effective)

options0="-mx0 -mmt20"
options9="-mx9 -mmt20"
case "$1" in
7z0)
if [[ -z "${2:-}" ]]; then
read -rp "Enter dir name to archive. Use double quotes if the name has spaces: " target
else
target="$2"
fi
7z a "$target".7z "$target" $options0
;;
7z9)
if [[ -z "${2:-}" ]]; then
read -rp "Enter dir name to archive. Use double quotes if the name has spaces: " target
else
target="$2"
fi
7z a "$target".7z "$target" $options9
;;
*)
echo "Bla!"
;;
esac

Save the file as PACK-UNPACK-CASE.sh or whatever else you prefer that will indicate it contains a case script. After that you can create an alias and the usage will be like this:

$ aliasname casename argument

Here's a visual example of how I use this case script:

$ pack 7z0 NFS_PAYBACK

This will create NFS_PAYBACK.7z in the same directory where the game directory is located. In my case NFS_PAYBACK is in /B/GAMES, so it will create /B/GAMES/NFS_PAYBACK.7z.

A case script can have even $3, $4, $5 or as many arguments as you want.

I suppose this could look harder than the regular scripts, especially at first use, but it has one advantage: you define the variables outside the case block and after that just place them on their relevant places using $ in front of them. This makes the script much easier to maintain and edit bc you only have to edit the variable, not every single line of the script.

The *) is there to tip you off, if you enter the wrong case name. You can replace the "Bla!" in the echo line with whatever you want. Personally, I prefer to list the available case names. The case name is 7z0.

And here's another example of how you can fit as many cases as you want in just one file. I have my reasons to dislike ZeroRPM, that's why I created the NVIDIA-CASE.sh:

#!/usr/bin/env bash
set -euo pipefail
case "$1" in
#FOR RTX 3070 Ti THE MINIMUM SPEED IS 45%, MAX - 70%. 75%+ NOT RECOMMENDED!
45|50|55|60|65|70)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=$1"
;;
low)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=50"
;;
med)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=60"
;;
high)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=70"
;;
auto)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=0"
;;
*)
echo "Cases: auto, 45, 50, 55, 60, 65, 70, low, med, high. Low, med, high = 50, 60, 70."
;;
esac

With NVIDIA-CASE.sh I have FULL control over the videocard's fan speed at my leisure. These are 9 different scripts all united into a single .sh file. I use this one like this (usually):

$ fans med

I'll keep an eye on this repository, so if you have any questions, just post an issue.

About

Explanation how to fit an unlimited number of scripts into one, called "cases"

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

, '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

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

case-scripts

Explanation how to fit an unlimited number of scripts into one, called "cases"

I no longer use separate bash scripts - one file for each task, which is why I deleted the repository named "convenience bash scripts". I moved to the so called "cases" which I'm gonna explain here how to create and use them.

"Why cases?" - Because case files means less separate files for each task. If until now you have had zero-compression.sh, max-compression.sh, max-compression-w-password.sh, now you need just one file. I used to have 260 .sh scripts. Now, thanks to the cases, I've reduced that numer to just 67 script files.

First, create an empty file to which (for your own convenience) you can give the .sh extension. For the following example and explanations I'm going to use file names and code from my own case scripts. But you can name them whatever you want.

Secondly, at the first and second lines of that empty file put this:

#!/usr/bin/env bash set -euo pipefail

The pipefail code makes the script to stop execution, if it encounters any error.

For this explanation I'll start with probably the most used command ever - archiving files.

Leave one line empty after pipefail (that's just for better readability) and write this: (please note that -mmt20 is the number of threads your CPU has; you can leave it as it is - if your CPU has less than 20 threads, it will still use all available threads. If it has more than 20 threads, I recommend you to change that number to match your CPU's threads) (-mx0 means zero compression, otherwise known as "Store"; -mx9 means maximum compression or the highest available - slower but highly effective)

options0="-mx0 -mmt20"
options9="-mx9 -mmt20"
case "$1" in
7z0)
if [[ -z "${2:-}" ]]; then
read -rp "Enter dir name to archive. Use double quotes if the name has spaces: " target
else
target="$2"
fi
7z a "$target".7z "$target" $options0
;;
7z9)
if [[ -z "${2:-}" ]]; then
read -rp "Enter dir name to archive. Use double quotes if the name has spaces: " target
else
target="$2"
fi
7z a "$target".7z "$target" $options9
;;
*)
echo "Bla!"
;;
esac

Save the file as PACK-UNPACK-CASE.sh or whatever else you prefer that will indicate it contains a case script. After that you can create an alias and the usage will be like this:

$ aliasname casename argument

Here's a visual example of how I use this case script:

$ pack 7z0 NFS_PAYBACK

This will create NFS_PAYBACK.7z in the same directory where the game directory is located. In my case NFS_PAYBACK is in /B/GAMES, so it will create /B/GAMES/NFS_PAYBACK.7z.

A case script can have even $3, $4, $5 or as many arguments as you want.

I suppose this could look harder than the regular scripts, especially at first use, but it has one advantage: you define the variables outside the case block and after that just place them on their relevant places using $ in front of them. This makes the script much easier to maintain and edit bc you only have to edit the variable, not every single line of the script.

The *) is there to tip you off, if you enter the wrong case name. You can replace the "Bla!" in the echo line with whatever you want. Personally, I prefer to list the available case names. The case name is 7z0.

And here's another example of how you can fit as many cases as you want in just one file. I have my reasons to dislike ZeroRPM, that's why I created the NVIDIA-CASE.sh:

#!/usr/bin/env bash
set -euo pipefail
case "$1" in
#FOR RTX 3070 Ti THE MINIMUM SPEED IS 45%, MAX - 70%. 75%+ NOT RECOMMENDED!
45|50|55|60|65|70)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=$1"
;;
low)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=50"
;;
med)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=60"
;;
high)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=70"
;;
auto)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=0"
;;
*)
echo "Cases: auto, 45, 50, 55, 60, 65, 70, low, med, high. Low, med, high = 50, 60, 70."
;;
esac

With NVIDIA-CASE.sh I have FULL control over the videocard's fan speed at my leisure. These are 9 different scripts all united into a single .sh file. I use this one like this (usually):

$ fans med

I'll keep an eye on this repository, so if you have any questions, just post an issue.

About

Explanation how to fit an unlimited number of scripts into one, called "cases"

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

, '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

3 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

case-scripts

Explanation how to fit an unlimited number of scripts into one, called "cases"

I no longer use separate bash scripts - one file for each task, which is why I deleted the repository named "convenience bash scripts". I moved to the so called "cases" which I'm gonna explain here how to create and use them.

"Why cases?" - Because case files means less separate files for each task. If until now you have had zero-compression.sh, max-compression.sh, max-compression-w-password.sh, now you need just one file. I used to have 260 .sh scripts. Now, thanks to the cases, I've reduced that numer to just 67 script files.

First, create an empty file to which (for your own convenience) you can give the .sh extension. For the following example and explanations I'm going to use file names and code from my own case scripts. But you can name them whatever you want.

Secondly, at the first and second lines of that empty file put this:

#!/usr/bin/env bash set -euo pipefail

The pipefail code makes the script to stop execution, if it encounters any error.

For this explanation I'll start with probably the most used command ever - archiving files.

Leave one line empty after pipefail (that's just for better readability) and write this: (please note that -mmt20 is the number of threads your CPU has; you can leave it as it is - if your CPU has less than 20 threads, it will still use all available threads. If it has more than 20 threads, I recommend you to change that number to match your CPU's threads) (-mx0 means zero compression, otherwise known as "Store"; -mx9 means maximum compression or the highest available - slower but highly effective)

options0="-mx0 -mmt20"
options9="-mx9 -mmt20"
case "$1" in
7z0)
if [[ -z "${2:-}" ]]; then
read -rp "Enter dir name to archive. Use double quotes if the name has spaces: " target
else
target="$2"
fi
7z a "$target".7z "$target" $options0
;;
7z9)
if [[ -z "${2:-}" ]]; then
read -rp "Enter dir name to archive. Use double quotes if the name has spaces: " target
else
target="$2"
fi
7z a "$target".7z "$target" $options9
;;
*)
echo "Bla!"
;;
esac

Save the file as PACK-UNPACK-CASE.sh or whatever else you prefer that will indicate it contains a case script. After that you can create an alias and the usage will be like this:

$ aliasname casename argument

Here's a visual example of how I use this case script:

$ pack 7z0 NFS_PAYBACK

This will create NFS_PAYBACK.7z in the same directory where the game directory is located. In my case NFS_PAYBACK is in /B/GAMES, so it will create /B/GAMES/NFS_PAYBACK.7z.

A case script can have even $3, $4, $5 or as many arguments as you want.

I suppose this could look harder than the regular scripts, especially at first use, but it has one advantage: you define the variables outside the case block and after that just place them on their relevant places using $ in front of them. This makes the script much easier to maintain and edit bc you only have to edit the variable, not every single line of the script.

The *) is there to tip you off, if you enter the wrong case name. You can replace the "Bla!" in the echo line with whatever you want. Personally, I prefer to list the available case names. The case name is 7z0.

And here's another example of how you can fit as many cases as you want in just one file. I have my reasons to dislike ZeroRPM, that's why I created the NVIDIA-CASE.sh:

#!/usr/bin/env bash
set -euo pipefail
case "$1" in
#FOR RTX 3070 Ti THE MINIMUM SPEED IS 45%, MAX - 70%. 75%+ NOT RECOMMENDED!
45|50|55|60|65|70)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=$1"
;;
low)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=50"
;;
med)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=60"
;;
high)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=1" sudo nvidia-settings -a "[fan:0]/GPUTargetFanSpeed=70"
;;
auto)
sudo nvidia-settings -a "[gpu:0]/GPUFanControlState=0"
;;
*)
echo "Cases: auto, 45, 50, 55, 60, 65, 70, low, med, high. Low, med, high = 50, 60, 70."
;;
esac

With NVIDIA-CASE.sh I have FULL control over the videocard's fan speed at my leisure. These are 9 different scripts all united into a single .sh file. I use this one like this (usually):

$ fans med

I'll keep an eye on this repository, so if you have any questions, just post an issue.

About

Explanation how to fit an unlimited number of scripts into one, called "cases"

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors