') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); GitHub - ScriptedButton/disksense: DiskSense is a modern disk space analyzer that helps you visualize and manage storage space on your computer. Built with Tauri, React, and Next.js, it provides an interactive treemap visualization of your directory structure, making it easy to identify large files and folders consuming valuable disk space. · GitHub
Skip to content

Repository files navigation

DiskSense

DiskSense is a modern disk space analyzer that helps you visualize and manage storage space on your computer. Built with Tauri, React, and Next.js, it provides an interactive treemap visualization of your directory structure, making it easy to identify large files and folders consuming valuable disk space.

Features

  • Interactive Treemap Visualization: Easily navigate through your directory structure with a color-coded treemap interface
  • Fast & Comprehensive Scan Modes: Choose between quick estimation or detailed analysis of directory sizes
  • Progress Tracking: Real-time progress updates during directory scanning
  • File Management: Built-in context menu for common file operations (open, delete, view properties)
  • Customizable Scanning:
    • Adjustable scan depth (1-4 levels)
    • Option to skip hidden files
    • Choice between fast and comprehensive scanning modes
  • Cross-Platform: Works on Windows, macOS, and Linux

Getting Started

Prerequisites

  • Node.js (v16 or later)
  • Rust (latest stable version)
  • Tauri CLI

Installation

  1. Clone the repository:
git clone https://github.com/ScriptedButton/disksense.git
cd disksense
  1. Install dependencies:
npm install
# or
yarn install
  1. Run the development version:
npm run tauri dev
# or
yarn tauri dev

Building

To create a production build:

npm run tauri build
# or
yarn tauri build

The built application will be available in the src-tauri/target/release directory.

Usage

  1. Launch DiskSense
  2. Select a directory to analyze
  3. Use the interactive treemap to explore your disk usage:
    • Click on directories to navigate deeper
    • Right-click for file/folder operations
    • Use the back button to navigate up
    • Adjust scan settings as needed

Performance Tips

  • Use "Fast" scan mode for quick directory size estimation
  • Skip hidden files to speed up scanning
  • Reduce scan depth for faster results in large directories
  • Use "Comprehensive" scan mode only when accurate file sizes are needed

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

MIT License

About

DiskSense is a modern disk space analyzer that helps you visualize and manage storage space on your computer. Built with Tauri, React, and Next.js, it provides an interactive treemap visualization of your directory structure, making it easy to identify large files and folders consuming valuable disk space.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages