Latest commit

History

42 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Notice

This project (could be) really cool, but is no longer actively maintained. I (the author) stopped using it because I didn't want to add a kajillion command-completion scripts and/or translate bash shell completion functions to python. And I can't live without completion for very long!

However, if you're interested, let me know: If you want something added, or you find a bug, leave an issue. If you have a patch, do a pull request: I'll get to it when I get to it, which could be a day or a few months. If you'd like to take up maintenance yourself, that'd be great: let me know. Or, if a lot of people care, I'll start working on it again.

Repl Any

Use repla to convert any command into a shell. Think of it as a generic repl. Or an interactive xargs. Think less typing. Think awesomeness!

  • Do you use an awesome command that has lot's of subcommands, but no shell? (e.g. git, gpg) repla saves the day!
  • Do you frequently call a certain command again and again? (e.g. make) repla saves you typing!
  • Do you need to retype the same long, boring arguments to a command again and again, but with other options that vary? repla will slash away the repetition!

Miss your shell, and don't wanna go cold turkey? Precede your command with a bang and it gets passed to sh as-is: !rm -rf bonkers blue

And if you use screen or tmux, so much the better: Go ahead and dedicate a window for git, or make, or whatever: Then leave repla open and ready to go! (By the way, you should really be using tmux!)

repla was born of my annoyance with retyping git cmd all of the time. So the focus of it's development is to make git (or any command) less annoying. And it does.

How does it work?

Simple: When you enter a line, repla prepends the name of the currently wrapped command, and executes the resulting command line. Further, you can specify a list of prefix or postfix args that get added to the command every time.

Suddenly,

 bash$ git --work-tree=temp-tree log --stat topic_branch -- file1 file2 somedir
bash$ git --work-tree=temp-tree diff --cached ntopic_branch -- file1 file2 somedir
bash$ git --work-tree=temp-tree add --patch -- file1 file2 somedir

(211 chars)

becomes

 git: %set prefix='--work-tree=temp-tree'
git: %set postfix='topic_branch -- file1 file2 somedir'
git: log --stat
git: diff --cached
git: add --patch

(125 chars)

NOTE: git: is the prompt; you don't have to type that!

But there's more

You can simply and easily extend repla's vocabulary, by writing a short Python class defining custom builtin methods and sticking it on the Python path. It's as simple as writing:

fromrepla.commandimportCmdBaseclassAwesomeCommands(CmdBase):
defcmdHello(self, args):
self.show("Hello, world!")
defcmdFoo(self, args):
iflen(args) ==0:
self.show("Nyhh!")
eliflen(args) >1:
self.show("Bahh!")
else:
self.show("Foo bar.")

and then in repla:

 git: %import python.path.module
git: %hello
Hello, world!

See here for details.

Command Line

repla now sports command-line options, which was long overdue. Briefly:

repla [--set=OPTION=VALUE[,OPTION=VALUE]... [COMMAND [ARGS]]

You can set any option's value using the --set option. It takes a comma-separated list of OPTION=VALUE pairs, and is equivalent to specifying %set OPTION=VALUE ... on the command line. You can separate the flag from the OPTION=VALUE pairs either with an equals sign or a space.

As a shorthand for --set wrapped=COMMAND, you can give the command to wrap after all of repla's own options. Additionally, you can additional arguments after the COMMAND, which will be treated as prefix args.

Features

  • wrap any command: %set wrapped='/path/to/my/command'
  • automatically send prefix/postfix args to the wrapped command
  • Execute sh commands: !cmd args
  • Built-in commands: %cd, %pwd, etc.
  • Extensible! You can make your own built-ins with Python.
  • Set options (and command/args) from the command-line

TODOs

  • completion functions. Preferably without duplicating half of bash's source. (Suggestions?)
  • help builtin. What use are all those shiny builtins without documentation? (On the way)
  • allow custom builtins to execute other builtins or arbitrary command lines. (easy)

LICENSE

repla is licensed under the terms of the GNU General Public License, version 2. Please see LICENSE for details.

About

Turn any command into a shell. Think interactive xargs. Think awesomeness.

Resources

Stars

8 stars

Watchers

1 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

Latest commit

History

42 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Notice

This project (could be) really cool, but is no longer actively maintained. I (the author) stopped using it because I didn't want to add a kajillion command-completion scripts and/or translate bash shell completion functions to python. And I can't live without completion for very long!

However, if you're interested, let me know: If you want something added, or you find a bug, leave an issue. If you have a patch, do a pull request: I'll get to it when I get to it, which could be a day or a few months. If you'd like to take up maintenance yourself, that'd be great: let me know. Or, if a lot of people care, I'll start working on it again.

Repl Any

Use repla to convert any command into a shell. Think of it as a generic repl. Or an interactive xargs. Think less typing. Think awesomeness!

  • Do you use an awesome command that has lot's of subcommands, but no shell? (e.g. git, gpg) repla saves the day!
  • Do you frequently call a certain command again and again? (e.g. make) repla saves you typing!
  • Do you need to retype the same long, boring arguments to a command again and again, but with other options that vary? repla will slash away the repetition!

Miss your shell, and don't wanna go cold turkey? Precede your command with a bang and it gets passed to sh as-is: !rm -rf bonkers blue

And if you use screen or tmux, so much the better: Go ahead and dedicate a window for git, or make, or whatever: Then leave repla open and ready to go! (By the way, you should really be using tmux!)

repla was born of my annoyance with retyping git cmd all of the time. So the focus of it's development is to make git (or any command) less annoying. And it does.

How does it work?

Simple: When you enter a line, repla prepends the name of the currently wrapped command, and executes the resulting command line. Further, you can specify a list of prefix or postfix args that get added to the command every time.

Suddenly,

 bash$ git --work-tree=temp-tree log --stat topic_branch -- file1 file2 somedir
bash$ git --work-tree=temp-tree diff --cached ntopic_branch -- file1 file2 somedir
bash$ git --work-tree=temp-tree add --patch -- file1 file2 somedir

(211 chars)

becomes

 git: %set prefix='--work-tree=temp-tree'
git: %set postfix='topic_branch -- file1 file2 somedir'
git: log --stat
git: diff --cached
git: add --patch

(125 chars)

NOTE: git: is the prompt; you don't have to type that!

But there's more

You can simply and easily extend repla's vocabulary, by writing a short Python class defining custom builtin methods and sticking it on the Python path. It's as simple as writing:

fromrepla.commandimportCmdBaseclassAwesomeCommands(CmdBase):
defcmdHello(self, args):
self.show("Hello, world!")
defcmdFoo(self, args):
iflen(args) ==0:
self.show("Nyhh!")
eliflen(args) >1:
self.show("Bahh!")
else:
self.show("Foo bar.")

and then in repla:

 git: %import python.path.module
git: %hello
Hello, world!

See here for details.

Command Line

repla now sports command-line options, which was long overdue. Briefly:

repla [--set=OPTION=VALUE[,OPTION=VALUE]... [COMMAND [ARGS]]

You can set any option's value using the --set option. It takes a comma-separated list of OPTION=VALUE pairs, and is equivalent to specifying %set OPTION=VALUE ... on the command line. You can separate the flag from the OPTION=VALUE pairs either with an equals sign or a space.

As a shorthand for --set wrapped=COMMAND, you can give the command to wrap after all of repla's own options. Additionally, you can additional arguments after the COMMAND, which will be treated as prefix args.

Features

  • wrap any command: %set wrapped='/path/to/my/command'
  • automatically send prefix/postfix args to the wrapped command
  • Execute sh commands: !cmd args
  • Built-in commands: %cd, %pwd, etc.
  • Extensible! You can make your own built-ins with Python.
  • Set options (and command/args) from the command-line

TODOs

  • completion functions. Preferably without duplicating half of bash's source. (Suggestions?)
  • help builtin. What use are all those shiny builtins without documentation? (On the way)
  • allow custom builtins to execute other builtins or arbitrary command lines. (easy)

LICENSE

repla is licensed under the terms of the GNU General Public License, version 2. Please see LICENSE for details.

About

Turn any command into a shell. Think interactive xargs. Think awesomeness.

Resources

Stars

8 stars

Watchers

1 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

Latest commit

History

42 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Notice

This project (could be) really cool, but is no longer actively maintained. I (the author) stopped using it because I didn't want to add a kajillion command-completion scripts and/or translate bash shell completion functions to python. And I can't live without completion for very long!

However, if you're interested, let me know: If you want something added, or you find a bug, leave an issue. If you have a patch, do a pull request: I'll get to it when I get to it, which could be a day or a few months. If you'd like to take up maintenance yourself, that'd be great: let me know. Or, if a lot of people care, I'll start working on it again.

Repl Any

Use repla to convert any command into a shell. Think of it as a generic repl. Or an interactive xargs. Think less typing. Think awesomeness!

  • Do you use an awesome command that has lot's of subcommands, but no shell? (e.g. git, gpg) repla saves the day!
  • Do you frequently call a certain command again and again? (e.g. make) repla saves you typing!
  • Do you need to retype the same long, boring arguments to a command again and again, but with other options that vary? repla will slash away the repetition!

Miss your shell, and don't wanna go cold turkey? Precede your command with a bang and it gets passed to sh as-is: !rm -rf bonkers blue

And if you use screen or tmux, so much the better: Go ahead and dedicate a window for git, or make, or whatever: Then leave repla open and ready to go! (By the way, you should really be using tmux!)

repla was born of my annoyance with retyping git cmd all of the time. So the focus of it's development is to make git (or any command) less annoying. And it does.

How does it work?

Simple: When you enter a line, repla prepends the name of the currently wrapped command, and executes the resulting command line. Further, you can specify a list of prefix or postfix args that get added to the command every time.

Suddenly,

 bash$ git --work-tree=temp-tree log --stat topic_branch -- file1 file2 somedir
bash$ git --work-tree=temp-tree diff --cached ntopic_branch -- file1 file2 somedir
bash$ git --work-tree=temp-tree add --patch -- file1 file2 somedir

(211 chars)

becomes

 git: %set prefix='--work-tree=temp-tree'
git: %set postfix='topic_branch -- file1 file2 somedir'
git: log --stat
git: diff --cached
git: add --patch

(125 chars)

NOTE: git: is the prompt; you don't have to type that!

But there's more

You can simply and easily extend repla's vocabulary, by writing a short Python class defining custom builtin methods and sticking it on the Python path. It's as simple as writing:

fromrepla.commandimportCmdBaseclassAwesomeCommands(CmdBase):
defcmdHello(self, args):
self.show("Hello, world!")
defcmdFoo(self, args):
iflen(args) ==0:
self.show("Nyhh!")
eliflen(args) >1:
self.show("Bahh!")
else:
self.show("Foo bar.")

and then in repla:

 git: %import python.path.module
git: %hello
Hello, world!

See here for details.

Command Line

repla now sports command-line options, which was long overdue. Briefly:

repla [--set=OPTION=VALUE[,OPTION=VALUE]... [COMMAND [ARGS]]

You can set any option's value using the --set option. It takes a comma-separated list of OPTION=VALUE pairs, and is equivalent to specifying %set OPTION=VALUE ... on the command line. You can separate the flag from the OPTION=VALUE pairs either with an equals sign or a space.

As a shorthand for --set wrapped=COMMAND, you can give the command to wrap after all of repla's own options. Additionally, you can additional arguments after the COMMAND, which will be treated as prefix args.

Features

  • wrap any command: %set wrapped='/path/to/my/command'
  • automatically send prefix/postfix args to the wrapped command
  • Execute sh commands: !cmd args
  • Built-in commands: %cd, %pwd, etc.
  • Extensible! You can make your own built-ins with Python.
  • Set options (and command/args) from the command-line

TODOs

  • completion functions. Preferably without duplicating half of bash's source. (Suggestions?)
  • help builtin. What use are all those shiny builtins without documentation? (On the way)
  • allow custom builtins to execute other builtins or arbitrary command lines. (easy)

LICENSE

repla is licensed under the terms of the GNU General Public License, version 2. Please see LICENSE for details.

About

Turn any command into a shell. Think interactive xargs. Think awesomeness.

Resources

Stars

8 stars

Watchers

1 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

Latest commit

History

42 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Notice

This project (could be) really cool, but is no longer actively maintained. I (the author) stopped using it because I didn't want to add a kajillion command-completion scripts and/or translate bash shell completion functions to python. And I can't live without completion for very long!

However, if you're interested, let me know: If you want something added, or you find a bug, leave an issue. If you have a patch, do a pull request: I'll get to it when I get to it, which could be a day or a few months. If you'd like to take up maintenance yourself, that'd be great: let me know. Or, if a lot of people care, I'll start working on it again.

Repl Any

Use repla to convert any command into a shell. Think of it as a generic repl. Or an interactive xargs. Think less typing. Think awesomeness!

  • Do you use an awesome command that has lot's of subcommands, but no shell? (e.g. git, gpg) repla saves the day!
  • Do you frequently call a certain command again and again? (e.g. make) repla saves you typing!
  • Do you need to retype the same long, boring arguments to a command again and again, but with other options that vary? repla will slash away the repetition!

Miss your shell, and don't wanna go cold turkey? Precede your command with a bang and it gets passed to sh as-is: !rm -rf bonkers blue

And if you use screen or tmux, so much the better: Go ahead and dedicate a window for git, or make, or whatever: Then leave repla open and ready to go! (By the way, you should really be using tmux!)

repla was born of my annoyance with retyping git cmd all of the time. So the focus of it's development is to make git (or any command) less annoying. And it does.

How does it work?

Simple: When you enter a line, repla prepends the name of the currently wrapped command, and executes the resulting command line. Further, you can specify a list of prefix or postfix args that get added to the command every time.

Suddenly,

 bash$ git --work-tree=temp-tree log --stat topic_branch -- file1 file2 somedir
bash$ git --work-tree=temp-tree diff --cached ntopic_branch -- file1 file2 somedir
bash$ git --work-tree=temp-tree add --patch -- file1 file2 somedir

(211 chars)

becomes

 git: %set prefix='--work-tree=temp-tree'
git: %set postfix='topic_branch -- file1 file2 somedir'
git: log --stat
git: diff --cached
git: add --patch

(125 chars)

NOTE: git: is the prompt; you don't have to type that!

But there's more

You can simply and easily extend repla's vocabulary, by writing a short Python class defining custom builtin methods and sticking it on the Python path. It's as simple as writing:

fromrepla.commandimportCmdBaseclassAwesomeCommands(CmdBase):
defcmdHello(self, args):
self.show("Hello, world!")
defcmdFoo(self, args):
iflen(args) ==0:
self.show("Nyhh!")
eliflen(args) >1:
self.show("Bahh!")
else:
self.show("Foo bar.")

and then in repla:

 git: %import python.path.module
git: %hello
Hello, world!

See here for details.

Command Line

repla now sports command-line options, which was long overdue. Briefly:

repla [--set=OPTION=VALUE[,OPTION=VALUE]... [COMMAND [ARGS]]

You can set any option's value using the --set option. It takes a comma-separated list of OPTION=VALUE pairs, and is equivalent to specifying %set OPTION=VALUE ... on the command line. You can separate the flag from the OPTION=VALUE pairs either with an equals sign or a space.

As a shorthand for --set wrapped=COMMAND, you can give the command to wrap after all of repla's own options. Additionally, you can additional arguments after the COMMAND, which will be treated as prefix args.

Features

  • wrap any command: %set wrapped='/path/to/my/command'
  • automatically send prefix/postfix args to the wrapped command
  • Execute sh commands: !cmd args
  • Built-in commands: %cd, %pwd, etc.
  • Extensible! You can make your own built-ins with Python.
  • Set options (and command/args) from the command-line

TODOs

  • completion functions. Preferably without duplicating half of bash's source. (Suggestions?)
  • help builtin. What use are all those shiny builtins without documentation? (On the way)
  • allow custom builtins to execute other builtins or arbitrary command lines. (easy)

LICENSE

repla is licensed under the terms of the GNU General Public License, version 2. Please see LICENSE for details.

About

Turn any command into a shell. Think interactive xargs. Think awesomeness.

Resources

Stars

8 stars

Watchers

1 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

Latest commit

History

42 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Notice

This project (could be) really cool, but is no longer actively maintained. I (the author) stopped using it because I didn't want to add a kajillion command-completion scripts and/or translate bash shell completion functions to python. And I can't live without completion for very long!

However, if you're interested, let me know: If you want something added, or you find a bug, leave an issue. If you have a patch, do a pull request: I'll get to it when I get to it, which could be a day or a few months. If you'd like to take up maintenance yourself, that'd be great: let me know. Or, if a lot of people care, I'll start working on it again.

Repl Any

Use repla to convert any command into a shell. Think of it as a generic repl. Or an interactive xargs. Think less typing. Think awesomeness!

  • Do you use an awesome command that has lot's of subcommands, but no shell? (e.g. git, gpg) repla saves the day!
  • Do you frequently call a certain command again and again? (e.g. make) repla saves you typing!
  • Do you need to retype the same long, boring arguments to a command again and again, but with other options that vary? repla will slash away the repetition!

Miss your shell, and don't wanna go cold turkey? Precede your command with a bang and it gets passed to sh as-is: !rm -rf bonkers blue

And if you use screen or tmux, so much the better: Go ahead and dedicate a window for git, or make, or whatever: Then leave repla open and ready to go! (By the way, you should really be using tmux!)

repla was born of my annoyance with retyping git cmd all of the time. So the focus of it's development is to make git (or any command) less annoying. And it does.

How does it work?

Simple: When you enter a line, repla prepends the name of the currently wrapped command, and executes the resulting command line. Further, you can specify a list of prefix or postfix args that get added to the command every time.

Suddenly,

 bash$ git --work-tree=temp-tree log --stat topic_branch -- file1 file2 somedir
bash$ git --work-tree=temp-tree diff --cached ntopic_branch -- file1 file2 somedir
bash$ git --work-tree=temp-tree add --patch -- file1 file2 somedir

(211 chars)

becomes

 git: %set prefix='--work-tree=temp-tree'
git: %set postfix='topic_branch -- file1 file2 somedir'
git: log --stat
git: diff --cached
git: add --patch

(125 chars)

NOTE: git: is the prompt; you don't have to type that!

But there's more

You can simply and easily extend repla's vocabulary, by writing a short Python class defining custom builtin methods and sticking it on the Python path. It's as simple as writing:

fromrepla.commandimportCmdBaseclassAwesomeCommands(CmdBase):
defcmdHello(self, args):
self.show("Hello, world!")
defcmdFoo(self, args):
iflen(args) ==0:
self.show("Nyhh!")
eliflen(args) >1:
self.show("Bahh!")
else:
self.show("Foo bar.")

and then in repla:

 git: %import python.path.module
git: %hello
Hello, world!

See here for details.

Command Line

repla now sports command-line options, which was long overdue. Briefly:

repla [--set=OPTION=VALUE[,OPTION=VALUE]... [COMMAND [ARGS]]

You can set any option's value using the --set option. It takes a comma-separated list of OPTION=VALUE pairs, and is equivalent to specifying %set OPTION=VALUE ... on the command line. You can separate the flag from the OPTION=VALUE pairs either with an equals sign or a space.

As a shorthand for --set wrapped=COMMAND, you can give the command to wrap after all of repla's own options. Additionally, you can additional arguments after the COMMAND, which will be treated as prefix args.

Features

  • wrap any command: %set wrapped='/path/to/my/command'
  • automatically send prefix/postfix args to the wrapped command
  • Execute sh commands: !cmd args
  • Built-in commands: %cd, %pwd, etc.
  • Extensible! You can make your own built-ins with Python.
  • Set options (and command/args) from the command-line

TODOs

  • completion functions. Preferably without duplicating half of bash's source. (Suggestions?)
  • help builtin. What use are all those shiny builtins without documentation? (On the way)
  • allow custom builtins to execute other builtins or arbitrary command lines. (easy)

LICENSE

repla is licensed under the terms of the GNU General Public License, version 2. Please see LICENSE for details.

About

Turn any command into a shell. Think interactive xargs. Think awesomeness.

Resources

Stars

8 stars

Watchers

1 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

Latest commit

History

42 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Notice

This project (could be) really cool, but is no longer actively maintained. I (the author) stopped using it because I didn't want to add a kajillion command-completion scripts and/or translate bash shell completion functions to python. And I can't live without completion for very long!

However, if you're interested, let me know: If you want something added, or you find a bug, leave an issue. If you have a patch, do a pull request: I'll get to it when I get to it, which could be a day or a few months. If you'd like to take up maintenance yourself, that'd be great: let me know. Or, if a lot of people care, I'll start working on it again.

Repl Any

Use repla to convert any command into a shell. Think of it as a generic repl. Or an interactive xargs. Think less typing. Think awesomeness!

  • Do you use an awesome command that has lot's of subcommands, but no shell? (e.g. git, gpg) repla saves the day!
  • Do you frequently call a certain command again and again? (e.g. make) repla saves you typing!
  • Do you need to retype the same long, boring arguments to a command again and again, but with other options that vary? repla will slash away the repetition!

Miss your shell, and don't wanna go cold turkey? Precede your command with a bang and it gets passed to sh as-is: !rm -rf bonkers blue

And if you use screen or tmux, so much the better: Go ahead and dedicate a window for git, or make, or whatever: Then leave repla open and ready to go! (By the way, you should really be using tmux!)

repla was born of my annoyance with retyping git cmd all of the time. So the focus of it's development is to make git (or any command) less annoying. And it does.

How does it work?

Simple: When you enter a line, repla prepends the name of the currently wrapped command, and executes the resulting command line. Further, you can specify a list of prefix or postfix args that get added to the command every time.

Suddenly,

 bash$ git --work-tree=temp-tree log --stat topic_branch -- file1 file2 somedir
bash$ git --work-tree=temp-tree diff --cached ntopic_branch -- file1 file2 somedir
bash$ git --work-tree=temp-tree add --patch -- file1 file2 somedir

(211 chars)

becomes

 git: %set prefix='--work-tree=temp-tree'
git: %set postfix='topic_branch -- file1 file2 somedir'
git: log --stat
git: diff --cached
git: add --patch

(125 chars)

NOTE: git: is the prompt; you don't have to type that!

But there's more

You can simply and easily extend repla's vocabulary, by writing a short Python class defining custom builtin methods and sticking it on the Python path. It's as simple as writing:

fromrepla.commandimportCmdBaseclassAwesomeCommands(CmdBase):
defcmdHello(self, args):
self.show("Hello, world!")
defcmdFoo(self, args):
iflen(args) ==0:
self.show("Nyhh!")
eliflen(args) >1:
self.show("Bahh!")
else:
self.show("Foo bar.")

and then in repla:

 git: %import python.path.module
git: %hello
Hello, world!

See here for details.

Command Line

repla now sports command-line options, which was long overdue. Briefly:

repla [--set=OPTION=VALUE[,OPTION=VALUE]... [COMMAND [ARGS]]

You can set any option's value using the --set option. It takes a comma-separated list of OPTION=VALUE pairs, and is equivalent to specifying %set OPTION=VALUE ... on the command line. You can separate the flag from the OPTION=VALUE pairs either with an equals sign or a space.

As a shorthand for --set wrapped=COMMAND, you can give the command to wrap after all of repla's own options. Additionally, you can additional arguments after the COMMAND, which will be treated as prefix args.

Features

  • wrap any command: %set wrapped='/path/to/my/command'
  • automatically send prefix/postfix args to the wrapped command
  • Execute sh commands: !cmd args
  • Built-in commands: %cd, %pwd, etc.
  • Extensible! You can make your own built-ins with Python.
  • Set options (and command/args) from the command-line

TODOs

  • completion functions. Preferably without duplicating half of bash's source. (Suggestions?)
  • help builtin. What use are all those shiny builtins without documentation? (On the way)
  • allow custom builtins to execute other builtins or arbitrary command lines. (easy)

LICENSE

repla is licensed under the terms of the GNU General Public License, version 2. Please see LICENSE for details.

About

Turn any command into a shell. Think interactive xargs. Think awesomeness.

Resources

Stars

8 stars

Watchers

1 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

Latest commit

History

42 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Notice

This project (could be) really cool, but is no longer actively maintained. I (the author) stopped using it because I didn't want to add a kajillion command-completion scripts and/or translate bash shell completion functions to python. And I can't live without completion for very long!

However, if you're interested, let me know: If you want something added, or you find a bug, leave an issue. If you have a patch, do a pull request: I'll get to it when I get to it, which could be a day or a few months. If you'd like to take up maintenance yourself, that'd be great: let me know. Or, if a lot of people care, I'll start working on it again.

Repl Any

Use repla to convert any command into a shell. Think of it as a generic repl. Or an interactive xargs. Think less typing. Think awesomeness!

  • Do you use an awesome command that has lot's of subcommands, but no shell? (e.g. git, gpg) repla saves the day!
  • Do you frequently call a certain command again and again? (e.g. make) repla saves you typing!
  • Do you need to retype the same long, boring arguments to a command again and again, but with other options that vary? repla will slash away the repetition!

Miss your shell, and don't wanna go cold turkey? Precede your command with a bang and it gets passed to sh as-is: !rm -rf bonkers blue

And if you use screen or tmux, so much the better: Go ahead and dedicate a window for git, or make, or whatever: Then leave repla open and ready to go! (By the way, you should really be using tmux!)

repla was born of my annoyance with retyping git cmd all of the time. So the focus of it's development is to make git (or any command) less annoying. And it does.

How does it work?

Simple: When you enter a line, repla prepends the name of the currently wrapped command, and executes the resulting command line. Further, you can specify a list of prefix or postfix args that get added to the command every time.

Suddenly,

 bash$ git --work-tree=temp-tree log --stat topic_branch -- file1 file2 somedir
bash$ git --work-tree=temp-tree diff --cached ntopic_branch -- file1 file2 somedir
bash$ git --work-tree=temp-tree add --patch -- file1 file2 somedir

(211 chars)

becomes

 git: %set prefix='--work-tree=temp-tree'
git: %set postfix='topic_branch -- file1 file2 somedir'
git: log --stat
git: diff --cached
git: add --patch

(125 chars)

NOTE: git: is the prompt; you don't have to type that!

But there's more

You can simply and easily extend repla's vocabulary, by writing a short Python class defining custom builtin methods and sticking it on the Python path. It's as simple as writing:

fromrepla.commandimportCmdBaseclassAwesomeCommands(CmdBase):
defcmdHello(self, args):
self.show("Hello, world!")
defcmdFoo(self, args):
iflen(args) ==0:
self.show("Nyhh!")
eliflen(args) >1:
self.show("Bahh!")
else:
self.show("Foo bar.")

and then in repla:

 git: %import python.path.module
git: %hello
Hello, world!

See here for details.

Command Line

repla now sports command-line options, which was long overdue. Briefly:

repla [--set=OPTION=VALUE[,OPTION=VALUE]... [COMMAND [ARGS]]

You can set any option's value using the --set option. It takes a comma-separated list of OPTION=VALUE pairs, and is equivalent to specifying %set OPTION=VALUE ... on the command line. You can separate the flag from the OPTION=VALUE pairs either with an equals sign or a space.

As a shorthand for --set wrapped=COMMAND, you can give the command to wrap after all of repla's own options. Additionally, you can additional arguments after the COMMAND, which will be treated as prefix args.

Features

  • wrap any command: %set wrapped='/path/to/my/command'
  • automatically send prefix/postfix args to the wrapped command
  • Execute sh commands: !cmd args
  • Built-in commands: %cd, %pwd, etc.
  • Extensible! You can make your own built-ins with Python.
  • Set options (and command/args) from the command-line

TODOs

  • completion functions. Preferably without duplicating half of bash's source. (Suggestions?)
  • help builtin. What use are all those shiny builtins without documentation? (On the way)
  • allow custom builtins to execute other builtins or arbitrary command lines. (easy)

LICENSE

repla is licensed under the terms of the GNU General Public License, version 2. Please see LICENSE for details.

About

Turn any command into a shell. Think interactive xargs. Think awesomeness.

Resources

Stars

8 stars

Watchers

1 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

Latest commit

History

42 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

Notice

This project (could be) really cool, but is no longer actively maintained. I (the author) stopped using it because I didn't want to add a kajillion command-completion scripts and/or translate bash shell completion functions to python. And I can't live without completion for very long!

However, if you're interested, let me know: If you want something added, or you find a bug, leave an issue. If you have a patch, do a pull request: I'll get to it when I get to it, which could be a day or a few months. If you'd like to take up maintenance yourself, that'd be great: let me know. Or, if a lot of people care, I'll start working on it again.

Repl Any

Use repla to convert any command into a shell. Think of it as a generic repl. Or an interactive xargs. Think less typing. Think awesomeness!

  • Do you use an awesome command that has lot's of subcommands, but no shell? (e.g. git, gpg) repla saves the day!
  • Do you frequently call a certain command again and again? (e.g. make) repla saves you typing!
  • Do you need to retype the same long, boring arguments to a command again and again, but with other options that vary? repla will slash away the repetition!

Miss your shell, and don't wanna go cold turkey? Precede your command with a bang and it gets passed to sh as-is: !rm -rf bonkers blue

And if you use screen or tmux, so much the better: Go ahead and dedicate a window for git, or make, or whatever: Then leave repla open and ready to go! (By the way, you should really be using tmux!)

repla was born of my annoyance with retyping git cmd all of the time. So the focus of it's development is to make git (or any command) less annoying. And it does.

How does it work?

Simple: When you enter a line, repla prepends the name of the currently wrapped command, and executes the resulting command line. Further, you can specify a list of prefix or postfix args that get added to the command every time.

Suddenly,

 bash$ git --work-tree=temp-tree log --stat topic_branch -- file1 file2 somedir
bash$ git --work-tree=temp-tree diff --cached ntopic_branch -- file1 file2 somedir
bash$ git --work-tree=temp-tree add --patch -- file1 file2 somedir

(211 chars)

becomes

 git: %set prefix='--work-tree=temp-tree'
git: %set postfix='topic_branch -- file1 file2 somedir'
git: log --stat
git: diff --cached
git: add --patch

(125 chars)

NOTE: git: is the prompt; you don't have to type that!

But there's more

You can simply and easily extend repla's vocabulary, by writing a short Python class defining custom builtin methods and sticking it on the Python path. It's as simple as writing:

fromrepla.commandimportCmdBaseclassAwesomeCommands(CmdBase):
defcmdHello(self, args):
self.show("Hello, world!")
defcmdFoo(self, args):
iflen(args) ==0:
self.show("Nyhh!")
eliflen(args) >1:
self.show("Bahh!")
else:
self.show("Foo bar.")

and then in repla:

 git: %import python.path.module
git: %hello
Hello, world!

See here for details.

Command Line

repla now sports command-line options, which was long overdue. Briefly:

repla [--set=OPTION=VALUE[,OPTION=VALUE]... [COMMAND [ARGS]]

You can set any option's value using the --set option. It takes a comma-separated list of OPTION=VALUE pairs, and is equivalent to specifying %set OPTION=VALUE ... on the command line. You can separate the flag from the OPTION=VALUE pairs either with an equals sign or a space.

As a shorthand for --set wrapped=COMMAND, you can give the command to wrap after all of repla's own options. Additionally, you can additional arguments after the COMMAND, which will be treated as prefix args.

Features

  • wrap any command: %set wrapped='/path/to/my/command'
  • automatically send prefix/postfix args to the wrapped command
  • Execute sh commands: !cmd args
  • Built-in commands: %cd, %pwd, etc.
  • Extensible! You can make your own built-ins with Python.
  • Set options (and command/args) from the command-line

TODOs

  • completion functions. Preferably without duplicating half of bash's source. (Suggestions?)
  • help builtin. What use are all those shiny builtins without documentation? (On the way)
  • allow custom builtins to execute other builtins or arbitrary command lines. (easy)

LICENSE

repla is licensed under the terms of the GNU General Public License, version 2. Please see LICENSE for details.

About

Turn any command into a shell. Think interactive xargs. Think awesomeness.

Resources

Stars

8 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages