Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

[PLUGIN] Quick Favorites - Custom Favorites Menu Pop-Up

Featured Replies

Quick Favorites Plugin

Currently Listed in Community Application.

Plugin Name: Quick Favorites

Description: A custom favorites menu for the unRAID header. Easily navigate to pages, Docker containers, and User Scripts with live previews and icon support.

Install URL:https://raw.githubusercontent.com/hernandito/quick.favorites/main/quick.favorites.plg

GitHub Repo: https://github.com/hernandito/quick.favorites

menu-open - Copy.png

Supercharge your unRAID navigation! Quick Favorites allows you to build a beautifully customized, lightning-fast pop-up menu right into your unRAID header. This takes the existing "Favorites" and replaces it with a Quick Favorites pop-up.

Stop clicking through endless tabs to find your most-used settings, Docker containers, or User Scripts. Put them all in one place, accessible from anywhere in your Unraid dashboard.

✨ Features:
Everywhere You Need It: The menu attaches to the Star icon in the top right of your unRAID header, making it accessible from any page.
Fully Customizable Look: Change the width, grid layout, colors, and borders to perfectly match your unRAID theme.
Icon Support: Use standard FontAwesome icons, native Emojis, or paste a URL to a custom image!
User Scripts Integration: Don't just navigate—execute! You can map buttons to run your favorite User Scripts directly from the menu.

Settings Page:

settings.png

In addition to being able to define the UI's look, the plugin also supports CSS customization for finer detail control:
customcss.png

The Actions Explained

When adding a new link in the Quick Favorites settings, you have access to powerful "Actions" that change how the link behaves. Here is what they do:

Standard Navigation
  • Save Tab (Same Window): Perfect for navigating to internal Unraid pages (e.g., /Dashboard or /Settings/DockerSettings). It opens the link in your current tab.

  • New Tab (New Window): Ideal for external web GUIs (like Sonarr, Plex, or your router's IP). It opens the link in a brand new browser tab.

User Scripts Magic

You must have the "User Scripts" plugin installed to use these features.

  • Run Script (Console) (Run in Console Window): Click the button, and the traditional UserScripts script console window will pop up showing the script running in real-time.

  • Run Script (Background) (Run in Background): Same as the UserScripts, the script will run silently in the background without interrupting your workflow.

  • User Script Log (View you scheduled Logs): Instantly pops open a clean, formatted window to show the output logs of a specific script.

🛠️ How to Install

Installing is incredibly simple. Search for Quick Favorites in Community Applications.

DISCLAIMER:

I am NOT a seasoned programmer. And this is my first plugin. I got this done purely with the help of Gemini AI and most recently Claude AI. I will do my best to support, but I encourage someone to fork what I have created and take over the reigns. Similarly, when it come to issues, anyone with more technical expertise please chime in, it would be greatly appreciated.

Edited by hernandito
typo

  • hernandito changed the title to [PLUGIN] Quick Favorites - Custom Favorites Menu Pop-Up
  • 4 months later...
  • Author

To complement Quick.Favorites, I have created a UserScript for my own personal use. This script allows me to HIDE existing menu items. In my case, I wanted to hide the "Favorites", "Stats", and "Shares" menu since I rarely go to these pages. I am able to relegate "less-used" menu items to the QF menu. See screenshot below:
image.png

The script is customizable to either restore the default menu, or disable it. There is a toggle setting that you change in the script (MODE="install" or MODE="remove" ).

It also allows you to specify which menu items to "hide". Since I use my tablet mainly, I chose to hide the "Favorites", "Stats", and "Shares" menu items. In the script, comment out, add, or remove, the items you want under HIDE_HREFS=(

WARNING:
This script changes unRAID's defaults menu file. This is not a feature that would be allowed to be built in into the plugin by unRAID's Community Application standards. I am pasting it here only if someone wants to do this. In order for this to survive a reboot, in UserScripts, enable this script to be schedule to "At First Array Start Only".

Here is the script to use in USerScripts:
#!/bin/bash

#

# Hide unwanted Unraid navigation tabs

#

# Removes chosen items from the WebUI navigation bar (Dashboard, Main, Shares...).

# Hiding a tab does NOT disable the page - it only stops the tab being drawn.

# The page still loads fine if you reach it another way.

#

# ----------------------------------------------------------------------------

# HOW IT WORKS

# Creates one small folder of its own containing a single file:

# /usr/local/emhttp/plugins/hide.nav.tabs/HideNavTabs.page

# That file holds a few lines of CSS telling the browser not to display the

# tabs you list below. Unraid picks it up automatically on every page.

#

# No Unraid file is modified, so there is nothing to back up, nothing to

# restore, and an Unraid update cannot break it.

#

# SETUP

# Paste into User Scripts, set the schedule to "At First Array Start Only",

# then click "Run Script" once. Refresh the browser with Ctrl-F5.

#

# The schedule matters because /usr/local/emhttp is wiped on every reboot,

# so the script has to re-create its file each time the server starts.

#

# TO UNDO

# Set MODE="remove" below and run once, then set the schedule to Disabled.

# Or from the console:

# rm -rf /usr/local/emhttp/plugins/hide.nav.tabs

# ...then refresh the browser.

# ----------------------------------------------------------------------------

set -euo pipefail

# ============================ CONFIGURATION =================================

MODE="install" # "install" to hide tabs, "remove" to restore them

# Tabs to hide. Use the URL path, NOT the label shown on screen:

# click the tab and copy the part after the address, e.g.

# http://tower/Shares -> "/Shares"

# Capitalisation matters. Add or remove lines freely.

HIDE_HREFS=(

"/Stats"

"/Favorites"

"/Shares"

"/Tools"

# "/Apps"

)

# ============================================================================

PLUGDIR="/usr/local/emhttp/plugins/hide.nav.tabs"

PAGEFILE="$PLUGDIR/HideNavTabs.page"

echo "--------------------------------------------"

echo " Hide Unraid nav tabs - mode: $MODE"

echo "--------------------------------------------"

if [[ "$MODE" == "remove" ]]; then

rm -rf "$PLUGDIR"

echo "Removed: $PLUGDIR"

echo "All tabs restored. Refresh the WebUI (Ctrl-F5)."

echo "Remember to set this script's schedule to Disabled."

echo "--------------------------------------------"

exit 0

fi

if [[ ${#HIDE_HREFS[@]} -eq 0 ]]; then

echo "HIDE_HREFS is empty - nothing to hide. Nothing changed."

exit 0

fi

mkdir -p "$PLUGDIR"

# One CSS rule per tab. :has() targets the wrapper that holds the link, because

# the whole tile has to go - hiding just the link would leave its padding behind.

RULES=""

for href in "${HIDE_HREFS[@]}"; do

RULES+="#menu .nav-item:has(> a[href=\"$href\"]) { display: none !important; }"$'\n'

done

cat > "$PAGEFILE" <<EOF

Menu="Buttons:100"

Title="Hide Nav Tabs"

Link="hide-nav-tabs"

---

<style>

/* Personal customization: hide selected navigation tabs. */

$RULES</style>

EOF

chown -R root:root "$PLUGDIR"

chmod -R 755 "$PLUGDIR"

echo "Created: $PAGEFILE"

echo ""

echo "Now hiding:"

for href in "${HIDE_HREFS[@]}"; do

echo " $href"

done

echo ""

echo "Refresh the WebUI (Ctrl-F5) to see the change."

echo "--------------------------------------------"

Edited by hernandito

  • 4 weeks later...

Possible bug with User Scripts after reboot

Hi hernandito,

I think I found a bug in Quick Favorites when launching scripts from the CA User Scripts plugin.

After an Unraid reboot, Quick Favorites cannot launch a User Script that has not yet been executed by CA User Scripts since that reboot.

Steps to reproduce:

1. Reboot Unraid.

2. Add a User Script to Quick Favorites that is NOT configured to run at "At Startup of Array".

3. Try to run it from Quick Favorites.

4. Quick Favorites tries to execute:

/tmp/user.scripts/tmpScripts/SCRIPT_NAME/script

5. The script does not exist there yet, so execution fails with:

No such file or directory

6. Run the same script once manually from CA User Scripts.

7. CA User Scripts now creates the script under /tmp/user.scripts/tmpScripts/.

8. From this point on, launching it from Quick Favorites works correctly until the next reboot.

I tested this with several scripts.

Scripts configured as "At Startup of Array" work immediately after boot because their entries in /tmp/user.scripts/tmpScripts/ are created automatically during startup.

I also noticed another related issue:

When using "Run Script (Background)", Quick Favorites can display:

Now starting the script in the background

even though the script does not exist in tmpScripts and therefore is not actually started.

It looks like Quick Favorites relies on the temporary copy created by CA User Scripts.

Could Quick Favorites perhaps check/create the temporary script first, or launch the User Script from its persistent location instead?

Thanks for the plugin!

Frank

I was a bit confused because nothing was working, and I didn't see the action drop-down at the far right of the rows.

My only suggestion would be to re-format the page so action drop-down is the first thing you see on the left, it's sort of the set-up for the rest of the row, so it should probably the most prominent.

Edited by Nogami

On 9/23/2026 at 1:01 AM, Vvei_61 said:

Possible bug with User Scripts after reboot

Hi hernandito,

I think I found a bug in Quick Favorites when launching scripts from the CA User Scripts plugin.

After an Unraid reboot, Quick Favorites cannot launch a User Script that has not yet been executed by CA User Scripts since that reboot.

Steps to reproduce:

1. Reboot Unraid.

2. Add a User Script to Quick Favorites that is NOT configured to run at "At Startup of Array".

3. Try to run it from Quick Favorites.

4. Quick Favorites tries to execute:

/tmp/user.scripts/tmpScripts/SCRIPT_NAME/script

5. The script does not exist there yet, so execution fails with:

No such file or directory

6. Run the same script once manually from CA User Scripts.

7. CA User Scripts now creates the script under /tmp/user.scripts/tmpScripts/.

8. From this point on, launching it from Quick Favorites works correctly until the next reboot.

I tested this with several scripts.

Scripts configured as "At Startup of Array" work immediately after boot because their entries in /tmp/user.scripts/tmpScripts/ are created automatically during startup.

I also noticed another related issue:

When using "Run Script (Background)", Quick Favorites can display:

Now starting the script in the background

even though the script does not exist in tmpScripts and therefore is not actually started.

It looks like Quick Favorites relies on the temporary copy created by CA User Scripts.

Could Quick Favorites perhaps check/create the temporary script first, or launch the User Script from its persistent location instead?

Thanks for the plugin!

Frank

I'm a novice programmer at best, but I found this patch suggested by chatgpt seems to work. Not sure how to incorporate it into the source code online though:

-Quick Favorites is calling the wrong User Scripts API action.

-The problem is that intermediate isn't an action handled by the current User Scripts exec.php. The relevant action is convertScript.

-So Quick Favorites should simply use the path returned by convertScript.

And convertScript does exactly what you were asking for:

  1. Takes the persistent script from /boot/config/plugins/user.scripts/scripts/...

  2. Creates the corresponding /tmp/user.scripts/tmpScripts/... directory.

  3. Copies the script there.

  4. Adds #!/bin/bash if necessary.

  5. Removes CR characters.

  6. Makes the temporary copy executable.

in favs.js

find

var fullScriptPath = '/boot/config/plugins/user.scripts/scripts/' + path + '/script';

$.post('/plugins/user.scripts/exec.php', {

script: fullScriptPath,

action: 'intermediate',

csrf_token: token

}, function () {

var tmpScriptPath = '/tmp/user.scripts/tmpScripts/' + path + '/script';

var targetUrl = (action === 'script_modal')

? '/plugins/user.scripts/startScript.sh&arg1=' + tmpScriptPath

: '/plugins/user.scripts/backgroundScript.sh&arg1=' + tmpScriptPath;

openBox(targetUrl, 'Executing: ' + path, 600, 900, true);

window.qfCloseMenu && window.qfCloseMenu();

});

replace with

var fullScriptPath = '/boot/config/plugins/user.scripts/scripts/' + path + '/script';

$.post('/plugins/user.scripts/exec.php', {

path: fullScriptPath,

action: 'convertScript',

csrf_token: token

}, function (tmpScriptPath) {

tmpScriptPath = String(tmpScriptPath || '').trim();

// User Scripts creates the temporary copy and returns its actual path.

// Don't attempt to execute anything until conversion has completed.

if (!tmpScriptPath ||

tmpScriptPath.indexOf('/tmp/user.scripts/tmpScripts/') !== 0) {

console.error(

'[QuickFavorites] User Scripts failed to prepare script:',

tmpScriptPath

);

alert('Unable to prepare script: ' + path);

return;

}

var targetUrl = (action === 'script_modal')

? '/plugins/user.scripts/startScript.sh&arg1=' + tmpScriptPath

: '/plugins/user.scripts/backgroundScript.sh&arg1=' + tmpScriptPath;

openBox(targetUrl, 'Executing: ' + path, 600, 900, true);

window.qfCloseMenu && window.qfCloseMenu();

}).fail(function (xhr, status, error) {

console.error(

'[QuickFavorites] User Scripts conversion failed:',

status,

error

);

alert('Unable to prepare script: ' + path);

});

Tested on my server, 7.4.0-beta 3 and seems to work OK. Please feel free to use or tear apart if you like. I'm not sure how to make this persistent across reboots though. I manually patched it in from the command line.

Edited by Nogami

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.