From 863514ef9c4da3cce8410f89e1b4c547cc31cf6f Mon Sep 17 00:00:00 2001 From: Josh Rahm Date: Mon, 10 Jan 2022 21:22:19 -0700 Subject: Convert run menus over to Rofi. This makes things prettier and rofi is more feature rich than DMenu. --- extras/HOME/.config/rofi/config.rasi | 53 ++++++++++++++++++++++++++++++ extras/HOME/.local/bin/bluetooth-select.sh | 5 +-- extras/HOME/.local/bin/emoji-select.sh | 2 +- extras/HOME/.local/bin/emoticon-select.sh | 2 +- extras/HOME/.local/bin/rofi-pass | 35 ++++++++++++++++++++ extras/HOME/.local/bin/set-sink.sh | 2 +- src/Internal/DMenu.hs | 13 ++++---- src/Internal/PassMenu.hs | 8 ++--- 8 files changed, 103 insertions(+), 17 deletions(-) create mode 100644 extras/HOME/.config/rofi/config.rasi create mode 100755 extras/HOME/.local/bin/rofi-pass diff --git a/extras/HOME/.config/rofi/config.rasi b/extras/HOME/.config/rofi/config.rasi new file mode 100644 index 0000000..d804f7a --- /dev/null +++ b/extras/HOME/.config/rofi/config.rasi @@ -0,0 +1,53 @@ +@theme "/usr/share/rofi/themes/DarkBlue.rasi" + +* { + theme-color: #8888ff; + selected-normal-background: @theme-color; + normal-foreground: @theme-color; + alternate-normal-foreground: @theme-color; + textbox-background: #202020; + + font: "Monofur Bold Nerd Font 34"; +} + +window { + border: 0; + width: 100%; + height: 100%; + padding: 20%; + background-color: rgba ( 0, 0, 0, 75 % ); +} + +#case-indicator { + background-color: @theme-color; + text-color: #202020; + padding: 10px; +} + +#prompt { + background-color: @theme-color; + text-color: #202020; + padding: 10px; +} + +inputbar { + children: [ prompt,entry,case-indicator ]; +} + +#entry { + background-color: #202020; + padding: 10px; +} + +#listview { + fixed-height: 0; + border: 50px 0px 0px ; + border-color: #000000; + scrollbar: true; + background-color: #202020; +} + +element { + border: 0; + padding: 10px 10px 20px 10px ; +} diff --git a/extras/HOME/.local/bin/bluetooth-select.sh b/extras/HOME/.local/bin/bluetooth-select.sh index 9a42ce5..a39ead1 100755 --- a/extras/HOME/.local/bin/bluetooth-select.sh +++ b/extras/HOME/.local/bin/bluetooth-select.sh @@ -2,8 +2,9 @@ devices="$(bluetoothctl -- devices | sed 's#^Device ##')" selection="$( - echo -e "$devices\nDisconnect" | - dmenu -i -nf "#8888ff" -sb "#8888ff" -p "Connect Bluetooth" -l 12 -dim 0.4)" + echo -e "$devices\nDisconnect" | rofi -p "Connect Bluetooth" \ + -theme-str '* {theme-color: #8888ff;}' \ + -dmenu)" macaddr="${selection%% *}" diff --git a/extras/HOME/.local/bin/emoji-select.sh b/extras/HOME/.local/bin/emoji-select.sh index 1cf8152..5d244d8 100755 --- a/extras/HOME/.local/bin/emoji-select.sh +++ b/extras/HOME/.local/bin/emoji-select.sh @@ -1,7 +1,7 @@ #!/bin/bash if ( which rofi ) ; then - menu=(rofi -dmenu -i -p "Select Character: " -font "Fira Code 32") + menu=(rofi -dmenu -i -p "Select Character" -theme-str '* {theme-color: #ffff88;}' -show run) else menu=(dmenu -fn NotoSans:size=24 -i -nf "#ffff88" -sb "#ffff88" -p "Select Character" -l 12 -dim 0.4) fi diff --git a/extras/HOME/.local/bin/emoticon-select.sh b/extras/HOME/.local/bin/emoticon-select.sh index bf10318..ed6cddc 100755 --- a/extras/HOME/.local/bin/emoticon-select.sh +++ b/extras/HOME/.local/bin/emoticon-select.sh @@ -1,7 +1,7 @@ #!/bin/bash if ( which rofi ) ; then - menu=(rofi -dmenu -i -p "Select Emoticon: " -font "Fira Code 32") + menu=(rofi -theme-str '* {theme-color: #ffa050;}' -p "Select Emoticon" -dmenu) else menu=(dmenu -fn NotoSans:size=24 -i -nf "#ffff88" -sb "#ffff88" -p "Select Emoticon" -l 12 -dim 0.4) fi diff --git a/extras/HOME/.local/bin/rofi-pass b/extras/HOME/.local/bin/rofi-pass new file mode 100755 index 0000000..57a4704 --- /dev/null +++ b/extras/HOME/.local/bin/rofi-pass @@ -0,0 +1,35 @@ +#!/usr/bin/env bash + +shopt -s nullglob globstar + +typeit=0 +if [[ $1 == "--type" ]]; then + typeit=1 + shift +fi + +if [[ -n $WAYLAND_DISPLAY ]]; then + dmenu=dmenu-wl + xdotool="ydotool type --file -" +elif [[ -n $DISPLAY ]]; then + dmenu=(rofi -dmenu -p 'Password') + xdotool="xdotool type --clearmodifiers --file -" +else + echo "Error: No Wayland or X11 display detected" >&2 + exit 1 +fi + +prefix=${PASSWORD_STORE_DIR-~/.password-store} +password_files=( "$prefix"/**/*.gpg ) +password_files=( "${password_files[@]#"$prefix"/}" ) +password_files=( "${password_files[@]%.gpg}" ) + +password=$(printf '%s\n' "${password_files[@]}" | "${dmenu[@]}" "$@") + +[[ -n $password ]] || exit + +if [[ $typeit -eq 0 ]]; then + pass show -c "$password" 2>/dev/null +else + pass show "$password" | { IFS= read -r pass; printf %s "$pass"; } | $xdotool +fi diff --git a/extras/HOME/.local/bin/set-sink.sh b/extras/HOME/.local/bin/set-sink.sh index bbbdc8d..71054d8 100755 --- a/extras/HOME/.local/bin/set-sink.sh +++ b/extras/HOME/.local/bin/set-sink.sh @@ -1,6 +1,6 @@ #!/bin/bash -DMENU=(dmenu -i -nf "#88ff88" -sb "#88ff88" -l 12 -dim 0.4) +DMENU=(rofi -theme-str '* {theme-color: #88ff88;}' -dmenu) sinks="$( pactl list sinks | while read line ; do diff --git a/src/Internal/DMenu.hs b/src/Internal/DMenu.hs index 850612e..360ad58 100644 --- a/src/Internal/DMenu.hs +++ b/src/Internal/DMenu.hs @@ -8,6 +8,7 @@ import Data.Map (Map) import qualified Data.Map as Map import XMonad.Util.Run import Data.List (intercalate) +import Text.Printf (printf) data Colors = Colors { @@ -17,8 +18,7 @@ data Colors = runDMenu :: X () runDMenu = void $ - safeSpawn "dmenu_run" [ - "-p", "Execute ", "-l", "12", "-dim", "0.4"] + safeSpawn "rofi" ["-p", "Execute ", "-show", "run"] runDMenuPrompt :: String -> Maybe String -> [String] -> X String runDMenuPrompt prompt color select = @@ -32,8 +32,7 @@ runDMenuPrompt prompt color select = runDMenuPromptWithMap :: String -> Maybe String -> Map String a -> X (Maybe a) runDMenuPromptWithMap prompt color map = do - let realColor = maybe [] (\c -> ["-sb", c, "-nf", c]) color - menuMapArgs "dmenu"([ - "-p", prompt, - "-l", "12", - "-dim", "0.4" ] ++ realColor) map + let realColor = maybe [] ( + \c -> ["-theme-str", printf "* {theme-color: %s;}" c]) color + menuMapArgs "rofi" + (["-p", prompt, "-dmenu"] ++ realColor) map diff --git a/src/Internal/PassMenu.hs b/src/Internal/PassMenu.hs index 7374bed..bb3bc4d 100644 --- a/src/Internal/PassMenu.hs +++ b/src/Internal/PassMenu.hs @@ -6,10 +6,8 @@ import Control.Monad runPassMenu :: X () runPassMenu = void $ - safeSpawn "passmenu" [ + safeSpawn "rofi-pass" [ "-p", "Password ", - "-l", "12", - "-dim", "0.4", - "-sb", "#f54245", - "-nf", "#f54245" ] + "-theme-str", + "* {theme-color: #f54245;}"] -- cgit