Repository files navigation

ll - a more informative ls, based on k

CI

Description

ll is an alternative to k, which was created to make directory listings more informative and readable, using colour to add visual weight to important information in the listing.

Motivation

k only works with zsh, and I've found that it can occasionally be a little slow when working with large directories or with large git repositories. I was looking for a project which would be a good match to learn/use nim, and this seemed like a great opportunity to make something a little more general-purpose that could be used without the zsh dependency.

Features

Full file listing

Calling ll provides a full file listing for a directory, similar to calling ls -l.

File weight colours

Files sizes are graded from green for small (< 1k), to red for huge (> 1mb).

Human readable files sizes can be shown by using the -h or --human flag.

"Rotting" dates

Dates fade with age, so that recently changed files/directories can be easily identified.

Broken Symlinks

Broken symlinks are identified by a ~> (tilde-arrow) leading symbol and differing colors.

Git integration

ll provides easy-to-understand information about the git status of your files/directories.

Git status on entire repos

When listing a directory which contains git repos, ll displays the active state of those repos:

Image demonstrating repository listing

Git status on files within a working tree

When listing files/directories within a working tree, ll displays the active state of each file, and the overall state for directories:

Image demonstrating file listing

Speed

ll improves on k's rendering speeds. Currently ll is comparable to ls display times when using the --no-vcs flag. Listing git repositories and trees take a little longer, but even with large listings with many git-tracked entries ll is still sub-second.

Installation

The latest binary distribution is avilable here.

It is also possible to build and install using the following instructions:

Requirements

  • Nim, minimum v1.2.*
  • make

Steps

Firstly install Nim. I personally use asdf to manage Nim versions on my machine. With asdf installed, this is as simple as calling asdf install nim latest.

Once Nim is installed, clone this repository. From within the cloned directory, call make install which will build ll into the working directory and will then opy the resulting ll binary to /usr/local/bin.

Usage

$ ll

That's it. For more options, pass -? or --help.

Status

  • Full file listing
  • File weight colours
  • "Rotting" dates
  • Display symlink status
  • Git status on entire repos
  • Git status on files within a working tree
  • Sort output by size
  • Sort output by modified time
  • Sort output in reversed order
  • Options for filtering directories
  • Remove dependency on PCRE (using the regex package)
  • Installable via Homebrew
  • Support light themes
  • Support globs

Fixes over k

  • k has an odd behaviour; given pwd is a git-tracked directory, if you k somedir where somedir contains git-tracked directories but isn't itself tracked, k reports as though it is working inside a work-tree. ll reports this as one would expect, as though pwd is somedir. UPDATE: This has now been fixed.

Future plans

According to the k source, there are future plans to colorise file permissions. If this happens, I plan to bring those changes over. If any other enhancements are added, I hope to port those also.

I'd like to display some additional information in the summary line of the listing; I'm currently reviewing what would be most useful.

Contributing

Contributions and pull-requests are always welcome, as is constructive feedback around code structure, hints, tips, etc.

If you would like to request a feature or report a bug, please add a new issue here and we'll do our best to address them. Please note that this is not a funded project and fixes will be addressed on a best-effort basis.

To contribute directly:

  1. Fork it (https://github.com/OldhamMade/ll/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new pull request

Liability

We take no responsibility for the use of this tool, or external instances provided by third parties. We strongly recommend you abide by the valid official regulations in your country. Furthermore, we refuse liability for any inappropriate or malicious use of this tool. This tool is provided to you in the spirit of free, open software.

You may view the LICENSE in which this software is provided to you here.

IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

ll - a more informative `ls`, based on `k`

Topics

Resources

Stars

23 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

ll - a more informative ls, based on k

CI

Description

ll is an alternative to k, which was created to make directory listings more informative and readable, using colour to add visual weight to important information in the listing.

Motivation

k only works with zsh, and I've found that it can occasionally be a little slow when working with large directories or with large git repositories. I was looking for a project which would be a good match to learn/use nim, and this seemed like a great opportunity to make something a little more general-purpose that could be used without the zsh dependency.

Features

Full file listing

Calling ll provides a full file listing for a directory, similar to calling ls -l.

File weight colours

Files sizes are graded from green for small (< 1k), to red for huge (> 1mb).

Human readable files sizes can be shown by using the -h or --human flag.

"Rotting" dates

Dates fade with age, so that recently changed files/directories can be easily identified.

Broken Symlinks

Broken symlinks are identified by a ~> (tilde-arrow) leading symbol and differing colors.

Git integration

ll provides easy-to-understand information about the git status of your files/directories.

Git status on entire repos

When listing a directory which contains git repos, ll displays the active state of those repos:

Image demonstrating repository listing

Git status on files within a working tree

When listing files/directories within a working tree, ll displays the active state of each file, and the overall state for directories:

Image demonstrating file listing

Speed

ll improves on k's rendering speeds. Currently ll is comparable to ls display times when using the --no-vcs flag. Listing git repositories and trees take a little longer, but even with large listings with many git-tracked entries ll is still sub-second.

Installation

The latest binary distribution is avilable here.

It is also possible to build and install using the following instructions:

Requirements

  • Nim, minimum v1.2.*
  • make

Steps

Firstly install Nim. I personally use asdf to manage Nim versions on my machine. With asdf installed, this is as simple as calling asdf install nim latest.

Once Nim is installed, clone this repository. From within the cloned directory, call make install which will build ll into the working directory and will then opy the resulting ll binary to /usr/local/bin.

Usage

$ ll

That's it. For more options, pass -? or --help.

Status

  • Full file listing
  • File weight colours
  • "Rotting" dates
  • Display symlink status
  • Git status on entire repos
  • Git status on files within a working tree
  • Sort output by size
  • Sort output by modified time
  • Sort output in reversed order
  • Options for filtering directories
  • Remove dependency on PCRE (using the regex package)
  • Installable via Homebrew
  • Support light themes
  • Support globs

Fixes over k

  • k has an odd behaviour; given pwd is a git-tracked directory, if you k somedir where somedir contains git-tracked directories but isn't itself tracked, k reports as though it is working inside a work-tree. ll reports this as one would expect, as though pwd is somedir. UPDATE: This has now been fixed.

Future plans

According to the k source, there are future plans to colorise file permissions. If this happens, I plan to bring those changes over. If any other enhancements are added, I hope to port those also.

I'd like to display some additional information in the summary line of the listing; I'm currently reviewing what would be most useful.

Contributing

Contributions and pull-requests are always welcome, as is constructive feedback around code structure, hints, tips, etc.

If you would like to request a feature or report a bug, please add a new issue here and we'll do our best to address them. Please note that this is not a funded project and fixes will be addressed on a best-effort basis.

To contribute directly:

  1. Fork it (https://github.com/OldhamMade/ll/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new pull request

Liability

We take no responsibility for the use of this tool, or external instances provided by third parties. We strongly recommend you abide by the valid official regulations in your country. Furthermore, we refuse liability for any inappropriate or malicious use of this tool. This tool is provided to you in the spirit of free, open software.

You may view the LICENSE in which this software is provided to you here.

IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

ll - a more informative `ls`, based on `k`

Topics

Resources

Stars

23 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

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

Repository files navigation

ll - a more informative ls, based on k

CI

Description

ll is an alternative to k, which was created to make directory listings more informative and readable, using colour to add visual weight to important information in the listing.

Motivation

k only works with zsh, and I've found that it can occasionally be a little slow when working with large directories or with large git repositories. I was looking for a project which would be a good match to learn/use nim, and this seemed like a great opportunity to make something a little more general-purpose that could be used without the zsh dependency.

Features

Full file listing

Calling ll provides a full file listing for a directory, similar to calling ls -l.

File weight colours

Files sizes are graded from green for small (< 1k), to red for huge (> 1mb).

Human readable files sizes can be shown by using the -h or --human flag.

"Rotting" dates

Dates fade with age, so that recently changed files/directories can be easily identified.

Broken Symlinks

Broken symlinks are identified by a ~> (tilde-arrow) leading symbol and differing colors.

Git integration

ll provides easy-to-understand information about the git status of your files/directories.

Git status on entire repos

When listing a directory which contains git repos, ll displays the active state of those repos:

Image demonstrating repository listing

Git status on files within a working tree

When listing files/directories within a working tree, ll displays the active state of each file, and the overall state for directories:

Image demonstrating file listing

Speed

ll improves on k's rendering speeds. Currently ll is comparable to ls display times when using the --no-vcs flag. Listing git repositories and trees take a little longer, but even with large listings with many git-tracked entries ll is still sub-second.

Installation

The latest binary distribution is avilable here.

It is also possible to build and install using the following instructions:

Requirements

  • Nim, minimum v1.2.*
  • make

Steps

Firstly install Nim. I personally use asdf to manage Nim versions on my machine. With asdf installed, this is as simple as calling asdf install nim latest.

Once Nim is installed, clone this repository. From within the cloned directory, call make install which will build ll into the working directory and will then opy the resulting ll binary to /usr/local/bin.

Usage

$ ll

That's it. For more options, pass -? or --help.

Status

  • Full file listing
  • File weight colours
  • "Rotting" dates
  • Display symlink status
  • Git status on entire repos
  • Git status on files within a working tree
  • Sort output by size
  • Sort output by modified time
  • Sort output in reversed order
  • Options for filtering directories
  • Remove dependency on PCRE (using the regex package)
  • Installable via Homebrew
  • Support light themes
  • Support globs

Fixes over k

  • k has an odd behaviour; given pwd is a git-tracked directory, if you k somedir where somedir contains git-tracked directories but isn't itself tracked, k reports as though it is working inside a work-tree. ll reports this as one would expect, as though pwd is somedir. UPDATE: This has now been fixed.

Future plans

According to the k source, there are future plans to colorise file permissions. If this happens, I plan to bring those changes over. If any other enhancements are added, I hope to port those also.

I'd like to display some additional information in the summary line of the listing; I'm currently reviewing what would be most useful.

Contributing

Contributions and pull-requests are always welcome, as is constructive feedback around code structure, hints, tips, etc.

If you would like to request a feature or report a bug, please add a new issue here and we'll do our best to address them. Please note that this is not a funded project and fixes will be addressed on a best-effort basis.

To contribute directly:

  1. Fork it (https://github.com/OldhamMade/ll/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new pull request

Liability

We take no responsibility for the use of this tool, or external instances provided by third parties. We strongly recommend you abide by the valid official regulations in your country. Furthermore, we refuse liability for any inappropriate or malicious use of this tool. This tool is provided to you in the spirit of free, open software.

You may view the LICENSE in which this software is provided to you here.

IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

ll - a more informative `ls`, based on `k`

Topics

Resources

Stars

23 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

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

Repository files navigation

ll - a more informative ls, based on k

CI

Description

ll is an alternative to k, which was created to make directory listings more informative and readable, using colour to add visual weight to important information in the listing.

Motivation

k only works with zsh, and I've found that it can occasionally be a little slow when working with large directories or with large git repositories. I was looking for a project which would be a good match to learn/use nim, and this seemed like a great opportunity to make something a little more general-purpose that could be used without the zsh dependency.

Features

Full file listing

Calling ll provides a full file listing for a directory, similar to calling ls -l.

File weight colours

Files sizes are graded from green for small (< 1k), to red for huge (> 1mb).

Human readable files sizes can be shown by using the -h or --human flag.

"Rotting" dates

Dates fade with age, so that recently changed files/directories can be easily identified.

Broken Symlinks

Broken symlinks are identified by a ~> (tilde-arrow) leading symbol and differing colors.

Git integration

ll provides easy-to-understand information about the git status of your files/directories.

Git status on entire repos

When listing a directory which contains git repos, ll displays the active state of those repos:

Image demonstrating repository listing

Git status on files within a working tree

When listing files/directories within a working tree, ll displays the active state of each file, and the overall state for directories:

Image demonstrating file listing

Speed

ll improves on k's rendering speeds. Currently ll is comparable to ls display times when using the --no-vcs flag. Listing git repositories and trees take a little longer, but even with large listings with many git-tracked entries ll is still sub-second.

Installation

The latest binary distribution is avilable here.

It is also possible to build and install using the following instructions:

Requirements

  • Nim, minimum v1.2.*
  • make

Steps

Firstly install Nim. I personally use asdf to manage Nim versions on my machine. With asdf installed, this is as simple as calling asdf install nim latest.

Once Nim is installed, clone this repository. From within the cloned directory, call make install which will build ll into the working directory and will then opy the resulting ll binary to /usr/local/bin.

Usage

$ ll

That's it. For more options, pass -? or --help.

Status

  • Full file listing
  • File weight colours
  • "Rotting" dates
  • Display symlink status
  • Git status on entire repos
  • Git status on files within a working tree
  • Sort output by size
  • Sort output by modified time
  • Sort output in reversed order
  • Options for filtering directories
  • Remove dependency on PCRE (using the regex package)
  • Installable via Homebrew
  • Support light themes
  • Support globs

Fixes over k

  • k has an odd behaviour; given pwd is a git-tracked directory, if you k somedir where somedir contains git-tracked directories but isn't itself tracked, k reports as though it is working inside a work-tree. ll reports this as one would expect, as though pwd is somedir. UPDATE: This has now been fixed.

Future plans

According to the k source, there are future plans to colorise file permissions. If this happens, I plan to bring those changes over. If any other enhancements are added, I hope to port those also.

I'd like to display some additional information in the summary line of the listing; I'm currently reviewing what would be most useful.

Contributing

Contributions and pull-requests are always welcome, as is constructive feedback around code structure, hints, tips, etc.

If you would like to request a feature or report a bug, please add a new issue here and we'll do our best to address them. Please note that this is not a funded project and fixes will be addressed on a best-effort basis.

To contribute directly:

  1. Fork it (https://github.com/OldhamMade/ll/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new pull request

Liability

We take no responsibility for the use of this tool, or external instances provided by third parties. We strongly recommend you abide by the valid official regulations in your country. Furthermore, we refuse liability for any inappropriate or malicious use of this tool. This tool is provided to you in the spirit of free, open software.

You may view the LICENSE in which this software is provided to you here.

IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

ll - a more informative `ls`, based on `k`

Topics

Resources

Stars

23 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

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

Repository files navigation

ll - a more informative ls, based on k

CI

Description

ll is an alternative to k, which was created to make directory listings more informative and readable, using colour to add visual weight to important information in the listing.

Motivation

k only works with zsh, and I've found that it can occasionally be a little slow when working with large directories or with large git repositories. I was looking for a project which would be a good match to learn/use nim, and this seemed like a great opportunity to make something a little more general-purpose that could be used without the zsh dependency.

Features

Full file listing

Calling ll provides a full file listing for a directory, similar to calling ls -l.

File weight colours

Files sizes are graded from green for small (< 1k), to red for huge (> 1mb).

Human readable files sizes can be shown by using the -h or --human flag.

"Rotting" dates

Dates fade with age, so that recently changed files/directories can be easily identified.

Broken Symlinks

Broken symlinks are identified by a ~> (tilde-arrow) leading symbol and differing colors.

Git integration

ll provides easy-to-understand information about the git status of your files/directories.

Git status on entire repos

When listing a directory which contains git repos, ll displays the active state of those repos:

Image demonstrating repository listing

Git status on files within a working tree

When listing files/directories within a working tree, ll displays the active state of each file, and the overall state for directories:

Image demonstrating file listing

Speed

ll improves on k's rendering speeds. Currently ll is comparable to ls display times when using the --no-vcs flag. Listing git repositories and trees take a little longer, but even with large listings with many git-tracked entries ll is still sub-second.

Installation

The latest binary distribution is avilable here.

It is also possible to build and install using the following instructions:

Requirements

  • Nim, minimum v1.2.*
  • make

Steps

Firstly install Nim. I personally use asdf to manage Nim versions on my machine. With asdf installed, this is as simple as calling asdf install nim latest.

Once Nim is installed, clone this repository. From within the cloned directory, call make install which will build ll into the working directory and will then opy the resulting ll binary to /usr/local/bin.

Usage

$ ll

That's it. For more options, pass -? or --help.

Status

  • Full file listing
  • File weight colours
  • "Rotting" dates
  • Display symlink status
  • Git status on entire repos
  • Git status on files within a working tree
  • Sort output by size
  • Sort output by modified time
  • Sort output in reversed order
  • Options for filtering directories
  • Remove dependency on PCRE (using the regex package)
  • Installable via Homebrew
  • Support light themes
  • Support globs

Fixes over k

  • k has an odd behaviour; given pwd is a git-tracked directory, if you k somedir where somedir contains git-tracked directories but isn't itself tracked, k reports as though it is working inside a work-tree. ll reports this as one would expect, as though pwd is somedir. UPDATE: This has now been fixed.

Future plans

According to the k source, there are future plans to colorise file permissions. If this happens, I plan to bring those changes over. If any other enhancements are added, I hope to port those also.

I'd like to display some additional information in the summary line of the listing; I'm currently reviewing what would be most useful.

Contributing

Contributions and pull-requests are always welcome, as is constructive feedback around code structure, hints, tips, etc.

If you would like to request a feature or report a bug, please add a new issue here and we'll do our best to address them. Please note that this is not a funded project and fixes will be addressed on a best-effort basis.

To contribute directly:

  1. Fork it (https://github.com/OldhamMade/ll/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new pull request

Liability

We take no responsibility for the use of this tool, or external instances provided by third parties. We strongly recommend you abide by the valid official regulations in your country. Furthermore, we refuse liability for any inappropriate or malicious use of this tool. This tool is provided to you in the spirit of free, open software.

You may view the LICENSE in which this software is provided to you here.

IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

ll - a more informative `ls`, based on `k`

Topics

Resources

Stars

23 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

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

Repository files navigation

ll - a more informative ls, based on k

CI

Description

ll is an alternative to k, which was created to make directory listings more informative and readable, using colour to add visual weight to important information in the listing.

Motivation

k only works with zsh, and I've found that it can occasionally be a little slow when working with large directories or with large git repositories. I was looking for a project which would be a good match to learn/use nim, and this seemed like a great opportunity to make something a little more general-purpose that could be used without the zsh dependency.

Features

Full file listing

Calling ll provides a full file listing for a directory, similar to calling ls -l.

File weight colours

Files sizes are graded from green for small (< 1k), to red for huge (> 1mb).

Human readable files sizes can be shown by using the -h or --human flag.

"Rotting" dates

Dates fade with age, so that recently changed files/directories can be easily identified.

Broken Symlinks

Broken symlinks are identified by a ~> (tilde-arrow) leading symbol and differing colors.

Git integration

ll provides easy-to-understand information about the git status of your files/directories.

Git status on entire repos

When listing a directory which contains git repos, ll displays the active state of those repos:

Image demonstrating repository listing

Git status on files within a working tree

When listing files/directories within a working tree, ll displays the active state of each file, and the overall state for directories:

Image demonstrating file listing

Speed

ll improves on k's rendering speeds. Currently ll is comparable to ls display times when using the --no-vcs flag. Listing git repositories and trees take a little longer, but even with large listings with many git-tracked entries ll is still sub-second.

Installation

The latest binary distribution is avilable here.

It is also possible to build and install using the following instructions:

Requirements

  • Nim, minimum v1.2.*
  • make

Steps

Firstly install Nim. I personally use asdf to manage Nim versions on my machine. With asdf installed, this is as simple as calling asdf install nim latest.

Once Nim is installed, clone this repository. From within the cloned directory, call make install which will build ll into the working directory and will then opy the resulting ll binary to /usr/local/bin.

Usage

$ ll

That's it. For more options, pass -? or --help.

Status

  • Full file listing
  • File weight colours
  • "Rotting" dates
  • Display symlink status
  • Git status on entire repos
  • Git status on files within a working tree
  • Sort output by size
  • Sort output by modified time
  • Sort output in reversed order
  • Options for filtering directories
  • Remove dependency on PCRE (using the regex package)
  • Installable via Homebrew
  • Support light themes
  • Support globs

Fixes over k

  • k has an odd behaviour; given pwd is a git-tracked directory, if you k somedir where somedir contains git-tracked directories but isn't itself tracked, k reports as though it is working inside a work-tree. ll reports this as one would expect, as though pwd is somedir. UPDATE: This has now been fixed.

Future plans

According to the k source, there are future plans to colorise file permissions. If this happens, I plan to bring those changes over. If any other enhancements are added, I hope to port those also.

I'd like to display some additional information in the summary line of the listing; I'm currently reviewing what would be most useful.

Contributing

Contributions and pull-requests are always welcome, as is constructive feedback around code structure, hints, tips, etc.

If you would like to request a feature or report a bug, please add a new issue here and we'll do our best to address them. Please note that this is not a funded project and fixes will be addressed on a best-effort basis.

To contribute directly:

  1. Fork it (https://github.com/OldhamMade/ll/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new pull request

Liability

We take no responsibility for the use of this tool, or external instances provided by third parties. We strongly recommend you abide by the valid official regulations in your country. Furthermore, we refuse liability for any inappropriate or malicious use of this tool. This tool is provided to you in the spirit of free, open software.

You may view the LICENSE in which this software is provided to you here.

IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

ll - a more informative `ls`, based on `k`

Topics

Resources

Stars

23 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

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

Repository files navigation

ll - a more informative ls, based on k

CI

Description

ll is an alternative to k, which was created to make directory listings more informative and readable, using colour to add visual weight to important information in the listing.

Motivation

k only works with zsh, and I've found that it can occasionally be a little slow when working with large directories or with large git repositories. I was looking for a project which would be a good match to learn/use nim, and this seemed like a great opportunity to make something a little more general-purpose that could be used without the zsh dependency.

Features

Full file listing

Calling ll provides a full file listing for a directory, similar to calling ls -l.

File weight colours

Files sizes are graded from green for small (< 1k), to red for huge (> 1mb).

Human readable files sizes can be shown by using the -h or --human flag.

"Rotting" dates

Dates fade with age, so that recently changed files/directories can be easily identified.

Broken Symlinks

Broken symlinks are identified by a ~> (tilde-arrow) leading symbol and differing colors.

Git integration

ll provides easy-to-understand information about the git status of your files/directories.

Git status on entire repos

When listing a directory which contains git repos, ll displays the active state of those repos:

Image demonstrating repository listing

Git status on files within a working tree

When listing files/directories within a working tree, ll displays the active state of each file, and the overall state for directories:

Image demonstrating file listing

Speed

ll improves on k's rendering speeds. Currently ll is comparable to ls display times when using the --no-vcs flag. Listing git repositories and trees take a little longer, but even with large listings with many git-tracked entries ll is still sub-second.

Installation

The latest binary distribution is avilable here.

It is also possible to build and install using the following instructions:

Requirements

  • Nim, minimum v1.2.*
  • make

Steps

Firstly install Nim. I personally use asdf to manage Nim versions on my machine. With asdf installed, this is as simple as calling asdf install nim latest.

Once Nim is installed, clone this repository. From within the cloned directory, call make install which will build ll into the working directory and will then opy the resulting ll binary to /usr/local/bin.

Usage

$ ll

That's it. For more options, pass -? or --help.

Status

  • Full file listing
  • File weight colours
  • "Rotting" dates
  • Display symlink status
  • Git status on entire repos
  • Git status on files within a working tree
  • Sort output by size
  • Sort output by modified time
  • Sort output in reversed order
  • Options for filtering directories
  • Remove dependency on PCRE (using the regex package)
  • Installable via Homebrew
  • Support light themes
  • Support globs

Fixes over k

  • k has an odd behaviour; given pwd is a git-tracked directory, if you k somedir where somedir contains git-tracked directories but isn't itself tracked, k reports as though it is working inside a work-tree. ll reports this as one would expect, as though pwd is somedir. UPDATE: This has now been fixed.

Future plans

According to the k source, there are future plans to colorise file permissions. If this happens, I plan to bring those changes over. If any other enhancements are added, I hope to port those also.

I'd like to display some additional information in the summary line of the listing; I'm currently reviewing what would be most useful.

Contributing

Contributions and pull-requests are always welcome, as is constructive feedback around code structure, hints, tips, etc.

If you would like to request a feature or report a bug, please add a new issue here and we'll do our best to address them. Please note that this is not a funded project and fixes will be addressed on a best-effort basis.

To contribute directly:

  1. Fork it (https://github.com/OldhamMade/ll/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new pull request

Liability

We take no responsibility for the use of this tool, or external instances provided by third parties. We strongly recommend you abide by the valid official regulations in your country. Furthermore, we refuse liability for any inappropriate or malicious use of this tool. This tool is provided to you in the spirit of free, open software.

You may view the LICENSE in which this software is provided to you here.

IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

ll - a more informative `ls`, based on `k`

Topics

Resources

Stars

23 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages

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

Repository files navigation

ll - a more informative ls, based on k

CI

Description

ll is an alternative to k, which was created to make directory listings more informative and readable, using colour to add visual weight to important information in the listing.

Motivation

k only works with zsh, and I've found that it can occasionally be a little slow when working with large directories or with large git repositories. I was looking for a project which would be a good match to learn/use nim, and this seemed like a great opportunity to make something a little more general-purpose that could be used without the zsh dependency.

Features

Full file listing

Calling ll provides a full file listing for a directory, similar to calling ls -l.

File weight colours

Files sizes are graded from green for small (< 1k), to red for huge (> 1mb).

Human readable files sizes can be shown by using the -h or --human flag.

"Rotting" dates

Dates fade with age, so that recently changed files/directories can be easily identified.

Broken Symlinks

Broken symlinks are identified by a ~> (tilde-arrow) leading symbol and differing colors.

Git integration

ll provides easy-to-understand information about the git status of your files/directories.

Git status on entire repos

When listing a directory which contains git repos, ll displays the active state of those repos:

Image demonstrating repository listing

Git status on files within a working tree

When listing files/directories within a working tree, ll displays the active state of each file, and the overall state for directories:

Image demonstrating file listing

Speed

ll improves on k's rendering speeds. Currently ll is comparable to ls display times when using the --no-vcs flag. Listing git repositories and trees take a little longer, but even with large listings with many git-tracked entries ll is still sub-second.

Installation

The latest binary distribution is avilable here.

It is also possible to build and install using the following instructions:

Requirements

  • Nim, minimum v1.2.*
  • make

Steps

Firstly install Nim. I personally use asdf to manage Nim versions on my machine. With asdf installed, this is as simple as calling asdf install nim latest.

Once Nim is installed, clone this repository. From within the cloned directory, call make install which will build ll into the working directory and will then opy the resulting ll binary to /usr/local/bin.

Usage

$ ll

That's it. For more options, pass -? or --help.

Status

  • Full file listing
  • File weight colours
  • "Rotting" dates
  • Display symlink status
  • Git status on entire repos
  • Git status on files within a working tree
  • Sort output by size
  • Sort output by modified time
  • Sort output in reversed order
  • Options for filtering directories
  • Remove dependency on PCRE (using the regex package)
  • Installable via Homebrew
  • Support light themes
  • Support globs

Fixes over k

  • k has an odd behaviour; given pwd is a git-tracked directory, if you k somedir where somedir contains git-tracked directories but isn't itself tracked, k reports as though it is working inside a work-tree. ll reports this as one would expect, as though pwd is somedir. UPDATE: This has now been fixed.

Future plans

According to the k source, there are future plans to colorise file permissions. If this happens, I plan to bring those changes over. If any other enhancements are added, I hope to port those also.

I'd like to display some additional information in the summary line of the listing; I'm currently reviewing what would be most useful.

Contributing

Contributions and pull-requests are always welcome, as is constructive feedback around code structure, hints, tips, etc.

If you would like to request a feature or report a bug, please add a new issue here and we'll do our best to address them. Please note that this is not a funded project and fixes will be addressed on a best-effort basis.

To contribute directly:

  1. Fork it (https://github.com/OldhamMade/ll/fork)
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Add some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create a new pull request

Liability

We take no responsibility for the use of this tool, or external instances provided by third parties. We strongly recommend you abide by the valid official regulations in your country. Furthermore, we refuse liability for any inappropriate or malicious use of this tool. This tool is provided to you in the spirit of free, open software.

You may view the LICENSE in which this software is provided to you here.

IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

About

ll - a more informative `ls`, based on `k`

Topics

Resources

Stars

23 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages