586 lines
16 KiB
Org Mode
586 lines
16 KiB
Org Mode
#+TITLE: Rofi Configuration
|
|
|
|
* Rofi
|
|
:PROPERTIES:
|
|
:header-args: :tangle ~/.config/rofi/config.rasi
|
|
:header-args+: :comments no :mkdirp yes
|
|
:END:
|
|
|
|
#+BEGIN_SRC conf
|
|
configuration {
|
|
/* modi: "window,run,ssh";*/
|
|
/* width: 50;*/
|
|
/* lines: 15;*/
|
|
/* columns: 1;*/
|
|
font: "Hack Nerd Font 12";
|
|
/* bw: 1;*/
|
|
/* location: 0;*/
|
|
/* padding: 5;*/
|
|
/* yoffset: 0;*/
|
|
/* xoffset: 0;*/
|
|
/* fixed-num-lines: true;*/
|
|
/* show-icons: false;*/
|
|
/* terminal: "rofi-sensible-terminal";*/
|
|
/* ssh-client: "ssh";*/
|
|
/* ssh-command: "{terminal} -e {ssh-client} {host}";*/
|
|
/* run-command: "{cmd}";*/
|
|
/* run-list-command: "";*/
|
|
/* run-shell-command: "{terminal} -e {cmd}";*/
|
|
/* window-command: "xkill -id {window}";*/
|
|
/* window-match-fields: "all";*/
|
|
/* icon-theme: ;*/
|
|
/* drun-match-fields: "name,generic,exec,categories";*/
|
|
/* drun-show-actions: false;*/
|
|
/* drun-display-format: "{name} [<span weight='light' size='small'><i>({generic})</i></span>]";*/
|
|
/* disable-history: false;*/
|
|
/* sort: false;*/
|
|
/* sorting-method: ;*/
|
|
/* case-sensitive: false;*/
|
|
/* cycle: true;*/
|
|
/* sidebar-mode: false;*/
|
|
/* eh: 1;*/
|
|
/* auto-select: false;*/
|
|
/* parse-hosts: false;*/
|
|
/* parse-known-hosts: true;*/
|
|
/* combi-modi: "window,run";*/
|
|
/* matching: "normal";*/
|
|
/* tokenize: true;*/
|
|
/* m: "-5";*/
|
|
/* line-margin: 2;*/
|
|
/* line-padding: 1;*/
|
|
/* filter: ;*/
|
|
/* separator-style: "dash";*/
|
|
/* hide-scrollbar: false;*/
|
|
/* fullscreen: false;*/
|
|
/* fake-transparency: false;*/
|
|
/* dpi: -1;*/
|
|
/* threads: 0;*/
|
|
/* scrollbar-width: 8;*/
|
|
/* scroll-method: 0;*/
|
|
/* fake-background: "screenshot";*/
|
|
/* window-format: "{w} {i}{c} {t}";*/
|
|
/* click-to-exit: true;*/
|
|
/* show-match: true;*/
|
|
theme: "gruvbox-dark-soft";
|
|
/* color-normal: ;*/
|
|
/* color-urgent: ;*/
|
|
/* color-active: ;*/
|
|
/* color-window: ;*/
|
|
/* max-history-size: 25;*/
|
|
/* combi-hide-mode-prefix: false;*/
|
|
/* matching-negate-char: '-' /* unsupported */;*/
|
|
/* pid: "/run/user/1000/rofi.pid";*/
|
|
/* display-window: ;*/
|
|
/* display-windowcd: ;*/
|
|
/* display-run: ;*/
|
|
/* display-ssh: ;*/
|
|
/* display-drun: ;*/
|
|
/* display-combi: ;*/
|
|
/* display-keys: ;*/
|
|
/* kb-primary-paste: "Control+V,Shift+Insert";*/
|
|
/* kb-secondary-paste: "Control+v,Insert";*/
|
|
/* kb-clear-line: "Control+w";*/
|
|
/* kb-move-front: "Control+a";*/
|
|
/* kb-move-end: "Control+e";*/
|
|
/* kb-move-word-back: "Alt+b,Control+Left";*/
|
|
/* kb-move-word-forward: "Alt+f,Control+Right";*/
|
|
/* kb-move-char-back: "Left,Control+b";*/
|
|
/* kb-move-char-forward: "Right,Control+f";*/
|
|
/* kb-remove-word-back: "Control+Alt+h,Control+BackSpace";*/
|
|
/* kb-remove-word-forward: "Control+Alt+d";*/
|
|
/* kb-remove-char-forward: "Delete,Control+d";*/
|
|
/* kb-remove-char-back: "BackSpace,Shift+BackSpace,Control+h";*/
|
|
/* kb-remove-to-eol: "Control+k";*/
|
|
/* kb-remove-to-sol: "Control+u";*/
|
|
/* kb-accept-entry: "Control+j,Control+m,Return,KP_Enter";*/
|
|
/* kb-accept-custom: "Control+Return";*/
|
|
/* kb-accept-alt: "Shift+Return";*/
|
|
/* kb-delete-entry: "Shift+Delete";*/
|
|
/* kb-mode-next: "Shift+Right,Control+Tab";*/
|
|
/* kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab";*/
|
|
/* kb-row-left: "Control+Page_Up";*/
|
|
/* kb-row-right: "Control+Page_Down";*/
|
|
/* kb-row-up: "Up,Control+p,ISO_Left_Tab";*/
|
|
/* kb-row-down: "Down,Control+n";*/
|
|
/* kb-row-tab: "Tab";*/
|
|
/* kb-page-prev: "Page_Up";*/
|
|
/* kb-page-next: "Page_Down";*/
|
|
/* kb-row-first: "Home,KP_Home";*/
|
|
/* kb-row-last: "End,KP_End";*/
|
|
/* kb-row-select: "Control+space";*/
|
|
/* kb-screenshot: "Alt+S";*/
|
|
/* kb-toggle-case-sensitivity: "grave,dead_grave";*/
|
|
/* kb-toggle-sort: "Alt+grave";*/
|
|
/* kb-cancel: "Escape,Control+g,Control+bracketleft";*/
|
|
/* kb-custom-1: "Alt+1";*/
|
|
/* kb-custom-2: "Alt+2";*/
|
|
/* kb-custom-3: "Alt+3";*/
|
|
/* kb-custom-4: "Alt+4";*/
|
|
/* kb-custom-5: "Alt+5";*/
|
|
/* kb-custom-6: "Alt+6";*/
|
|
/* kb-custom-7: "Alt+7";*/
|
|
/* kb-custom-8: "Alt+8";*/
|
|
/* kb-custom-9: "Alt+9";*/
|
|
/* kb-custom-10: "Alt+0";*/
|
|
/* kb-custom-11: "Alt+exclam";*/
|
|
/* kb-custom-12: "Alt+at";*/
|
|
/* kb-custom-13: "Alt+numbersign";*/
|
|
/* kb-custom-14: "Alt+dollar";*/
|
|
/* kb-custom-15: "Alt+percent";*/
|
|
/* kb-custom-16: "Alt+dead_circumflex";*/
|
|
/* kb-custom-17: "Alt+ampersand";*/
|
|
/* kb-custom-18: "Alt+asterisk";*/
|
|
/* kb-custom-19: "Alt+parenleft";*/
|
|
/* kb-select-1: "Super+1";*/
|
|
/* kb-select-2: "Super+2";*/
|
|
/* kb-select-3: "Super+3";*/
|
|
/* kb-select-4: "Super+4";*/
|
|
/* kb-select-5: "Super+5";*/
|
|
/* kb-select-6: "Super+6";*/
|
|
/* kb-select-7: "Super+7";*/
|
|
/* kb-select-8: "Super+8";*/
|
|
/* kb-select-9: "Super+9";*/
|
|
/* kb-select-10: "Super+0";*/
|
|
/* ml-row-left: "ScrollLeft";*/
|
|
/* ml-row-right: "ScrollRight";*/
|
|
/* ml-row-up: "ScrollUp";*/
|
|
/* ml-row-down: "ScrollDown";*/
|
|
/* me-select-entry: "MousePrimary";*/
|
|
/* me-accept-entry: "MouseDPrimary";*/
|
|
/* me-accept-custom: "Control+MouseDPrimary";*/
|
|
}
|
|
#+END_SRC
|
|
|
|
* Rofi Menu Config
|
|
:PROPERTIES:
|
|
:header-args: :tangle ~/.config/rofimenu/rofimenu.config
|
|
:header-args+: :comments none :mkdirp yes
|
|
:END:
|
|
|
|
#+BEGIN_SRC conf
|
|
#!/bin/bash
|
|
|
|
# =============================================================
|
|
# Configuration file for rofimenu script
|
|
#
|
|
# Top level menu consists of modi names from modilist.
|
|
# Modilist is a comma separated list of default modi (drun,run...) and/or custom modi.
|
|
# Names of default modi can be set as rofi options (e.g. -display-drun Applications).
|
|
# Custom modi format: "modi_name:modi_script".
|
|
# Menu functions from this script can be used as modi like this "<menu_name>:$thisscript -menu <menu_function>"
|
|
# =============================================================
|
|
|
|
# pause needed for smooth transition when menu command refers to other modi
|
|
DELAY=0.06
|
|
delay() {
|
|
sleep $DELAY
|
|
}
|
|
|
|
# define modi labels for menu
|
|
|
|
FAV=" Favourites"
|
|
DRUN=" Applications"
|
|
CAT=" Categories"
|
|
RUN=" Run"
|
|
MENU=" Edit Menu"
|
|
EXIT=" Exit"
|
|
|
|
modilist="\
|
|
$FAV:$thisscript -menu ${FAV#* },\
|
|
drun,\
|
|
$CAT:$thisscript -menu ${CAT#* },\
|
|
run,\
|
|
$MENU:$thisscript -menu Menu_settings,\
|
|
$EXIT:$thisscript -menu ${EXIT#* }"
|
|
|
|
# Menu functions print lines in format "label:command".
|
|
|
|
Menu_settings() {
|
|
echo " Edit config:$GUI_EDITOR $ROFIMENU_CONFIG && $thisscript -show \'$MENU\'"
|
|
echo " Reset config:rm $ROFIMENU_CONFIG && delay; $thisscript -show \'$MENU\'"
|
|
echo "──────────────:true"
|
|
echo " Edit theme:$GUI_EDITOR $ROFIMENU_THEME && $thisscript -show \'$MENU\'"
|
|
echo " Reset theme:rm $ROFIMENU_THEME && delay; $thisscript -show \'$MENU\'"
|
|
}
|
|
|
|
Favourites() {
|
|
echo " Terminal:default-terminal"
|
|
echo " File Manager:xdg-open ~"
|
|
echo " Browser:default-browser"
|
|
echo " Settings:default-terminal -e bmenu"
|
|
echo " Search:rofi-finder.sh"
|
|
# echo "$EXIT: delay; delay; $thisscript -show \'$EXIT\'" # This refers to modi from the same script; needs delay
|
|
}
|
|
|
|
Exit() {
|
|
echo " lock:screenlock"
|
|
echo " suspend:systemctl suspend"
|
|
echo " hibernate:systemctl hibernate"
|
|
echo " logout:xdotool key --clearmodifiers super+shift+q"
|
|
echo " reboot:systemctl reboot"
|
|
echo " poweroff:systemctl poweroff"
|
|
}
|
|
|
|
Categories() {
|
|
SUBMENU_MARK=""
|
|
IFS='
|
|
'
|
|
# Newline separated list, each line has format "[symbol ][alias:]category"
|
|
# Category with alias will be shown in menu under that alias
|
|
# The first entry below is an alias for " " so it shows all applications
|
|
desired="\
|
|
Applications:
|
|
Favorites
|
|
Accessories:Utility
|
|
Development
|
|
Documentation
|
|
Education
|
|
Graphics
|
|
Internet:Network
|
|
Multimedia:AudioVideo
|
|
Office
|
|
Settings
|
|
System"
|
|
|
|
# determine max line length and set tab position for subcategory mark
|
|
maxlength=0
|
|
for line in $desired ; do
|
|
label="${line%:*}"
|
|
if [ ${#label} -gt $maxlength ] ; then
|
|
maxlength=${#label}
|
|
fi
|
|
done
|
|
submenu_tab=$(($maxlength+3))
|
|
|
|
present="$(grep Categories /usr/share/applications/*.desktop \
|
|
| cut -d'=' -f2 \
|
|
| sed 's/;/\n/g' \
|
|
| LC_COLLATE=POSIX sort --ignore-case --unique)"
|
|
|
|
linenumber=0
|
|
for line in $desired ; do
|
|
category="${line##*[ :]}"
|
|
label="$(echo -e ${line%:*}\\t${SUBMENU_MARK} | expand -t $submenu_tab)" ## add submenu mark
|
|
if [ $(echo "$present"|grep -w -c "$category") -gt 0 ] ; then
|
|
echo "$label:activate_category \"$label\" \"$category\" $linenumber"
|
|
linenumber=$(($linenumber+1))
|
|
fi
|
|
done
|
|
}
|
|
|
|
# Desktop menu parameters
|
|
|
|
DT_MODI="Desktop:$thisscript -menu Desktop"
|
|
|
|
Desktop() {
|
|
echo " Terminal:default-terminal"
|
|
echo " File Manager:xdg-open ~"
|
|
echo " Browser:default-browser"
|
|
#TODO determine number of lines before categories
|
|
addlinenumber=3
|
|
eval $(xdotool search --class rofi getwindowgeometry --shell)
|
|
Categories|sed "s/\$/ $addlinenumber $X $Y/" # pass additional lines number, X, Y
|
|
echo " Search:rofi-finder.sh"
|
|
}
|
|
|
|
DT_WIDTH=200 # pixels
|
|
##TODO determine desktop menu line height according to theme
|
|
DT_LINE_HEIGHT=23 # pixels
|
|
|
|
DT_THEME="
|
|
*{
|
|
lines: 20;
|
|
scrollbar: false;
|
|
dynamic: true;
|
|
}
|
|
#window {
|
|
width: ${DT_WIDTH}px;
|
|
children: [ dt-mainbox ];
|
|
}
|
|
#sidebar {
|
|
enabled: false;
|
|
}
|
|
#button {
|
|
width: ${DT_WIDTH}px;
|
|
padding: 2px 1ch;
|
|
}
|
|
#inputbar {
|
|
enabled: false;
|
|
}"
|
|
|
|
activate_category() { # shows drun modi filtered with category. If no command selected, returns to categories modi
|
|
label="${1% *}" # remove submenu mark
|
|
category="$2"
|
|
linenumber="$3"
|
|
theme=""
|
|
goback="$thisscript -show \"$CAT\""
|
|
if [ $# -gt 3 ] ; then # that means categories for desktop menu, number of lines before categories, X, Y
|
|
addlinenumber=$4
|
|
X=$5
|
|
Y=$6
|
|
linenumber=$(($linenumber+$addlinenumber))
|
|
if [ $linenumber -gt 0 ] ; then
|
|
i=$linenumber
|
|
dummy="true"
|
|
dummyline="textboxdummy"
|
|
while [ $i -gt 1 ] ; do
|
|
dummyline="textboxdummy,$dummyline"
|
|
i=$(($i-1))
|
|
done
|
|
else
|
|
dummy="false"
|
|
fi
|
|
|
|
# adjust X if too close to the right side of the screen
|
|
MAX_X=$(wattr w $(lsw -r) )
|
|
anchor="north"
|
|
if [ $X -gt $((${MAX_X}-${DT_WIDTH}*2)) ] ; then
|
|
anchor="${anchor}east"
|
|
X=$MAX_X
|
|
else
|
|
anchor="${anchor}west"
|
|
fi
|
|
|
|
theme="$DT_THEME
|
|
* {
|
|
x-offset: $X;
|
|
y-offset: $Y;
|
|
anchor: $anchor;
|
|
}
|
|
#window {
|
|
width: $((${DT_WIDTH}*2));
|
|
}
|
|
#sidebar {
|
|
enabled: true;
|
|
}
|
|
#boxdummy {
|
|
enabled: $dummy;
|
|
children: [ $dummyline ];
|
|
}"
|
|
goback="$thisscript -desktop $X $Y"
|
|
fi
|
|
command=$(delay; $thisscript \
|
|
-only drun \
|
|
-drun-match-fields categories,name \
|
|
-display-drun "$label" \
|
|
-filter "$category " \
|
|
-run-command "echo {cmd}" \
|
|
-run-shell-command "echo {terminal} -e {cmd}" \
|
|
-theme-str "$theme")
|
|
if [ -n "$command" ] ; then
|
|
eval "$command" &
|
|
exit
|
|
fi
|
|
# return to categories modi. No delay needed
|
|
eval $goback &
|
|
|
|
if [ $linenumber -eq 0 ] ; then # if the category is on the top line
|
|
exit
|
|
fi
|
|
|
|
# move rofi selection down by linenumber
|
|
keys=""
|
|
while [ $linenumber -gt 0 ] ; do
|
|
keys="$keys Tab"
|
|
linenumber=$(($linenumber-1))
|
|
done
|
|
##TODO wait until rofi can take input
|
|
delay
|
|
delay
|
|
xdotool search --class rofi key --delay 0 $keys
|
|
}
|
|
|
|
## rofi theme file can be set here
|
|
|
|
# ROFIMENU_THEME="$HOME/.config/rofimenu/rofimenu.rasi"
|
|
#+END_SRC
|
|
|
|
* Theme
|
|
:PROPERTIES:
|
|
:header-args: :tangle ~/.config/rofimenu/rofimenu.rasi
|
|
:header-args+: :comments none :mkdirp yes
|
|
:END:
|
|
|
|
#+BEGIN_SRC conf
|
|
configuration {
|
|
me-select-entry: "MouseSecondary";
|
|
me-accept-entry: "MousePrimary";
|
|
scroll-method: 1;
|
|
show-icons: true;
|
|
sidebar-mode: true;
|
|
kb-custom-1: "";
|
|
kb-custom-2: "";
|
|
kb-custom-3: "";
|
|
kb-custom-4: "";
|
|
kb-custom-5: "";
|
|
kb-custom-6: "";
|
|
kb-custom-7: "";
|
|
kb-custom-8: "";
|
|
kb-custom-9: "";
|
|
kb-custom-10: "";
|
|
kb-select-1: "Alt+1";
|
|
kb-select-2: "Alt+2";
|
|
kb-select-3: "Alt+3";
|
|
kb-select-4: "Alt+4";
|
|
kb-select-5: "Alt+5";
|
|
kb-select-6: "Alt+6";
|
|
kb-select-7: "Alt+7";
|
|
kb-select-8: "Alt+8";
|
|
kb-select-9: "Alt+9";
|
|
kb-select-10: "Alt+0";
|
|
}
|
|
|
|
* {
|
|
//// COLORS ////
|
|
|
|
//// uncomment to match bspwm edition theme
|
|
background: #292f34FF;
|
|
background-color: #292f3400;
|
|
foreground: #F6F9FFFF;
|
|
selected: #1ABB9BFF;
|
|
selected-foreground: @foreground;
|
|
|
|
//// uncomment to match Adapta Nokto theme
|
|
// background: #222D32E8;
|
|
// background-color: #00000000;
|
|
// foreground: #CFD8DCFF;
|
|
// selected: #00BCD4FF;
|
|
// selected-foreground: #FFFFFFFF;
|
|
|
|
//// common - active and urgent
|
|
active-background: #3A464BFF;
|
|
urgent-background: #800000FF;
|
|
urgent-foreground: @foreground;
|
|
selected-urgent-background: @urgent-foreground;
|
|
selected-urgent-foreground: @urgent-background;
|
|
|
|
//// TEXT ////
|
|
|
|
font: "xos4 Terminus 18px";
|
|
// font: "Knack Nerd Font 16px";
|
|
text-color: @foreground;
|
|
|
|
//// PADDING ETC ////
|
|
|
|
margin: 0px;
|
|
border: 0px;
|
|
padding: 0px;
|
|
spacing: 0px;
|
|
elementpadding: 2px 0px;
|
|
elementmargin: 0px 2px;
|
|
listmargin: 0px 2px 0px 0px;
|
|
|
|
//// SIZE ////
|
|
|
|
windowwidth: 40ch;
|
|
buttonwidth: 18ch;
|
|
lines: 12;
|
|
fixed-height: false;
|
|
|
|
//// POSITION ////
|
|
|
|
location: northwest;
|
|
anchor: northwest;
|
|
x-offset: 0px;
|
|
y-offset: 24px;
|
|
|
|
//// LAYOUT ////
|
|
|
|
scrollbar: true;
|
|
|
|
//// uncomment to get submenu-like style
|
|
menustyle: [ sb-mainbox ];
|
|
buttonpadding: 2px 1ch;
|
|
button-bg: @background;
|
|
dynamic: true;
|
|
|
|
//// uncomment to get tabs-like style
|
|
// menustyle: [ tb-mainbox ];
|
|
// buttonpadding: 14px 1ch;
|
|
// dynamic: false;
|
|
}
|
|
//////////////////////////////////////////
|
|
window {
|
|
width: @windowwidth;
|
|
children: @menustyle;
|
|
}
|
|
//submenu-style
|
|
sb-mainbox {
|
|
orientation: horizontal;
|
|
children: [ sidebar, vertibox ];
|
|
}
|
|
//tabs-style
|
|
tb-mainbox {
|
|
orientation: vertical;
|
|
children: [ inputbar, horibox ];
|
|
background-color: @background;
|
|
}
|
|
//desktop-submenu
|
|
dt-mainbox {
|
|
orientation: vertical;
|
|
children: [ boxdummy, sb-mainbox ];
|
|
}
|
|
horibox {
|
|
orientation: horizontal;
|
|
children: [ listview, sidebar ];
|
|
}
|
|
sidebar {
|
|
orientation: vertical;
|
|
}
|
|
button {
|
|
horizontal-align: 0;
|
|
padding: @buttonpadding;
|
|
width: @buttonwidth;
|
|
background-color: @button-bg;
|
|
expand: false;
|
|
}
|
|
vertibox {
|
|
orientation: vertical;
|
|
children: [ inputbar, listview ];
|
|
background-color: @background;
|
|
}
|
|
prompt {
|
|
enabled: false;
|
|
}
|
|
listview {
|
|
margin: @listmargin;
|
|
}
|
|
scrollbar {
|
|
handle-width: 0.5ch;
|
|
handle-color: @selected;
|
|
}
|
|
boxdummy {
|
|
enabled: false;
|
|
orientation: vertical;
|
|
expand: false;
|
|
children: [ textboxdummy ];
|
|
}
|
|
textboxdummy {
|
|
str: " ";
|
|
}
|
|
element, inputbar, textboxdummy {
|
|
padding: @elementpadding;
|
|
margin: @elementmargin;
|
|
width: @elementwidth;
|
|
}
|
|
element.normal.active,
|
|
element.alternate.active {
|
|
background-color: @active-background;
|
|
text-color: @selected-foreground;
|
|
}
|
|
element.selected,
|
|
button.selected {
|
|
background-color: @selected;
|
|
text-color: @selected-foreground;
|
|
}
|
|
element.normal.urgent,
|
|
element.alternate.urgent {
|
|
background-color: @urgent-background;
|
|
text-color: @urgent-foreground;
|
|
}
|
|
element.selected.urgent {
|
|
background-color: @selected-urgent-background;
|
|
text-color: @selected-urgent-foreground;
|
|
}
|
|
#+END_SRC
|