Image 1 — I developed an extension for quick copy, save, image search and translation buttons on images.
Image 2 — I developed an extension for quick copy, save, image search and translation buttons on images.
▲ 3 r/firefox+1 crossposts

I developed an extension for quick copy, save, image search and translation buttons on images.

Firefox: https://addons.mozilla.org/ru/firefox/addon/image-tools/

Chrome: https://github.com/scorvus99/image-tools-extension

Developed entirely with DeepSeek, for which I'm incredibly grateful!

Since I frequently work with images and use various image search services, and I'm too lazy to click unnecessary buttons, I created an extension that allows you to do the following with one click:

Image Actions

  • 📋 Copy image to clipboard
  • 💾 Quick image save
  • 📁 Save image using “Save As”
  • 🔗 Copy direct image URL
  • 1️⃣2️⃣3️⃣4️⃣ — Quick save to Downloads / Custom folder

Reverse Image Search

Product Search via Google Lens with automatic site filtering:

  • Wildberries (Russian)
  • Ozon (Russian)
  • AliExpress (Russian)

OCR / Image Text Translation

  • Google Translate OCR
  • Yandex Translate OCR
  • Google Translate OCR with automatic replacement of the original image
  • Yandex Translate OCR with automatic replacement of the original image

If you find any bugs or have any ideas on how to improve the extensions, please leave a comment and I will try to make the extension better.

u/scorvus99 — 5 hours ago
▲ 263 r/FirefoxCSS+1 crossposts

Clean Firefox context menu

I'm so fucking tired of opening the context menu and reading it like an ancient scroll, searching for the right function among two dozen options, even though I don't use 70% of them. So, I customized the context menu for myself and am sharing it with you.

/* CLEAN FIREFOX CONTEXT MENU 
   Works on Version 152.0.3
   ============================================================
   INSTRUCTIONS FOR INSTALLATION
   ============================================================
   1. Open Firefox and type in the address bar: about:config
   2. Click "Accept the Risk and Continue"
   3. Search for: toolkit.legacyUserProfileCustomizations.stylesheets
   4. Set the value to true (double-click on the line)
   5. Close about:config
   6. Open your Firefox profile folder:
      - Type in address bar: about:support
      - In "Application Basics" section, find "Profile Folder"
      - Click "Open Folder" (or "Open Directory")
   7. In the profile folder, create a folder named "chrome" (if it doesn't exist)
   8. In the chrome folder, create a file named "userChrome.css" (if it doesn't exist)
   9. Open the userChrome.css file in a text editor (Notepad, Notepad++, etc.)
   10. Copy ALL of this code and paste it into the userChrome.css file
   11. Save the file
   12. Restart Firefox (completely close and reopen)

   ADDITIONAL SETTINGS (optional):
   - Disable Container Tabs: about:preferences → Tabs and browsing → Uncheck "Use Container Tabs"
   - Disable Split View: about:config → browser.tabs.splitView.enabled = false
   - Disable Copy Clean Link: about:config → privacy.query_stripping.strip_on_share.enabled = false
   - Disable Google Lens Search: about:config → browser.search.visualSearch.featureGate = false

   IMPORTANT: After Firefox updates, some element IDs may change.
   ============================================================ */

/* Tab audio button */
.tab-audio-button { display: none !important; }

/* ============================================================
   TAB CONTEXT MENU
   ============================================================ */

/* New Tab to the Right (C) */
#context_newTabFromTab { display: none !important; }

/* Add Tab to New Group */
#context_addToNewGroup,
#context_moveTabToNewGroup,
#context_moveTabToGroup,
#context_ungroupTab + menuseparator { display: none !important; }

/* Add Split View */
#context_moveSplitViewToNewGroup { display: none !important; }

/* Share */
#tabContextMenu .share-tab-url-item { display: none !important; }

/* Reload Tab */
#context_reloadTab { display: none !important; }

/* Unload Tab (Discard) */
#context_unloadTab { display: none !important; }

/* Duplicate Tab */
#context_duplicateTab { display: none !important; }

/* Bookmark Tab... */
#context_bookmarkTab { display: none !important; }

/* Move Tab */
#context_moveTabOptions { display: none !important; }

/* Send Tab to Device (Share) */
#context_sendTabToDevice,
#context_sendTabToDevice_separator,
#context_sendTabToDevicePopupMenu,
#context-sendlinktodevice,
#context-sendpagetodevice,
shareTabURL,
#context-sep-sendpagetodevice { display: none !important; }

/* Open in New Container Tab */
#context_openTabInContainer,
#context-openlinkinusercontext-menu { display: none !important; }

/* Select All Tabs */
#context_selectAllTabs { display: none !important; }

/* Close Tab */
#context_closeTab { display: none !important; }

/* Undo Close Tab (Reopen Closed Tab) */
#context_undoCloseTab { display: none !important; }

/* Close Duplicate Tabs (G) */
#context_closeDuplicateTabs { display: none !important; }

/* ============================================================
   PAGE CONTEXT MENU
   ============================================================ */

/* Save to Pocket */
#context-pocket,
#context-savelinktopocket,
#context-sep-pocket { display: none !important; }

/* Select All */
#context-selectall,
#context-sep-selectall { display: none !important; }

/* Take Screenshot */
#context-takescreenshot,
#screenshots_mozilla_org_create-screenshot,
#context-take-screenshot { display: none !important; }

/* Send Image */
#context-sendimage,
#context-emailimage { display: none !important; }

/* Bookmark Link */
#context-bookmarklink { display: none !important; }

/* Translate */
#context-translate-selection,
#context-translatepage { display: none !important; }

/* Set as Desktop Background */
#context-setDesktopBackground,
#context-sep-setbackground { display: none !important; }

/* View Page Source */
#contex-viewpartialsource-selection,
#contex-sep-viewsource,
#context-sep-viewsource { display: none !important; }

/* Other separators */
#context-sep-navigation,
#context-sep-viewbgimage,
#inspect-separator,
#context-sep-copyimage,
#context-sep-undo,
#context-sep-paste,
#context-sep-properties,
#context-sep-bidi { display: none !important; }

/* ============================================================
   LINK AND IMAGE CONTEXT MENU
   ============================================================ */

/* Open Link in New Window */
#context-openlink,              /* Main ID for links */
#context-openlinknew,           /* Alternative */
#context-openlink + menuseparator { display: none !important; } /* Separator */

/* Open Link in New Private Window */
#context-openlinkprivate,       /* Main ID */
#context-openlinkprivate + menuseparator { display: none !important; } /* Separator */

/* Copy Clean Link (without tracking) (G) */
#context-copylink-no-tracking,  /* ID for link without tracking parameters */
#context-copylink-no-tracking + menuseparator { display: none !important; } /* Separator */

/* Search Image with Google Lens (U) */
#context-searchwithgooglelens,  /* Presumed ID (may differ) */
#context-searchwithgooglelens + menuseparator { display: none !important; } /* Separator */

/* Inspect Accessibility Properties */
#context-inspect-a11y,          /* Main ID */
#context-inspect-a11y + menuseparator { display: none !important; } /* Separator */

/* ============================================================
   UNIVERSAL METHODS FOR REMOVING SEPARATORS
   ============================================================ */

/* 1. The simplest and most reliable way: hide ALL separators in ALL menus */
menuseparator {
    display: none !important;
}

/* 2. More selective way: hide ALL separators ONLY in tab context menu */
#tabContextMenu menuseparator {
    display: none !important;
}

/* 3. Hide separators by their ID (for most standard separators) */
#context-sep-open,                /* Separator before "Open Link" */
#context-sep-navigation,          /* Separator for navigation */
#context-sep-viewbgimage,         /* Separator before "View Background Image" */
#context-sep-selectall,           /* Separator before "Select All" */
#context-sep-viewsource,          /* Separator before "View Page Source" */
#context-sep-sendpagetodevice,    /* Separator for "Send Page to Device" */
#context-sep-sendlinktodevice,    /* Separator for "Send Link to Device" */
#inspect-separator,               /* Separator before "Inspect Element" */
#context-sep-copyimage,           /* Separator in image menu */
#context-sep-paste,               /* Separator for "Paste" */
#context-sep-undo,                /* Separator for "Undo" */
#context-sep-properties,          /* Separator for "Properties" */
#context-sep-bidi {               /* Separator for text direction */
    display: none !important;
}

/* 4. Remove separator that follows a specific menu item (for precise customization) */
#context_openANewTab + menuseparator,        /* For "New Tab" item */
#context_toggleMuteTab + menuseparator,      /* For "Mute Tab" item */
#context_openTabInWindow + menuseparator,    /* For "Move to New Window" item */
#context_sendTabToDevice + menuseparator,    /* For "Send Tab to Device" item */
#context_closeOtherTabs + menuseparator,     /* For "Close Other Tabs" item */
#context_closeTab + menuseparator {          /* For "Close Tab" item */
    display: none !important;
}

/* ============================================================
   END OF SETTINGS
   ============================================================ */
u/scorvus99 — 5 days ago