diff --git a/rofi/scripts/rofi-run.sh b/rofi/scripts/rofi-run.sh
new file mode 100755
index 0000000..a33ecef
--- /dev/null
+++ b/rofi/scripts/rofi-run.sh
@@ -0,0 +1,45 @@
+#!/usr/bin/env bash
+
+set -Eeuo pipefail
+
+# Script to run a bash command from a rofi prompt
+
+THEME_STR="
+window {
+ width: 35%;
+ height: 10%;
+ anchor: north;
+ location: north;
+}"
+
+# generates a span mesg for rofi given
+# input: message: str
+generate_span() {
+ msg1="$1"
+ msg2="$2"
+ span="$msg1"
+ span2="$msg2"
+ printf "%s: %s\n" "$span" "$span2"
+}
+
+# Get the command to run
+cmd="$(rofi -dmenu -l 0 -p 'Run:' -theme-str "$THEME_STR")"
+
+# Check if command is sudo
+if [[ "$cmd" == "sudo"* ]]; then
+ # Prompt for confirmation
+ confirm="$(rofi -dmenu -l 0 -p 'Confirm (Y/N)' \
+ -theme-str "$THEME_STR" -mesg "$(generate_span "CMD" "$cmd")" || true)"
+ # If not confirmed, exit
+ if ! [[ "$confirm" == "Y" || "$confirm" == "y" ]]; then
+ exit 0
+ fi
+fi
+
+if [[ "$1" == "-v" || "$1" == "--verbose" ]]; then
+ # Send command to dunstify
+ dunstify "Running command: $cmd"
+fi
+
+# Run the command
+eval "$cmd"