Compare commits

..

No commits in common. "44dee82f35aa839daea71e422d0312e36199966c" and "b43720082d3bb96bfa3a586a1f5f93e4b205dfb1" have entirely different histories.

45 changed files with 5557 additions and 345 deletions

142
defaults/bin/moonarch-bangs Executable file
View File

@ -0,0 +1,142 @@
#!/usr/bin/env bash
# ABOUTME: Rofi-based tool launcher that provides a searchable menu of system utilities.
# ABOUTME: Includes VPN, sound, bluetooth, shortcuts, and other system management tools.
declare -A LABELS
declare -A COMMANDS
###
# List of defined 'bangs'
# launch programs
# COMMANDS["apps"]="rofi -combi-modi window,drun -show combi"
# LABELS["apps"]=""
# open bookmarks
# COMMANDS["bookmarks"]="~/.scripts/rofi-scripts-collection/rofi-surfraw-bookmarks.sh"
# LABELS["bookmarks"]=""
# search local files
COMMANDS[""]="moonarch-locate"
LABELS[""]="Locate"
COMMANDS[""]="wlogout -P 1 -s -r 10 -c 10"
LABELS[""]="Session Menu"
# open custom web searches
# COMMANDS["websearch"]="~/.scripts/rofi-scripts-collection/rofi-surfraw-websearch.sh"
# LABELS["websearch"]=""
# show clipboard history
# source: https://bitbucket.org/pandozer/rofi-clipboard-manager/overview
# COMMANDS["clipboard"]='rofi -modi "clipboard:~/.bin/rofi-clipboard-manager/mclip.py menu" -show clipboard && ~/.bin/rofi-clipboard-manager/mclip.py paste'
# LABELS["clipboard"]=""
# references --------------------------
# COMMANDS[";sr2"]="chromium 'wikipedia.org/search-redirect.php?search=\" \${input}\""
# LABELS[";sr2"]=""
# COMMANDS[";piratebay"]="chromium --disk-cache-dir=/tmp/cache http://thepiratebay.org/search/\" \${input}\""
# LABELS[";piratebay"]=""
# COMMANDS[".bin"]="spacefm -r '/home/dka/bin'"
# LABELS[".bin"]=".bin"
# COMMANDS["#screenshot"]='/home/dka/bin/screenshot-scripts/myscreenshot.sh'
# LABELS["#screenshot"]="screenshot"
# greenclip clipboard history
# source: https://github.com/erebe/greenclip
COMMANDS[""]='rofi -modi "clipboard:greenclip print" -show Clipboard'
LABELS[""]="Clipboard"
COMMANDS["󰖂"]='moonarch-vpn'
LABELS["󰖂"]='VPN Connection Manager'
COMMANDS["󰗅"]='moonarch-volume'
LABELS["󰗅"]='Sound Manager'
#COMMANDS[""]='shortcuts module was removed'
#LABELS[""]='Hotkey List'
COMMANDS["󰍹"]='wdisplays'
LABELS["󰍹"]='Display Setup'
COMMANDS[""]='nwg-look'
LABELS[""]='Appearance Settings'
COMMANDS["󱘆"]='noisetorch'
LABELS["󱘆"]='Audio Noise Reduction'
COMMANDS["󰋋"]='$HOME/.local/share/headset-charge-indicator/headset-charge-indicator.py &'
LABELS["󰋋"]='Headset Control'
COMMANDS[""]='moonarch-bluetooth'
LABELS[""]='Bluetooth Control'
COMMANDS["󰛳"]='nm-applet --indicator &'
LABELS["󰛳"]='Networker Manager'
COMMANDS["󰴱"]='wl-color-picker'
LABELS["󰴱"]='Color Picker'
COMMANDS["󰚞"]='font-manager'
LABELS["󰚞"]='Font Manager'
COMMANDS["󱨑"]='gufw'
LABELS["󱨑"]='Firewall Settings'
COMMANDS[""]='stacer'
LABELS[" "]='System Maintenance'
################################################################################
# do not edit below
################################################################################
##
# Generate menu
##
function print_menu()
{
for key in ${!LABELS[@]}
do
# echo "$key ${LABELS}"
echo "$key ${LABELS[$key]}"
# my top version just shows the first field in labels row, not two words side by side
done
}
##
# Show rofi.
##
function start()
{
# print_menu | rofi -dmenu -p "?=>"
print_menu | sort | rofi -show "Tools" -dmenu -mesg " Tools" -i -p "rofi-bangs: "
}
# Run it
value="$(start)"
# Split input.
# grab upto first space.
choice=${value%%\ *}
# graph remainder, minus space.
input=${value:$((${#choice}+1))}
##
# Cancelled? bail out
##
if test -z ${choice}
then
exit
fi
# check if choice exists
if test ${COMMANDS[$choice]+isset}
then
# Execute the choice
${COMMANDS[$choice]}
else
echo "Unknown command: ${choice}" | rofi -dmenu -p "error"
fi

View File

@ -302,7 +302,7 @@ show_menu() {
}
# Rofi command to pipe into, can add any options here
rofi_command="rofi -dmenu $* -p -theme /etc/xdg/rofi/themes/bluetooth.rasi -mesg -Bluetooth-Control"
rofi_command="rofi -dmenu $* -p -theme /etc/xdg/rofi/bluetooth/bluetooth.rasi -mesg -Bluetooth-Control"
case "$1" in
--status)

98
defaults/bin/moonarch-calendar Executable file
View File

@ -0,0 +1,98 @@
#!/usr/bin/env bash
# ABOUTME: Rofi-based calendar widget with month navigation.
# ABOUTME: Displays a calendar grid and highlights the current day.
DIR=$(dirname $PWD)
current_day=$(date +"%e")
current_month=$(date +"%m")
current_year=$(date +"%Y")
month=$(date +"%-m")
year=$(date +"%Y")
previous_month="◀"
next_month="▶"
last_selected_option=""
format_calendar () {
echo "$1" \
| sed -E 's/([[:alpha:]])__/\1\n/g' \
| sed -E 's/___([[:digit:]])/.\n\1/g' \
| sed -e 's/___/\n./g' \
| sed -e 's/__/\n/g' \
| sed -e 's/_/\n/g'
}
print_month() {
calendar="$(cal -v -- $1 $2 | tail -n +2 | sed -e 's/ /_/g')"
echo "$(format_calendar "$calendar")"
}
find_day_index() {
index=0
while IFS=' ' read -ra arr; do
for i in "${arr[@]}"; do
if [[ "$i" == "$2" ]]; then
echo "$index"
break
fi
((index++))
done
done <<< "$1"
}
calendar_menu() {
calendar_header=$(cal -v -- $month $year | head -n 1)
month_page="$(print_month $month $year)"
calendar_body="\n\n\n$previous_month\n\n\n\n$month_page\n\n\n\n$next_month\n\n\n"
previous_month_index="3"
next_month_index="59"
calendar_body_column="7"
urgent="-u $previous_month_index,$next_month_index"
active=""
selected_row=""
if [[ "$(echo $current_month | bc) $current_year" == "$(echo $month | bc) $year" ]]; then
current_day_index=$(($(find_day_index "$month_page" $current_day) + $calendar_body_column))
active="-a $current_day_index"
selected_row="-selected-row $current_day_index"
fi
if [[ $last_selected_option == $previous_month ]]; then
selected_row="-selected-row $previous_month_index"
fi
if [[ $last_selected_option == $next_month ]]; then
selected_row="-selected-row $next_month_index"
fi
echo -e "$calendar_body" | rofi -dmenu \
-theme /etc/xdg/rofi/calendar/rofi-calendar.rasi \
-p "$calendar_header" $urgent $active $selected_row
}
while [[ true ]]; do
selected=$(calendar_menu)
last_selected_option="$selected"
case $selected in
$previous_month)
((month--))
if [[ $month -lt 1 ]]; then
month=12
((year--))
fi
;;
$next_month)
((month++))
if [[ $month -gt 12 ]]; then
month=1
((year++))
fi
;;
*)
break
;;
esac
done

View File

@ -1,26 +0,0 @@
#!/usr/bin/env bash
# ABOUTME: Rofi-based clipboard history manager using cliphist and wl-copy.
# ABOUTME: Lists clipboard entries and copies the selected one.
CLIPHIST_DB="/run/user/1000/cliphist/db"
function start_rofi() {
local content="$1"
echo -e "$content" | rofi -dmenu -theme /etc/xdg/rofi/themes/clipboard.rasi -mesg "󰅍 Clipboard History"
}
function main() {
local entries
local result
entries=$(cliphist -db-path "$CLIPHIST_DB" list)
result=$(start_rofi "$entries")
if [ -n "$result" ]; then
echo "$result" | cliphist -db-path "$CLIPHIST_DB" decode | wl-copy
else
exit 1
fi
}
main

View File

@ -39,7 +39,7 @@ function print_menu()
function start()
{
# print_menu | rofi -dmenu -p "?=>"
print_menu | sort | rofi -theme /etc/xdg/rofi/themes/cpugov.rasi -show "CPU Modes" -dmenu -mesg "󰓅 CPU Modes" -i -p "rofi-bangs: "
print_menu | sort | rofi -theme /etc/xdg/rofi/cpugov/rofi-cpugov.rasi -show "CPU Modes" -dmenu -mesg "󰓅 CPU Modes" -i -p "rofi-bangs: "
}

View File

@ -2,7 +2,6 @@
# ABOUTME: Waybar-Modul das den DND-Status von dunst als JSON ausgibt.
# ABOUTME: Wird von der Waybar custom/dnd Config referenziert.
set -euo pipefail
trap '' PIPE
readonly ENABLED=''
readonly DISABLED=''

14
defaults/bin/moonarch-emojis Executable file
View File

@ -0,0 +1,14 @@
#!/bin/sh
# ABOUTME: Rofi emoji picker that copies selected emoji to clipboard.
# ABOUTME: Reads emoji list from /etc/xdg/rofi/emojis/emojis.txt.
FILE="/etc/xdg/rofi/emojis/emojis.txt"
if [ "$@" ]
then
smiley=$(echo $@ | cut -d' ' -f1)
echo -n "$smiley" | xsel -bi
exit 0
fi
cat $FILE

63
defaults/bin/moonarch-gtk-style Executable file
View File

@ -0,0 +1,63 @@
#!/usr/bin/env python3
# ABOUTME: Converts GTK theme colors to rofi-compatible CSS color values.
# ABOUTME: Reads a template file and replaces {@theme_*_color} placeholders with hex values.
# https://github.com/Git-Fal7/gtk-rofi/
# Taken from MATE-HUD github.com/ubuntu-mate/mate-hud
# Used for rofi css
# Usage
# ./moonarch-gtk-style [input file] > [output file]
# examples
# background-color: {@theme_bg_color}
# see the array below for list of style context to use
import sys
if len(sys.argv)<2:
sys.exit(1)
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gio, GLib, Gtk
#Converts from rgba <GTK R, G, B> to hex #RRGGBB
def rgba_to_hex(color):
return "#{0:02x}{1:02x}{2:02x}".format( int(color.red * 255), int(color.green * 255), int(color.blue * 255))
window = Gtk.Window()
style_context = window.get_style_context()
#List of style contexts
lists = [
#Foreground
'theme_fg_color', 'theme_selected_fg_color', 'theme_fg_color',
'warning_fg_color', 'info_fg_color',
#Background
'theme_bg_color', 'theme_selected_bg_color', 'error_bg_color',
'warning_bg_color', 'info_bg_color',
#Others
'theme_unfocused_fg_color', 'theme_text_color',
'theme_unfocused_text_color',
'theme_base_color',
'theme_unfocused_fg_color',
'theme_unfocused_text_color',
'theme_unfocused_bg_color',
'theme_unfocused_base_color',
'theme_unfocused_selected_bg_color',
'theme_unfocused_selected_fg_color',
'unfocused_insensitive_color',
'borders',
'unfocused_borders',
'warning_color',
'error_color',
'success_color'
]
with open(sys.argv[1]) as f:
file=f.read()
for style in lists:
file=file.replace("{@" + style + "}", rgba_to_hex(style_context.lookup_color(style)[1]))
print(file)

52
defaults/bin/moonarch-json Executable file
View File

@ -0,0 +1,52 @@
#!/bin/bash
# ABOUTME: Rofi helper that reads a JSON config file to build a dynamic menu.
# ABOUTME: Parses name/command/icon fields from JSON and launches selected entries.
#https://github.com/luiscrjunior/rofi-json
user_file="${1/#\~/$HOME}"
if [[ "$user_file" = /* ]]
then
config_file="$user_file"
else
cwd=$(dirname $0)
config_file="${cwd}/${user_file}"
fi
json=$(cat ${config_file})
if [ $# -eq 1 ]; then
echo $json | jq -cr '.[] | "\(.name)|\(.command)|\(.icon)"' |
while IFS="|" read -r name command icon
do
if [[ $name == "null" ]]; then
continue
fi
if [[ $icon == "null" ]]; then
icon="system-run"
fi
echo -en "${name}\0icon\x1f${icon}\n"
done
exit 1
fi
if [ $# -eq 2 ]; then
selected=$2
task=$(echo $json | jq ".[] | select(.name == \"$selected\")")
if [[ $task == "" ]]; then
exit 1
fi
command=$(echo $task | jq -j ".command")
if [[ $command == "null" ]]; then
command=$(echo $task | jq -j ".name")
fi
coproc bash -c "$command"
exit
fi

View File

@ -1,7 +1,24 @@
#!/usr/bin/env bash
# ABOUTME: Application launcher using rofi with Catppuccin Mocha theme.
# ABOUTME: Application launcher using rofi with GTK theme integration.
# ABOUTME: Supports window, files, run, and drun modes.
SETTINGS=/etc/xdg/rofi/gtk-theme.ini
#Gets the current gtk using gsettings and removes the quotes
CURRENT_GTK_THEME=$(gsettings get org.gnome.desktop.interface gtk-theme)
CURRENT_GTK_THEME="${CURRENT_GTK_THEME#?}"
CURRENT_GTK_THEME="${CURRENT_GTK_THEME%?}"
#Gets the gtk theme that is in the settings.ini file
SETTINGS_GTK_THEME=$(grep "GTK_THEME" "${SETTINGS}" | cut -b 11-)
#create new colors.rasi from template
if [ "${SETTINGS_GTK_THEME}" != "${CURRENT_GTK_THEME}" ]; then
sed -i "s:GTK_THEME=${SETTINGS_GTK_THEME}:GTK_THEME=${CURRENT_GTK_THEME}:g" "${SETTINGS}"
python3 moonarch-gtk-style /etc/xdg/rofi/_template/colors.rasi > /etc/xdg/rofi/colors.rasi
fi
case $1 in
window)
showmode="window"
@ -21,4 +38,4 @@ esac
rofi \
-show $showmode \
-click-to-exit \
-theme /etc/xdg/rofi/themes/launcher.rasi
-theme /etc/xdg/rofi/launcher/launcher.rasi

9
defaults/bin/moonarch-locate Executable file
View File

@ -0,0 +1,9 @@
#!/bin/bash
# ABOUTME: Rofi-based file search using the locate/mlocate database.
# ABOUTME: Opens selected files with xdg-open.
# info: rofi-locate is a script to search local files and folders on your computer using the locate command and the updatedb database
# requirements: rofi mlocate
# playlist: rofi https://www.youtube.com/playlist?list=PLqv94xWU9zZ0LVP1SEFQsLEYjZC_SUB3m
xdg-open "$(locate home media | rofi -threads 0 -width 100 -dmenu -i -p "locate:")"

84
defaults/bin/moonarch-powermenu Executable file
View File

@ -0,0 +1,84 @@
#!/usr/bin/env bash
# ABOUTME: Rofi-basiertes Power-Menü für Moonarch (Niri).
# ABOUTME: Bietet Shutdown, Reboot, Lock, Suspend und Logout.
# CMDs
uptime="`uptime -p | sed -e 's/up //g'`"
host="$USER@"`hostname`
# Options
shutdown='󰤆'
reboot=''
lock=''
suspend=''
logout='󰗽'
yes=''
no='󰆢'
# Rofi CMD
rofi_cmd() {
rofi -dmenu \
-p "$host uptime: $uptime" \
-mesg "$host uptime: $uptime" \
-theme /etc/xdg/rofi/powermenu/powermenu.rasi
}
# Confirmation CMD
confirm_cmd() {
rofi -dmenu \
-p 'Confirmation' \
-normal-window \
-mesg 'Confirm '${chosen} \
-theme /etc/xdg/rofi/powermenu/confirm.rasi
}
# Ask for confirmation
confirm_exit() {
echo -e "$yes\n$no" | confirm_cmd ${chosen}
}
# Pass variables to rofi dmenu
run_rofi() {
echo -e "$lock\n$suspend\n$logout\n$reboot\n$shutdown" | rofi_cmd
}
# Execute Command
run_cmd() {
selected="$(confirm_exit)"
if [[ "$selected" == "$yes" ]]; then
if [[ $1 == '--shutdown' ]]; then
systemctl poweroff
elif [[ $1 == '--reboot' ]]; then
systemctl reboot
elif [[ $1 == '--suspend' ]]; then
mpc -q pause
amixer set Master mute
systemctl suspend
elif [[ $1 == '--logout' ]]; then
niri msg action quit
fi
else
exit 0
fi
}
# Actions
chosen="$(run_rofi)"
case ${chosen} in
$shutdown)
run_cmd --shutdown
;;
$reboot)
run_cmd --reboot
;;
$lock)
killall rofi
wlogout -P 1 -s -r 10 -c 10
;;
$suspend)
run_cmd --suspend
;;
$logout)
run_cmd --logout
;;
esac

View File

@ -1,43 +0,0 @@
#!/usr/bin/env bash
# ABOUTME: Rofi-based session menu with horizontal icon layout.
# ABOUTME: Replaces wlogout — provides lock, logout, suspend, hibernate, reboot, shutdown.
declare -A actions
declare -a order
order=("lock" "logout" "suspend" "hibernate" "reboot" "shutdown")
actions[lock]="gtklock"
actions[logout]="niri msg action quit"
actions[suspend]="systemctl suspend"
actions[hibernate]="systemctl hibernate"
actions[reboot]="systemctl reboot"
actions[shutdown]="systemctl poweroff"
# GTK icon theme names
declare -A icons
icons[lock]="system-lock-screen"
icons[logout]="system-log-out"
icons[suspend]="system-suspend"
icons[hibernate]="system-suspend-hibernate"
icons[reboot]="system-reboot"
icons[shutdown]="system-shutdown"
# Build menu — use rofi icon protocol
menu=""
for key in "${order[@]}"; do
[[ -n "$menu" ]] && menu+="\n"
menu+="${key}\x00icon\x1f${icons[$key]}"
done
selected=$(echo -e "$menu" | rofi -dmenu \
-theme /etc/xdg/rofi/themes/session.rasi \
-show-icons \
-p "")
[[ -z "$selected" ]] && exit 0
# Execute the selected action
if [[ -n "${actions[$selected]+x}" ]]; then
eval "${actions[$selected]}"
fi

View File

@ -6,7 +6,7 @@
# @author moonarch.de (nevaforget)
# script used with rofi to list desktop files of specific dir
# dir: /usr/share/settings-menu/
# @example rofi -show fb -modes "fb:moonarch-setmen" -theme /etc/xdg/rofi/themes/settings-menu.rasi
# @example rofi -show fb -modes "fb:moonarch-setmen" -theme /etc/xdg/rofi/settings-menu/settings-menu.rasi
# @dependencies glib >= 2.67.2
####

135
defaults/bin/moonarch-settings Executable file
View File

@ -0,0 +1,135 @@
#!/usr/bin/env bash
# ABOUTME: Rofi-based settings menu that launches various system tools and scripts.
# ABOUTME: Provides a searchable list of system utilities like VPN, sound, bluetooth, etc.
declare -A LABELS
declare -A COMMANDS
###
# List of defined 'bangs'
# launch programs
# COMMANDS["apps"]="rofi -combi-modi window,drun -show combi"
# LABELS["apps"]=""
# open bookmarks
# COMMANDS["bookmarks"]="~/.scripts/rofi-scripts-collection/rofi-surfraw-bookmarks.sh"
# LABELS["bookmarks"]=""
# search local files
# COMMANDS[""]="moonarch-locate"
# LABELS[""]="Locate"
COMMANDS[""]="wlogout -P 1 -s -r 10 -c 10"
LABELS[""]="Session Menu"
# greenclip clipboard history
# source: https://github.com/erebe/greenclip
COMMANDS[""]='cliphist -db-path /run/user/1000/cliphist/db list | rofi -dmenu | cliphist -db-path /run/user/1000/cliphist/db decode | wl-copy'
LABELS[""]="Clipboard"
COMMANDS["󰖂"]='moonarch-vpn'
LABELS["󰖂"]='VPN Connection Manager'
COMMANDS[""]='waypaper'
LABELS[""]='Wallpaper Settings'
COMMANDS["󰗅"]='moonarch-volume'
LABELS["󰗅"]='Sound Manager'
#COMMANDS[""]='shortcuts module was removed'
#LABELS[""]='Hotkey List'
COMMANDS["󰍹"]='wdisplays'
LABELS["󰍹"]='Display Setup'
COMMANDS[""]='nwg-look'
LABELS[""]='Appearance Settings'
COMMANDS["󱘆"]='noisetorch'
LABELS["󱘆"]='Audio Noise Reduction'
COMMANDS["󰋋"]='$HOME/.local/share/headset-charge-indicator/headset-charge-indicator.py &'
LABELS["󰋋"]='Headset Control'
COMMANDS[""]='moonarch-bluetooth'
LABELS[""]='Bluetooth Control'
COMMANDS["󰛳"]='nm-applet --indicator &'
LABELS["󰛳"]='Networker Manager'
COMMANDS["󰴱"]='wl-color-picker'
LABELS["󰴱"]='Color Picker'
COMMANDS["󰚞"]='font-manager'
LABELS["󰚞"]='Font Manager'
COMMANDS["󱨑"]='gufw'
LABELS["󱨑"]='Firewall Settings'
COMMANDS[""]='env GTK_THEME=Adwaita:dark resources'
LABELS[""]='System Resources'
COMMANDS["󰓅"]='moonarch-cpugov'
LABELS["󰓅"]='CPU Modes'
COMMANDS["󰓅"]='hardinfo'
LABELS["󰓅"]='System Profiler and Benchmark'
COMMANDS["󰀠"]='alarm-clock-applet'
LABELS["󰀠"]='Alarm & Timer'
COMMANDS["󱓞"]='moonarch-launcher'
LABELS["󱓞"]='App Launcher'
################################################################################
# do not edit below
################################################################################
##
# Generate menu
##
function print_menu()
{
for key in ${!LABELS[@]}
do
# echo "$key ${LABELS}"
echo "$key ${LABELS[$key]}"
# my top version just shows the first field in labels row, not two words side by side
done
}
##
# Show rofi.
##
function start()
{
# print_menu | rofi -dmenu -p "?=>"
title="MoonArch \ $USER \ $(date +"%H:%M") \ $(uptime -p | sed 's/up //')"
print_menu | sort | rofi -theme /etc/xdg/rofi/settings-menu/settings-menu.rasi -show $title -dmenu -markup-rows -mesg "󰣇 $title" -i -p "rofi-bangs: "
}
# Run it
value="$(start)"
# Split input.
# grab upto first space.
choice=${value%%\ *}
# graph remainder, minus space.
input=${value:$((${#choice}+1))}
##
# Cancelled? bail out
##
if test -z ${choice}
then
exit
fi
# check if choice exists
if test ${COMMANDS[$choice]+isset}
then
# Execute the choice
${COMMANDS[$choice]}
else
echo "Unknown command: ${choice}" | rofi -dmenu -p "error"
fi

View File

@ -6,7 +6,7 @@
# changes default sink and moves all streams to that sink
#https://gist.github.com/Nervengift/844a597104631c36513c?permalink_comment_id=1826282
sink=$(ponymix -t sink list|awk '/^sink/ {s=$1" "$2;getline;gsub(/^ +/,"",$0);print s" "$0}'|rofi -dmenu -theme '/etc/xdg/rofi/themes/volume.rasi' -mesg '󱡫 Sink Switcher' -p 'pulseaudio sink:' -location 6 -width 100|grep -Po '[0-9]+(?=:)') &&
sink=$(ponymix -t sink list|awk '/^sink/ {s=$1" "$2;getline;gsub(/^ +/,"",$0);print s" "$0}'|rofi -dmenu -theme '/etc/xdg/rofi/volume/volume.rasi' -mesg '󱡫 Sink Switcher' -p 'pulseaudio sink:' -location 6 -width 100|grep -Po '[0-9]+(?=:)') &&
ponymix set-default -d $sink &&

142
defaults/bin/moonarch-ssh Executable file
View File

@ -0,0 +1,142 @@
#!/usr/bin/env bash
# ABOUTME: Rofi-based tool launcher with SSH and system utility shortcuts.
# ABOUTME: Provides a searchable menu of tools including VPN, sound, bluetooth, etc.
declare -A LABELS
declare -A COMMANDS
###
# List of defined 'bangs'
# launch programs
# COMMANDS["apps"]="rofi -combi-modi window,drun -show combi"
# LABELS["apps"]=""
# open bookmarks
# COMMANDS["bookmarks"]="~/.scripts/rofi-scripts-collection/rofi-surfraw-bookmarks.sh"
# LABELS["bookmarks"]=""
# search local files
COMMANDS[""]="moonarch-locate"
LABELS[""]="Locate"
# open custom web searches
# COMMANDS["websearch"]="~/.scripts/rofi-scripts-collection/rofi-surfraw-websearch.sh"
# LABELS["websearch"]=""
# show clipboard history
# source: https://bitbucket.org/pandozer/rofi-clipboard-manager/overview
# COMMANDS["clipboard"]='rofi -modi "clipboard:~/.bin/rofi-clipboard-manager/mclip.py menu" -show clipboard && ~/.bin/rofi-clipboard-manager/mclip.py paste'
# LABELS["clipboard"]=""
# references --------------------------
# COMMANDS[";sr2"]="chromium 'wikipedia.org/search-redirect.php?search=\" \${input}\""
# LABELS[";sr2"]=""
# COMMANDS[";piratebay"]="chromium --disk-cache-dir=/tmp/cache http://thepiratebay.org/search/\" \${input}\""
# LABELS[";piratebay"]=""
# COMMANDS[".bin"]="spacefm -r '/home/dka/bin'"
# LABELS[".bin"]=".bin"
# COMMANDS["#screenshot"]='/home/dka/bin/screenshot-scripts/myscreenshot.sh'
# LABELS["#screenshot"]="screenshot"
# greenclip clipboard history
# source: https://github.com/erebe/greenclip
COMMANDS[""]='rofi -modi "clipboard:greenclip print" -show Clipboard'
LABELS[""]="Clipboard"
COMMANDS["󰖂"]='moonarch-vpn'
LABELS["󰖂"]='VPN Connection Manager'
COMMANDS["󰗅"]='moonarch-volume'
LABELS["󰗅"]='Sound Manager'
#COMMANDS[""]='shortcuts module was removed'
#LABELS[""]='Hotkey List'
COMMANDS[""]='wlogout'
LABELS[""]='Session Menu'
COMMANDS["󰍹"]='wdisplays'
LABELS["󰍹"]='Display Setup'
COMMANDS[""]='nwg-look'
LABELS[""]='Appearance Settings'
COMMANDS["󱘆"]='noisetorch'
LABELS["󱘆"]='Audio Noise Reduction'
COMMANDS["󰋋"]='$HOME/.local/share/headset-charge-indicator/headset-charge-indicator.py &'
LABELS["󰋋"]='Headset Control'
COMMANDS[""]='moonarch-bluetooth'
LABELS[""]='Bluetooth Control'
COMMANDS["󰛳"]='nm-applet --indicator &'
LABELS["󰛳"]='Networker Manager'
COMMANDS["󰴱"]='wl-color-picker'
LABELS["󰴱"]='Color Picker'
COMMANDS["󰚞"]='font-manager'
LABELS["󰚞"]='Font Manager'
COMMANDS["󱨑"]='gufw'
LABELS["󱨑"]='Firewall Settings'
COMMANDS[""]='stacer'
LABELS[" "]='System Maintenance'
################################################################################
# do not edit below
################################################################################
##
# Generate menu
##
function print_menu()
{
for key in ${!LABELS[@]}
do
# echo "$key ${LABELS}"
echo "$key ${LABELS[$key]}"
# my top version just shows the first field in labels row, not two words side by side
done
}
##
# Show rofi.
##
function start()
{
# print_menu | rofi -dmenu -p "?=>"
print_menu | sort | rofi -show "Tools" -dmenu -mesg " Tools" -i -p "rofi-bangs: "
}
# Run it
value="$(start)"
# Split input.
# grab upto first space.
choice=${value%%\ *}
# graph remainder, minus space.
input=${value:$((${#choice}+1))}
##
# Cancelled? bail out
##
if test -z ${choice}
then
exit
fi
# check if choice exists
if test ${COMMANDS[$choice]+isset}
then
# Execute the choice
${COMMANDS[$choice]}
else
echo "Unknown command: ${choice}" | rofi -dmenu -p "error"
fi

View File

@ -7,7 +7,7 @@
#
## Applets : Volume
theme="/etc/xdg/rofi/themes/volume.rasi"
theme="/etc/xdg/rofi/volume/volume.rasi"
# Volume Info
mixer="`amixer info Master | grep 'Mixer name' | cut -d':' -f2 | tr -d \',' '`"

View File

@ -80,7 +80,7 @@ function extract_connection_name_from_result() {
# used as lines to select from.
function start_rofi() {
local content="$1"
echo -e "$content" | rofi -dmenu -theme /etc/xdg/rofi/themes/vpn.rasi -mesg "󰖂 VPN Connection Manager" -icon "󰖂"
echo -e "$content" | rofi -dmenu -theme /etc/xdg/rofi/nm-vpn/nm-vpn.rasi -mesg "󰖂 VPN Connection Manager" -icon "󰖂"
}
# List the VPN connections and let the user toggle one using rofi.

View File

@ -1,37 +0,0 @@
{
// ABOUTME: User-Override fuer Waybar — erweitert die systemweite Config aus /etc/xdg/waybar/.
// ABOUTME: Eigene Module hier definieren und in modules-left/center/right eintragen.
// Systemweite Moonarch-Config als Basis laden.
// Properties die hier definiert werden, ueberschreiben die aus dem Include.
"include": ["/etc/xdg/waybar/config"]
// Beispiel: Modul-Leiste erweitern (muss komplett angegeben werden, da sie die
// systemweite ersetzt):
//
// "modules-right": [
// "mpris",
// "custom/cpugov",
// "group/net",
// "group/sound",
// "backlight",
// "battery",
// "battery#keyboard",
// "group/indicators"
// ],
// Beispiel: Logitech-Tastatur-Akku anzeigen
// (hidpp_battery_X ggf. anpassen — siehe /sys/class/power_supply/)
//
// "battery#keyboard": {
// "bat": "hidpp_battery_4",
// "interval": 120,
// "states": {
// "warning": 35,
// "critical": 20
// },
// "format": "{capacity}% 󰌌",
// "format-charging": "{capacity}% 󰌌",
// "tooltip-format": "Tastatur: {capacity}%"
// }
}

View File

@ -1,18 +0,0 @@
/* ABOUTME: User-Override fuer Waybar-Styling — erweitert die systemweite style.css. */
/* ABOUTME: Eigene Styles hier definieren, die systemweite Basis wird per @import geladen. */
@import url("/etc/xdg/waybar/style.css");
/* Eigene Styles unterhalb eintragen. */
/* Selektoren aus der systemweiten Config koennen hier ueberschrieben werden. */
/* Beispiel: Logitech-Tastatur-Akku einfaerben */
/*
#battery-keyboard.warning:not(.charging) {
color: #e6a200;
}
#battery-keyboard.critical:not(.charging) {
color: #cc3436;
}
*/

View File

@ -121,13 +121,13 @@ window-rule {
binds {
Mod+Shift+Slash { show-hotkey-overlay; }
Super+C hotkey-overlay-title=null { spawn "moonarch-clipboard"; }
Super+C hotkey-overlay-title=null { spawn-sh "cliphist -db-path /run/user/1000/cliphist/db list | rofi -dmenu | cliphist -db-path /run/user/1000/cliphist/db decode | wl-copy"; }
Alt+W { spawn-sh "killall waybar && waybar &"; }
Super+E { spawn-sh "xdg-open ~"; }
Super+T { spawn-sh "pkill rofi || rofi -show fb -modes \"fb:moonarch-setmen\" -theme /etc/xdg/rofi/themes/settings-menu.rasi"; }
Super+T { spawn-sh "pkill rofi || rofi -show fb -modes \"fb:moonarch-setmen\" -theme /etc/xdg/rofi/settings-menu/settings-menu.rasi"; }
Super+N { spawn-sh "pkill rofi || moonarch-vpn"; }

View File

@ -0,0 +1,82 @@
/**
* @author Dominik Kressler
* @package rofi-archer
* @version 1.0.0
**/
* {
background: {@theme_bg_color};
background-alt: {@theme_unfocused_fg_color}80;
foreground: {@theme_text_color};
selected: #4c566a;
border: {@borders};
active: #98C37988;
urgent: var(error-color);
/*https://catppuccin.ryanccn.dev/palette*/
rosewater: #f5e0dc;
flamingo: #f2cdcd;
pink: #f5c2e7;
mauve: #cba6f7;
red: #f38ba8;
maroon: #eba0ac;
peach: #fab387;
yellow: #f9e2af;
green: #a6e3a1;
teal: #94e2d5;
sky: #89dceb;
sapphire: #74c7ec;
blue: #89b4fa;
lavender: #b4befe;
text: {@theme_text_color};
subtext1: {@theme_text_color}80;
subtext0: #a6adc8;
overlay0: #6c7086;
overlay1: #7f849c;
overlay2: #9399b2;
surface0: #313244;
surface1: #45475a;
surface2: #585b70;
base: #1e1e2e;
mantle: #181825;
crust: #11111b;
/* GTK THEME VARS*/
theme-fg-color: {@theme_fg_color};
theme-text-color: {@theme_text_color};
theme-bg-color: {@theme_bg_color};
theme-base-color: {@theme_base_color};
theme-bg-color-shade-1: {@theme_bg_color}EF;
theme-bg-color-shade-2: {@theme_bg_color}D8;
theme-bg-color-shade-3: {@theme_bg_color}C9;
theme-selected-bg-color: {@theme_selected_bg_color};
theme-selected-fg-color: {@theme_selected_fg_color};
theme-unfocused-fg-color: {@theme_unfocused_fg_color};
theme-unfocused-text-color: {@theme_unfocused_text_color};
theme-unfocused-bg-color: {@theme_unfocused_bg_color};
theme-unfocused-base-color: {@theme_unfocused_base_color};
theme-unfocused-selected-bg-color: {@theme_unfocused_selected_bg_color};
theme-unfocused-selected-fg-color: {@theme_unfocused_selected_fg_color};
unfocused-insensitive-color: {@unfocused_insensitive_color};
borders: {@theme_selected_bg_color}30;
unfocused-borders: {@unfocused_borders};
warning-color: {@warning_color};
error-color: {@error_color};
success-color: {@success_color};
}

View File

@ -0,0 +1,157 @@
* {
on: #98B3C8;
off: #CC9498;
}
/*****----- Global Properties -----*****/
@import "../colors.rasi"
@import "../fonts.rasi"
configuration {
show-icons: false;
icon-theme: "Papirus";
display-drun: ":";
drun-display-format: "{name}";
threads: 0;
scroll-method: 0;
disable-history: false;
fullscreen: false;
hide-scrollbar: true;
sidebar-mode: false;
}
window {
transparency: "real";
background-color: @background;
text-color: @foreground;
border: 0px;
border-radius: 0px;
border-color: @selected;
width: 384px;
location: center;
anchor: center;
x-offset: 0;
y-offset: 0;
}
prompt {
enabled: true;
padding: 4px 4px 6px 6px;
background-color: @background;
text-color: @foreground;
}
textbox-prompt-colon {
expand: false;
str: "";
background-color: @background;
text-color: @urgent;
padding: 5px 0px 0px 4px;
}
inputbar {
children: [ textbox-prompt-colon, prompt ];
background-color: @background;
text-color: @foreground;
expand: false;
border: 0px 0px 1px 0px;
border-radius: 0px;
border-color: @selected;
margin: 0px 0px 0px 0px;
padding: 0px 0px 0px 0px;
position: center;
}
entry {
background-color: @background;
text-color: @foreground;
placeholder-color: @foreground;
expand: true;
horizontal-align: 0;
placeholder: "Search";
blink: true;
padding: 4px 0px 0px 0px;
}
case-indicator {
background-color: @background;
text-color: @foreground;
spacing: 0;
}
listview {
background-color: @background;
columns: 9;
lines: 7;
spacing: 5px;
cycle: true;
dynamic: true;
layout: vertical;
}
mainbox {
background-color: @background;
children: [ inputbar, listview ];
spacing: 5px;
padding: 5px 5px 5px 5px;
}
element {
background-color: @background;
text-color: @foreground;
orientation: horizontal;
border: 0px;
border-radius: 0px;
border-color: @selected;
padding: 5px 5px 5px 5px;
}
element-icon {
size: 24px;
border: 0px;
}
element-text {
expand: true;
horizontal-align: 0;
vertical-align: 0;
margin: 2px 0px 2px 2px;
}
element selected {
background-color: @selected;
text-color: @background;
border: 0px;
border-radius: 0px;
border-color: @selected;
}
element.active,
element.selected.urgent {
background-color: @background-alt;
text-color: @background;
border-color: @background-alt;
}
element.selected.urgent {
border-color: @urgent;
}
element.urgent,
element.selected.active {
background-color: @background;
text-color: @foreground;
border-color: @background;
}
element.selected.active {
border-color: @selected;
}
element-text, element-icon {
background-color: inherit;
text-color: inherit;
}

View File

@ -80,7 +80,7 @@ window {
border-color: var(borders);
cursor: "default";
background-color: @theme-bg-color-shade-1;
background-color: @theme-bg-color-shade-3;
}

View File

@ -0,0 +1,280 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Rofi Theme File
* Rofi Version: 1.7.3
**/
@import "../config.rasi"
@import "../colors.rasi"
/*****----- Configuration -----*****/
configuration {
show-icons: true;
display-emoji: "";
}
/*****----- Global Properties -----*****/
* {
border-colour: var(border);
handle-colour: var(selected);
background-colour: var(background);
foreground-colour: var(foreground);
alternate-background: var(background-alt);
normal-background: var(background);
normal-foreground: var(foreground);
urgent-background: var(urgent);
urgent-foreground: var(background);
active-background: var(active);
active-foreground: var(background);
selected-normal-background: var(selected);
selected-normal-foreground: var(background);
selected-urgent-background: var(active);
selected-urgent-foreground: var(background);
selected-active-background: var(urgent);
selected-active-foreground: var(background);
alternate-normal-background: var(background);
alternate-normal-foreground: var(foreground);
alternate-urgent-background: var(urgent);
alternate-urgent-foreground: var(background);
alternate-active-background: var(active);
alternate-active-foreground: var(background);
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 600px;
x-offset: 0px;
y-offset: 0px;
/* properties for all widgets */
enabled: true;
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 30px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
children: [ "message", "listview", "inputbar" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0;
padding: 20px 0px 0;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
children: [ "textbox-prompt-colon", "entry" ];
}
prompt {
enabled: true;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
padding: 5px 0px 0px 15px;
expand: false;
font: "UbuntuSans Nerd Font 14";
str: "";
background-color: inherit;
text-color: inherit;
}
entry {
enabled: true;
padding: 5px 0px;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "...";
placeholder-color: inherit;
}
num-filtered-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
textbox-num-sep {
enabled: true;
expand: false;
str: "/";
background-color: inherit;
text-color: inherit;
}
num-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
case-indicator {
enabled: true;
background-color: inherit;
text-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 4;
lines: 8;
cycle: true;
dynamic: true;
scrollbar: true;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 5px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
background-color: transparent;
text-color: @subtext1;
cursor: "default";
}
scrollbar {
handle-width: 5px;
handle-color: @handle-colour;
border-radius: 10px;
background-color: transparent;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 0px;
margin: 0px;
padding: 5px;
border: 0px solid;
border-radius: 10px;
border-color: @border-colour;
background-color: transparent;
text-color: @text;
cursor: pointer;
}
element normal.normal {
background-color: transparent;
text-color: var(normal-foreground);
}
element normal.urgent {
background-color: var(urgent-background);
text-color: var(urgent-foreground);
}
element normal.active {
background-color: var(normal-foreground);
text-color: var(normal-background);
}
element selected.normal {
background-color: var(selected-normal-background);
text-color: var(normal-foreground);
}
element selected.urgent {
background-color: var(selected-urgent-background);
text-color: var(normal-background);
}
element selected.active {
background-color: var(selected-active-background);
text-color: var(normal-background);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 0;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
button {
padding: 7px 15px 7px 10px;
border: 0px solid;
border-radius: 100%;
border-color: @border-colour;
background-color: @alternate-background;
text-color: inherit;
cursor: pointer;
}
button selected {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
textbox {
padding: 8px 10px;
border: 0px solid;
border-radius: 10px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
placeholder-color: @foreground-colour;
blink: true;
markup: true;
}
error-message {
padding: 10px;
border: 2px solid;
border-radius: 10px;
border-color: @border-colour;
background-color: @background-colour;
text-color: @foreground-colour;
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1 @@
GTK_THEME=catppuccin-mocha-lavender-standard+default

View File

@ -0,0 +1,291 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Rofi Theme File
* Rofi Version: 1.7.3
**/
/*****----- Configuration -----*****/
configuration {
modi: "drun,run,filebrowser,window";
show-icons: true;
drun-display-format: "{name}";
}
/*****----- Global Properties -----*****/
@import "../config.rasi"
@import "../colors.rasi"
@import "../fonts.rasi"
* {
border-colour: var(border);
handle-colour: var(selected);
background-colour: var(background);
foreground-colour: var(foreground);
alternate-background: var(background-alt);
normal-background: var(background);
normal-foreground: var(foreground);
urgent-background: var(urgent);
urgent-foreground: var(background);
active-background: var(active);
active-foreground: var(background);
selected-normal-background: var(selected);
selected-normal-foreground: var(background);
selected-urgent-background: var(active);
selected-urgent-foreground: var(background);
selected-active-background: var(urgent);
selected-active-foreground: var(background);
alternate-normal-background: var(background);
alternate-normal-foreground: var(foreground);
alternate-urgent-background: var(urgent);
alternate-urgent-foreground: var(background);
alternate-active-background: var(active);
alternate-active-foreground: var(background);
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 600px;
x-offset: 0px;
y-offset: 0px;
/* properties for all widgets */
enabled: true;
cursor: "default";
/* Backgroud Colors */
background-color: @background-colour;
/* Backgroud Image */
//background-image: url("/path/to/image.png", none);
/* Simple Linear Gradient */
//background-image: linear-gradient(red, orange, pink, purple);
/* Directional Linear Gradient */
//background-image: linear-gradient(to bottom, pink, yellow, magenta);
/* Angle Linear Gradient */
//background-image: linear-gradient(45, cyan, purple, indigo);
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 30px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
children: [ "message", "listview", "inputbar" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
margin: 0;
padding: 20px 0px 0;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
children: [ "textbox-prompt-colon", "entry", "mode-switcher" ];
}
prompt {
enabled: true;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
padding: 5px 0px 0px 15px;
expand: false;
font: "UbuntuSans Nerd Font 14";
str: "";
background-color: inherit;
text-color: inherit;
}
entry {
enabled: true;
padding: 5px 0px;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "...";
placeholder-color: inherit;
}
num-filtered-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
textbox-num-sep {
enabled: true;
expand: false;
str: "/";
background-color: inherit;
text-color: inherit;
}
num-rows {
enabled: true;
expand: false;
background-color: inherit;
text-color: inherit;
}
case-indicator {
enabled: true;
background-color: inherit;
text-color: inherit;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 2;
lines: 8;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 5px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: "default";
}
scrollbar {
handle-width: 5px;
handle-color: @handle-colour;
border-radius: 10px;
background-color: transparent;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 0;
margin: 0px;
padding: 5px 10px;
border: 0px solid;
border-radius: 10px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
cursor: pointer;
}
element normal.normal {
background-color: transparent;
text-color: var(normal-foreground);
}
element normal.urgent {
background-color: var(urgent-background);
text-color: var(urgent-foreground);
}
element normal.active {
background-color: var(normal-foreground);
text-color: var(normal-background);
}
element selected.normal {
background-color: var(selected-normal-background);
text-color: var(normal-foreground);
}
element selected.urgent {
background-color: var(selected-urgent-background);
text-color: var(normal-background);
}
element selected.active {
background-color: var(selected-active-background);
text-color: var(normal-background);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 0;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
highlight: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
spacing: 10px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
button {
padding: 7px 15px 7px 10px;
border: 0px solid;
border-radius: 100%;
border-color: @border-colour;
background-color: @alternate-background;
text-color: inherit;
cursor: pointer;
}
button selected {
background-color: var(selected-normal-background);
text-color: var(selected-normal-foreground);
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border-colour;
background-color: transparent;
text-color: @foreground-colour;
}
textbox {
padding: 8px 10px;
border: 0px solid;
border-radius: 10px;
border-color: @border-colour;
background-color: @alternate-background;
text-color: @foreground-colour;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
placeholder-color: @foreground-colour;
blink: true;
markup: true;
}
error-message {
padding: 10px;
border: 2px solid;
border-radius: 10px;
border-color: @border-colour;
background-color: @background-colour;
text-color: @foreground-colour;
}

View File

@ -0,0 +1,76 @@
@import "config.rasi"
@import "colors.rasi"
configuration {
show-icons: false;
}
window {
width:200px;
}
mainbox {
children: [ "message", "listview"];
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 8px;
border: 0px solid;
border-radius: 100%;
background-color: transparent;
text-color: var(theme-text-color);
}
textbox {
background-color: inherit;
text-color: inherit;
placeholder-color: var(theme-text-color);
font: "UbuntuSans Nerd Font Bold 12";
}
error-message {
padding: 12px;
border: 0px solid;
border-radius: 0px;
background-color: var(theme-bg-color);
text-color: var(theme-text-color);
}
listview {
columns: 2;
lines: 1;
layout:vertical;
}
element {
enabled: true;
spacing: 0px;
margin: 0px;
border: 0px solid;
border-radius: 100%;
background-color: transparent;
cursor: "pointer";
}
element-text {
background-color: transparent;
text-color: var(theme-text-color);
cursor: inherit;
horizontal-align: 0.5;
vertical-align:0;
font: "UbuntuSans Nerd Font 18";
}
element selected.normal {
background-color: var(theme-selected-bg-color);
text-color: var(theme-selected-fg-color);
}
element-text selected.normal {
text-color: var(mantle);
}

View File

@ -0,0 +1,102 @@
configuration {
show-icons: false;
}
@import "../config.rasi"
window {
fullscreen: true;
border: none;
border-radius: 0;
}
mainbox {
enabled: true;
spacing: 15px;
margin: 0px;
padding: 200px;
background-color: transparent;
children: ["inputbar", "listview" ];
expand: true;
}
inputbar {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 12px 19px 12px 16px;
border-radius: 10px;
text-color: var(theme-selected-bg-color);
children: ["textbox-prompt-colon", "prompt"];
background-color: var(theme-selected-fg-color);
expand: false;
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "󰣇";
margin: 0;
padding: 0 4px 0 0;
font: "UbuntuSans Nerd Font 16";
}
prompt {
padding: 4px 0 0 0;
}
dummy {
background-color: inherit;
}
listview {
enabled: true;
layout: horizontal;
columns: 2;
lines: 5;
cycle: true;
dynamic: false;
scrollbar: false;
reverse: false;
fixed-height: true;
fixed-columns: true;
vertical-align: 0.5;
horizontal-align: 0.5;
spacing: 15px;
background-color: transparent;
text-color: var(theme-text-color);
cursor: "default";
padding: 0;
margin:0 ;
}
element {
enabled: true;
spacing: 0px;
margin: 0px;
border: 0px solid;
border-radius: 10px;
background-color: transparent;
cursor: "pointer";
}
element-text {
font: "UbuntuSans Nerd Font 28";
background-color: transparent;
text-color: var(text);
cursor: inherit;
vertical-align: 0;
horizontal-align: 1;
padding: 0 10px;
}
element selected.normal {
background-color: var(theme-selected-bg-color);
}
element-text selected.normal {
text-color: var(theme-bg-color);
}

View File

@ -1,44 +0,0 @@
configuration {
modi: "drun";
show-icons: false;
drun-display-format: "{name}";
}
@import "../config.rasi"
@import "../colors.rasi"
window {
enabled: true;
cursor: "default";
width: 600px;
}
mainbox {
children: [ "message", "listview", "inputbar" ];
}
inputbar {
enabled: true;
children: [ "textbox-prompt-colon", "entry", "mode-switcher" ];
}
listview {
enabled: true;
columns: 1;
lines: 10;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
}
element-icon {
size: 0px;
}

View File

@ -1,85 +0,0 @@
/**
* @author Moonarch
* @description Rofi session menu — horizontal icon layout
**/
@import "../config.rasi"
@import "../colors.rasi"
window {
width: 674px;
location: center;
anchor: center;
border-radius: var(border-radius);
border: var(frame-border);
border-color: var(borders);
background-color: @theme-bg-color-shade-1;
}
mainbox {
enabled: true;
spacing: 15px;
padding: 30px;
background-color: transparent;
children: [ "message", "listview" ];
}
message {
enabled: true;
padding: 0;
background-color: transparent;
}
textbox {
background-color: transparent;
text-color: var(theme-text-color);
horizontal-align: 0.5;
font: "UbuntuSans Nerd Font 11";
markup: true;
}
listview {
enabled: true;
columns: 6;
lines: 1;
cycle: true;
dynamic: false;
scrollbar: false;
layout: vertical;
fixed-height: true;
fixed-columns: true;
spacing: 10px;
background-color: transparent;
}
element {
enabled: true;
padding: 15px;
border-radius: var(border-radius);
background-color: transparent;
text-color: var(theme-text-color);
cursor: pointer;
orientation: vertical;
children: [ "element-icon" ];
}
element selected.normal {
background-color: var(theme-selected-fg-color);
text-color: var(theme-selected-bg-color);
}
element-icon {
background-color: transparent;
size: 64px;
cursor: inherit;
horizontal-align: 0.5;
}
element-text {
background-color: transparent;
text-color: inherit;
cursor: inherit;
horizontal-align: 0.5;
vertical-align: 0.5;
font: "UbuntuSans Nerd Font 9";
}

View File

@ -0,0 +1,176 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Rofi Theme File
* Rofi Version: 1.7.3
* ---
*
* @Modification Dominik Kressler
* @package rofi-archer
* @version 1.0.0
**/
/*****----- Configuration -----*****/
configuration {
show-icons: false;
}
/*****----- Global Properties -----*****/
@import "../colors.rasi"
@import "../fonts.rasi"
/*
USE_BUTTONS=YES
*/
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 800px;
x-offset: 0px;
y-offset: 0px;
/* properties for all widgets */
enabled: true;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 10px;
border-color: @selected;
cursor: "default";
background-color: @background;
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 15px;
margin: 0px;
padding: 30px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
children: [ "inputbar", "listview" ];
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 15px;
margin: 0px;
padding: 0px;
border: 0px;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
children: [ "textbox-prompt-colon", "prompt"];
}
dummy {
background-color: transparent;
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
padding: 12px 20px 12px 16px;
border-radius: 100%;
background-color: @urgent;
text-color: @background;
}
prompt {
enabled: true;
padding: 12px;
border-radius: 100%;
background-color: @active;
text-color: @background;
}
/*****----- Message -----*****/
message {
enabled: true;
margin: 0px;
padding: 12px;
border: 0px solid;
border-radius: 100%;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
font-weight: bold;
}
textbox {
background-color: inherit;
text-color: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
placeholder-color: @foreground;
blink: true;
markup: true;
}
error-message {
padding: 12px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: @background;
text-color: @foreground;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 5;
lines: 1;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 15px;
margin: 0px;
padding: 0px;
border: 0px solid;
border-radius: 0px;
border-color: @selected;
background-color: transparent;
text-color: @foreground;
cursor: "default";
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 0px;
margin: 0px;
padding: 40px 10px;
border: 0px solid;
border-radius: 100%;
border-color: @selected;
background-color: @selected;
text-color: var(background-alt);
cursor: pointer;
}
element-text {
font: "UbuntuSans Nerd Font Bold 32";
background-color: transparent;
text-color: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
}
element selected.normal {
background-color: var(background-alt);
text-color: @foreground;
}

View File

@ -98,7 +98,7 @@
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"format-alt": "<b>{:%d.%m.%Y %H:%M}</b>",
"format": "<b>{:%d.%m. %H:%M}</b>",
"timezone": "Europe/Berlin",
"timezone": "DE",
"calendar": {
"mode": "month",
"mode-mon-col": 3,
@ -136,18 +136,18 @@
"format-bluetooth": "{icon} {volume}% {format_source}",
"format-bluetooth-muted": "{icon} {format_source}",
"format-muted": "{icon} <b>0</b>%",
"format-source": "",
"format-source-muted": "",
"format-source": "",
"format-source-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": [
"",
"",
"",
"",
"󰕾"
]
},
@ -167,7 +167,7 @@
"player-icons": {
"default": "⏸",
"mpv": "🎵",
"spotify": "",
"spotify": "",
"firefox": "󰈹",
"mercury": "󰈹"
},
@ -177,13 +177,21 @@
},
"custom/power": {
"format": "󰣇",
"on-click": "wlogout",
"tooltip-format": "Session Menu"
"menu": "on-click",
"menu-file": "~/.config/waybar/session_menu.xml",
"menu-actions": {
"lock": "gtklock",
"logout": "niri msg action quit",
"hibernate": "systemctl hibernate",
"reboot": "systemctl reboot",
"suspend": "systemctl suspend",
"shutdown": "systemctl poweroff"
}
},
"gamemode": {
"format": "{glyph}<small>{count}</small>",
"format-alt": "{glyph}",
"glyph": "󰺵",
"glyph": "",
"hide-not-running": true,
"use-icon": true,
"icon-name": "input-gaming-symbolic",
@ -330,7 +338,6 @@
"restart-interval": 10
},
"battery": {
"bat": "BAT0",
"interval": 60,
"states": {
"warning": 30,
@ -338,11 +345,11 @@
},
"format": "{capacity}% {icon}",
"format-icons": [
"",
"",
"",
"",
""
"",
"",
"",
"",
""
],
"max-length": 25
},
@ -410,13 +417,13 @@
"format-icons": {
// Named workspaces
// (you need to configure them in niri)
"browser": "",
"discord": "󰙯",
"browser": "",
"discord": "",
"chat": "<b></b>",
// Icons by state
"active": "",
"default": ""
"active": "",
"default": ""
}
},
"niri/window": {
@ -429,7 +436,7 @@
"backlight": {
"device": "intel_backlight",
"format": "{percent}% {icon}",
"format-icons": ["󰃟", "󰃠"]
"format-icons": ["", ""]
},
"backlight/slider": {
"min": 10,
@ -458,18 +465,19 @@
// A mapping from window app_id to icon. Note that this module does
// case-insensitive matching of app_ids, so capitalization doesn't matter.
"window-icons": {
"com.mitchellh.ghostty": "",
"darktable": "",
"foot": "",
"google-chrome": "",
"spotify": "",
"steam": "",
"com.mitchellh.ghostty": "",
"darktable": "",
"foot": "",
"google-chrome": "",
"spotify": "",
"steam": "",
},
// If no icon is found for a window, the default is used instead
"window-icon-default": "*",
},
"height": 40,
"cffi/niri-windows": {
},
"cffi/niri-windows": {
// path where you placed the .so file
"module_path": "/usr/lib/waybar-niri-windows.so",
// configure the module's behavior
@ -519,13 +527,13 @@
"rules": [
// .alacritty will be added to all windows with the App ID "Alacritty"
// will be drawn in windows that match
{ "app-id": "Alacritty", "class": "alacritty", "icon": "" },
{ "app-id": "Alacritty", "class": "alacritty", "icon": "" },
// .firefox will be added to all windows with the App ID "firefox"
// subsequent rules are also checked and applied for firefox windows
{ "app-id": "firefox", "class": "firefox", "continue": true },
// .youtube-music will be added to all windows that have "YouTube Music" at the end of their title
// will be drawn in windows that match
{ "title": "YouTube Music$", "class": "youtube-music", "icon": "" }
{ "title": "YouTube Music$", "class": "youtube-music", "icon": "" }
],
// ======= text mode options =======

View File

@ -0,0 +1,28 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<object class="GtkMenu" id="menu">
<child>
<object class="GtkMenuItem" id="suspend">
<property name="label">Suspend</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="hibernate">
<property name="label">Hibernate</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="shutdown">
<property name="label">Shutdown</property>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="delimiter1"/>
</child>
<child>
<object class="GtkMenuItem" id="reboot">
<property name="label">Reboot</property>
</object>
</child>
</object>
</interface>

View File

@ -0,0 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<object class="GtkMenu" id="menu">
<child>
<object class="GtkMenuItem" id="lock">
<property name="label"> Lock</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="logout">
<property name="label">󰗽 Logout</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="hibernate">
<property name="label">󰤄 Hibernate</property>
</object>
</child>
<child>
<object class="GtkMenuItem" id="reboot">
<property name="label">󰑐 Reboot</property>
</object>
</child>
<child>
<object class="GtkSeparatorMenuItem" id="delimiter1"/>
</child>
<child>
<object class="GtkMenuItem" id="shutdown">
<property name="label"> Shutdown</property>
</object>
</child>
</object>
</interface>

View File

@ -1,6 +1,9 @@
/* ABOUTME: Moonarch default waybar stylesheet with Catppuccin Mocha inspired styling. */
/* ABOUTME: User overrides go in ~/.config/waybar/style.css */
* {
border: none;
font-family: "Ubuntu Nerd Font", sans-serif;
font-family: "UbuntuSans Nerd Font", sans-serif;
font-size: 13px;
color: alpha(@theme_text_color, 0.8);
}
@ -111,6 +114,7 @@ window#waybar {
border-radius: 4px;
padding: 0px 8px 0px 8px;
margin: 8px 0px 8px 0px;
background-color: alpha(@theme_selected_bg_color, 0.1);
}
#custom-notification {

View File

@ -148,24 +148,6 @@ else
log "moongreet bereits installiert."
fi
# --- moonset installieren (Power Menu aus Gitea) ---
if ! command -v moonset &>/dev/null; then
log "Installiere moonset..."
MOONSET_TMPDIR=$(mktemp -d)
git clone https://gitea.moonarch.de/nevaforget/moonset.git "$MOONSET_TMPDIR/moonset"
(cd "$MOONSET_TMPDIR/moonset" && uv pip install --system .)
rm -rf "$MOONSET_TMPDIR"
else
log "moonset bereits installiert."
fi
# --- moonlock systemd user service ---
log "Konfiguriere moonlock User-Service..."
sudo mkdir -p /etc/systemd/user
sudo cp "$DEFAULTS_DIR/etc/systemd/user/moonlock.service" /etc/systemd/user/moonlock.service
# --- greetd / moongreet Konfiguration ---
log "Konfiguriere greetd + moongreet..."
@ -222,31 +204,6 @@ if ! groups | grep -q docker; then
sudo usermod -aG docker "$USER"
fi
# --- User-Config-Defaults installieren ---
log "Installiere User-Config-Defaults nach ~/.config/..."
USER_DEFAULTS_DIR="$DEFAULTS_DIR/user"
if [[ -d "$USER_DEFAULTS_DIR" ]]; then
# Jedes Unterverzeichnis in defaults/user/ entspricht einem ~/.config/-Verzeichnis.
# Dateien werden nur kopiert wenn sie noch nicht existieren (kein Ueberschreiben).
for src_dir in "$USER_DEFAULTS_DIR"/*/; do
app_name="$(basename "$src_dir")"
dest_dir="$HOME/.config/$app_name"
mkdir -p "$dest_dir"
find "$src_dir" -type f -print0 | while IFS= read -r -d '' src_file; do
rel_path="${src_file#"$src_dir"}"
dest_file="$dest_dir/$rel_path"
if [[ ! -f "$dest_file" ]]; then
mkdir -p "$(dirname "$dest_file")"
cp "$src_file" "$dest_file"
log " + $app_name/$rel_path"
else
log " ~ $app_name/$rel_path existiert bereits, uebersprungen."
fi
done
done
fi
# --- Screenshots-Verzeichnis ---
mkdir -p "$HOME/Pictures/Screenshots"