This commit is contained in:
2024-01-08 20:50:29 +01:00
commit 2fb62acda6
121 changed files with 16413 additions and 0 deletions
+108
View File
@@ -0,0 +1,108 @@
#!/usr/bin/env bash
MONITOR1=HDMI-1
MONITOR2=DP-2
version=0.0.1
help() {
echo "bspwm window titles"
echo "allows you to have bspwm window titles from each monitor in your bar"
echo "-------------------"
echo
echo "Syntax: bspwm_window_titles [-i <FILE_PATH>|m|p|f <FORMAT_FOCUSED|NORMAL>|V]"
echo "options:"
echo "h Print this help."
echo "i <FILE_PATH> Icon map path - custom path to file containing icon map"
echo "v Print software version and exit."
echo
}
add_desktop() {
desktop_id="`cat $HOME/.cache/bspwm_focused_desktop`"
monitor_id=$(bspc query -M -m '.focused' --names)
current_amount=$(cat $HOME/.cache/bspwm_desktop_count_"$monitor_id")
let new_id=current_amount+1
max=4
if [[ $current_amount -lt $max ]]; then
bspc monitor $monitor_id -a "$new_id"
echo $new_id > $HOME/.cache/bspwm_desktop_count_"$monitor_id"
fi
}
init() {
bspc monitor ${MONITOR1} -d 1
bspc monitor ${MONITOR2} -d 5
echo 1 > $HOME/.cache/bspwm_desktop_count_"$MONITOR1"
echo 1 > $HOME/.cache/bspwm_desktop_count_"$MONITOR2"
### node_remove event
### removes empty desktops
bspc subscribe node_remove | while read line
do
monitor_id=$(echo "$line" | awk '{print $2}')
desktop_id=$(echo "$line" | awk '{print $3}')
windowlist=$( bspc query -N -n .window -m "$monitor_id" -d "$desktop_id" )
desktopname=$( bspc query -D -m "$monitor_id" -d "$desktop_id" --names )
### check if desktop is empty
if [[ -z "$windowlist" ]]; then
bspc desktop -r
fi
done
### write focused desktop id to cache file
bspc subscribe desktop_focus | while read line
do
desktop_id=$(echo "$line" | awk '{print $3}')
echo $desktop_id > $HOME/.cache/bspwm_focused_desktop
done
### write desktop amount to cache file
bspc subscribe desktop_add | while read line
do
monitor_id=$(echo "$line" | awk '{print $2}')
monitor_name $(bspc query -M -m "$monitor_id" --names)
desktop_id=$(echo "$line" | awk '{print $3}')
desktops=$(bspc query -D -m "$monitor_id" --names)
count=0
echo "$desktops" | sed 's/ //g' | while read l
do
((count++))
echo $count
echo $count > $HOME/.cache/bspwm_desktop_count_"$monitor_name"
done
done
}
while getopts ":haiv:" option; do
case $option in
h)
help
exit;;
a)
add_desktop
exit;;
i)
init
exit;;
v)
echo "Version $version";
exit;;
*)
echo "Error: Invalid option"
exit;;
esac
done
help
exit
+60
View File
@@ -0,0 +1,60 @@
#!/bin/bash
# A more fluid way of moving windows with BSPWM, which is meant to be
# implemented in SXHKD. If there is a window in the given direction,
# swap places with it. Else if there is a receptacle move to it
# ("consume" its place). Otherwise create a receptacle in the given
# direction by splitting the entire viewport (circumvents the tiling
# scheme while respecting the current split ratio configuration). In
# the latter scenario, inputting the direction twice will thus move the
# focused window out of its current layout and into the receptacle.
#
# Part of my dotfiles: https://gitlab.com/protesilaos/dotfiles
#
# Copyright (c) 2019 Protesilaos Stavrou <info@protesilaos.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
[ "$#" -eq 1 ] || { echo "Pass only one argument: north,east,south,west"; exit 1; }
# Check if argument is a valid direction.
case "$1" in
north|east|south|west)
dir="$1"
;;
*)
echo "Not a valid argument."
echo "Use one of: north,east,south,west"
exit 1
;;
esac
_query_nodes() {
bspc query -N -n "$@"
}
# Do not operate on floating windows!
[ -z "$(_query_nodes focused.floating)" ] || { echo "Only move tiled windows."; exit 1; }
receptacle="$(_query_nodes 'any.leaf.!window')"
# This regulates the behaviour documented in the description.
if [ -n "$(_query_nodes "${dir}.!floating")" ]; then
bspc node -s "$dir"
elif [ -n "$receptacle" ]; then
bspc node focused -n "$receptacle" --follow
else
bspc node @/ -p "$dir" -i && bspc node -n "$receptacle" --follow
fi
+160
View File
@@ -0,0 +1,160 @@
#!/usr/bin/env bash
# globals
version="1.1"
cache_path="${HOME}/.cache"
icon_map_path="$( dirname "$( readlink -f "$0" )" )/bspwm_window_titles_icon_map.txt"
# defaults
polybar_mode="true"
monocle_mode="false"
# format_focused="%{F#2e3440}%{T4}%{T- F-}%{B#2e3440}{NAME}%{B-}%{F#2e3440}%{T4}%{T- F-}"
# format_normal="%{F#20212C}%{T4}%{T- F-}%{B#20212C}%{F#5D5E72}{NAME}%{B-}%{F#20212C}%{T4}%{T- F-}"
format_focused="{NAME}"
format_normal="%{F#5D5E72}{NAME}%{F-}"
# wraps a text with polybar format command action
# $1 action
# $2 text
polybar_action_cmd() {
echo "%{A1:${1}:}${2}%{A}"
}
# formats window name with given format
# $1 format
# $2 window name
polybar_format_window_name() {
echo "$1" | sed "s@{NAME}@$2@"
}
help() {
echo "bspwm window titles"
echo "allows you to have bspwm window titles from each monitor in your bar"
echo "-------------------"
echo
echo "Syntax: bspwm_window_titles [-i <FILE_PATH>|m|p|f <FORMAT_FOCUSED|NORMAL>|V]"
echo "options:"
echo "h Print this help."
echo "i <FILE_PATH> Icon map path - custom path to file containing icon map"
echo "m Monocle mode - won't print window names when there is only one window on desktop."
echo "p Polybar action mode - will output window names wrapped with polybar action handlers."
echo " This allows you to directly click on a window name to focus it's window"
echo "f <FORMAT_FOCUSED|NORMAL> Format how focused/normal window names are displayed"
echo " You need to supply both polybar format tags (so need to use -f two times)"
echo " Example"
echo " bspwm_window_titles -f \"%{F#f00}{NAME}%{F-}\" -f \"{NAME}\""
echo " focused window name font color red and normal window as is"
echo "V Print software version and exit."
echo
}
while getopts ":hvmpf:i:" option; do
case $option in
h)
help
exit;;
m)
monocle_mode="true";;
i)
icon_map_path="$OPTARG";;
p)
polybar_mode="true";;
f)
formats+=("$OPTARG");
[[ -n ${formats[0]} ]] && format_focused="${formats[0]}"
[[ -n ${formats[1]} ]] && format_normal="${formats[1]}";;
v)
echo "Version $version";
exit;;
*)
echo "Error: Invalid option"
exit;;
esac
done
icon_map=$( cat "${icon_map_path}" )
# subscribe to events on which the window title list will get updated
bspc subscribe node_focus node_remove desktop_focus | while read -r _; do
# get all monitors
monitors=$( bspc query -M )
for monitor in $monitors; do
index=$((index + 1))
# get last focused desktop on given monitor
last_focused_desktop=$( bspc query -D -m "$monitor" -d .active )
# get windows from last focused desktop on given monitor
winids_on_desktop=$( bspc query -N -n .window -m "$monitor" -d "$last_focused_desktop" )
# get number of windows on desktop
number_of_windows=$( printf "$winids_on_desktop" | tr '\n' ' ' | wc -w )
# get a list of all windows
winlist=$( wmctrl -l -x )
for window_id in $winids_on_desktop; do
# replace all spaces and tabs with single spaces for easier cutting
window=$( echo "$winlist" | grep -i "$window_id" | tr -s '[:blank:]' )
# get window name
window_name=$( echo "$window" | cut -d " " -f 5- )
# longer window titles if there is only one window
[[ "$number_of_windows" == "1" ]] && char_cut="40" || char_cut="20"
# cut the window name
window_name_short=$( echo "$window_name" | cut -c1-"$char_cut" )
# get window class and match after a dot to get app name
window_class=$( echo "$window" | cut -d " " -f 3 | sed 's/.*\.//')
# if window id matched with list == not empty
if [[ -n "$window_name" ]]; then
# trim window name
window_name=$( echo "$window_name_short" | sed -e 's/^[[:space:]]*//' )
# display instance name if there is no window title
if [[ "$window_name" == "N/A" ]]; then
window_name=$(echo "$window" | cut -d " " -f 3 | cut -d "." -f 2 )
fi
# get icon for class name
window_icon=$( grep "$window_class" <<< "$icon_map" | cut -d " " -f2 )
# fallback icon if class not found
if [[ -z "$window_icon" ]]; then
window_icon=$( grep "Fallback" <<< "$icon_map" | cut -d " " -f2 )
fi
# join icon and name
window_name_with_icon="${window_icon} ${window_name}"
# apply formatting
if [[ $( bspc query -N -n focused) == "$window_id" ]]; then
formatted_window_name=$( polybar_format_window_name "$format_focused" "$window_name_with_icon" )
else
formatted_window_name=$( polybar_format_window_name "$format_normal" "$window_name_with_icon" )
fi
# wrap with polybar action cmd
[[ "$polybar_mode" == "true" ]] && formatted_window_name=$( polybar_action_cmd "bspc node -f ${window_id}" "$formatted_window_name")
curr_wins+="${formatted_window_name} "
fi
done
# if monocle set to true then don't print names if there is only one
if [[ "$monocle_mode" == "true" && "$number_of_windows" == "1" ]]; then
windows_print=""
else
windows_print="$curr_wins"
fi
# print out the window names to files for use in a bar
echo "$windows_print" > "${cache_path}/bspwm_windows_${index}.txt"
unset curr_wins
done
unset index
done
@@ -0,0 +1,11 @@
Google-chrome 
firefox 
Code 
Slack 
kitty 
Nautilus 
Nemo 
Viewnior 
Celluloid 
Audacious 
Fallback 󰘔
+116
View File
@@ -0,0 +1,116 @@
#! /bin/sh
# -- start hotkey daemon
pgrep -x sxhkd > /dev/null || sxhkd &
xrandr --output HDMI-1 --mode 2560x1440 --rate 144
xrandr --output HDMI-1 --primary
xrandr --output HDMI-1 --left-of DP-2
# -- BSPWM Settings
bspc monitor HDMI-1 -d 1 2 3
bspc monitor DP-2 -d 4 5 6
bspc config border_width 2
bspc config window_gap 4
bspc config split_ratio 0.50
bspc config borderless_monocle true
bspc config gapless_monocle true
bspc config single_monocle true
bspc config presel_feedback_color "#5D5E72"
bspc config normal_border_color "#1e1e2e"
bspc config active_border_color "#1e1e2e"
bspc config focused_border_color "#45475a"
bspc config focus_follows_pointer true
bspc config pointer_follows_focus true
bspc config pointer_follows_monitor true
# -- BSPWM Rules
bspc rule -a kitty-vpn state=center_pseudo_tiled follow=on
bspc rule -a NoiseTorch state=floating center=on
#bspc rule -a "microsoft teams - preview" desktop=4
#bspc rule -a Lutris desktop='^3'
#bspc rule -a battle.net.exe desktop='^3'
#bspc rule -a discord desktop='^6'
#bspc rule -a "VirtualBox Machine" state=floating desktop='^2'
#bspc rule -a Kupfer.py focus=on
#bspc rule -a Screenkey manage=off
bspc rule -a "Conky:Conky:conky*" flag=sticky layer=below state=floating sticky=on
# -- Autostart
# restart window titles daemon
cat /dev/null > $HOME/.cache/bspwm_windows_1.txt
cat /dev/null > $HOME/.cache/bspwm_windows_2.txt
while pgrep -u $UID -f bspwm_window_titles >/dev/null; do pkill -f bspwm_window_titles; done
bspwm_window_titles &
## -- launch polybar
$HOME/.config/polybar/launch.sh
roficlip.py --daemon &
## -- policy kit
#pgrep -x lxsession > /dev/null || lxsession &
pgrep -x lxpolkit > /dev/null || lxpolkit &
## -- launch dunst notification server
pgrep -x dunst > /dev/null || dunst &
## -- set the default cursor to left pointer
xsetroot -cursor_name left_ptr &
## -- start the compositor
#pgrep -x picom > /dev/null || picom --config $HOME/.config/picom/picom.conf --experimental-backends --backend glx &
pgrep -x picom > /dev/null || picom &
## -- udisk utils
#udisksvm >/dev/null &
pgrep -x udiskie > /dev/null || udiskie &
## -- noisetorch noise cancelling
#noisetorch -u
#pgrep -x noisetorch > /dev/null || noisetorch -i sys-devices-pci0000:00-0000:00:01.3-0000:02:00.0-usb2-2\x2d10-2\x2d10:1.0-sound-card3-controlC3.device -s alsa_input.usb-Corsair_CORSAIR_HS70_Pro_Wireless_Gaming_Headset-00.mono-fallback -t 70 &
# -- Autostart of misc
## -- applets
#nm-applet --indicator &
#blueman-applet &
#pgrep -x indicator-sound-switcher > /dev/null || indicator-sound-switcher &
#/home/dom/.local/share/headset-charge-indicator/headset-charge-indicator.py &
#/home/dom/.local/share/media-control-indicator/media-control-indicator.py &
# -- Set background wallpaper
#nitrogen --restore &
feh --bg-scale ~/Pictures/Wallpaper/MonarchOS.png &
###
### remove picom corners in monocle mode
### https://www.reddit.com/r/bspwm/comments/hqt1r3/is_there_a_way_to_disable_picom_rounded_borders/
###
bspc subscribe desktop_layout | while read -r Event
do
Desktop=$(echo "$Event" | awk '{print $3}')
State=$(echo "$Event" | awk '{print $4}')
if [ "$State" = "monocle" ]; then
bspc query -N -d $Desktop | while read -r Node
do
xprop -id $Node -f _PICOM_ROUNDED 32c -set _PICOM_ROUNDED 1
done
elif [ $(bspc config window_gap) -gt 0 ]; then
bspc query -N -d $Desktop | while read -r Node
do
xprop -id $Node -remove _PICOM_ROUNDED
done
fi
done &
+1
View File
@@ -0,0 +1 @@
kitty
+212
View File
@@ -0,0 +1,212 @@
#? Config file for btop v. 1.2.13
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
color_theme = "TTY"
#* If the theme set background should be shown, set to False if you want terminal background transparency.
theme_background = False
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
truecolor = True
#* Set to true to force tty mode regardless if a real tty has been detected or not.
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
force_tty = False
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
#* Use whitespace " " as separator between different presets.
#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
vim_keys = False
#* Rounded corners on boxes, is ignored if TTY mode is ON.
rounded_corners = True
#* Default symbols to use for graph creation, "braille", "block" or "tty".
#* "braille" offers the highest resolution but might not be included in all fonts.
#* "block" has half the resolution of braille but uses more common characters.
#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
graph_symbol = "braille"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_cpu = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_mem = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_net = "default"
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
graph_symbol_proc = "default"
#* Manually set which boxes to show. Available values are "cpu mem net proc", separate values with whitespace.
shown_boxes = "cpu mem net proc"
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
update_ms = 2000
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
proc_sorting = "cpu lazy"
#* Reverse sorting order, True or False.
proc_reversed = False
#* Show processes as a tree.
proc_tree = False
#* Use the cpu graph colors in the process list.
proc_colors = True
#* Use a darkening gradient in the process list.
proc_gradient = True
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
proc_per_core = False
#* Show process memory as bytes instead of percent.
proc_mem_bytes = True
#* Show cpu graph for each process.
proc_cpu_graphs = True
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
proc_info_smaps = False
#* Show proc box on left side of screen instead of right.
proc_left = False
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
proc_filter_kernel = False
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu.
cpu_graph_upper = "total"
#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
#* Select from a list of detected attributes from the options menu.
cpu_graph_lower = "total"
#* Toggles if the lower CPU graph should be inverted.
cpu_invert_lower = True
#* Set to True to completely disable the lower CPU graph.
cpu_single_graph = False
#* Show cpu box at bottom of screen instead of top.
cpu_bottom = False
#* Shows the system uptime in the CPU box.
show_uptime = True
#* Show cpu temperature.
check_temp = True
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
cpu_sensor = "Auto"
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
show_coretemp = True
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
#* Example: "4:0 5:1 6:3"
cpu_core_map = ""
#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
temp_scale = "celsius"
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
base_10_sizes = False
#* Show CPU frequency.
show_cpu_freq = True
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
clock_format = "%X"
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
background_update = True
#* Custom cpu model name, empty string to disable.
custom_cpu_name = ""
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
#* Begin line with "exclude=" to change to exclude filter, otherwise defaults to "most include" filter. Example: disks_filter="exclude=/boot /home/user".
disks_filter = ""
#* Show graphs instead of meters for memory values.
mem_graphs = True
#* Show mem box below net box instead of above.
mem_below_net = False
#* Count ZFS ARC in cached and available memory.
zfs_arc_cached = True
#* If swap memory should be shown in memory box.
show_swap = True
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
swap_disk = True
#* If mem box should be split to also show disks info.
show_disks = True
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
only_physical = True
#* Read disks list from /etc/fstab. This also disables only_physical.
use_fstab = True
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
zfs_hide_datasets = False
#* Set to true to show available disk space for privileged users.
disk_free_priv = False
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
show_io_stat = True
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
io_mode = False
#* Set to True to show combined read/write io graphs in io mode.
io_graph_combined = False
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
#* Example: "/mnt/media:100 /:20 /boot:1".
io_graph_speeds = ""
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
net_download = 100
net_upload = 100
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
net_auto = True
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
net_sync = True
#* Starts with the Network Interface specified here.
net_iface = ""
#* Show battery stats in top right if battery is present.
show_battery = True
#* Which battery to use if multiple are present. "Auto" for auto detection.
selected_battery = "Auto"
#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
log_level = "WARNING"
+9
View File
@@ -0,0 +1,9 @@
#!/bin/bash
ps_out=`ps -ef | grep conky | grep -v 'grep' | grep -v $0`
result=$(echo $ps_out | grep "$1")
echo $result
if [[ "$result" != "" ]];then
killall conky
else
conky -c ~/.config/conky/mocha.conf
fi
+112
View File
@@ -0,0 +1,112 @@
conky.config = {
xinerama_head = 2,
--Various settings
background = false, -- forked to background
cpu_avg_samples = 2, -- The number of samples to average for CPU monitoring.
diskio_avg_samples = 10, -- The number of samples to average for disk I/O monitoring.
double_buffer = true, -- Use the Xdbe extension? (eliminates flicker)
if_up_strictness = 'address', -- how strict if testing interface is up - up, link or address
net_avg_samples = 2, -- The number of samples to average for net data
no_buffers = true, -- Subtract (file system) buffers from used memory?
temperature_unit = 'celsius', -- fahrenheit or celsius
text_buffer_size = 2048, -- size of buffer for display of content of large variables - default 256
update_interval = 1, -- update interval
imlib_cache_size = 0, -- disable image cache to get a new spotify cover per song
-- Placement (Conky on MIDDLE of THREE monitors at 1920x1080)
--alignment = 'top_left', -- top_left,top_middle,top_right,bottom_left,bottom_middle,bottom_right,
--gap_x = 3540, -- pixels between right or left border
--gap_y = 70, -- pixels between bottom or left border
-- Placement (For SINGLE monitor users!)
alignment = 'top_right', -- top_left,top_middle,top_right,bottom_left,bottom_middle,bottom_right,
gap_x = 50, -- pixels between right or left border
gap_y = 70, -- pixels between bottom or left border
-- Size
minimum_height = 200, -- minimum height of window
minimum_width = 260, -- minimum width of window
maximum_width = 260, -- maximum width of window
--Graphical
border_inner_margin = 5, -- margin between border and text
border_outer_margin = 5, -- margin between border and edge of window
border_width = 0, -- border width in pixels
default_bar_width = 260, -- default is 0 - full width
default_bar_height = 10, -- default is 6
default_gauge_height = 25, -- default is 25
default_gauge_width =40, -- default is 40
default_graph_height = 40, -- default is 25
default_graph_width = 153, -- default is 0 - full width
default_shade_color = '#000000', -- default shading colour
default_outline_color = '#000000', -- default outline colour
draw_borders = false, -- draw borders around text
draw_graph_borders = true, -- draw borders around graphs
draw_shades = false, -- draw shades
draw_outline = false, -- draw outline
stippled_borders = 0, -- dashing the border
--Textual
format_human_readable = true, -- KiB, MiB rather then number of bytes
font = 'Hack Nerd Font:normal:size=10', -- the default font used
font2 = 'Hack Nerd Font:bold:size=24', -- font for the time
font3 = 'Hack Nerd Font:size=14', -- font for the date
font4 = 'Hack Nerd Font:bold:size=9', -- font for the keybindings heading
font5 = 'MonarchOS:bold:size=16', -- font for the keybindings heading
max_text_width = 0, -- 0 will make sure line does not get broken if width too smal
max_user_text = 16384, -- max text in conky default 16384
override_utf8_locale = true, -- force UTF8 requires xft
short_units = true, -- shorten units from KiB to k
top_name_width = 21, -- width for $top name value default 15
top_name_verbose = false, -- If true, top name shows the full command line of each process - Default value is false.
uppercase = false, -- uppercase or not
use_spacer = 'none', -- adds spaces around certain objects to align - default none
use_xft = true, -- xft font - anti-aliased font
xftalpha = 1, -- alpha of the xft font - between 0-1
--Windows
own_window = true, -- create your own window to draw
own_window_argb_value = 255, -- real transparency - composite manager required 0-255
own_window_argb_visual = true, -- use ARGB - composite manager required
own_window_class = 'Conky', -- manually set the WM_CLASS name for use with xprop
own_window_colour = '#1e1e2e', -- set colour if own_window_transparent no
own_window_transparent = false, -- if own_window_argb_visual is true sets background opacity 0%
own_window_title = 'conky', -- set the name manually
own_window_type = 'panel', -- if own_window true options are: normal/override/dock/desktop/panel
own_window_hints = 'undecorated,below,above,sticky,skip_taskbar,skip_pager', -- if own_window true - just hints - own_window_type sets it
--catppuccin
color0 = '#b4befe',
color1 = '#D9E0EE',
color2 = '#89DCEB',
color3 = '#F2CDCD',
color4 = '#C3BAC6',
color5 = '#ABE9B3',
color6 = '#FAE3B0',
};
conky.text = [[
#${alignc}${color0}${font2}${DESKTOP_SESSION}${font}
${alignc}${color0}${font5}${font}${font2}MONARCH${font}
${voffset 6}${alignc}${color0}${font3}${time %d. %b %Y}${font}${color}
${alignc}${color0}${font}${exec lsb_release -ds | sed 's/"//g'}${font}
${voffset 10}${color0}${font1}󰠦 ${nodename_short} ${font}
${color0}${font1} Kernel ${kernel} ${font}
${color0}${font1} Uptime ${uptime_short} ${font}
${color0}${font1} Packages ${exec pacman -Q | wc -l} ${font}
${voffset 18}${goto 12}${color5}CPU${goto 50}
${goto 12}$cpu%
${color2}${goto 12}${cpubar 8,254}
${voffset 5}${goto 12}$font${color1}${top name 1}$alignr$color${top cpu 1}%
${goto 12}${color1}${top name 2}$alignr$color${top cpu 2}%
${goto 12}${color1}${top name 3}$alignr$color${top cpu 3}%
${voffset 14}${goto 12}${color6}RAM${goto 50}
${goto 12}$mem/$memmax
${color2}${goto 12}${membar 8,254}${color}
${goto 12}${voffset 5}${color1}${top_mem name 1}$alignr$color${top_mem mem_res 1}
${goto 12}${color1}${top_mem name 2}$alignr$color${top_mem mem_res 2}
${goto 12}${color1}${top_mem name 3}$alignr$color${top_mem mem_res 3}
${goto 12}${voffset 14}${color3}${font}File System
${goto 12}${color3}${fs_used /}/${fs_size /}
${goto 12}${color2}${fs_bar 8,254}
]];
+458
View File
@@ -0,0 +1,458 @@
# See dunst(5) for all configuration options
[global]
### Display ###
enable_posix_regex = true
# Which monitor should the notifications be displayed on.
monitor = 0
# Display notification on focused monitor. Possible modes are:
# mouse: follow mouse pointer
# keyboard: follow window with keyboard focus
# none: don't follow anything
#
# "keyboard" needs a window manager that exports the
# _NET_ACTIVE_WINDOW property.
# This should be the case for almost all modern window managers.
#
# If this option is set to mouse or keyboard, the monitor option
# will be ignored.
follow = mouse
### Geometry ###
# dynamic width from 0 to 300
# width = (0, 300)
# constant width of 300
width = 300
# The maximum height of a single notification, excluding the frame.
#height = 300
# Position the notification in the top right corner
origin = top-center
# Offset from the origin
offset = 20x40
# Scale factor. It is auto-detected if value is 0.
scale = 0
# Maximum number of notification (0 means no limit)
notification_limit = 10
### Progress bar ###
# Turn on the progess bar. It appears when a progress hint is passed with
# for example dunstify -h int:value:12
progress_bar = true
# Set the progress bar height. This includes the frame, so make sure
# it's at least twice as big as the frame width.
progress_bar_height = 8
# Set the frame width of the progress bar
progress_bar_frame_width = 1
# Set the minimum width for the progress bar
progress_bar_min_width = 150
# Set the maximum width for the progress bar
progress_bar_max_width = 300
highlight = "#b4befe"
# Show how many messages are currently hidden (because of
# notification_limit).
indicate_hidden = yes
# The transparency of the window. Range: [0; 100].
# This option will only work if a compositing window manager is
# present (e.g. xcompmgr, compiz, etc.). (X11 only)
transparency = 0
# Draw a line of "separator_height" pixel height between two
# notifications.
# Set to 0 to disable.
# If gap_size is greater than 0, this setting will be ignored.
separator_height = 2
# Padding between text and separator.
padding = 16
# Horizontal padding.
horizontal_padding = 16
# Padding between text and icon.
text_icon_padding = 0
# Defines width in pixels of frame around the notification window.
# Set to 0 to disable.
frame_width = 2
# Defines color of the frame around the notification window.
frame_color = "#11111b"
# Size of gap to display between notifications - requires a compositor.
# If value is greater than 0, separator_height will be ignored and a border
# of size frame_width will be drawn around each notification instead.
# Click events on gaps do not currently propagate to applications below.
gap_size = 5
# Define a color for the separator.
# possible values are:
# * auto: dunst tries to find a color fitting to the background;
# * foreground: use the same color as the foreground;
# * frame: use the same color as the frame;
# * anything else will be interpreted as a X color.
separator_color = frame
# Sort messages by urgency.
sort = yes
# Don't remove messages, if the user is idle (no mouse or keyboard input)
# for longer than idle_threshold seconds.
# Set to 0 to disable.
# A client can set the 'transient' hint to bypass this. See the rules
# section for how to disable this if necessary
# idle_threshold = 120
### Text ###
font = Hack Nerd Font 10
# The spacing between lines. If the height is smaller than the
# font height, it will get raised to the font height.
line_height = 0
# Possible values are:
# full: Allow a small subset of html markup in notifications:
# <b>bold</b>
# <i>italic</i>
# <s>strikethrough</s>
# <u>underline</u>
#
# For a complete reference see
# <https://docs.gtk.org/Pango/pango_markup.html>.
#
# strip: This setting is provided for compatibility with some broken
# clients that send markup even though it's not enabled on the
# server. Dunst will try to strip the markup but the parsing is
# simplistic so using this option outside of matching rules for
# specific applications *IS GREATLY DISCOURAGED*.
#
# no: Disable markup parsing, incoming notifications will be treated as
# plain text. Dunst will not advertise that it has the body-markup
# capability if this is set as a global setting.
#
# It's important to note that markup inside the format option will be parsed
# regardless of what this is set to.
markup = full
# The format of the message. Possible variables are:
# %a appname
# %s summary
# %b body
# %i iconname (including its path)
# %I iconname (without its path)
# %p progress value if set ([ 0%] to [100%]) or nothing
# %n progress value if set without any extra characters
# %% Literal %
# Markup is allowed
format = "<b>%s</b>\n%b"
# Alignment of message text.
# Possible values are "left", "center" and "right".
alignment = left
# Vertical alignment of message text and icon.
# Possible values are "top", "center" and "bottom".
vertical_alignment = center
# Show age of message if message is older than show_age_threshold
# seconds.
# Set to -1 to disable.
show_age_threshold = 60
# Specify where to make an ellipsis in long lines.
# Possible values are "start", "middle" and "end".
ellipsize = middle
# Ignore newlines '\n' in notifications.
ignore_newline = no
# Stack together notifications with the same content
stack_duplicates = true
# Hide the count of stacked notifications with the same content
hide_duplicate_count = false
# Display indicators for URLs (U) and actions (A).
show_indicators = yes
### Icons ###
# Recursive icon lookup. You can set a single theme, instead of having to
# define all lookup paths.
enable_recursive_icon_lookup = true
# Set icon theme (only used for recursive icon lookup)
icon_theme = "Flatery-Dark"
# You can also set multiple icon themes, with the leftmost one being used first.
# icon_theme = "Adwaita, breeze"
# Align icons left/right/top/off
icon_position = left
# Scale small icons up to this size, set to 0 to disable. Helpful
# for e.g. small files or high-dpi screens. In case of conflict,
# max_icon_size takes precedence over this.
min_icon_size = 16
# Scale larger icons down to this size, set to 0 to disable
max_icon_size = 64
# Paths to default icons (only neccesary when not using recursive icon lookup)
icon_path = /usr/share/icons/Flatery-Dark/16x16/status/:/usr/share/icons/Flatery-Dark/16x16/devices/
### History ###
# Should a notification popped up from history be sticky or timeout
# as if it would normally do.
sticky_history = yes
# Maximum amount of notifications kept in history
history_length = 20
### Misc/Advanced ###
# dmenu path.
dmenu = /usr/bin/dmenu -p dunst:
# Browser for opening urls in context menu.
browser = /usr/bin/xdg-open
# Always run rule-defined scripts, even if the notification is suppressed
always_run_script = true
# Define the title of the windows spawned by dunst
title = Dunst
# Define the class of the windows spawned by dunst
class = Dunst
# Define the corner radius of the notification window
# in pixel size. If the radius is 0, you have no rounded
# corners.
# The radius will be automatically lowered if it exceeds half of the
# notification height to avoid clipping text and/or icons.
corner_radius = 10
# Ignore the dbus closeNotification message.
# Useful to enforce the timeout set by dunst configuration. Without this
# parameter, an application may close the notification sent before the
# user defined timeout.
ignore_dbusclose = false
### Wayland ###
# These settings are Wayland-specific. They have no effect when using X11
# Uncomment this if you want to let notications appear under fullscreen
# applications (default: overlay)
layer = top
# Set this to true to use X11 output on Wayland.
force_xwayland = false
### Legacy
# Use the Xinerama extension instead of RandR for multi-monitor support.
# This setting is provided for compatibility with older nVidia drivers that
# do not support RandR and using it on systems that support RandR is highly
# discouraged.
#
# By enabling this setting dunst will not be able to detect when a monitor
# is connected or disconnected which might break follow mode if the screen
# layout changes.
force_xinerama = false
### mouse
# Defines list of actions for each mouse event
# Possible values are:
# * none: Don't do anything.
# * do_action: Invoke the action determined by the action_name rule. If there is no
# such action, open the context menu.
# * open_url: If the notification has exactly one url, open it. If there are multiple
# ones, open the context menu.
# * close_current: Close current notification.
# * close_all: Close all notifications.
# * context: Open context menu for the notification.
# * context_all: Open context menu for all notifications.
# These values can be strung together for each mouse event, and
# will be executed in sequence.
mouse_left_click = close_current
mouse_middle_click = do_action, close_current
mouse_right_click = close_all
# Experimental features that may or may not work correctly. Do not expect them
# to have a consistent behaviour across releases.
[experimental]
# Calculate the dpi to use on a per-monitor basis.
# If this setting is enabled the Xft.dpi value will be ignored and instead
# dunst will attempt to calculate an appropriate dpi value for each monitor
# using the resolution and physical size. This might be useful in setups
# where there are multiple screens with very different dpi values.
per_monitor_dpi = true
[urgency_low]
# IMPORTANT: colors have to be defined in quotation marks.
# Otherwise the "#" and following would be interpreted as a comment.
background = "#181825"
foreground = "#CDD6F4"
timeout = 10
# Icon for notifications with low urgency, uncomment to enable
#default_icon = /path/to/icon
[urgency_normal]
background = "#181825"
foreground = "#CDD6F4"
timeout = 10
# Icon for notifications with normal urgency, uncomment to enable
#default_icon = /path/to/icon
[urgency_critical]
background = "#181825"
foreground = "#CDD6F4"
frame_color = "#eba0ac"
timeout = 60
# Icon for notifications with critical urgency, uncomment to enable
#default_icon = /path/to/icon
# Every section that isn't one of the above is interpreted as a rules to
# override settings for certain messages.
#
# Messages can be matched by
# appname (discouraged, see desktop_entry)
# body
# category
# desktop_entry
# icon
# match_transient
# msg_urgency
# stack_tag
# summary
#
# and you can override the
# background
# foreground
# format
# frame_color
# fullscreen
# new_icon
# set_stack_tag
# set_transient
# set_category
# timeout
# urgency
# icon_position
# skip_display
# history_ignore
# action_name
# word_wrap
# ellipsize
# alignment
# hide_text
#
# Shell-like globbing will get expanded.
#
# Instead of the appname filter, it's recommended to use the desktop_entry filter.
# GLib based applications export their desktop-entry name. In comparison to the appname,
# the desktop-entry won't get localized.
#
# SCRIPTING
# You can specify a script that gets run when the rule matches by
# setting the "script" option.
# The script will be called as follows:
# script appname summary body icon urgency
# where urgency can be "LOW", "NORMAL" or "CRITICAL".
#
# NOTE: It might be helpful to run dunst -print in a terminal in order
# to find fitting options for rules.
# Disable the transient hint so that idle_threshold cannot be bypassed from the
# client
#[transient_disable]
# match_transient = yes
# set_transient = no
#
# Make the handling of transient notifications more strict by making them not
# be placed in history.
#[transient_history_ignore]
# match_transient = yes
# history_ignore = yes
# fullscreen values
# show: show the notifications, regardless if there is a fullscreen window opened
# delay: displays the new notification, if there is no fullscreen window active
# If the notification is already drawn, it won't get undrawn.
# pushback: same as delay, but when switching into fullscreen, the notification will get
# withdrawn from screen again and will get delayed like a new notification
#[fullscreen_delay_everything]
# fullscreen = delay
[fullscreen_show_critical]
msg_urgency = critical
fullscreen = pushback
#[espeak]
# summary = "*"
# script = dunst_espeak.sh
#[script-test]
# summary = "*script*"
# script = dunst_test.sh
#[ignore]
# # This notification will not be displayed
# summary = "foobar"
# skip_display = true
#[history-ignore]
# # This notification will not be saved in history
# summary = "foobar"
# history_ignore = yes
#[skip-display]
# # This notification will not be displayed, but will be included in the history
# summary = "foobar"
# skip_display = yes
#[signed_on]
# appname = Pidgin
# summary = "*signed on*"
# urgency = low
#
#[signed_off]
# appname = Pidgin
# summary = *signed off*
# urgency = low
#
#[says]
# appname = Pidgin
# summary = *says*
# urgency = critical
#
#[twitter]
# appname = Pidgin
# summary = *twitter.com*
# urgency = normal
#
#[stack-volumes]
# appname = "some_volume_notifiers"
# set_stack_tag = "volume"
#
# vim: ft=cfg
+17
View File
@@ -0,0 +1,17 @@
[Settings]
gtk-theme-name=Catppuccin-Mocha-Standard-Lavender-Dark
gtk-icon-theme-name=Flatery-Dark
gtk-font-name=Hack Nerd Font 11
gtk-cursor-theme-name=Sweet-cursors
gtk-cursor-theme-size=24
gtk-toolbar-style=GTK_TOOLBAR_BOTH
gtk-toolbar-icon-size=GTK_ICON_SIZE_SMALL_TOOLBAR
gtk-button-images=1
gtk-menu-images=1
gtk-enable-event-sounds=1
gtk-enable-input-feedback-sounds=0
gtk-xft-antialias=1
gtk-xft-hinting=1
gtk-xft-hintstyle=hintslight
gtk-xft-rgba=rgb
gtk-application-prefer-dark-theme=1
+2
View File
@@ -0,0 +1,2 @@
[Settings]
gtk-application-prefer-dark-theme=1
+25
View File
@@ -0,0 +1,25 @@
# ▄▀█ █▄░█ █ █▀▄▀█ ▄▀█ ▀█▀ █ █▀█ █▄░█
# █▀█ █░▀█ █ █░▀░█ █▀█ ░█░ █ █▄█ █░▀█
bezier = overshot, 0.05, 0.9, 0.1, 1.1
bezier = smoothOut, 0.36, 0, 0.66, -0.56
bezier = smoothIn, 0.25, 1, 0.5, 1
animations {
enabled=1
animation = windows,1,5,overshot,slide # slide or popin
animation = windowsOut, 1, 8,smoothOut,slide
animation = windowsMove, 1, 5,default
animation = border,1,4,default
animation = fade, 1, 5, smoothIn
animation = fadeOut, 1, 5, smoothIn
animation = fadeDim, 1, 2, smoothIn
animation = workspaces,1,5,overshot,slidevert # slide , slidevert , fade
#buttery_smoooooooth...
# animation=windows,1,4,default,slide # slide or popin
# animation = windowsOut, 1, 6,smoothIn,slide
# animation = fade, 1, 12, smoothIn
# animation = fadeOut, 1, 6, smoothIn
# animation = fadeDim, 1, 5, smoothIn
# animation=workspaces,1,4,default,slide # slide , slidevert , fade
}
+19
View File
@@ -0,0 +1,19 @@
# █▀▀ ▀▄▀ █▀▀ █▀▀
# ██▄ █░█ ██▄ █▄▄
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
# Execute your favorite apps at launch
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
exec-once = ~/.config/hypr/xdg-portal-hyprland
exec-once = lxpolkit
exec-once = waypaper --restore
exec-once = waybar
exec-once = cliphist wipe
exec-once = wl-paste --watch cliphist store #Stores only text data
exec-once = wl-paste --type image --watch cliphist store #Stores only image data
exec-once = dunst
#exec-once = swayidle -w timeout 300 '$HOME/.local/bin/moo-lockscreen' timeout 360 'hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on' before-sleep 'swaylock -f'
exec-once = swayidle -w timeout 300 'swaylock -f' timeout 360 'hyprctl dispatch dpms off' resume 'hyprctl dispatch dpms on' before-sleep 'swaylock -f'
exec-once = xdg-mime default pcmanfm.desktop inode/directory
#exec-once = sway-audio-idle-inhibit
+47
View File
@@ -0,0 +1,47 @@
# █▀▄ █▀▀ █▀▀ █▀█ █▀█ ▄▀█ ▀█▀ █ █▀█ █▄░█
# █▄▀ ██▄ █▄▄ █▄█ █▀▄ █▀█ ░█░ █ █▄█ █░▀█
decoration {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
rounding = 5
# █▄▄ █░░ █░█ █▀█
# █▄█ █▄▄ █▄█ █▀▄
#blur = true
#blur_size = 3
#blur_passes = 1
#blur_new_optimizations = true
blur {
enabled = true
size = 4
passes = 2
ignore_opacity = true
new_optimizations = true
xray = false
noise = 0.0117
contrast = 0.8916
brightness = 0.8172
#vibrancy = 0.1696
# vibrancy_darkness = 0
special = false
}
# █▀█ █▀█ ▄▀█ █▀▀ █ ▀█▀ █▄█
# █▄█ █▀▀ █▀█ █▄▄ █ ░█░ ░█░
#active_opacity=0.98
#inactive_opacity=0.7
#fullscreen_opacity=1.05
#dim_inactive=0
#dim_strength=0.2
# dim_around=0.5
# █▀ █░█ ▄▀█ █▀▄ █▀█ █░█░█
# ▄█ █▀█ █▀█ █▄▀ █▄█ ▀▄▀▄▀
drop_shadow = true
shadow_range = 4
shadow_render_power = 3
col.shadow = rgba(1a1a1aee)
}
+15
View File
@@ -0,0 +1,15 @@
# █▀▄▀█ █▀█ █▄░█ █ ▀█▀ █▀█ █▀█
# █░▀░█ █▄█ █░▀█ █ ░█░ █▄█ █▀▄
# See https://wiki.hyprland.org/Configuring/Monitors/
monitor=HDMI-A-1,2560x1440@144,0x0,1
monitor=DP-2,preferred,2560x0,1
monitor=,preferred,auto,1
workspace = HDMI-A-1, 1
workspace = HDMI-A-1, 2
workspace = HDMI-A-1, 3
workspace = DP-2, 4
workspace = DP-2, 5
workspace = DP-2, 6
+16
View File
@@ -0,0 +1,16 @@
# █▀▀ █▀▀ █▄░█ █▀▀ █▀█ ▄▀█ █░░
# █▄█ ██▄ █░▀█ ██▄ █▀▄ █▀█ █▄▄
general {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
gaps_in = 4
gaps_out = 8
border_size = 2
col.active_border = rgba(7f849cFF)
col.inactive_border = rgba(1e1e2eFF)
layout = dwindle
resize_on_border = true
}
+36
View File
@@ -0,0 +1,36 @@
# █ █▄░█ █▀█ █░█ ▀█▀
# █ █░▀█ █▀▀ █▄█ ░█░
# For all categories, see https://wiki.hyprland.org/Configuring/Variables/
input {
kb_layout = de
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
numlock_by_default = true
accel_profile = flat
touchpad {
natural_scroll = false
}
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
}
# █▀▀ █▀▀ █▀ ▀█▀ █░█ █▀█ █▀▀ █▀
# █▄█ ██▄ ▄█ ░█░ █▄█ █▀▄ ██▄ ▄█
gestures {
# See https://wiki.hyprland.org/Configuring/Variables/ for more
workspace_swipe = false
}
# Example per-device config
# See https://wiki.hyprland.org/Configuring/Keywords/#executing for more
# device:epic-mouse-v1 {
# sensitivity = -0.5
# }
+96
View File
@@ -0,0 +1,96 @@
# █▄▀ █▀▀ █▄█ █▄▄ █ █▄░█ █▀▄
# █░█ ██▄ ░█░ █▄█ █ █░▀█ █▄▀
# See https://wiki.hyprland.org/Configuring/Keywords/ for more
$mainMod = SUPER
# Example binds, see https://wiki.hyprland.org/Configuring/Binds/ for more
bind = $mainMod, RETURN, exec, kitty
bind = $mainMod, Q, killactive,
#bind = $mainMod, M, exit,
bind = $mainMod, E, exec, xdg-open ~
bind = $mainMod, V, togglefloating,
bind = $mainMod, P, pseudo, # dwindle
bind = $mainMod, S, togglesplit, # dwindle
bind = $mainMod, F, fullscreen
bind = $mainMod, U, exec, $HOME/.config/conky/conkytoggler
bind = $mainMod, SPACE, exec, pkill rofi || ~/.config/rofi/launcher/launcher.sh
bind = ALT, TAB, exec, pkill rofi || ~/.config/rofi/launcher/launcher.sh window
bind = $mainMod, N, exec, pkill rofi || ~/.config/rofi/nm-vpn/nm-vpn.sh
bind = $mainMod, M, exec, pkill rofi || networkmanager_dmenu
bind = $mainMod, T, exec, pkill rofi || ~/.config/rofi/settings-menu/settings-menu.sh
bind = $mainMod, A, exec, pkill rofi || ~/.config/rofi/volume/volume.sh
bind = $mainMod, I, exec, pkill rofi || $HOME/.config/rofi/emojis/emojis.sh | rofi -dmenu -theme $HOME/.config/rofi/emojis/emojis.rasi -mesg " Emojis"
#bind = $mainMod, L, exec, swaync-client -t -sw
#bind = $mainMod, K, exec, xkill
bind = SUPER, C, exec, cliphist list | rofi -dmenu | cliphist decode | wl-copy
bind = $mainMod, TAB, cyclenext
bind = $mainMod ALT, SHIFT, cyclenext, prev
bind=,PRINT,exec, pkill rofi || ~/.config/rofi/screenshot/screenshot.sh
bind = CTRL ALT, DELETE, exec, kitty btop -p 1
bind = $mainMod, F4, exec, ~/.config/rofi/powermenu/powermenu.sh
bind = $mainMod, escape, exec, killall -SIGUSR1 waybar
# Move focus with mainMod
bind = $mainMod, H, movefocus, l
bind = $mainMod, J, movefocus, d
bind = $mainMod, K, movefocus, u
bind = $mainMod, L, movefocus, r
# Move window with mainMod + arrow keys
bind = $mainMod, left, movewindow, l
bind = $mainMod, right, movewindow, r
bind = $mainMod, up, movewindow, u
bind = $mainMod, down, movewindow, d
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, movetoworkspace, 1
bind = $mainMod SHIFT, 2, movetoworkspace, 2
bind = $mainMod SHIFT, 3, movetoworkspace, 3
bind = $mainMod SHIFT, 4, movetoworkspace, 4
bind = $mainMod SHIFT, 5, movetoworkspace, 5
bind = $mainMod SHIFT, 6, movetoworkspace, 6
bind = $mainMod SHIFT, 7, movetoworkspace, 7
bind = $mainMod SHIFT, 8, movetoworkspace, 8
bind = $mainMod SHIFT, 9, movetoworkspace, 9
bind = $mainMod SHIFT, 0, movetoworkspace, 10
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# MODKEYS
bindr = CAPS, Caps_Lock, exec, swayosd --caps-lock
# SPECIAL MODKEYS
binde = ,XF86AudioRaiseVolume, exec, /home/dom/.local/bin/volnote up
binde = ,XF86AudioLowerVolume, exec, /home/dom/.local/bin/volnote down
binde = ,XF86AudioMute, exec, /home/dom/.local/bin/volnote mute
binde = ,XF86MonBrightnessUp, exec, swayosd --brightness raise
binde = ,XF86MonBrightnessDown, exec, swayosd --brightness lower
binde = ,XF86AudioPlay, exec, /home/dom/.local/bin/volnote toggle
binde = ,XF86AudioStop, exec, playerctl stop
binde = ,XF86AudioPrev, exec, playerctl prev
binde = ,XF86AudioNext, exec, playerctl next
+13
View File
@@ -0,0 +1,13 @@
# █▀▄ █░█░█ █ █▄░█ █▀▄ █░░ █▀▀
# █▄▀ ▀▄▀▄▀ █ █░▀█ █▄▀ █▄▄ ██▄
dwindle {
# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/ for more
pseudotile = true # master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # you probably want this
no_gaps_when_only = 1 # monocle layout
}
master {
# See https://wiki.hyprland.org/Configuring/Master-Layout/ for more
new_is_master = true
}
+13
View File
@@ -0,0 +1,13 @@
# █▀▄▀█ █ █▀ █▀▀
# █░▀░█ █ ▄█ █▄▄
misc {
disable_hyprland_logo=true
disable_splash_rendering=false
mouse_move_enables_dpms=true
vfr=true
layers_hog_keyboard_focus = true
animate_manual_resizes = true
enable_swallow = true
swallow_regex = ^(kitty)$
}
+99
View File
@@ -0,0 +1,99 @@
# █░█░█ █ █▄░█ █▀▄ █▀█ █░█░█   █▀█ █░█ █░░ █▀▀ █▀
# ▀▄▀▄▀ █ █░▀█ █▄▀ █▄█ ▀▄▀▄▀   █▀▄ █▄█ █▄▄ ██▄ ▄█
# Example windowrule v1
# windowrule = float, ^(kitty)$
# Example windowrule v2
# windowrulev2 = float,class:^(kitty)$,title:^(kitty)$
# See https://wiki.hyprland.org/Configuring/Window-Rules/ for more
# firefox Picture-in-Picture
windowrulev2 = float,class:^(firefox)$,title:^(Picture-in-Picture)$
windowrulev2 = pin,class:^(firefox)$,title:^(Picture-in-Picture)$
windowrulev2 = nofullscreenrequest,class:^(firefox)$,title:^(Picture-in-Picture)$
# firefox figma micro indicator
windowrulev2 = nofullscreenrequest,class:^(firefox)$,title:^(Firefox — Sharing Indicator)$
windowrulev2 = float,class:^(firefox)$,title:^(Firefox — Sharing Indicator)$
# Common Dialogs
windowrule = float,title:^(Open)$
windowrule = float,title:^(Öffnen von)$
windowrule = size 600 400, title:^(Öffnen von)$
windowrule = float,title:^(Choose Files)$
windowrule = float,title:^(Save As)$
windowrule = float,title:^(Confirm to replace files)$
windowrule = float,title:^(Ersetzung)$
windowrule = float,title:^(File Operation Progress)$
windowrule = float,title:^(Teilen-Hinweis)$
windowrule = float,title:^(Lxpolkit)$
windowrule = float,title:^(Timeshift-gtk)$
windowrulev2 = float,class:^(nm-connection-editor)$
windowrulev2 = float,class:^(sddm-conf)$
windowrule = float, mpv
windowrule = float, Vlc
windowrule = float, file_progress
windowrule = float, confirm
windowrule = float, dialog
windowrule = float, download
windowrule = float, notification
windowrule = float, error
windowrule = float, splash
windowrule = float, confirmreset
windowrule = float, title:Open File
windowrule = float, title:branchdialog
windowrule = float, Lxappearance
windowrule = float, Resources
windowrule = float, Rofi
windowrule = animation none,Rofi
windowrule = float,viewnior
windowrule = float,feh
windowrule = float, pavucontrol-qt
windowrule = float, pavucontrol
windowrule = float, file-roller
windowrule = idleinhibit focus, mpv
windowrule = idleinhibit fullscreen, firefox
windowrule = float, title:^(Media viewer)$
windowrule = float, title:^(Volume Control)$
windowrule = float, title:^(btop)$
windowrule = size 1024 768, title:^(btop)$
windowrule = float, title:^(Picture-in-Picture)$
windowrule = size 800 600, title:^(Volume Control)$
windowrule = move 75 44%, title:^(Volume Control)$
windowrulev2 = float,class:^(Conky)$
windowrulev2 = nofocus,class:^(Conky)$
windowrulev2 = pin,class:^(Conky)$
windowrulev2 = move 100 100,class:^(Conky)$
# Audio Mixer
windowrule = float,pavucontrol
windowrule = center,pavucontrol
windowrule = float,title:^(NoiseTorch)$
windowrule = float,title:^(Waydroid)$
# Nemo File Roller
windowrule = float,file-roller
windowrule = float,title:(Properties)$
# VPN Connection Dialog
windowrule = float,title:^(VPN Connection)$
windowrule = size 800 200,title:^(VPN Connection)$
windowrule = center,title:^(VPN Connection)$
windowrule = tile,title:^(Microsoft Teams)$
# Quick EDO Connection Dialog
windowrule = float,title:^(vscquick)$
windowrule = size 400 200,title:^(vscquick)$
windowrule = center,title:^(vscquick)$
windowrule = monitor DP-2,title:^(Default - Wine desktop)$
windowrule = fullscreen,title:^(Default - Wine desktop)$
#layerrule = noanim,rofi
#windowrulev2 = float,class:^(libreoffice)$
#layerrule = blur,rofi
+20
View File
@@ -0,0 +1,20 @@
#
# Please note not all available settings / options are set here.
# For a full list, see the wiki
#
env = XCURSOR_SIZE,24
env = HYPRLAND_INTERACTIVE_SCREENSHOT_SAVEDIR,$HOME/Pictures/Screenshots
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
#env = GTK_THEME,Catppuccin-Mocha-Standard-Lavender-Dark
source = ~/.config/hypr/hl-displays.conf
source = ~/.config/hypr/hl-general.conf
source = ~/.config/hypr/hl-autostart.conf
source = ~/.config/hypr/hl-input.conf
source = ~/.config/hypr/hl-decoration.conf
source = ~/.config/hypr/hl-animation.conf
source = ~/.config/hypr/hl-layout.conf
source = ~/.config/hypr/hl-windowrules.conf
source = ~/.config/hypr/hl-keybindings.conf
source = ~/.config/hypr/hl-misc.conf
+16
View File
@@ -0,0 +1,16 @@
ipc = off
preload = ~/Pictures/Wallpaper/MonarchOS.png
#if more than one preload is desired then continue to preload other backgrounds
#preload = /path/to/next_image.png
# .. more preloads
#set the default wallpaper(s) seen on inital workspace(s) --depending on the number of monitors used
# wallpaper = DP-3,/home/dom/.wallpaper/0wall.png
wallpaper = ,~/Pictures/Wallpaper/MonarchOS.png
#if more than one monitor in use, can load a 2nd image
# wallpaper = HDMI-A-1,/home/dom/.wallpaper/0wall.png
# wallpaper = ,/home/dom/.wallpaper/0wall.png
# .. more monitors
+8
View File
@@ -0,0 +1,8 @@
#!/bin/bash
sleep 1
killall xdg-desktop-portal-hyprland
#killall xdg-desktop-portal-wlr
killall xdg-desktop-portal
/usr/lib/xdg-desktop-portal-hyprland &
sleep 2
/usr/lib/xdg-desktop-portal &
+44
View File
@@ -0,0 +1,44 @@
# Nord Colorscheme for Kitty
# Based on:
# - https://gist.github.com/marcusramberg/64010234c95a93d953e8c79fdaf94192
# - https://github.com/arcticicestudio/nord-hyper
background_opacity 0.9
foreground #D8DEE9
background #24273a
selection_foreground #000000
selection_background #FFFACD
url_color #0087BD
cursor #81A1C1
# black
color0 #3B4252
color8 #4C566A
# red
color1 #BF616A
color9 #BF616A
# green
color2 #A3BE8C
color10 #A3BE8C
# yellow
color3 #EBCB8B
color11 #EBCB8B
# blue
color4 #787c99
color12 #787c99
# magenta
color5 #B48EAD
color13 #B48EAD
# cyan
color6 #88C0D0
color14 #8FBCBB
# white
color7 #acb0d0
color15 #CACACE
+90
View File
@@ -0,0 +1,90 @@
font_family Hack Nerd Font
bold_font auto
italic_font auto
bold_italic_font auto
font_size 10.0
disable_ligatures never
cursor_shape beam
enable_audio_bell no
window_padding_width 10 10
open_url_with firefox
copy_on_select true
update_check_interval 0
confirm_os_window_close 0
tab_bar_style separator
tab_title_template " {index}: {title[title.rfind('/')+1:]}"
editor nvim
set-window-title "kitty"
sync_to_monitor yes
include ./custom.conf
# Key mapping
# For a list of key names, see: http://www.glfw.org/docs/latest/group__keys.html
# For a list of modifier names, see: http://www.glfw.org/docs/latest/group__mods.html
# You can use the special action no_op to unmap a keyboard shortcut that is
# assigned in the default configuration.
# Clipboard
map super+v paste_from_clipboard
map ctrl+shift+s paste_from_selection
map super+c copy_to_clipboard
map shift+insert paste_from_selection
# Scrolling
map ctrl+shift+up scroll_line_up
map ctrl+shift+down scroll_line_down
map ctrl+shift+k scroll_line_up
map ctrl+shift+j scroll_line_down
map ctrl+shift+page_up scroll_page_up
map ctrl+shift+page_down scroll_page_down
map ctrl+shift+home scroll_home
map ctrl+shift+end scroll_end
map ctrl+shift+h show_scrollback
# Window management
map super+n new_os_window
map super+w close_window
map ctrl+shift+enter new_window
map ctrl+shift+] next_window
map ctrl+shift+[ previous_window
map ctrl+shift+f move_window_forward
map ctrl+shift+b move_window_backward
map ctrl+shift+` move_window_to_top
map ctrl+shift+1 first_window
map ctrl+shift+2 second_window
map ctrl+shift+3 third_window
map ctrl+shift+4 fourth_window
map ctrl+shift+5 fifth_window
map ctrl+shift+6 sixth_window
map ctrl+shift+7 seventh_window
map ctrl+shift+8 eighth_window
map ctrl+shift+9 ninth_window
map ctrl+shift+0 tenth_window
# Tab management
map ctrl+shift+right next_tab
map ctrl+shift+left previous_tab
map ctrl+shift+t new_tab
map ctrl+shift+q close_tab
map ctrl+shift+l next_layout
map ctrl+shift+. move_tab_forward
map ctrl+shift+, move_tab_backward
# Miscellaneous
map ctrl+shift+up increase_font_size
map ctrl+shift+down decrease_font_size
map ctrl+shift+backspace restore_font_size
+3
View File
@@ -0,0 +1,3 @@
permission: octal
total-size: true
date: '+%d.%m.%Y %X'
+894
View File
@@ -0,0 +1,894 @@
# See this wiki page for more info:
# https://github.com/dylanaraps/neofetch/wiki/Customizing-Info
#
# Colour config is here and in .zshrc
#
print_info() {
info title
info underline
prin "$(color 12)╭──────────── $(color 10)Software$(color 12) ────────────"
info "$(color 12)│ $(color 14)OS" distro
info "$(color 12)│ $(color 14)Kernel" kernel
info "$(color 12)│ $(color 14)Packages" packages
info "$(color 12)│ $(color 14)Shell" shell
info "$(color 12)│ $(color 14)DE" de
info "$(color 12)│ $(color 14)WM" wm
info "$(color 12)│ $(color 14)Terminal" term
info "$(color 12)│ $(color 14)Local IP" local_ip
info "$(color 12)│ $(color 14)Locale" locale
prin "$(color 12)├──────────── $(color 10)Hardware$(color 12) ────────────"
info "$(color 12)│ $(color 14)Host" model
info "$(color 12)│ $(color 14)CPU" cpu
info "$(color 12)│ $(color 14)GPU" gpu
info "$(color 12)│ $(color 14)Memory" memory
info "$(color 12)│ $(color 14)Disk" disk
prin "$(color 12)├───────────── $(color 10)Uptime$(color 12) ─────────────"
info "$(color 12)│" uptime
prin "$(color 12)╰──────────────────────────────────"
prin "$(color 02) MonArchOS v1.0.0"
info cols
# Defaults
# info "OS" distro
# info "Host" model
# info "Kernel" kernel
# info "Uptime" uptime
# info "Packages" packages
# info "Shell" shell
# info "Resolution" resolution
# info "DE" de
# info "WM" wm
# info "WM Theme" wm_theme
# info "Theme" theme
# info "Icons" icons
# info "Terminal" term
# info "Terminal Font" term_font
# info "CPU" cpu
# info "GPU" gpu
# info "Memory" memory
# info "GPU Driver" gpu_driver # Linux/macOS only
# info "CPU Usage" cpu_usage
# info "Disk" disk
# info "Battery" battery
# info "Font" font
# info "Song" song
# [[ "$player" ]] && prin "Music Player" "$player"
# info "Local IP" local_ip
# info "Public IP" public_ip
# info "Users" users
# info "Locale" locale # This only works on glibc systems.
# info cols
}
# Title
# Hide/Show Fully qualified domain name.
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --title_fqdn
title_fqdn="off"
# Kernel
# Shorten the output of the kernel function.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --kernel_shorthand
# Supports: Everything except *BSDs (except PacBSD and PC-BSD)
#
# Example:
# on: '4.8.9-1-ARCH'
# off: 'Linux 4.8.9-1-ARCH'
kernel_shorthand="off"
# Distro
# Shorten the output of the distro function
#
# Default: 'off'
# Values: 'on', 'tiny', 'off'
# Flag: --distro_shorthand
# Supports: Everything except Windows and Haiku
distro_shorthand="off"
# Show/Hide OS Architecture.
# Show 'x86_64', 'x86' and etc in 'Distro:' output.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --os_arch
#
# Example:
# on: 'Arch Linux x86_64'
# off: 'Arch Linux'
os_arch="on"
# Uptime
# Shorten the output of the uptime function
#
# Default: 'on'
# Values: 'on', 'tiny', 'off'
# Flag: --uptime_shorthand
#
# Example:
# on: '2 days, 10 hours, 3 mins'
# tiny: '2d 10h 3m'
# off: '2 days, 10 hours, 3 minutes'
uptime_shorthand="off"
# Memory
# Show memory pecentage in output.
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --memory_percent
#
# Example:
# on: '1801MiB / 7881MiB (22%)'
# off: '1801MiB / 7881MiB'
memory_percent="off"
# Change memory output unit.
#
# Default: 'mib'
# Values: 'kib', 'mib', 'gib'
# Flag: --memory_unit
#
# Example:
# kib '1020928KiB / 7117824KiB'
# mib '1042MiB / 6951MiB'
# gib: ' 0.98GiB / 6.79GiB'
memory_unit="mib"
# Packages
# Show/Hide Package Manager names.
#
# Default: 'tiny'
# Values: 'on', 'tiny' 'off'
# Flag: --package_managers
#
# Example:
# on: '998 (pacman), 8 (flatpak), 4 (snap)'
# tiny: '908 (pacman, flatpak, snap)'
# off: '908'
package_managers="on"
# Shell
# Show the path to $SHELL
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --shell_path
#
# Example:
# on: '/bin/bash'
# off: 'bash'
shell_path="off"
# Show $SHELL version
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --shell_version
#
# Example:
# on: 'bash 4.4.5'
# off: 'bash'
shell_version="on"
# CPU
# CPU speed type
#
# Default: 'bios_limit'
# Values: 'scaling_cur_freq', 'scaling_min_freq', 'scaling_max_freq', 'bios_limit'.
# Flag: --speed_type
# Supports: Linux with 'cpufreq'
# NOTE: Any file in '/sys/devices/system/cpu/cpu0/cpufreq' can be used as a value.
speed_type="bios_limit"
# CPU speed shorthand
#
# Default: 'off'
# Values: 'on', 'off'.
# Flag: --speed_shorthand
# NOTE: This flag is not supported in systems with CPU speed less than 1 GHz
#
# Example:
# on: 'i7-6500U (4) @ 3.1GHz'
# off: 'i7-6500U (4) @ 3.100GHz'
speed_shorthand="on"
# Enable/Disable CPU brand in output.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --cpu_brand
#
# Example:
# on: 'Intel i7-6500U'
# off: 'i7-6500U (4)'
cpu_brand="on"
# CPU Speed
# Hide/Show CPU speed.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --cpu_speed
#
# Example:
# on: 'Intel i7-6500U (4) @ 3.1GHz'
# off: 'Intel i7-6500U (4)'
cpu_speed="on"
# CPU Cores
# Display CPU cores in output
#
# Default: 'logical'
# Values: 'logical', 'physical', 'off'
# Flag: --cpu_cores
# Support: 'physical' doesn't work on BSD.
#
# Example:
# logical: 'Intel i7-6500U (4) @ 3.1GHz' (All virtual cores)
# physical: 'Intel i7-6500U (2) @ 3.1GHz' (All physical cores)
# off: 'Intel i7-6500U @ 3.1GHz'
cpu_cores="logical"
# CPU Temperature
# Hide/Show CPU temperature.
# Note the temperature is added to the regular CPU function.
#
# Default: 'off'
# Values: 'C', 'F', 'off'
# Flag: --cpu_temp
# Supports: Linux, BSD
# NOTE: For FreeBSD and NetBSD-based systems, you'll need to enable
# coretemp kernel module. This only supports newer Intel processors.
#
# Example:
# C: 'Intel i7-6500U (4) @ 3.1GHz [27.2°C]'
# F: 'Intel i7-6500U (4) @ 3.1GHz [82.0°F]'
# off: 'Intel i7-6500U (4) @ 3.1GHz'
cpu_temp="off"
# GPU
# Enable/Disable GPU Brand
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --gpu_brand
#
# Example:
# on: 'AMD HD 7950'
# off: 'HD 7950'
gpu_brand="on"
# Which GPU to display
#
# Default: 'all'
# Values: 'all', 'dedicated', 'integrated'
# Flag: --gpu_type
# Supports: Linux
#
# Example:
# all:
# GPU1: AMD HD 7950
# GPU2: Intel Integrated Graphics
#
# dedicated:
# GPU1: AMD HD 7950
#
# integrated:
# GPU1: Intel Integrated Graphics
gpu_type="all"
# Resolution
# Display refresh rate next to each monitor
# Default: 'off'
# Values: 'on', 'off'
# Flag: --refresh_rate
# Supports: Doesn't work on Windows.
#
# Example:
# on: '1920x1080 @ 60Hz'
# off: '1920x1080'
refresh_rate="on"
# Gtk Theme / Icons / Font
# Shorten output of GTK Theme / Icons / Font
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --gtk_shorthand
#
# Example:
# on: 'Numix, Adwaita'
# off: 'Numix [GTK2], Adwaita [GTK3]'
gtk_shorthand="on"
# Enable/Disable gtk2 Theme / Icons / Font
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --gtk2
#
# Example:
# on: 'Numix [GTK2], Adwaita [GTK3]'
# off: 'Adwaita [GTK3]'
gtk2="on"
# Enable/Disable gtk3 Theme / Icons / Font
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --gtk3
#
# Example:
# on: 'Numix [GTK2], Adwaita [GTK3]'
# off: 'Numix [GTK2]'
gtk3="on"
# IP Address
# Website to ping for the public IP
#
# Default: 'http://ident.me'
# Values: 'url'
# Flag: --ip_host
public_ip_host="http://ident.me"
# Public IP timeout.
#
# Default: '2'
# Values: 'int'
# Flag: --ip_timeout
public_ip_timeout=2
# Desktop Environment
# Show Desktop Environment version
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --de_version
de_version="on"
# Disk
# Which disks to display.
# The values can be any /dev/sdXX, mount point or directory.
# NOTE: By default we only show the disk info for '/'.
#
# Default: '/'
# Values: '/', '/dev/sdXX', '/path/to/drive'.
# Flag: --disk_show
#
# Example:
# disk_show=('/' '/dev/sdb1'):
# 'Disk (/): 74G / 118G (66%)'
# 'Disk (/mnt/Videos): 823G / 893G (93%)'
#
# disk_show=('/'):
# 'Disk (/): 74G / 118G (66%)'
#
disk_show=('/' '/mnt/Storage')
# Disk subtitle.
# What to append to the Disk subtitle.
#
# Default: 'mount'
# Values: 'mount', 'name', 'dir', 'none'
# Flag: --disk_subtitle
#
# Example:
# name: 'Disk (/dev/sda1): 74G / 118G (66%)'
# 'Disk (/dev/sdb2): 74G / 118G (66%)'
#
# mount: 'Disk (/): 74G / 118G (66%)'
# 'Disk (/mnt/Local Disk): 74G / 118G (66%)'
# 'Disk (/mnt/Videos): 74G / 118G (66%)'
#
# dir: 'Disk (/): 74G / 118G (66%)'
# 'Disk (Local Disk): 74G / 118G (66%)'
# 'Disk (Videos): 74G / 118G (66%)'
#
# none: 'Disk: 74G / 118G (66%)'
# 'Disk: 74G / 118G (66%)'
# 'Disk: 74G / 118G (66%)'
disk_subtitle="dir"
# Disk percent.
# Show/Hide disk percent.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --disk_percent
#
# Example:
# on: 'Disk (/): 74G / 118G (66%)'
# off: 'Disk (/): 74G / 118G'
disk_percent="on"
# Song
# Manually specify a music player.
#
# Default: 'auto'
# Values: 'auto', 'player-name'
# Flag: --music_player
#
# Available values for 'player-name':
#
# amarok
# audacious
# banshee
# bluemindo
# clementine
# cmus
# deadbeef
# deepin-music
# dragon
# elisa
# exaile
# gnome-music
# gmusicbrowser
# gogglesmm
# guayadeque
# io.elementary.music
# iTunes
# juk
# lollypop
# mocp
# mopidy
# mpd
# muine
# netease-cloud-music
# olivia
# playerctl
# pogo
# pragha
# qmmp
# quodlibet
# rhythmbox
# sayonara
# smplayer
# spotify
# strawberry
# tauonmb
# tomahawk
# vlc
# xmms2d
# xnoise
# yarock
music_player="auto"
# Format to display song information.
#
# Default: '%artist% - %album% - %title%'
# Values: '%artist%', '%album%', '%title%'
# Flag: --song_format
#
# Example:
# default: 'Song: Jet - Get Born - Sgt Major'
song_format="%artist% - %title%"
# Print the Artist, Album and Title on separate lines
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --song_shorthand
#
# Example:
# on: 'Artist: The Fratellis'
# 'Album: Costello Music'
# 'Song: Chelsea Dagger'
#
# off: 'Song: The Fratellis - Costello Music - Chelsea Dagger'
song_shorthand="off"
# 'mpc' arguments (specify a host, password etc).
#
# Default: ''
# Example: mpc_args=(-h HOST -P PASSWORD)
mpc_args=()
# Text Colors
# Text Colors
#
# Default: 'distro'
# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
# Flag: --colors
#
# Each number represents a different part of the text in
# this order: 'title', '@', 'underline', 'subtitle', 'colon', 'info'
#
# Example:
# colors=(distro) - Text is colored based on Distro colors.
# colors=(4 6 1 8 8 6) - Text is colored in the order above.
colors=(distro)
# Text Options
# Toggle bold text
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --bold
bold="on"
# Enable/Disable Underline
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --underline
underline_enabled="on"
# Underline character
#
# Default: '-'
# Values: 'string'
# Flag: --underline_char
underline_char="¨"
# Info Separator
# Replace the default separator with the specified string.
#
# Default: ':'
# Flag: --separator
#
# Example:
# separator="->": 'Shell-> bash'
# separator=" =": 'WM = dwm'
separator=""
# Color Blocks
# Color block range
# The range of colors to print.
#
# Default: '0', '15'
# Values: 'num'
# Flag: --block_range
#
# Example:
#
# Display colors 0-7 in the blocks. (8 colors)
# neofetch --block_range 0 7
#
# Display colors 0-15 in the blocks. (16 colors)
# neofetch --block_range 0 15
block_range=(0 15)
# Toggle color blocks
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --color_blocks
color_blocks="on"
# Color block width in spaces
#
# Default: '3'
# Values: 'num'
# Flag: --block_width
block_width=3
# Color block height in lines
#
# Default: '1'
# Values: 'num'
# Flag: --block_height
block_height=1
# Color Alignment
#
# Default: 'auto'
# Values: 'auto', 'num'
# Flag: --col_offset
#
# Number specifies how far from the left side of the terminal (in spaces) to
# begin printing the columns, in case you want to e.g. center them under your
# text.
# Example:
# col_offset="auto" - Default behavior of neofetch
# col_offset=7 - Leave 7 spaces then print the colors
col_offset="auto"
# Progress Bars
# Bar characters
#
# Default: '-', '='
# Values: 'string', 'string'
# Flag: --bar_char
#
# Example:
# neofetch --bar_char 'elapsed' 'total'
# neofetch --bar_char '-' '='
bar_char_elapsed="-"
bar_char_total="="
# Toggle Bar border
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --bar_border
bar_border="on"
# Progress bar length in spaces
# Number of chars long to make the progress bars.
#
# Default: '15'
# Values: 'num'
# Flag: --bar_length
bar_length=15
# Progress bar colors
# When set to distro, uses your distro's logo colors.
#
# Default: 'distro', 'distro'
# Values: 'distro', 'num'
# Flag: --bar_colors
#
# Example:
# neofetch --bar_colors 3 4
# neofetch --bar_colors distro 5
bar_color_elapsed="distro"
bar_color_total="distro"
# Info display
# Display a bar with the info.
#
# Default: 'off'
# Values: 'bar', 'infobar', 'barinfo', 'off'
# Flags: --cpu_display
# --memory_display
# --battery_display
# --disk_display
#
# Example:
# bar: '[---=======]'
# infobar: 'info [---=======]'
# barinfo: '[---=======] info'
# off: 'info'
cpu_display="off"
memory_display="off"
battery_display="off"
disk_display="off"
# Backend Settings
# Image backend.
#
# Default: 'ascii'
# Values: 'ascii', 'caca', 'chafa', 'jp2a', 'iterm2', 'off',
# 'pot', 'termpix', 'pixterm', 'tycat', 'w3m', 'kitty'
# Flag: --backend
image_backend="ascii"
# Image Source
#
# Which image or ascii file to display.
#
# Default: 'auto'
# Values: 'auto', 'ascii', 'wallpaper', '/path/to/img', '/path/to/ascii', '/path/to/dir/'
# 'command output (neofetch --ascii "$(fortune | cowsay -W 30)")'
# Flag: --source
#
# NOTE: 'auto' will pick the best image source for whatever image backend is used.
# In ascii mode, distro ascii art will be used and in an image mode, your
# wallpaper will be used.
image_source="auto"
# Ascii Options
# Ascii distro
# Which distro's ascii art to display.
#
# Default: 'auto'
# Values: 'auto', 'distro_name'
# Flag: --ascii_distro
# NOTE: AIX, Alpine, Anarchy, Android, Antergos, antiX, "AOSC OS",
# "AOSC OS/Retro", Apricity, ArcoLinux, ArchBox, ARCHlabs,
# ArchStrike, XFerience, ArchMerge, Arch, Artix, Arya, Bedrock,
# Bitrig, BlackArch, BLAG, BlankOn, BlueLight, bonsai, BSD,
# BunsenLabs, Calculate, Carbs, CentOS, Chakra, ChaletOS,
# Chapeau, Chrom*, Cleanjaro, ClearOS, Clear_Linux, Clover,
# Condres, Container_Linux, CRUX, Cucumber, Debian, Deepin,
# DesaOS, Devuan, DracOS, DarkOs, DragonFly, Drauger, Elementary,
# EndeavourOS, Endless, EuroLinux, Exherbo, Fedora, Feren, FreeBSD,
# FreeMiNT, Frugalware, Funtoo, GalliumOS, Garuda, Gentoo, Pentoo,
# gNewSense, GNOME, GNU, GoboLinux, Grombyang, Guix, Haiku, Huayra,
# Hyperbola, janus, Kali, KaOS, KDE_neon, Kibojoe, Kogaion,
# Korora, KSLinux, Kubuntu, LEDE, LFS, Linux_Lite,
# LMDE, Lubuntu, Lunar, macos, Mageia, MagpieOS, Mandriva,
# Manjaro, Maui, Mer, Minix, LinuxMint, MX_Linux, Namib,
# Neptune, NetBSD, Netrunner, Nitrux, NixOS, Nurunner,
# NuTyX, OBRevenge, OpenBSD, openEuler, OpenIndiana, openmamba,
# OpenMandriva, OpenStage, OpenWrt, osmc, Oracle, OS Elbrus, PacBSD,
# Parabola, Pardus, Parrot, Parsix, TrueOS, PCLinuxOS, Peppermint,
# popos, Porteus, PostMarketOS, Proxmox, Puppy, PureOS, Qubes, Radix,
# Raspbian, Reborn_OS, Redstar, Redcore, Redhat, Refracted_Devuan,
# Regata, Rosa, sabotage, Sabayon, Sailfish, SalentOS, Scientific,
# Septor, SereneLinux, SharkLinux, Siduction, Slackware, SliTaz,
# SmartOS, Solus, Source_Mage, Sparky, Star, SteamOS, SunOS,
# openSUSE_Leap, openSUSE_Tumbleweed, openSUSE, SwagArch, Tails,
# Trisquel, Ubuntu-Budgie, Ubuntu-GNOME, Ubuntu-MATE, Ubuntu-Studio,
# Ubuntu, Venom, Void, Obarun, windows10, Windows7, Xubuntu, Zorin,
# and IRIX have ascii logos
# NOTE: Arch, Ubuntu, Redhat, and Dragonfly have 'old' logo variants.
# Use '{distro name}_old' to use the old logos.
# NOTE: Ubuntu has flavor variants.
# Change this to Lubuntu, Kubuntu, Xubuntu, Ubuntu-GNOME,
# Ubuntu-Studio, Ubuntu-Mate or Ubuntu-Budgie to use the flavors.
# NOTE: Arcolinux, Dragonfly, Fedora, Alpine, Arch, Ubuntu,
# CRUX, Debian, Gentoo, FreeBSD, Mac, NixOS, OpenBSD, android,
# Antrix, CentOS, Cleanjaro, ElementaryOS, GUIX, Hyperbola,
# Manjaro, MXLinux, NetBSD, Parabola, POP_OS, PureOS,
# Slackware, SunOS, LinuxLite, OpenSUSE, Raspbian,
# postmarketOS, and Void have a smaller logo variant.
# Use '{distro name}_small' to use the small variants.
ascii_distro="auto"
# Ascii Colors
#
# Default: 'distro'
# Values: 'distro', 'num' 'num' 'num' 'num' 'num' 'num'
# Flag: --ascii_colors
#
# Example:
# ascii_colors=(distro) - Ascii is colored based on Distro colors.
# ascii_colors=(4 6 1 8 8 6) - Ascii is colored using these colors.
ascii_colors=(distro)
# Bold ascii logo
# Whether or not to bold the ascii logo.
#
# Default: 'on'
# Values: 'on', 'off'
# Flag: --ascii_bold
ascii_bold="on"
# Image Options
# Image loop
# Setting this to on will make neofetch redraw the image constantly until
# Ctrl+C is pressed. This fixes display issues in some terminal emulators.
#
# Default: 'off'
# Values: 'on', 'off'
# Flag: --loop
image_loop="off"
# Thumbnail directory
#
# Default: '~/.cache/thumbnails/neofetch'
# Values: 'dir'
thumbnail_dir="${XDG_CACHE_HOME:-${HOME}/.cache}/thumbnails/neofetch"
# Crop mode
#
# Default: 'normal'
# Values: 'normal', 'fit', 'fill'
# Flag: --crop_mode
#
# See this wiki page to learn about the fit and fill options.
# https://github.com/dylanaraps/neofetch/wiki/What-is-Waifu-Crop%3F
crop_mode="normal"
# Crop offset
# Note: Only affects 'normal' crop mode.
#
# Default: 'center'
# Values: 'northwest', 'north', 'northeast', 'west', 'center'
# 'east', 'southwest', 'south', 'southeast'
# Flag: --crop_offset
crop_offset="center"
# Image size
# The image is half the terminal width by default.
#
# Default: 'auto'
# Values: 'auto', '00px', '00%', 'none'
# Flags: --image_size
# --size
image_size="auto"
# Gap between image and text
#
# Default: '3'
# Values: 'num', '-num'
# Flag: --gap
gap=3
# Image offsets
# Only works with the w3m backend.
#
# Default: '0'
# Values: 'px'
# Flags: --xoffset
# --yoffset
yoffset=0
xoffset=0
# Image background color
# Only works with the w3m backend.
#
# Default: ''
# Values: 'color', 'blue'
# Flag: --bg_color
background_color=
# Misc Options
# Stdout mode
# Turn off all colors and disables image backend (ASCII/Image).
# Useful for piping into another command.
# Default: 'off'
# Values: 'on', 'off'
stdout="off"
+415
View File
@@ -0,0 +1,415 @@
#################################
# Shadows #
#################################
# Enabled client-side shadows on windows. Note desktop windows
# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
# unless explicitly requested using the wintypes option.
shadow = false;
# The blur radius for shadows, in pixels. (defaults to 12)
# shadow-radius = 12
shadow-radius = 12;
# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
# shadow-opacity = 0.75
# The left offset for shadows, in pixels. (defaults to -15)
shadow-offset-x = -15;
# The top offset for shadows, in pixels. (defaults to -15)
shadow-offset-y = -15;
# Red color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-red = 0
# Green color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-green = 0
# Blue color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-blue = 0
# Hex string color value of shadow (#000000 - #FFFFFF, defaults to #000000). This option will override options set shadow-(red/green/blue)
# shadow-color = "#000000"
# Specify a list of conditions of windows that should have no shadow.
shadow-exclude = [
"class_g = 'foo'",
];
#################################
# Fading #
#################################
# Fade windows in/out when opening/closing and when opacity changes,
# unless no-fading-openclose is used.
# fading = false
fading = true;
# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
# fade-in-step = 0.028
fade-in-step = 0.03;
# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
# fade-out-step = 0.03
fade-out-step = 0.03;
# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
# fade-delta = 10
# Specify a list of conditions of windows that should not be faded.
# fade-exclude = []
#
# Advanced Options
#
# Do not fade on window open/close.
# no-fading-openclose = false
# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
# no-fading-destroyed-argb = false
#################################
# Transparency / Opacity #
#################################
# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
# inactive-opacity = 1
inactive-opacity = 1;
# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
# frame-opacity = 1.0
frame-opacity = 1.0;
# Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows.
# inactive-opacity-override = true
inactive-opacity-override = false;
# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
# active-opacity = 1.0
# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
# inactive-dim = 0.0
# Specify a list of conditions of windows that should never be considered focused.
# focus-exclude = []
focus-exclude = [];
# Use fixed inactive dim value, instead of adjusting according to window opacity.
# inactive-dim-fixed = 1.0
# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
# opacity-rule = []
#################################
# Corners #
#################################
# Sets the radius of rounded window corners. When > 0, the compositor will
# round the corners of windows. Does not interact well with
# `transparent-clipping`.
corner-radius = 0
# Exclude conditions for rounded corners.
rounded-corners-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'"
];
#################################
# Background-Blurring #
#################################
# Parameters for background blurring, see the *BLUR* section for more information.
# blur-method =
# blur-size = 12
#
# blur-deviation = false
#
# blur-strength = 5
# Blur background of semi-transparent / ARGB windows.
# Bad in performance, with driver-dependent behavior.
# The name of the switch may change without prior notifications.
#
# blur-background = false
# Blur background of windows when the window frame is not opaque.
# Implies:
# blur-background
# Bad in performance, with driver-dependent behavior. The name may change.
#
# blur-background-frame = false
# Use fixed blur strength rather than adjusting according to window opacity.
# blur-background-fixed = false
# Specify the blur convolution kernel, with the following format:
# example:
# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
#
# blur-kern = ""
blur-kern = "3x3box";
# Exclude conditions for background blur.
# blur-background-exclude = []
blur-background-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'",
"_GTK_FRAME_EXTENTS@:c"
];
#################################
# Animations - pijulius' fork #
#################################
animations = true;
animation-window-mass = 0.8;
#animation-stiffness = 350.0; #a.k.a tension
#animation-dampening = 20.0; #a.k.a friction
animation-clamping = true;
animation-delta = 8;
animation-force-steps = false;
# none,auto,zoom,fly-in,slide-up,slide-down,slide-left,slide-right
animation-for-open-window = "zoom";
animation-for-transient-window = "auto";
animation-for-unmap-window = "auto";
animation-for-workspace-switch-in = "auto";
animation-for-workspace-switch-out = "auto";
# not work
# animation-exclude = [
# "class_g = 'i3lock'",
# ];
#################################
# General Settings #
#################################
# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
# daemon = false
# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
# `xrender` is the default one.
#
# backend = "glx"
backend = "xrender";
# Enable/disable VSync.
# vsync = false
vsync = true;
# Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
# dbus = false
# Try to detect WM windows (a non-override-redirect window with no
# child that has 'WM_STATE') and mark them as active.
#
# mark-wmwin-focused = false
mark-wmwin-focused = true;
# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
# mark-ovredir-focused = false
mark-ovredir-focused = true;
# Try to detect windows with rounded corners and don't consider them
# shaped windows. The accuracy is not very high, unfortunately.
#
# detect-rounded-corners = false
detect-rounded-corners = true;
# Detect '_NET_WM_OPACITY' on client windows, useful for window managers
# not passing '_NET_WM_OPACITY' of client windows to frame windows.
#
# detect-client-opacity = false
detect-client-opacity = true;
# Specify refresh rate of the screen. If not specified or 0, picom will
# try detecting this with X RandR extension.
#
# refresh-rate = 60
refresh-rate = 0;
# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
# provided that the WM supports it.
#
# use-ewmh-active-win = false
# Unredirect all windows if a full-screen opaque window is detected,
# to maximize performance for full-screen windows. Known to cause flickering
# when redirecting/unredirecting windows.
#
# unredir-if-possible = false
# Delay before unredirecting the window, in milliseconds. Defaults to 0.
# unredir-if-possible-delay = 0
# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
# unredir-if-possible-exclude = []
# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
# in the same group focused at the same time.
#
# detect-transient = false
detect-transient = true;
# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
# group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if
# detect-transient is enabled, too.
#
# detect-client-leader = false
detect-client-leader = true;
# Resize damaged region by a specific number of pixels.
# A positive value enlarges it while a negative one shrinks it.
# If the value is positive, those additional pixels will not be actually painted
# to screen, only used in blur calculation, and such. (Due to technical limitations,
# with use-damage, those pixels will still be incorrectly painted to screen.)
# Primarily used to fix the line corruption issues of blur,
# in which case you should use the blur radius value here
# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
# with a 5x5 one you use `--resize-damage 2`, and so on).
# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
#
# resize-damage = 1
# Specify a list of conditions of windows that should be painted with inverted color.
# Resource-hogging, and is not well tested.
#
# invert-color-include = []
# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
# Might cause incorrect opacity when rendering transparent content (but never
# practically happened) and may not work with blur-background.
# My tests show a 15% performance boost. Recommended.
#
# glx-no-stencil = false
# GLX backend: Avoid rebinding pixmap on window damage.
# Probably could improve performance on rapid window content changes,
# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
# Recommended if it works.
#
# glx-no-rebind-pixmap = false
# Disable the use of damage information.
# This cause the whole screen to be redrawn everytime, instead of the part of the screen
# has actually changed. Potentially degrades the performance, but might fix some artifacts.
# The opposing option is use-damage
#
# no-use-damage = false
use-damage = true;
# Use X Sync fence to sync clients' draw calls, to make sure all draw
# calls are finished before picom starts drawing. Needed on nvidia-drivers
# with GLX backend for some users.
#
# xrender-sync-fence = false
# GLX backend: Use specified GLSL fragment shader for rendering window contents.
# See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl`
# in the source tree for examples.
#
# glx-fshader-win = ""
# Force all windows to be painted with blending. Useful if you
# have a glx-fshader-win that could turn opaque pixels transparent.
#
# force-win-blend = false
# Do not use EWMH to detect fullscreen windows.
# Reverts to checking if a window is fullscreen based only on its size and coordinates.
#
# no-ewmh-fullscreen = false
# Dimming bright windows so their brightness doesn't exceed this set value.
# Brightness of a window is estimated by averaging all pixels in the window,
# so this could comes with a performance hit.
# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
#
# max-brightness = 1.0
# Make transparent windows clip other windows like non-transparent windows do,
# instead of blending on top of them.
#
# transparent-clipping = false
# Set the log level. Possible values are:
# "trace", "debug", "info", "warn", "error"
# in increasing level of importance. Case doesn't matter.
# If using the "TRACE" log level, it's better to log into a file
# using *--log-file*, since it can generate a huge stream of logs.
#
# log-level = "debug"
log-level = "warn";
# Set the log file.
# If *--log-file* is never specified, logs will be written to stderr.
# Otherwise, logs will to written to the given file, though some of the early
# logs might still be written to the stderr.
# When setting this option from the config file, it is recommended to use an absolute path.
#
# log-file = "/path/to/your/log/file"
# Show all X errors (for debugging)
# show-all-xerrors = false
# Write process ID to a file.
# write-pid-path = "/path/to/your/log/file"
# Window type settings
#
# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
# "unknown", "desktop", "dock", "toolbar", "menu", "utility",
# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
# "tooltip", "notification", "combo", and "dnd".
#
# Following per window-type options are available: ::
#
# fade, shadow:::
# Controls window-type-specific shadow and fade settings.
#
# opacity:::
# Controls default opacity of the window type.
#
# focus:::
# Controls whether the window of this type is to be always considered focused.
# (By default, all window types except "normal" and "dialog" has this on.)
#
# full-shadow:::
# Controls whether shadow is drawn under the parts of the window that you
# normally won't be able to see. Useful when the window has parts of it
# transparent, and you want shadows in those areas.
#
# clip-shadow-above:::
# Controls wether shadows that would have been drawn above the window should
# be clipped. Useful for dock windows that should have no shadow painted on top.
#
# redir-ignore:::
# Controls whether this type of windows should cause screen to become
# redirected again after been unredirected. If you have unredir-if-possible
# set, and doesn't want certain window to cause unnecessary screen redirection,
# you can set this to `true`.
#
wintypes:
{
tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; };
dock = { shadow = false; clip-shadow-above = true; }
dnd = { shadow = false; }
popup_menu = { opacity = 1.0; animation-for-open-window = "slide-down"; }
dropdown_menu = { opacity = 1.0; animation-for-open-window = "slide-down"; }
};
+479
View File
@@ -0,0 +1,479 @@
#################################
# Transitions #
#################################
# When windows get moved or resized it transitions window position
transition = true;
# How many pixels move window to make the first position in transition (defaults to 20)
transition-offset = 10;
# Direction of transition (top, right, bottom, left) e.g: "right" direction will make
# all windows come from right to left
# (smart-x, smart-y) are smart direction that will check if there are
# multiple windows that splits the screen and will change their directions,
# in "smart-x" it changes direction of left window to "right" and direction of
# right window to "left", if screen is not splited and a window is taking
# a lot of screen it will change that window direction to "left".
# "smart-y" is also exactly like "smart-x" but instead of translating directions to
# "right" and "left", it translate to "top" and "bottom"
transition-direction = "smart-y";
# Function that calculates new position of window (defaults to "ease-out-cubic")
# see https://easings.net for list of all functions
# naming conventions are different to that site tho, e.g "easeInSine" is listed
# on site but here that translated to "ease-in-sine"
transition-timing-function = "ease-out-cubic";
# Time between frames in transition. (0.01 - 1.0, defaults to 0.028)
transition-step = 0.036;
# Similar to opacity rules but determites transition direction e.g:
# "right: name *= 'Firefox'" will make firefox transition direction to right
# Specify a list of transition rules, in the format `DIRECTION:PATTERN`
# for disabling transition on specific patterns use "none" keyword as a direction
# e.g: use "none: window_type = 'popup_menu'" for disabling transitions on popup menus
transition-rule = ["none: window_type = 'popup_menu'"];
#"unknown", "desktop", "dock", "toolbar", "menu", "utility",
# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
# "tooltip", "notification", "combo", and "dnd".
#################################
# Shadows #
#################################
# Enabled client-side shadows on windows. Note desktop windows
# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
# unless explicitly requested using the wintypes option.
#
# shadow = false
shadow = true;
# The blur radius for shadows, in pixels. (defaults to 12)
# shadow-radius = 12
shadow-radius = 40;
# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
shadow-opacity = .60
# The left offset for shadows, in pixels. (defaults to -15)
# shadow-offset-x = -15
shadow-offset-x = -40;
# The top offset for shadows, in pixels. (defaults to -15)
# shadow-offset-y = -15
shadow-offset-y = -40;
# Red color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-red = 0
# Green color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-green = 0
# Blue color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-blue = 0
# Hex string color value of shadow (#000000 - #FFFFFF, defaults to #000000). This option will override options set shadow-(red/green/blue)
# shadow-color = "#000000"
# Specify a list of conditions of windows that should have no shadow.
#
# examples:
# shadow-exclude = "n:e:Notification";
#
# shadow-exclude = []
shadow-exclude = [
"name = 'Notification'",
"class_g = 'Conky'",
"class_g ?= 'Notify-osd'",
"class_g = 'Cairo-clock'",
"_GTK_FRAME_EXTENTS@:c"
];
# Specify a list of conditions of windows that should have no shadow painted over, such as a dock window.
# clip-shadow-above = []
# Specify a X geometry that describes the region in which shadow should not
# be painted in, such as a dock window region. Use
# shadow-exclude-reg = "x10+0+0"
# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
#
# shadow-exclude-reg = ""
# Crop shadow of a window fully on a particular monitor to that monitor. This is
# currently implemented using the X RandR extension.
# crop-shadow-to-monitor = false
#################################
# Fading #
#################################
# Fade windows in/out when opening/closing and when opacity changes,
# unless no-fading-openclose is used.
# fading = false
fading = true;
# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
# fade-in-step = 0.028
fade-in-step = 0.02;
# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
# fade-out-step = 0.03
fade-out-step = 0.02;
# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
fade-delta = 3
# Specify a list of conditions of windows that should not be faded.
#fade-exclude = ["window_type = 'popup_menu'"]
# Do not fade on window open/close.
# no-fading-openclose = false
# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
# no-fading-destroyed-argb = false
#################################
# Transparency / Opacity #
#################################
# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
# inactive-opacity = 1
#inactive-opacity = 0.8;
# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
# frame-opacity = 1.0
#frame-opacity = 0.7;
# Let inactive opacity set by -i override the '_NET_WM_WINDOW_OPACITY' values of windows.
# inactive-opacity-override = true
#inactive-opacity-override = false;
# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
# active-opacity = 1.0
# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
#inactive-dim = 1.0
# Specify a list of conditions of windows that should never be considered focused.
# focus-exclude = []
#focus-exclude = [ "class_g = 'Cairo-clock'" ];
# Use fixed inactive dim value, instead of adjusting according to window opacity.
# inactive-dim-fixed = 1.0
# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
# like `50:name *= "Firefox"`. picom-trans is recommended over this.
# Note we don't make any guarantee about possible conflicts with other
# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
# example:
# opacity-rule = [ "80:class_g = 'URxvt'" ];
#
# opacity-rule = []
#################################
# Corners #
#################################
# Sets the radius of rounded window corners. When > 0, the compositor will
# round the corners of windows. Does not interact well with
# `transparent-clipping`.
corner-radius = 10
# Exclude conditions for rounded corners.
rounded-corners-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'",
"_PICOM_ROUNDED@:32c = 1"
];
#################################
# Background-Blurring #
#################################
# Parameters for background blurring, see the *BLUR* section for more information.
# blur-method =
# blur-size = 12
#
# blur-deviation = false
#
# blur-strength = 5
# Blur background of semi-transparent / ARGB windows.
# Bad in performance, with driver-dependent behavior.
# The name of the switch may change without prior notifications.
#
# blur-background = false
# Blur background of windows when the window frame is not opaque.
# Implies:
# blur-background
# Bad in performance, with driver-dependent behavior. The name may change.
#
# blur-background-frame = false
# Use fixed blur strength rather than adjusting according to window opacity.
# blur-background-fixed = false
# Specify the blur convolution kernel, with the following format:
# example:
# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
#
# blur-kern = ""
blur-kern = "3x3box";
# Exclude conditions for background blur.
# blur-background-exclude = []
blur-background-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'",
"_GTK_FRAME_EXTENTS@:c"
];
#################################
# General Settings #
#################################
# Enable remote control via D-Bus. See the man page for more details.
# dbus = true
# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
# daemon = false
# Specify the backend to use: `xrender`, `glx`, `egl` or `xr_glx_hybrid`.
# `xrender` is the default one.
#
# backend = "glx"
backend = "glx";
# Use higher precision during rendering, and apply dither when presenting the
# rendered screen. Reduces banding artifacts, but might cause performance
# degradation. Only works with OpenGL.
dithered-present = false;
# Enable/disable VSync.
# vsync = false
vsync = true;
# Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
# dbus = false
# Try to detect WM windows (a non-override-redirect window with no
# child that has 'WM_STATE') and mark them as active.
#
# mark-wmwin-focused = false
mark-wmwin-focused = true;
# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
# mark-ovredir-focused = false
mark-ovredir-focused = true;
# Try to detect windows with rounded corners and don't consider them
# shaped windows. The accuracy is not very high, unfortunately.
#
# detect-rounded-corners = false
detect-rounded-corners = true;
# Detect '_NET_WM_WINDOW_OPACITY' on client windows, useful for window managers
# not passing '_NET_WM_WINDOW_OPACITY' of client windows to frame windows.
#
# detect-client-opacity = false
detect-client-opacity = true;
# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
# provided that the WM supports it.
#
# use-ewmh-active-win = false
# Unredirect all windows if a full-screen opaque window is detected,
# to maximize performance for full-screen windows. Known to cause flickering
# when redirecting/unredirecting windows.
#
# unredir-if-possible = false
# Delay before unredirecting the window, in milliseconds. Defaults to 0.
# unredir-if-possible-delay = 0
# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
# unredir-if-possible-exclude = []
# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
# in the same group focused at the same time.
#
# detect-transient = false
detect-transient = true;
# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
# group focused at the same time. This usually means windows from the same application
# will be considered focused or unfocused at the same time.
# 'WM_TRANSIENT_FOR' has higher priority if detect-transient is enabled, too.
#
# detect-client-leader = false
# Resize damaged region by a specific number of pixels.
# A positive value enlarges it while a negative one shrinks it.
# If the value is positive, those additional pixels will not be actually painted
# to screen, only used in blur calculation, and such. (Due to technical limitations,
# with use-damage, those pixels will still be incorrectly painted to screen.)
# Primarily used to fix the line corruption issues of blur,
# in which case you should use the blur radius value here
# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
# with a 5x5 one you use `--resize-damage 2`, and so on).
# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
#
# resize-damage = 1
# Specify a list of conditions of windows that should be painted with inverted color.
# Resource-hogging, and is not well tested.
#
# invert-color-include = []
# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
# Might cause incorrect opacity when rendering transparent content (but never
# practically happened) and may not work with blur-background.
# My tests show a 15% performance boost. Recommended.
#
# glx-no-stencil = false
# GLX backend: Avoid rebinding pixmap on window damage.
# Probably could improve performance on rapid window content changes,
# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
# Recommended if it works.
#
# glx-no-rebind-pixmap = false
# Disable the use of damage information.
# This cause the whole screen to be redrawn every time, instead of the part of the screen
# has actually changed. Potentially degrades the performance, but might fix some artifacts.
# The opposing option is use-damage
#
# no-use-damage = false
use-damage = true;
# Use X Sync fence to sync clients' draw calls, to make sure all draw
# calls are finished before picom starts drawing. Needed on nvidia-drivers
# with GLX backend for some users.
#
# xrender-sync-fence = false
# GLX backend: Use specified GLSL fragment shader for rendering window
# contents. Read the man page for a detailed explanation of the interface.
#
# window-shader-fg = "default"
# Use rules to set per-window shaders. Syntax is SHADER_PATH:PATTERN, similar
# to opacity-rule. SHADER_PATH can be "default". This overrides window-shader-fg.
#
# window-shader-fg-rule = [
# "my_shader.frag:window_type != 'dock'"
# ]
# Force all windows to be painted with blending. Useful if you
# have a glx-fshader-win that could turn opaque pixels transparent.
#
# force-win-blend = false
# Do not use EWMH to detect fullscreen windows.
# Reverts to checking if a window is fullscreen based only on its size and coordinates.
#
# no-ewmh-fullscreen = false
# Dimming bright windows so their brightness doesn't exceed this set value.
# Brightness of a window is estimated by averaging all pixels in the window,
# so this could comes with a performance hit.
# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
#
# max-brightness = 1.0
# Make transparent windows clip other windows like non-transparent windows do,
# instead of blending on top of them.
#
# transparent-clipping = false
# Specify a list of conditions of windows that should never have transparent
# clipping applied. Useful for screenshot tools, where you need to be able to
# see through transparent parts of the window.
#
# transparent-clipping-exclude = []
# Set the log level. Possible values are:
# "trace", "debug", "info", "warn", "error"
# in increasing level of importance. Case doesn't matter.
# If using the "TRACE" log level, it's better to log into a file
# using *--log-file*, since it can generate a huge stream of logs.
#
# log-level = "debug"
log-level = "warn";
# Set the log file.
# If *--log-file* is never specified, logs will be written to stderr.
# Otherwise, logs will to written to the given file, though some of the early
# logs might still be written to the stderr.
# When setting this option from the config file, it is recommended to use an absolute path.
#
# log-file = "/path/to/your/log/file"
# Show all X errors (for debugging)
# show-all-xerrors = false
# Write process ID to a file.
# write-pid-path = "/path/to/your/log/file"
# Window type settings
#
# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
# "unknown", "desktop", "dock", "toolbar", "menu", "utility",
# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
# "tooltip", "notification", "combo", and "dnd".
#
# Following per window-type options are available: ::
#
# fade, shadow:::
# Controls window-type-specific shadow and fade settings.
#
# opacity:::
# Controls default opacity of the window type.
#
# focus:::
# Controls whether the window of this type is to be always considered focused.
# (By default, all window types except "normal" and "dialog" has this on.)
#
# full-shadow:::
# Controls whether shadow is drawn under the parts of the window that you
# normally won't be able to see. Useful when the window has parts of it
# transparent, and you want shadows in those areas.
#
# clip-shadow-above:::
# Controls whether shadows that would have been drawn above the window should
# be clipped. Useful for dock windows that should have no shadow painted on top.
#
# redir-ignore:::
# Controls whether this type of windows should cause screen to become
# redirected again after been unredirected. If you have unredir-if-possible
# set, and doesn't want certain window to cause unnecessary screen redirection,
# you can set this to `true`.
#
wintypes:
{
tooltip = { fade = true; shadow = false; opacity = 0.75; focus = true; full-shadow = false; };
dock = { shadow = false; clip-shadow-above = true; }
dnd = { shadow = false; }
popup_menu = { opacity = 1;shadow = false;fade-delta = 2 }
dropdown_menu = { opacity = 1; }
utility = {shadow = false;}
};
+479
View File
@@ -0,0 +1,479 @@
#################################
# Transitions #
#################################
# When windows get moved or resized it transitions window position
transition = true;
# How many pixels move window to make the first position in transition (defaults to 20)
transition-offset = 10;
# Direction of transition (top, right, bottom, left) e.g: "right" direction will make
# all windows come from right to left
# (smart-x, smart-y) are smart direction that will check if there are
# multiple windows that splits the screen and will change their directions,
# in "smart-x" it changes direction of left window to "right" and direction of
# right window to "left", if screen is not splited and a window is taking
# a lot of screen it will change that window direction to "left".
# "smart-y" is also exactly like "smart-x" but instead of translating directions to
# "right" and "left", it translate to "top" and "bottom"
transition-direction = "smart-y";
# Function that calculates new position of window (defaults to "ease-out-cubic")
# see https://easings.net for list of all functions
# naming conventions are different to that site tho, e.g "easeInSine" is listed
# on site but here that translated to "ease-in-sine"
transition-timing-function = "ease-out-cubic";
# Time between frames in transition. (0.01 - 1.0, defaults to 0.028)
transition-step = 0.036;
# Similar to opacity rules but determites transition direction e.g:
# "right: name *= 'Firefox'" will make firefox transition direction to right
# Specify a list of transition rules, in the format `DIRECTION:PATTERN`
# for disabling transition on specific patterns use "none" keyword as a direction
# e.g: use "none: window_type = 'popup_menu'" for disabling transitions on popup menus
transition-rule = ["none: window_type = 'popup_menu'"];
#"unknown", "desktop", "dock", "toolbar", "menu", "utility",
# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
# "tooltip", "notification", "combo", and "dnd".
#################################
# Shadows #
#################################
# Enabled client-side shadows on windows. Note desktop windows
# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
# unless explicitly requested using the wintypes option.
#
# shadow = false
shadow = true;
# The blur radius for shadows, in pixels. (defaults to 12)
# shadow-radius = 12
shadow-radius = 40;
# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
shadow-opacity = .60
# The left offset for shadows, in pixels. (defaults to -15)
# shadow-offset-x = -15
shadow-offset-x = -40;
# The top offset for shadows, in pixels. (defaults to -15)
# shadow-offset-y = -15
shadow-offset-y = -40;
# Red color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-red = 0
# Green color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-green = 0
# Blue color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-blue = 0
# Hex string color value of shadow (#000000 - #FFFFFF, defaults to #000000). This option will override options set shadow-(red/green/blue)
# shadow-color = "#000000"
# Specify a list of conditions of windows that should have no shadow.
#
# examples:
# shadow-exclude = "n:e:Notification";
#
# shadow-exclude = []
shadow-exclude = [
"name = 'Notification'",
"class_g = 'Conky'",
"class_g ?= 'Notify-osd'",
"class_g = 'Cairo-clock'",
"_GTK_FRAME_EXTENTS@:c"
];
# Specify a list of conditions of windows that should have no shadow painted over, such as a dock window.
# clip-shadow-above = []
# Specify a X geometry that describes the region in which shadow should not
# be painted in, such as a dock window region. Use
# shadow-exclude-reg = "x10+0+0"
# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
#
# shadow-exclude-reg = ""
# Crop shadow of a window fully on a particular monitor to that monitor. This is
# currently implemented using the X RandR extension.
# crop-shadow-to-monitor = false
#################################
# Fading #
#################################
# Fade windows in/out when opening/closing and when opacity changes,
# unless no-fading-openclose is used.
# fading = false
fading = true;
# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
# fade-in-step = 0.028
fade-in-step = 0.02;
# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
# fade-out-step = 0.03
fade-out-step = 0.02;
# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
fade-delta = 3
# Specify a list of conditions of windows that should not be faded.
#fade-exclude = ["window_type = 'popup_menu'"]
# Do not fade on window open/close.
# no-fading-openclose = false
# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
# no-fading-destroyed-argb = false
#################################
# Transparency / Opacity #
#################################
# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
# inactive-opacity = 1
#inactive-opacity = 0.8;
# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
# frame-opacity = 1.0
#frame-opacity = 0.7;
# Let inactive opacity set by -i override the '_NET_WM_WINDOW_OPACITY' values of windows.
# inactive-opacity-override = true
#inactive-opacity-override = false;
# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
# active-opacity = 1.0
# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
#inactive-dim = 1.0
# Specify a list of conditions of windows that should never be considered focused.
# focus-exclude = []
#focus-exclude = [ "class_g = 'Cairo-clock'" ];
# Use fixed inactive dim value, instead of adjusting according to window opacity.
# inactive-dim-fixed = 1.0
# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
# like `50:name *= "Firefox"`. picom-trans is recommended over this.
# Note we don't make any guarantee about possible conflicts with other
# programs that set '_NET_WM_WINDOW_OPACITY' on frame or client windows.
# example:
# opacity-rule = [ "80:class_g = 'URxvt'" ];
#
# opacity-rule = []
#################################
# Corners #
#################################
# Sets the radius of rounded window corners. When > 0, the compositor will
# round the corners of windows. Does not interact well with
# `transparent-clipping`.
corner-radius = 10
# Exclude conditions for rounded corners.
rounded-corners-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'",
"_PICOM_ROUNDED@:32c = 1"
];
#################################
# Background-Blurring #
#################################
# Parameters for background blurring, see the *BLUR* section for more information.
# blur-method =
# blur-size = 12
#
# blur-deviation = false
#
# blur-strength = 5
# Blur background of semi-transparent / ARGB windows.
# Bad in performance, with driver-dependent behavior.
# The name of the switch may change without prior notifications.
#
blur-background = true
# Blur background of windows when the window frame is not opaque.
# Implies:
# blur-background
# Bad in performance, with driver-dependent behavior. The name may change.
#
# blur-background-frame = false
# Use fixed blur strength rather than adjusting according to window opacity.
# blur-background-fixed = false
# Specify the blur convolution kernel, with the following format:
# example:
# blur-kern = "5,5,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1";
#
# blur-kern = ""
blur-kern = "3x3box";
# Exclude conditions for background blur.
# blur-background-exclude = []
blur-background-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'",
"_GTK_FRAME_EXTENTS@:c"
];
#################################
# General Settings #
#################################
# Enable remote control via D-Bus. See the man page for more details.
# dbus = true
# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
# daemon = false
# Specify the backend to use: `xrender`, `glx`, `egl` or `xr_glx_hybrid`.
# `xrender` is the default one.
#
# backend = "glx"
backend = "glx";
# Use higher precision during rendering, and apply dither when presenting the
# rendered screen. Reduces banding artifacts, but might cause performance
# degradation. Only works with OpenGL.
dithered-present = false;
# Enable/disable VSync.
# vsync = false
vsync = true;
# Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
# dbus = false
# Try to detect WM windows (a non-override-redirect window with no
# child that has 'WM_STATE') and mark them as active.
#
# mark-wmwin-focused = false
mark-wmwin-focused = true;
# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
# mark-ovredir-focused = false
mark-ovredir-focused = true;
# Try to detect windows with rounded corners and don't consider them
# shaped windows. The accuracy is not very high, unfortunately.
#
# detect-rounded-corners = false
detect-rounded-corners = true;
# Detect '_NET_WM_WINDOW_OPACITY' on client windows, useful for window managers
# not passing '_NET_WM_WINDOW_OPACITY' of client windows to frame windows.
#
# detect-client-opacity = false
detect-client-opacity = true;
# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
# provided that the WM supports it.
#
# use-ewmh-active-win = false
# Unredirect all windows if a full-screen opaque window is detected,
# to maximize performance for full-screen windows. Known to cause flickering
# when redirecting/unredirecting windows.
#
# unredir-if-possible = false
# Delay before unredirecting the window, in milliseconds. Defaults to 0.
# unredir-if-possible-delay = 0
# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
# unredir-if-possible-exclude = []
# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
# in the same group focused at the same time.
#
# detect-transient = false
detect-transient = true;
# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
# group focused at the same time. This usually means windows from the same application
# will be considered focused or unfocused at the same time.
# 'WM_TRANSIENT_FOR' has higher priority if detect-transient is enabled, too.
#
# detect-client-leader = false
# Resize damaged region by a specific number of pixels.
# A positive value enlarges it while a negative one shrinks it.
# If the value is positive, those additional pixels will not be actually painted
# to screen, only used in blur calculation, and such. (Due to technical limitations,
# with use-damage, those pixels will still be incorrectly painted to screen.)
# Primarily used to fix the line corruption issues of blur,
# in which case you should use the blur radius value here
# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
# with a 5x5 one you use `--resize-damage 2`, and so on).
# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
#
# resize-damage = 1
# Specify a list of conditions of windows that should be painted with inverted color.
# Resource-hogging, and is not well tested.
#
# invert-color-include = []
# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
# Might cause incorrect opacity when rendering transparent content (but never
# practically happened) and may not work with blur-background.
# My tests show a 15% performance boost. Recommended.
#
# glx-no-stencil = false
# GLX backend: Avoid rebinding pixmap on window damage.
# Probably could improve performance on rapid window content changes,
# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
# Recommended if it works.
#
# glx-no-rebind-pixmap = false
# Disable the use of damage information.
# This cause the whole screen to be redrawn every time, instead of the part of the screen
# has actually changed. Potentially degrades the performance, but might fix some artifacts.
# The opposing option is use-damage
#
# no-use-damage = false
use-damage = true;
# Use X Sync fence to sync clients' draw calls, to make sure all draw
# calls are finished before picom starts drawing. Needed on nvidia-drivers
# with GLX backend for some users.
#
# xrender-sync-fence = false
# GLX backend: Use specified GLSL fragment shader for rendering window
# contents. Read the man page for a detailed explanation of the interface.
#
# window-shader-fg = "default"
# Use rules to set per-window shaders. Syntax is SHADER_PATH:PATTERN, similar
# to opacity-rule. SHADER_PATH can be "default". This overrides window-shader-fg.
#
# window-shader-fg-rule = [
# "my_shader.frag:window_type != 'dock'"
# ]
# Force all windows to be painted with blending. Useful if you
# have a glx-fshader-win that could turn opaque pixels transparent.
#
# force-win-blend = false
# Do not use EWMH to detect fullscreen windows.
# Reverts to checking if a window is fullscreen based only on its size and coordinates.
#
# no-ewmh-fullscreen = false
# Dimming bright windows so their brightness doesn't exceed this set value.
# Brightness of a window is estimated by averaging all pixels in the window,
# so this could comes with a performance hit.
# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
#
# max-brightness = 1.0
# Make transparent windows clip other windows like non-transparent windows do,
# instead of blending on top of them.
#
# transparent-clipping = false
# Specify a list of conditions of windows that should never have transparent
# clipping applied. Useful for screenshot tools, where you need to be able to
# see through transparent parts of the window.
#
# transparent-clipping-exclude = []
# Set the log level. Possible values are:
# "trace", "debug", "info", "warn", "error"
# in increasing level of importance. Case doesn't matter.
# If using the "TRACE" log level, it's better to log into a file
# using *--log-file*, since it can generate a huge stream of logs.
#
# log-level = "debug"
log-level = "warn";
# Set the log file.
# If *--log-file* is never specified, logs will be written to stderr.
# Otherwise, logs will to written to the given file, though some of the early
# logs might still be written to the stderr.
# When setting this option from the config file, it is recommended to use an absolute path.
#
# log-file = "/path/to/your/log/file"
# Show all X errors (for debugging)
# show-all-xerrors = false
# Write process ID to a file.
# write-pid-path = "/path/to/your/log/file"
# Window type settings
#
# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
# "unknown", "desktop", "dock", "toolbar", "menu", "utility",
# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
# "tooltip", "notification", "combo", and "dnd".
#
# Following per window-type options are available: ::
#
# fade, shadow:::
# Controls window-type-specific shadow and fade settings.
#
# opacity:::
# Controls default opacity of the window type.
#
# focus:::
# Controls whether the window of this type is to be always considered focused.
# (By default, all window types except "normal" and "dialog" has this on.)
#
# full-shadow:::
# Controls whether shadow is drawn under the parts of the window that you
# normally won't be able to see. Useful when the window has parts of it
# transparent, and you want shadows in those areas.
#
# clip-shadow-above:::
# Controls whether shadows that would have been drawn above the window should
# be clipped. Useful for dock windows that should have no shadow painted on top.
#
# redir-ignore:::
# Controls whether this type of windows should cause screen to become
# redirected again after been unredirected. If you have unredir-if-possible
# set, and doesn't want certain window to cause unnecessary screen redirection,
# you can set this to `true`.
#
wintypes:
{
tooltip = { fade = true; shadow = false; opacity = 0.75; focus = true; full-shadow = false; };
dock = { shadow = false; clip-shadow-above = true; }
dnd = { shadow = false; }
popup_menu = { opacity = 1;shadow = false;fade-delta = 2 }
dropdown_menu = { opacity = 1; }
utility = {shadow = false;}
};
@@ -0,0 +1,33 @@
context.modules = [
{ name = libpipewire-module-filter-chain
args = {
node.description = "Noise Canceling source"
media.name = "Noise Canceling source"
filter.graph = {
nodes = [
{
type = ladspa
name = rnnoise
plugin = librnnoise_ladspa
label = noise_suppressor_mono
control = {
"VAD Threshold (%)" = 90.0
"VAD Grace Period (ms)" = 150
"Retroactive VAD Grace (ms)" = 0
}
}
]
}
capture.props = {
node.name = "capture.rnnoise_source"
node.passive = true
audio.rate = 48000
}
playback.props = {
node.name = "rnnoise_source"
media.class = Audio/Source
audio.rate = 48000
}
}
}
]
+47
View File
@@ -0,0 +1,47 @@
include-file = ~/.config/polybar/theme.ini
include-file = ~/.config/polybar/modules.ini
[bar/main]
width = 100%
height = 34
offset-y = 0
offset-x = 0
top = true
fixed-center = true
padding = 1
locale = de_DE.UTF-8
wm-restack = bspwm
override-redirect = false
scroll-up = next
scroll-down = prev
enable-ipc = true
background = ${colors.bg}
foreground = ${colors.fg}
font-0 = "Hack Nerd Font:style=Bold:size=10;2"
font-1 = "MonarchOS:size=11;2"
font-2 = "Hack Nerd Font:style=Regular:size=11;2"
font-3 = "Hack Nerd Font:style=Regular:size=20;5"
radius = 0
tray-position = none
tray-padding = 5
tray-spacing = 0
tray-background = ${colors.shade-1}
cursor-click = pointer
monitor = HDMI-1
modules-left = session date bspwm
modules-center = windowlist
modules-right = pulseaudio wireless-network vpn
[bar/external]
inherit = bar/main
monitor = DP-2
modules-left = session date bspwm
modules-center = windowlist2
modules-right = pulseaudio wireless-network vpn gamemode updates-pacman-aurhelper
tray-position = left
[settings]
screenchange-reload = true
format-padding = 1
pseudo-transparency = true
+47
View File
@@ -0,0 +1,47 @@
include-file = ~/.config/polybar/theme.ini
include-file = ~/.config/polybar/modules.ini
[bar/main]
width = 100%
height = 34
offset-y = 0
offset-x = 0
top = true
fixed-center = true
padding = 1
locale = de_DE.UTF-8
wm-restack = bspwm
override-redirect = false
scroll-up = next
scroll-down = prev
enable-ipc = true
background = ${colors.bg}
foreground = ${colors.fg}
font-0 = "Hack Nerd Font:style=Bold:size=10;2"
font-1 = "MonarchOS:size=11;2"
font-2 = "Hack Nerd Font:style=Regular:size=11;2"
font-3 = "Hack Nerd Font:style=Regular:size=20;5"
radius = 0
tray-position = none
tray-padding = 5
tray-spacing = 0
tray-background = ${colors.shade-1}
cursor-click = pointer
monitor = ${env:MONITOR:}
modules-left = session date polywins
modules-center = windowlist
modules-right = pulseaudio wireless-network vpn
[bar/external]
inherit = bar/main
monitor = ${env:MONITOR:}
modules-left = session date polywins
modules-center = windowlist2
modules-right = pulseaudio wireless-network vpn gamemode updates-pacman-aurhelper
tray-position = left
[settings]
screenchange-reload = true
format-padding = 1
pseudo-transparency = true
+26
View File
@@ -0,0 +1,26 @@
#!/usr/bin/env bash
#kill all polybar instances
CPID=$(pgrep -x polybar)
if [ -n "${CPID}" ] ; then
kill -TERM ${CPID}
fi
# add window titles & launch the bars
# using bspc query here to get monitors in the same order bspwm sees them
for m in $( bspc query -M --names ); do
index=$((index + 1))
if [[ $index -eq 1 ]]; then
export P_BSPWM_WINDOW_CMD_1="tail ${HOME}/.cache/bspwm_windows_1.txt"
MONITOR=$m polybar --reload main &
fi
#if [ && [ $(xrandr -q | grep 'DP-2 connected') ]]; then
if [[ $index -eq 2 ]]; then
export P_BSPWM_WINDOW_CMD_2="tail ${HOME}/.cache/bspwm_windows_2.txt"
MONITOR=$m polybar --reload external &
fi
done
+330
View File
@@ -0,0 +1,330 @@
[module/nowplaying]
type = custom/script
tail = true
interval = 1
format =  <label>
exec = playerctl metadata --format "{{ artist }} - {{ title }}"
[module/battery]
type = internal/battery
battery = BAT0
adapter = ADP1
full-at = 98
low-at = 25
format-full-prefix =
format-full = <label-charging>
format-charging-prefix =
format-charging = <label-charging>
label-charging = %percentage:2%%
label-charging-padding = 1
format-charging-foreground = ${colors.fg}
format-discharging = <ramp-capacity> <label-discharging>
label-discharging = %percentage%%
label-discharging-padding = 1
format-discharging-foreground = ${colors.fg}
format-low = <ramp-capacity><label-discharging>
label-low-padding = 1
format-low-foreground = ${colors.red}
ramp-capacity-0 = ""
ramp-capacity-1 = ""
ramp-capacity-2 = ""
ramp-capacity-3 = ""
ramp-capacity-4 = ""
ramp-capacity-5 = ""
poll-interval = 5
[module/bspwm]
type = internal/bspwm
format = <label-state> <label-mode>
label-focused =
label-focused-foreground = ${colors.shade-5}
label-focused-background = ${colors.shade-2}
label-focused-padding = 2
label-focused-underline= ${colors.shade-5}
label-occupied =
label-occupied-foreground = ${colors.shade-3}
label-occupied-background = ${colors.shade-2}
label-occupied-padding = 2
label-urgent =
label-urgent-foreground = ${colors.red}
label-urgent-background = ${colors.shade-2}
label-urgent-padding = 2
label-empty =
label-empty-foreground = ${colors.shade-3}
label-empty-background = ${colors.shade-2}
label-empty-padding = 2
[module/date]
type = internal/date
interval = 1
time = "%a, %d. %b %H:%M"
time-alt = %A, %d.%m.%g %H:%M:%S
format = <label>
format-foreground = ${colors.fg}
format-padding = 1
label = %{T1}%time%%{T-}
label-padding = 1
click-right = $HOME/.config/rofi/calendar/rofi-calendar.sh
[module/pulseaudio]
type = internal/pulseaudio
use-ui-max = false
format-volume = <label-volume>
format-volume-background = ${colors.shade-2}
format-volume-prefix = " "
format-volume-prefix-foreground = ${colors.lavender}
label-volume = %{T1}%percentage%%%{T-}
label-volume-foreground = ${colors.lavender}
label-volume-padding = 1
format-muted = <label-muted>
format-muted-background = ${colors.shade-2}
format-muted-prefix = " 󰝟"
format-muted-prefix-foreground = ${colors.red}
label-muted = %{T1}%percentage%%%{T-}
label-muted-foreground = ${colors.fg-alt}
label-muted-padding = 1
click-right = $HOME/.config/rofi/volume/volume.sh
[module/session]
type = custom/text
click-left = $HOME/.config/rofi/powermenu/powermenu.sh
click-right = $HOME/.config/rofi/launcher/launcher.sh
content = %{T4}%{T-}
content-foreground = ${colors.blue}
content-padding = 1
content-font = 2
[module/screenshot]
type = custom/text
click-left = flameshot gui
content = %{T4} %{T-}
content-foreground = ${colors.fg}
content-padding = 1
[module/wlan]
type = internal/network
interface = wlan0
interval = 1.0
format-connected-prefix =
format-connected = <label-connected>
label-connected = "%{A1:wifimenu:}%essid%%{A}"
label-connected-foreground = ${colors.fg}
label-connected-padding = 1
format-disconnected = <label-disconnected>
format-disconnected-padding = 1
label-disconnected = %{A1:wifimenu:}睊%{A}
label-disconnected-foreground = ${colors.shade-1}
label-disconnected-padding = 1
[module/filesystem]
type = internal/fs
mount-0 = /
interval = 30
warn-percentage = 90
format-mounted-prefix =
label-mounted = %percentage_used%%
label-mounted-padding = 1
format-warn-prefix =
format-warn = <label-warn>
label-warn = %free%
label-warn-padding = 1
format-warn-foreground = ${colors.red}
[module/title]
type = internal/xwindow
label = %title:0:50:...%
format-prefix = "  "
format-prefix-foreground = ${colors.fg}
[module/notification-history]
type = custom/text
click-left = $HOME/.config/polybar/modules/notifications.sh
content = %{T4}%{T-}
content-foreground = ${colors.fg}
content-padding = 1
content-font = 2
[module/notifications]
type = custom/script
exec = $HOME/.config/polybar/modules/notifications-count.sh
click-left = $HOME/.config/polybar/modules/notifications-open.sh
click-right = $HOME/.config/polybar/modules/notifications-close.sh
click-middle = $HOME/.config/polybar/modules/notifications-setmode.sh
tail = true
format = <label>
label = %output:0:50:...%
[module/spotifyctl]
type = custom/script
exec = $HOME/.config/polybar/modules/polybar-playerctl.sh
click-left = playerctl --player="spotify" play
click-right = playerctl --player="spotify" pause
click-middle = playerctl --player="spotify" next
double-click-left = playerctl --player="spotify" previous
label = %output:0:50:...%
[module/spotifyctl-menu]
type = custom/menu
expand-right = true
menu-0-0 = "  "
menu-0-0-exec = killall spotify
menu-0-1 = " ﭢ "
menu-0-1-exec = playerctl --player="spotify" previous
menu-0-2 = "  "
menu-0-2-exec = playerctl --player="spotify" play
menu-0-3 = "  "
menu-0-3-exec = playerctl --player="spotify" pause
menu-0-4 = " ﭠ "
menu-0-4-exec = playerctl --player="spotify" next
menu-0-5 = "  "
label-open = "  "
label-close = ""
label-separator = " "
[module/cpu]
type = internal/cpu
interval = 0.5
format = <label>
format-foreground = ${colors.fg}
format-padding = 2
label = "﬙ %percentage:%%"
[module/memory]
type = internal/memory
label = " %percentage_used:%%"
; Seconds to sleep between updates
; Default: 1
interval = 3
; Default: 90
; New in version 3.6.0
warn-percentage = 90
[module/wireless-network]
type = internal/network
interface = wlan0
interval = 3.0
unknown-as-up = true
format-connected-foreground = ${colors.lavender}
format-connected-background = ${colors.shade-2}
format-connected-padding = 2
format-connected = %{A1:$HOME/rofi/network-manager/rofi-network-manager.sh:}<ramp-signal> <label-connected>%{A}
label-connected = %essid%
format-disconnected-foreground = ${colors.lavender}
format-disconnected-padding = 1
format-disconnected = %{A1:$HOME/rofi/network-manager/rofi-network-manager.sh:}<label-disconnected>%{A}
label-disconnected ="󰖪"
ramp-signal-0 = "󰢿"
ramp-signal-1 = "󰢼"
ramp-signal-2 = "󰢽"
ramp-signal-3 = "󰢽"
ramp-signal-4 = "󰢾"
ramp-signal-foreground = ${colors.lavender}
ramp-signal-0-foreground = "#440000"
ramp-signal-1-foreground = "#440000"
[module/wired-network]
type = internal/network
interface = eth0
interval = 3.0
format-connected-foreground = ${colors.fg}
format-connected-padding = 1
format-connected = %{A1:$HOME/.../rofi-network-manager/rofi-network-manager.sh:}<label-connected>%{A}
label-connected =  %local_ip%
format-disconnected-foreground = ${colors.fg-alt}
format-disconnected-padding = 1
format-disconnected = %{A1:$HOME/.../rofi-network-manager/rofi-network-manager.sh:}<label-disconnected>%{A}
label-disconnected =" "
[module/bluetooth]
type = custom/script
exec = ~/.config/polybar/modules/system-bluetooth-bluetoothctl.sh
tail = true
click-left = ~/.config/rofi/bluetooth/bluetooth.sh &
[module/updates-pacman-aurhelper]
type = custom/script
exec = ~/.config/polybar/modules/updates-pacman-aurhelper.sh
interval = 600
format = <label>
format-background = ${colors.shade-2}
format-padding = 2
[module/gamemode]
type = custom/script
exec = ~/.config/polybar/modules/gamemode.sh
interval = 2
format = <label>
format-background = ${colors.shade-2}
[module/ixwindow]
type = custom/script
exec = ~/.config/polybar/modules/ixwindow/ixwindow
tail = true
label-font = 3
[module/windowlist]
type = custom/script
exec = ${env:P_BSPWM_WINDOW_CMD_1}
interval = 0.1
[module/windowlist2]
type = custom/script
exec = ${env:P_BSPWM_WINDOW_CMD_2}
interval = 0.1
[module/bluetooth2]
type = custom/script
exec = ~/.config/rofi/bluetooth/bluetooth.sh --status
interval = 1
click-left = ~/.config/rofi/bluetooth/bluetooth.sh &
[module/vpn]
type = custom/script
exec = ~/.config/polybar/modules/nm-vpn.sh
interval = 5
click-left = ~/.config/rofi/nm-vpn/nm-vpn.sh &
format-background = ${colors.shade-4}
[module/rofication-status]
type = custom/script
exec = ~/.config/polybar/modules/rofication.sh
click-left = ~/.config/polybar/modules/rofication.sh --show &
format-background = ${colors.shade-4}
background = ${colors.shade-4}
[module/polywins]
type = custom/script
exec = ~/.config/polybar/modules/polywins.py $MONITOR
format = <label>
label = %output%
label-padding = 0
tail = true
format-background = ${colors.shade-2}
format-spacing = 5
+11
View File
@@ -0,0 +1,11 @@
#!/bin/sh
STATE="$(gamemoded -s)"
if [[ "$STATE" != "gamemode is inactive" ]]; then
echo ""
else
echo ""
fi
+65
View File
@@ -0,0 +1,65 @@
#!/bin/bash
# Most of the code taken from
# https://unix.stackexchange.com/questions/48860/how-to-dump-the-icon-of-a-running-x-program
SIZE=16
COLOR="#00000000"
wid="$2"
# wid="$(xdotool selectwindow)"
# class="$(bspc query -T -n "$wid" | jq -r '.client.className')"
WM_CLASS="$(xprop -id "$wid" WM_CLASS | awk '{print $4}' | tr -d '"')"
name="$WM_CLASS"
CACHE="$1/$name"
if [ -f "$CACHE.jpg" ]; then
exit 0
fi
# Check if there is an icon for us in xprop,
# so it won't break the behavior of the script
if [ -z "$(xprop -id "$wid" | grep "Icon")" ]; then
exit 0
fi
# Resize it in advance, so icons will look better, but it's not necessary, so
# you can remove "-resize" flag if you prefer it the other way
cmd=(convert -resize "$SIZE"x"$SIZE" -set 'filename:w' '%w' - "${name}.png")
split_icons() {
xprop -id "$wid" -notype 32c _NET_WM_ICON |
awk -v RS=', | = ' '
NR == 1 { h = $1; i++; next }
NR == i + 1 { x = $1; printf "%s = %s", h, x; next }
NR == i + 2 { s = x * $1 } { printf ", %s", $1 }
NR == i + 2 + s { i += s + 2; printf "\n" }
'
}
to_pam() {
perl -0777 -pe '@_=/\d+/g;
printf "P7\nWIDTH %d\nHEIGHT %d\n", splice@_,0,2;
printf "DEPTH 4\nMAXVAL 255\nTUPLTYPE RGB_ALPHA\nENDHDR\n";
$_=pack "N*", @_;
s/(.)(...)/$2$1/gs'
}
while read -r data; do to_pam <<< "$data" | "${cmd[@]}"; done < <(split_icons)
convert "$name.png" -background $COLOR -flatten -alpha off "$name.jpg"
mv "$name.jpg" "$CACHE.jpg" && rm "$name.png"
+187
View File
@@ -0,0 +1,187 @@
#!/bin/bash
GAP=""
print_info() {
echo -n "$GAP"
local DESK="$(bspc query --names -D -d focused)"
case $DESK in
1)
DESKICON=""
;;
2)
DESKICON=""
;;
3)
DESKICON=""
;;
4)
DESKICON=""
;;
5)
DESKICON=""
;;
6)
DESKICON=""
;;
7)
DESKICON=""
;;
8)
DESKICON=""
;;
9)
DESKICON=""
;;
*)
DESKICON=""
;;
esac
if [ "$1" = "Empty" ]; then
echo "$DESKICON  $(whoami)@$(uname -n) - $(uname -r)"
else
local wid="$1"
# Doesn't always work, so xprop is more realiable here
# WM_CLASS="$(bspc query -T -n "$Node" | jq -r '.client.className')"
local WM_CLASS="$(xprop -id "$wid" WM_CLASS | awk '{print $4}' | tr -d '"')"
local WM_NAME="$(xprop -id $wid _NET_WM_NAME | awk -F '=' '{print $2}' | tr -d '"')"
case "$WM_CLASS" in
'firefox')
echo "$DESKICON  ${WM_NAME:0:100}";;
'kitty')
echo "$DESKICON  ${WM_NAME:0:100}";;
'code-oss')
echo "$DESKICON  ${WM_NAME:0:100}";;
'Audacious')
echo "$DESKICON ﱘ ${WM_NAME:0:100}";;
'io.github.celluloid_player.Celluloid')
echo "$DESKICON  ${WM_NAME:0:100}";;
'Lutris')
echo "$DESKICON  ${WM_NAME:0:100}";;
'discord')
echo "$DESKICON ﭮ ${WM_NAME:0:100}";;
'Nemo')
echo "$DESKICON  ${WM_NAME:0:100}";;
*)
# https://stackoverflow.com/questions/1538676/uppercasing-first-letter-of-words-using-sed
echo "$DESKICON ${WM_NAME:0:100}" | sed -e "s/\b\(.\)/\u\1/g";;
esac
fi
}
exists_fullscreen_node() {
local fullscreen_nodes="$(bspc query -N -n .fullscreen.\!hidden -d "$1")"
if [ -n "$fullscreen_nodes" ]; then
echo '1'
else
echo '0'
fi
}
process_window() {
local desk="$2"
local wid="$1"
local WM_CLASS="$(xprop -id "$wid" WM_CLASS | awk '{print $4}' | tr -d '"')"
# If there is a fullscreen node, don't show anything,
# since we shouldn't see it
if [ "$(exists_fullscreen_node "$desk")" = "1" ]; then
return 0;
fi
print_info "$wid"
}
is_desktop_empty() {
local desk="$1"
local nodes="$(bspc query -N -n .window.\!hidden -d "$desk")"
if [ -n "$nodes" ]; then
echo '0'
else
echo '1'
fi
}
process_desktop() {
local desk="$1"
local is_empty="$(is_desktop_empty "$desk")"
if [ "$is_empty" = "1" ]; then
print_info "Empty"
fi
}
bspc subscribe node_focus | while read -r Event Monitor Desktop Node
do
# For some reason "$Node" and "$Desktop" are not always working
# properly with sticky windows
Node="$(xdotool getactivewindow)"
Desktop="$(bspc query -D -d focused)"
process_window "$Node" "$Desktop"
done &
bspc subscribe node_state | while read -r Event Monitor Desktop Node State Active
do
Node="$(xdotool getactivewindow)"
Desktop="$(bspc query -D -d focused)"
if [ "$State" != "fullscreen" ]; then
continue;
fi
# So, if you will focus on the other windows of the same app,
# which are not fullscreen, you will see icon
if ![ "$Active" = "on" ]; then
process_window "$Node" "$Desktop"
fi
done &
bspc subscribe node_add | while read -r Event Monitor Desktop Ip Node
do
State="$(bspc query -T -n "$Node" | jq -r '.client.state')"
done &
bspc subscribe node_flag | while read -r Event Monitor Desktop Node Flag Active
do
if [ "$Flag" = "hidden" ] && [ "$Desktop" = "$(bspc query -D -d .focused)" ]; then
process_desktop "$Desktop"
fi
done &
bspc subscribe node_remove | while read -r Event Monitor Desktop Node
do
process_desktop "$Desktop"
done &
bspc subscribe desktop_focus | while read -r Event Monitor Desktop
do
if [ "$(exists_fullscreen_node "$Desktop")" = "1" ]; then
continue;
fi
process_desktop "$Desktop"
done
Binary file not shown.
@@ -0,0 +1,148 @@
// compilation:
// g++ polybar-xwindow-icon.cpp -o polybar-xwindow-icon -I/usr/include/opencv4/ -lopencv_core -lopencv_videoio -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lX11
//
// Code is mostly copied from
// https://stackoverflow.com/questions/54513419/putting-image-into-a-window-in-x11
// Some parts are taken from
// https://stackoverflow.com/questions/57078155/draw-border-frame-using-xlib
#include <opencv2/opencv.hpp> // FOR OpenCV
#include <opencv2/core/core.hpp> // Basic OpenCV structures (cv::Mat)
#include <opencv2/video/video.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <bits/stdc++.h>
#include <X11/Xlib.h> // Every Xlib program must include this
#include <assert.h> // I include this to test return values the lazy way
#include <unistd.h> // So we got the profile for 10 seconds
#include <X11/Xutil.h>
#include <X11/keysym.h>
#include <X11/Xlib.h> // Every Xlib program must include this
#include <X11/Xatom.h>
#include <X11/extensions/Xcomposite.h>
#include <X11/extensions/Xfixes.h>
#include <X11/extensions/shape.h>
#define NIL (0) // A name for the void pointer
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
XGCValues gr_values;
//GC gc;
XColor color, dummy;
Display *dpy = XOpenDisplay(NIL);
//assert(dpy);
//int screen = DefaultScreen(dpy);
// Get some colors
int blackColor = BlackPixel(dpy, DefaultScreen(dpy));
int whiteColor = WhitePixel(dpy, DefaultScreen(dpy));
// Create the window
Window w = XCreateSimpleWindow(dpy, DefaultRootWindow(dpy), 270, 6,
24, 24, 0, whiteColor, blackColor);
// We want to get MapNotify events
XSelectInput(dpy, w, StructureNotifyMask);
// XSelectInput(dpy, w, ExposureMask);
long value = XInternAtom(dpy, "_NET_WM_WINDOW_TYPE_DOCK", False);
XChangeProperty(dpy, w, XInternAtom(dpy, "_NET_WM_WINDOW_TYPE", False),
XA_ATOM, 32, PropModeReplace, (unsigned char *) &value, 1);
XClassHint *polybar_xwindow_icon;
//my_struct = malloc(sizeof(t_data));
polybar_xwindow_icon = XAllocClassHint();
polybar_xwindow_icon->res_name = "polybar-xwindow-icon";
polybar_xwindow_icon->res_class = "Polybar-xwindow-icon";
XSetClassHint(dpy, w, polybar_xwindow_icon);
XFree(polybar_xwindow_icon);
XMapWindow(dpy, w);
// Wait for the MapNotify event
for(;;) {
XEvent e;
XNextEvent(dpy, &e);
if (e.type == MapNotify)
break;
}
Window focal = w;
XWindowAttributes gwa;
XGetWindowAttributes(dpy, w, &gwa);
int wd1 = gwa.width;
int ht1 = gwa.height;
XImage *image = XGetImage(dpy, w, 0, 0 , wd1, ht1, AllPlanes, ZPixmap);
unsigned long rm = image->red_mask;
unsigned long gm = image->green_mask;
unsigned long bm = image->blue_mask;
Mat img(ht1, wd1, CV_8UC3); // OpenCV Mat object is initilaized
Mat scrap = imread(argv[1]);//(wid, ht, CV_8UC3);
resize(scrap, img, img.size(), cv::INTER_AREA);
for (int x = 0; x < wd1; x++)
for (int y = 0; y < ht1 ; y++)
{
unsigned long pixel = XGetPixel(image,x,y);
Vec3b color = img.at<Vec3b>(Point(x,y));
pixel = 65536 * color[2] + 256 * color[1] + color[0];
XPutPixel(image, x, y, pixel);
}
// namedWindow("QR", CV_WINDOW_NORMAL);
// imshow("QR", img);
GC gc = XCreateGC(dpy, w, 0, NIL);
XPutImage(dpy, w, gc, image, 0, 0, 0, 0, wd1, ht1);
int run = 1;
while(run) {
XEvent xe;
XNextEvent(dpy, &xe);
switch (xe.type) {
case Expose:
XPutImage(dpy, w, gc, image, 0, 0, 0, 0, wd1, ht1);
XSetForeground(dpy, gc, color.pixel);
XSync(dpy, False);
break;
default:
break;
}
}
XDestroyWindow(dpy, w);
XCloseDisplay(dpy);
// waitKey(0);
return 0;
}
+16
View File
@@ -0,0 +1,16 @@
#!/bin/sh
vpn="$(nmcli -t -f name,type connection show --order name --active 2>/dev/null | grep vpn | head -1 | cut -d ':' -f 1)"
case "$1" in
--disconnect)
nmcli con down $vpn
;;
*)
if [ -n "$vpn" ]; then
echo "%{F#94e2d5}󰖂%{F-} $vpn"
else
echo ""
fi
;;
esac
+17
View File
@@ -0,0 +1,17 @@
#!/bin/sh
PLAYER="spotify"
if [ "$(pidof "$PLAYER")" != "" ];
then
if [ "$(playerctl --player="$PLAYER" status)" == "Playing" ];
then
playerctl --player="$PLAYER" pause
else
playerctl --player="$PLAYER" play
fi
else
echo ""
fi
+12
View File
@@ -0,0 +1,12 @@
#!/bin/sh
PLAYER="spotify"
if [ "$(pidof "$PLAYER")" != "" ];
then
echo "$(playerctl metadata --player="$PLAYER" --format "{{ artist }} - {{ title }}")"
else
echo ""
fi
+571
View File
@@ -0,0 +1,571 @@
#!/usr/bin/env python
import sys
import os
# POLYWINS.py
# SETTINGS
name_style = None # options: upper, lower, None
separator = " " # What to separate workspaces with
windowlist_prefix = " " # prefix before listing windows, default is " "
show = "window_classname"
forbidden_classes = "Polybar Conky Gmrun Pavucontrol".casefold().split(" ")
hide_unpopulated_desktops = False
iconize = True
hide_name = True # Controls whether to hide window names when an icon is present
char_limit = 10
max_windows = 10
add_spaces = "true"
resize_increment = 16
resize_offset = resize_increment / 2
use_pywal = False
override_names = [
" %{F#b4befe} %{F-}",
" %{F#b4befe} %{F-}",
" %{F#b4befe} %{F-}"
] # Either a list containing the focused, populated and unfocused versions of workspace name, or False
underline = True
highlight_active_wps = True
if len(sys.argv) <= 2:
try:
if use_pywal is not True:
raise TypeError
with open(os.path.expanduser("~/.cache/wal/colors")) as colors:
colors = tuple(map(lambda x: x[:-1], colors.readlines()))
active_text_color = colors[1]
active_underline = colors[1] if underline is not False else None
inactive_text_color = colors[7]
inactive_underline = colors[7] if underline is not False else None
except (OSError, IndexError, TypeError):
active_text_color = "#cdd6f4"
active_underline = "#EB6572" if underline is not False else None
inactive_text_color = "#9399b2"
inactive_underline = "#C0CAF5" if underline is not False else None
# WINDOW LIST SETUP
active_left = "%{F" + active_text_color + "}"
active_right = "%{F-} "
inactive_left = "%{F" + inactive_text_color + "}"
inactive_right = "%{F-}"
# separator = "%{F" + inactive_text_color + "}" + separator + "%{F-}"
wps_active_left = (
"%{F" + (inactive_text_color if highlight_active_wps is False else active_text_color) + "}"
)
wps_active_right = "%{F-}"
wps_inactive_left = "%{F" + inactive_text_color + "}"
wps_inactive_right = "%{F-}"
if active_underline is not None:
active_left = active_left + "%{+u}%{u" + active_underline + "}"
active_right = "%{-u}" + active_right
wps_active_left = "%{F" + inactive_text_color + "}%{+u}%{u" + inactive_underline + "}"
wps_active_right = "%{-u}%{u}%{F-}"
if inactive_underline is not None:
inactive_left += "%{+u}%{u" + inactive_underline + "}"
inactive_right = "%{-u}" + inactive_right
on_click = " ".join(sys.argv[:2])
monitor = sys.argv[1]
printf = sys.stdout.write
superscript = str.maketrans("0123456789", "⁰¹²³⁴⁵⁶⁷⁸⁹")
class_icons = {
"alacritty": "",
"atom": "",
"vscode": "",
"code": "",
"code-oss": "",
"neovim": "",
"nvim": "",
"nvim-qt": "",
"neovide": "",
"banshee": "",
"blender": "",
"chromium": "",
"google-chrome": "",
"cura": "",
"darktable": "",
"discord": "",
"eclipse": "",
"emacs": "",
"eog": "",
"evince": "",
"evolution": "",
"feh": "",
"file-roller": "",
"filezilla": "",
"firefox": "",
"firefox-esr": "",
"firefoxdev": "",
"navigator": "",
"gimp": "",
"gimp-2.8": "",
"gnome-control-center": "",
"gnome-terminal-server": "",
"prusa-slicer": "",
"gpick": "",
"imv": "",
"insomnia": "",
"java": "",
"jetbrains-idea": "",
"jetbrains-studio": "",
"keepassxc": "",
"keybase": "",
"kicad": "",
"kitty": "",
"st-256color": "",
"st": "",
"libreoffice": "",
"lua5.1": "",
"mpv": "",
"mupdf": "",
"mysql-workbench-bin": "",
"nautilus": "",
"nemo": "",
"openscad": "",
"pavucontrol": "",
"postman": "",
"rhythmbox": "",
"robo3t": "",
"signal": "",
"slack": "",
"slic3r.pl": "",
"spotify": "",
"steam": "",
"subl": "",
"subl3": "",
"sublime_text": "",
"thunar": "",
"thunderbird": "",
"totem": "",
"urxvt": "",
"xfce4-terminal": "",
"xournal": "",
"yelp": "",
"zenity": "",
"zoom": "",
"telegram": "",
"kotatogram": "",
"lunarclient": "",
"viber": "",
}
def get_active_wid():
return os.popen("bspc query -N -n .focused").read()[:-1]
def ensure_len(ID, length=10):
while len(ID) < length - 1:
ID = "0x0" + ID[2:]
return ID
if hide_name:
def to_icon(name):
try:
return class_icons[name.lower()] + " "
except KeyError:
if not name.casefold().startswith("lunar client"):
return name[:char_limit]
else:
return ""
else:
def to_icon(name):
try:
return class_icons[name.lower()] + " " + name[:char_limit]
except KeyError:
if not name.casefold().startswith("lunar client"):
return name[:char_limit]
else:
return ""
def wid_to_name(wid, cache={}):
if not isinstance(wid, list):
if show == "window_class":
out = os.popen(f"xprop -id {wid} WM_CLASS 2> /dev/null").read().split('"')
if show == "window_classname":
out = os.popen(f"xprop -id {wid} WM_CLASS 2> /dev/null").read().split('"')[:-1][-1]
if show == "window_title":
out = os.popen(f"xprop -id {wid} _NET_WM_NAME 2> /dev/null").read().split('"')[1]
if name_style == "upper":
out = out.upper()
elif name_style == "lower":
out = out.lower()
return out
else:
out = {}
cached = cache.keys()
for id in wid:
if id not in cached:
if show == "window_class":
name = os.popen(f"xprop -id {id} WM_CLASS 2> /dev/null").read().split('"')[1]
if show == "window_classname":
name = os.popen(f"xprop -id {id} WM_CLASS 2> /dev/null").read().split('"')[-2]
if show == "window_title":
name = (
os.popen(f"xprop -id {id} _NET_WM_NAME 2> /dev/null").read().split('"')[1]
)
if name.lower() not in forbidden_classes:
if iconize:
name = to_icon(name)
try:
out[name].append(id)
except KeyError:
out[name] = [id]
cache[id] = name
else:
try:
out[cache[id]].append(id)
except KeyError:
out[cache[id]] = [id]
return out, cache
def generate(workspaces, focused_desk, order):
global classcache
focused = os.popen(f"bspc query -N -m {mon_id} -n .focused").read()[
:-1
] # ID of the currently focused window
for workspace_id in order:
if (
len(workspaces[workspace_id][0]) < hide_unpopulated_desktops
and workspace_id != focused_desk
):
continue
printf(
"%{A1:"
+ on_click
+ " switch_workspace "
+ workspace_id
+ ":}"
+ "%{A2:"
+ on_click
+ " swap_workspace "
+ workspace_id
+ ":}"
+ wps_inactive_left
+ (workspaces[workspace_id][1] if override_names is False else (override_names[1] if len(workspaces[workspace_id][0]) else override_names[0]))
if workspace_id != focused_desk
else wps_active_left
+ (workspaces[workspace_id][1] if override_names is False else override_names[2])
)
if len(workspaces[workspace_id][0]) == 0:
#printf(separator + wps_active_right + "%{A}%{A}")
printf( wps_active_right + "%{A}%{A}")
else:
printf(windowlist_prefix + "%{A}%{A}")
windows, classcache = wid_to_name(workspaces[workspace_id][0], classcache)
win_length = len(windows.keys())
for i, win_class in enumerate(windows.keys()):
if i == max_windows:
break
wid = " ".join(windows[win_class])
printf(
"%{A1:"
+ on_click
+ " focus "
+ wid
+ ":}%{A2:"
+ on_click
+ " close "
+ wid
+ ":}%{A3:"
+ on_click
+ " slop_resize "
+ wid
+ ":}%{A4:"
+ on_click
+ " increment_size "
+ wid
+ ":}%{A5:"
+ on_click
+ " decrement_size "
+ wid
+ ":}"
)
printf(active_left if focused in windows[win_class] else inactive_left)
# printf(separator if i == 0 else "")
printf(
win_class.upper()
if name_style == "upper"
else (win_class.lower() if name_style == "lower" else win_class)
)
printf(
#(separator if i < (win_length - 1) else "")
""
if len(windows[win_class]) <= 1
else str(len(windows[win_class])).translate(superscript)
)
printf(active_right + "%{A}%{A}%{A}%{A}%{A}")
printf(wps_active_right)
if len(windows.keys()) > max_windows:
printf(f"+{len(windows.keys())-max_windows}")
def main():
if len(sys.argv) <= 2:
focused = ""
command = os.popen(
"bspc subscribe desktop_focus desktop_add desktop_rename desktop_remove desktop_swap node_add node_remove node_swap node_transfer node_focus"
)
global mon_id
mon_id = os.popen(f"bspc query -M -m '{monitor}'").read()[:-1]
workspace_order = []
workspaces = {} # workspace ID and name pairs
for workspace in [
workspace[:-1] for workspace in os.popen(f"bspc query -D -m '{mon_id}'").readlines()
]:
workspace_order.append(workspace)
workspaces[workspace] = (
[
window[:-1]
for window in os.popen(f"bspc query -N -d {workspace} -n .window").readlines()
],
os.popen(f"bspc query -D -d {workspace} --names").read()[:-1],
)
focused_workspace = os.popen(f"bspc query -D -m {mon_id} -d .focused").read()[
:-1
] # ID of the currently focused workspace
global classcache
classcache = {}
try:
generate(
workspaces,
focused_workspace,
workspace_order,
)
printf("\n")
sys.stdout.flush()
except:
workspace_order = []
workspaces = {} # workspace ID and name pairs
for workspace in [
workspace[:-1] for workspace in os.popen(f"bspc query -D -m '{mon_id}'").readlines()
]:
workspace_order.append(workspace)
workspaces[workspace] = (
[
window[:-1]
for window in os.popen(
f"bspc query -N -d {workspace} -n .window"
).readlines()
],
os.popen(f"bspc query -D -d {workspace} --names").read()[:-1],
)
focused_workspace = os.popen(f"bspc query -D -m {mon_id} -d .focused").read()[
:-1
] # ID of the currently focused workspace
while True:
update = command.readline()[:-1]
if (
mon_id in update
or update.startswith("node_remove")
or update.startswith("node_focus")
or update.startswith("desktop_focus")
):
if update.startswith("node"):
update = update[5:].split(" ")
if update[0] == "focus":
# global focused
# focused = update[3]
pass
elif update[0] == "add":
try:
workspaces[update[2]][0].append(update[4])
except KeyError:
pass
elif update[0] == "remove":
classcache.pop(update[3], None)
try:
workspaces[update[2]][0].remove(update[3])
except KeyError:
continue
elif update[0] == "swap":
if update[1] == mon_id:
workspaces[update[2]][0].remove(update[3])
workspaces[update[2]][0].append(update[6])
if update[4] == mon_id:
workspaces[update[5]][0].remove(update[6])
workspaces[update[5]][0].append(update[3])
else:
if update[1] == mon_id:
workspaces[update[2]][0].remove(update[3])
if update[4] == mon_id:
workspaces[update[5]][0].append(update[3])
else:
update = update[8:].split(" ")
if update[0] == "focus":
focused_workspace = update[-1]
elif update[0] == "add":
workspaces[update[2]] = ([], update[-1])
elif update[0] == "rename":
workspaces[update[2]] = (
[
window[:-1]
for window in os.popen(f"bspc query -N -d {update[2]}").readlines()
],
update[-1],
)
elif update[0] == "remove":
workspaces.pop(update[-1], None)
else:
if update[1] == mon_id and update[3] == mon_id:
index = workspace_order.index(update[4])
workspace_order[workspace_order.index(update[2])] = update[4]
workspace_order[index] = update[2]
else:
workspace_order = []
workspaces = {} # workspace ID and name pairs
for workspace in [
workspace[:-1]
for workspace in os.popen(
f"bspc query -D -m '{mon_id}'"
).readlines()
]:
workspace_order.append(workspace)
workspaces[workspace] = (
[
window[:-1]
for window in os.popen(
f"bspc query -N -d {workspace} -n .window"
).readlines()
],
os.popen(f"bspc query -D -d {workspace} --names").read()[:-1],
)
focused_workspace = os.popen(
f"bspc query -D -m {mon_id} -d .focused"
).read()[
:-1
] # ID of the currently focused workspace
try:
generate(
workspaces,
focused_workspace,
workspace_order,
)
printf("\n")
sys.stdout.flush()
except:
workspace_order = []
workspaces = {} # workspace ID and name pairs
for workspace in [
workspace[:-1]
for workspace in os.popen(f"bspc query -D -m '{mon_id}'").readlines()
]:
workspace_order.append(workspace)
workspaces[workspace] = (
[
window[:-1]
for window in os.popen(
f"bspc query -N -d {workspace} -n .window"
).readlines()
],
os.popen(f"bspc query -D -d {workspace} --names").read()[:-1],
)
focused_workspace = os.popen(
f"bspc query -D -m {mon_id} -d .focused"
).read()[
:-1
] # ID of the currently focused workspace
command = os.popen(
"bspc subscribe desktop_focus desktop_add desktop_rename desktop_remove desktop_swap node_add node_remove node_swap node_transfer node_focus"
)
else:
exec(sys.argv[2] + "(" + "'" + " ".join(sys.argv[3:]) + "')")
def slop_resize(window):
window = sorted(window.split(" "))
try:
window = window[window.index(get_active_wid())]
except ValueError:
window = window[0]
os.system(
f"""bash -c 'bspc node "{window}" -g hidden=off &
bspc node "{window}" -g hidden=off &
xdo hide "{window}" &
pos="$(slop -b 2 -c 0.75,0.8,0.96.1 -f 0,%x,%y,%w,%h)"
xdo show "{window}"
bspc node "{window}" -t floating
bspc node "{window}" -d focused
wmctrl -ir "{window}" -e "$pos"
xdo activate "{window}"'"""
)
def close(window):
window = sorted(window.split(" "))
try:
window = window[window.index(get_active_wid())]
except ValueError:
window = window[0]
os.system("xdo close " + window)
def focus(window):
window = sorted(window.split(" "))
try:
window = window[(window.index(get_active_wid()) + 1) % len(window)]
os.system("bspc node " + window + " -g hidden=off")
# os.system("bspc node -s " + window)
os.system("bspc node -f " + window)
except ValueError:
window = window[0]
os.system("bspc node " + window + " -g hidden=off")
os.system("bspc node -f " + window)
os.system("wmctrl -ia " + window)
def increment_size(window):
window = sorted(window.split(" "))
try:
window = window[window.index(get_active_wid())]
except ValueError:
window = window[0]
os.system(f"xdo move -x -{resize_offset} -y -{resize_offset} {window}")
os.system(f"xdo resize -w +{resize_increment} -h +{resize_increment} {window}")
def decrement_size(window):
window = sorted(window.split(" "))
try:
window = window[window.index(get_active_wid())]
except ValueError:
window = window[0]
os.system(f"bspc node -t floating {window}")
os.system(f"xdo move -x +{resize_offset} -y +{resize_offset} {window}")
os.system(f"xdo resize -w -{resize_increment} -h -{resize_increment} {window}")
def switch_workspace(workspace):
os.system(f"bspc desktop -f {workspace}")
def swap_workspace(workspace):
os.system(f"bspc desktop -s {workspace}")
if __name__ == "__main__":
main()
+26
View File
@@ -0,0 +1,26 @@
#!/bin/bash
rofication_print() {
status=$(rofication-status)
if [ $status = '?' ]; then
printf $status
elif [ $status -gt 0 ]; then
printf " %s" "$status"
else
printf ""
fi
printf '\n'
}
rofication_show() {
rofication-gui
}
case "$1" in
--show)
rofication_show
;;
*)
rofication_print
;;
esac
@@ -0,0 +1,60 @@
#!/bin/sh
bluetooth_print() {
bluetoothctl | while read -r; do
if [ "$(systemctl is-active "bluetooth.service")" = "active" ]; then
printf ''
devices_paired=$(bluetoothctl devices Paired | grep Device | cut -d ' ' -f 2)
counter=0
for device in $devices_paired; do
device_info=$(bluetoothctl info "$device")
if echo "$device_info" | grep -q "Connected: yes"; then
device_alias=$(echo "$device_info" | grep "Alias" | cut -d ' ' -f 2-)
if [ $counter -gt 0 ]; then
printf ", %s" "$device_alias"
else
printf " %s" "$device_alias"
fi
counter=$((counter + 1))
fi
done
printf '\n'
else
echo ""
fi
done
}
bluetooth_toggle() {
if bluetoothctl show | grep -q "Powered: no"; then
bluetoothctl power on >> /dev/null
sleep 1
devices_paired=$(bluetoothctl devices Paired | grep Device | cut -d ' ' -f 2)
echo "$devices_paired" | while read -r line; do
bluetoothctl connect "$line" >> /dev/null
done
else
devices_paired=$(bluetoothctl devices Paired | grep Device | cut -d ' ' -f 2)
echo "$devices_paired" | while read -r line; do
bluetoothctl disconnect "$line" >> /dev/null
done
bluetoothctl power off >> /dev/null
fi
}
case "$1" in
--toggle)
bluetooth_toggle
;;
*)
bluetooth_print
;;
esac
+22
View File
@@ -0,0 +1,22 @@
#!/bin/sh
if ! updates_arch=$(checkupdates 2> /dev/null | wc -l ); then
updates_arch=0
fi
# if ! updates_aur=$(yay -Qum 2> /dev/null | wc -l); then
if ! updates_aur=$(paru -Qum 2> /dev/null | wc -l); then
# if ! updates_aur=$(cower -u 2> /dev/null | wc -l); then
# if ! updates_aur=$(trizen -Su --aur --quiet | wc -l); then
# if ! updates_aur=$(pikaur -Qua 2> /dev/null | wc -l); then
# if ! updates_aur=$(rua upgrade --printonly 2> /dev/null | wc -l); then
updates_aur=0
fi
updates=$((updates_arch + updates_aur))
if [ "$updates" -gt 0 ]; then
echo "󰏔 $updates"
else
echo "󰍕"
fi
+17
View File
@@ -0,0 +1,17 @@
#!/usr/bin/env bash
wlist=$(wmctrl -lpx)
IFS=$'\n' read -ra ADDR -d $'\0' <<< "$wlist"
for win in "${ADDR[@]}"
do
id=$win | awk '{print $1}'
desktop=$win | awk '{print $2}'
pid=$win | awk '{print $3}'
name=$win | awk '{print $4}'
host=$win | awk '{print $5}'
title=$win | awk '{print $6}'
echo $win | awk '{print $6}'
done
+47
View File
@@ -0,0 +1,47 @@
[colors]
bg = #181825
bg-alt = #20212C
fg = #acb0d0
fg-alt = #9399b2
trans = #00000000
shade-1 = #11111b
shade-2 = #1e1e2e
shade-3 = #313244
shade-4 = #45475a
shade-5 = #585b70
#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 = #cdd6f4
subtext1 = #bac2de
subtext0 = #a6adc8
overlay0 = #6c7086
overlay1 = #7f849c
overlay2 = #9399b2
surface0 = #313244
surface1 = #45475a
surface2 = #585b70
base = #1e1e2e
mantle = #181825
crust = #11111b
+82
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};
}
+13
View File
@@ -0,0 +1,13 @@
#!/usr/bin/bash
# choose pulseaudio sink via rofi or dmenu
# 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 '~/.config/rofi/volume/volume.rasi' -mesg '󱡫 Sink Switcher' -p 'pulseaudio sink:' -location 6 -width 100|grep -Po '[0-9]+(?=:)') &&
ponymix set-default -d $sink &&
for input in $(ponymix list -t sink-input|grep -Po '[0-9]+(?=:)');do
echo "$input -> $sink"
ponymix -t sink-input -d $input move $sink
done
+295
View File
@@ -0,0 +1,295 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Rofi Theme File
* Rofi Version: 1.7.3
**/
/*****----- Configuration -----*****/
configuration {
modi: "";
show-icons: false;
drun-display-format: "{name}";
window-format: "{w} · {c} · {t}";
}
/*****----- Global Properties -----*****/
@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;
margin: 0px;
padding: 0px;
border: 1px solid;
border-radius: 10px;
border-color: @border-colour;
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: false;
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: "MonarchOS 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: 1;
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: 10px;
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: 24px;
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;
}
+317
View File
@@ -0,0 +1,317 @@
#!/usr/bin/env bash
# __ _ _ _ _ _ _
# _ __ ___ / _(_) | |__ | |_ _ ___| |_ ___ ___ | |_| |__
# | '__/ _ \| |_| |_____| '_ \| | | | |/ _ \ __/ _ \ / _ \| __| '_ \
# | | | (_) | _| |_____| |_) | | |_| | __/ || (_) | (_) | |_| | | |
# |_| \___/|_| |_| |_.__/|_|\__,_|\___|\__\___/ \___/ \__|_| |_|
#
# Author: Nick Clyde (clydedroid)
#
# A script that generates a rofi menu that uses bluetoothctl to
# connect to bluetooth devices and display status info.
#
# Inspired by networkmanager-dmenu (https://github.com/firecat53/networkmanager-dmenu)
# Thanks to x70b1 (https://github.com/polybar/polybar-scripts/tree/master/polybar-scripts/system-bluetooth-bluetoothctl)
#
# Depends on:
# Arch repositories: rofi, bluez-utils (contains bluetoothctl)
# Constants
divider="---------"
goback="Back"
# Checks if bluetooth controller is powered on
power_on() {
if bluetoothctl show | grep -q "Powered: yes"; then
return 0
else
return 1
fi
}
# Toggles power state
toggle_power() {
if power_on; then
bluetoothctl power off
show_menu
else
if rfkill list bluetooth | grep -q 'blocked: yes'; then
rfkill unblock bluetooth && sleep 3
fi
bluetoothctl power on
show_menu
fi
}
# Checks if controller is scanning for new devices
scan_on() {
if bluetoothctl show | grep -q "Discovering: yes"; then
echo "Scan: on"
return 0
else
echo "Scan: off"
return 1
fi
}
# Toggles scanning state
toggle_scan() {
if scan_on; then
kill $(pgrep -f "bluetoothctl scan on")
bluetoothctl scan off
show_menu
else
bluetoothctl scan on &
echo "Scanning..."
sleep 5
show_menu
fi
}
# Checks if controller is able to pair to devices
pairable_on() {
if bluetoothctl show | grep -q "Pairable: yes"; then
echo "Pairable: on"
return 0
else
echo "Pairable: off"
return 1
fi
}
# Toggles pairable state
toggle_pairable() {
if pairable_on; then
bluetoothctl pairable off
show_menu
else
bluetoothctl pairable on
show_menu
fi
}
# Checks if controller is discoverable by other devices
discoverable_on() {
if bluetoothctl show | grep -q "Discoverable: yes"; then
echo "Discoverable: on"
return 0
else
echo "Discoverable: off"
return 1
fi
}
# Toggles discoverable state
toggle_discoverable() {
if discoverable_on; then
bluetoothctl discoverable off
show_menu
else
bluetoothctl discoverable on
show_menu
fi
}
# Checks if a device is connected
device_connected() {
device_info=$(bluetoothctl info "$1")
if echo "$device_info" | grep -q "Connected: yes"; then
return 0
else
return 1
fi
}
# Toggles device connection
toggle_connection() {
if device_connected "$1"; then
bluetoothctl disconnect "$1"
device_menu "$device"
else
bluetoothctl connect "$1"
device_menu "$device"
fi
}
# Checks if a device is paired
device_paired() {
device_info=$(bluetoothctl info "$1")
if echo "$device_info" | grep -q "Paired: yes"; then
echo "Paired: yes"
return 0
else
echo "Paired: no"
return 1
fi
}
# Toggles device paired state
toggle_paired() {
if device_paired "$1"; then
bluetoothctl remove "$1"
device_menu "$device"
else
bluetoothctl pair "$1"
device_menu "$device"
fi
}
# Checks if a device is trusted
device_trusted() {
device_info=$(bluetoothctl info "$1")
if echo "$device_info" | grep -q "Trusted: yes"; then
echo "Trusted: yes"
return 0
else
echo "Trusted: no"
return 1
fi
}
# Toggles device connection
toggle_trust() {
if device_trusted "$1"; then
bluetoothctl untrust "$1"
device_menu "$device"
else
bluetoothctl trust "$1"
device_menu "$device"
fi
}
# Prints a short string with the current bluetooth status
# Useful for status bars like polybar, etc.
print_status() {
if power_on; then
printf ''
paired_devices_cmd="devices Paired"
# Check if an outdated version of bluetoothctl is used to preserve backwards compatibility
if (( $(echo "$(bluetoothctl version | cut -d ' ' -f 2) < 5.65" | bc -l) )); then
paired_devices_cmd="paired-devices"
fi
mapfile -t paired_devices < <(bluetoothctl $paired_devices_cmd | grep Device | cut -d ' ' -f 2)
counter=0
for device in "${paired_devices[@]}"; do
if device_connected "$device"; then
device_alias=$(bluetoothctl info "$device" | grep "Alias" | cut -d ' ' -f 2-)
if [ $counter -gt 0 ]; then
printf ", %s" "$device_alias"
else
printf " %s" "$device_alias"
fi
((counter++))
fi
done
printf "\n"
else
echo ""
fi
}
# A submenu for a specific device that allows connecting, pairing, and trusting
device_menu() {
device=$1
# Get device name and mac address
device_name=$(echo "$device" | cut -d ' ' -f 3-)
mac=$(echo "$device" | cut -d ' ' -f 2)
# Build options
if device_connected "$mac"; then
connected="Connected: yes"
else
connected="Connected: no"
fi
paired=$(device_paired "$mac")
trusted=$(device_trusted "$mac")
options="$connected\n$paired\n$trusted\n$divider\n$goback\nExit"
# Open rofi menu, read chosen option
chosen="$(echo -e "$options" | $rofi_command "$device_name")"
# Match chosen option to command
case "$chosen" in
"" | "$divider")
echo "No option chosen."
;;
"$connected")
toggle_connection "$mac"
;;
"$paired")
toggle_paired "$mac"
;;
"$trusted")
toggle_trust "$mac"
;;
"$goback")
show_menu
;;
esac
}
# Opens a rofi menu with current bluetooth status and options to connect
show_menu() {
# Get menu options
if power_on; then
power="Power: on"
# Human-readable names of devices, one per line
# If scan is off, will only list paired devices
devices=$(bluetoothctl devices | grep Device | cut -d ' ' -f 3-)
# Get controller flags
scan=$(scan_on)
pairable=$(pairable_on)
discoverable=$(discoverable_on)
# Options passed to rofi
options="$devices\n$divider\n$power\n$scan\n$pairable\n$discoverable\nExit"
else
power="Power: off"
options="$power\nExit"
fi
# Open rofi menu, read chosen option
chosen="$(echo -e "$options" | $rofi_command "Bluetooth")"
# Match chosen option to command
case "$chosen" in
"" | "$divider")
echo "No option chosen."
;;
"$power")
toggle_power
;;
"$scan")
toggle_scan
;;
"$discoverable")
toggle_discoverable
;;
"$pairable")
toggle_pairable
;;
*)
device=$(bluetoothctl devices | grep "$chosen")
# Open a submenu if a device is selected
if [[ $device ]]; then device_menu "$device"; fi
;;
esac
}
# Rofi command to pipe into, can add any options here
rofi_command="rofi -dmenu $* -p -theme $HOME/.config/rofi/bluetooth/bluetooth.rasi -mesg -Bluetooth-Control"
case "$1" in
--status)
print_status
;;
*)
show_menu
;;
esac
@@ -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;
}
+95
View File
@@ -0,0 +1,95 @@
#!/usr/bin/env bash
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 $HOME/.config/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
+82
View File
@@ -0,0 +1,82 @@
/**
* @author Dominik Kressler
* @package rofi-archer
* @version 1.0.0
**/
* {
background: #1e1e2e;
background-alt: #ffffff80;
foreground: #ffffff;
selected: #4c566a;
border: #ffffff;
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: #ffffff;
subtext1: #ffffff80;
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: #ffffff;
theme-text-color: #ffffff;
theme-bg-color: #1e1e2e;
theme-base-color: #1e1e2e;
theme-bg-color-shade-1: #1e1e2eEF;
theme-bg-color-shade-2: #1e1e2eD8;
theme-bg-color-shade-3: #1e1e2eC9;
theme-selected-bg-color: #b4befe;
theme-selected-fg-color: #000000;
theme-unfocused-fg-color: #ffffff;
theme-unfocused-text-color: #ffffff;
theme-unfocused-bg-color: #1e1e2e;
theme-unfocused-base-color: #1e1e2e;
theme-unfocused-selected-bg-color: #b4befe;
theme-unfocused-selected-fg-color: #000000;
unfocused-insensitive-color: #ffffff;
borders: #b4befe30;
unfocused-borders: #ffffff;
warning-color: #fbc02d;
error-color: #f44336;
success-color: #66bb6a;
}
+301
View File
@@ -0,0 +1,301 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Rofi Theme File
* Rofi Version: 1.7.3
**/
/*****----- Configuration -----*****/
configuration {
modi: "drun,run,filebrowser,window";
show-icons: true;
display-drun: "";
display-run: "";
display-filebrowser: "";
display-window: "";
display-combi: "練";
drun-display-format: "{name}";
window-format: "{w} · {c} · {t}";
matching: "fuzzy";
sidebar-mode: true;
threads: 0;
scroll-method: 0;
}
/*****----- Global Properties -----*****/
@import "colors.rasi"
* {
border-colour: var(borders);
handle-colour: var(selected);
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);
font: "Hack Nerd Font 10";
border-radius: 10px;
frame-border: 2px solid;
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 600px;
x-offset: 0px;
y-offset: 60px;
/* properties for all widgets */
enabled: true;
margin: 0px;
padding: 0px;
border-radius: var(border-radius);
border: var(frame-border);
border-color: var(borders);
cursor: "default";
background-color: @theme-bg-color;
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 30px;
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: @borders;
background-color: transparent;
text-color: var(theme-text-color);
children: [ "textbox-prompt-colon", "entry", "mode-switcher" ];
}
prompt {
enabled: true;
background-color: inherit;
text-color: inherit;
}
textbox-prompt-colon {
enabled: true;
padding: 5px 3px 0px 0;
expand: false;
//font: "MonarchOS 14";
//str: "";
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: 1;
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: @borders;
background-color: transparent;
text-color: var(theme-text-color);
cursor: "default";
}
scrollbar {
handle-width: 5px;
handle-color: @handle-colour;
border-radius: 10px;
background-color: transparent;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 5px 10px;
border: 0px solid;
border-radius: 10px;
border-color: @borders;
background-color: transparent;
text-color: var(theme-text-color);
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(theme-selected-bg-color);
text-color: var(theme-selected-fg-color);
}
element selected.urgent {
background-color: var(theme-selected-bg-color);
text-color: var(normal-background);
}
element selected.active {
background-color: var(error-color);
text-color: var(normal-background);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
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: @borders;
background-color: transparent;
text-color: var(theme-text-color);
}
button {
padding: 7px 15px 7px 10px;
border: 0px solid;
border-radius: 100%;
border-color: @borders;
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: @borders;
background-color: transparent;
text-color: var(theme-text-color);
}
textbox {
padding: 8px 10px;
border: 0px solid;
border-radius: 10px;
border-color: @borders;
background-color: @alternate-background;
text-color: var(theme-text-color);
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
placeholder-color: var(theme-text-color);
blink: true;
markup: true;
}
error-message {
padding: 10px;
border: 2px solid;
border-radius: 10px;
border-color: @borders;
background-color: @background;
text-color: var(theme-text-color);
}
+290
View File
@@ -0,0 +1,290 @@
/**
*
* 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"
* {
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: "MonarchOS 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: 1;
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;
}
+81
View File
@@ -0,0 +1,81 @@
#!/usr/bin/env bash
# author: unknown
# sentby: MoreChannelNoise (https://www.youtube.com/user/MoreChannelNoise)
# editby: gotbletu (https://www.youtube.com/user/gotbletu)
# demo: https://www.youtube.com/watch?v=kxJClZIXSnM
# info: this is a script to launch other rofi scripts,
# saves us the trouble of binding multiple hotkeys for each script,
# when we can just use one hotkey for everything.
declare -A LABELS
declare -A COMMANDS
###
# List of defined 'bangs'
COMMANDS["󰓅"]="pkexec auto-cpufreq --force=performance"
LABELS["󰓅"]="Performance"
COMMANDS["󰌪"]='pkexec auto-cpufreq --force=powersave'
LABELS["󰌪"]="Powersave"
COMMANDS[""]='pkexec auto-cpufreq --force=reset'
LABELS[""]="Reset"
################################################################################
# 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 -theme ~/.config/rofi/cpugov/rofi-cpugov.rasi -show "CPU Mode" -dmenu -mesg " CPU Mode" -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
#eval echo "Executing: ${COMMANDS[$choice]}"
eval ${COMMANDS[$choice]}
dunstify --replace 553 -i "/usr/share/icons/zafiro-dark/devices/48/cpu.svg" "CPU Mode" "Set to $choice ${LABELS[$choice]}"
else
eval $choice | rofi
# prefer my above so I can use this same script to also launch apps like geany or leafpad etc (DK)
# echo "Unknown command: ${choice}" | rofi -dmenu -p "error"
fi
+280
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: "MonarchOS 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;
}
+12
View File
@@ -0,0 +1,12 @@
#!/bin/sh
FILE="$HOME/.config/rofi/emojis/emojis.txt"
if [ "$@" ]
then
smiley=$(echo $@ | cut -d' ' -f1)
echo -n "$smiley" | xsel -bi
exit 0
fi
cat $FILE
File diff suppressed because it is too large Load Diff
+61
View File
@@ -0,0 +1,61 @@
#! /usr/bin/env python3
# https://github.com/Git-Fal7/gtk-rofi/
# Taken from MATE-HUD github.com/ubuntu-mate/mate-hud
# Used for rofi css
# Usage
# ./file_gtk_style.py [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)
+1
View File
@@ -0,0 +1 @@
GTK_THEME=Catppuccin-Mocha-Standard-Lavender-Dark
+291
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: "MonarchOS 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;
}
+151
View File
@@ -0,0 +1,151 @@
#!/usr/bin/env bash
# author: unknown
# sentby: MoreChannelNoise (https://www.youtube.com/user/MoreChannelNoise)
# editby: gotbletu (https://www.youtube.com/user/gotbletu)
# demo: https://www.youtube.com/watch?v=kxJClZIXSnM
# info: this is a script to launch other rofi scripts,
# saves us the trouble of binding multiple hotkeys for each script,
# when we can just use one hotkey for everything.
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[""]="~/.config/rofi/locate/rofi-locate.sh"
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["󰖂"]='~/.config/rofi/nm-vpn/nm-vpn.sh'
LABELS["󰖂"]='VPN Connection Manager'
COMMANDS["󰗅"]='~/.config/rofi/volume/volume.sh'
LABELS["󰗅"]='Sound Manager'
COMMANDS[""]='~/.config/rofi/shortcuts/shortcuts.sh'
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/dom/.local/share/headset-charge-indicator/headset-charge-indicator.py &'
LABELS["󰋋"]='Headset Control'
COMMANDS[""]='~/.config/rofi/bluetooth/bluetooth.sh'
LABELS[""]='Bluetooth Control'
COMMANDS["󰛳"]='nm-applet --indicator &'
LABELS["󰛳"]='Networker Manager'
COMMANDS["󰴱"]='hyprpicker -f hex -a'
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
eval echo "Executing: ${COMMANDS[$choice]}"
eval ${COMMANDS[$choice]}
else
eval $choice | rofi
# prefer my above so I can use this same script to also launch apps like geany or leafpad etc (DK)
# echo "Unknown command: ${choice}" | rofi -dmenu -p "error"
fi
+50
View File
@@ -0,0 +1,50 @@
#!/bin/bash
#https://github.com/luiscrjunior/rofi-json
user_file="$(eval echo ${1})"
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
+6
View File
@@ -0,0 +1,6 @@
@import "../config.rasi"
@import "../colors.rasi"
window {
width: 400px;
}
+40
View File
@@ -0,0 +1,40 @@
#!/usr/bin/env bash
SETTINGS=$HOME/.config/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 $HOME/.config/rofi/file_gtk_style.py "${HOME}"/.config/rofi/_template/colors.rasi > "${HOME}"/.config/rofi/colors.rasi
fi
case $1 in
window)
showmode="window"
;;
files)
showmode="filebrowser"
;;
run)
showmode="run"
;;
*)
showmode="drun"
;;
esac
## Run
rofi \
-show $showmode \
-theme ~/.config/rofi/launcher/launcher.rasi
-normal-window
-matching fuzzy
+19
View File
@@ -0,0 +1,19 @@
#!/bin/bash
# _ _ _ _
# __ _ ___ | |_| |__ | | ___| |_ _ _
# / _` |/ _ \| __| '_ \| |/ _ \ __| | | |
#| (_| | (_) | |_| |_) | | __/ |_| |_| |
# \__, |\___/ \__|_.__/|_|\___|\__|\__,_|
# |___/
# https://www.youtube.com/user/gotbletu
# https://twitter.com/gotbletu
# https://plus.google.com/+gotbletu
# https://github.com/gotbletu
# gotbletu@gmail.com
# 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:")"
+224
View File
@@ -0,0 +1,224 @@
@import "../config.rasi"
configuration {
modi: "";
show-icons: false;
drun-display-format: "{name}";
window-format: "{w} · {c} · {t}";
}
mainbox {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 30px;
border: 0px solid;
border-radius: 0px 0px 0px 0px;
border-color: @border;
background-color: transparent;
children: [ "message", "listview", "inputbar" ];
}
inputbar {
enabled: true;
spacing: 10px;
margin: 0;
padding: 20px 0px 0;
border: 0px solid;
border-radius: 0px;
border-color: @border;
background-color: transparent;
text-color: @foreground;
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: "MonarchOS 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: 1;
lines: 2;
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;
background-color: transparent;
text-color: @foreground;
cursor: "default";
}
scrollbar {
handle-width: 5px;
handle-color: @handle-colour;
border-radius: 10px;
background-color: transparent;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 10px;
margin: 0px;
padding: 5px 10px;
border: 0px solid;
border-radius: 10px;
border-color: @border;
background-color: transparent;
text-color: @foreground;
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: 24px;
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;
background-color: transparent;
text-color: @foreground;
}
button {
padding: 7px 15px 7px 10px;
border: 0px solid;
border-radius: 100%;
border-color: @border;
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;
background-color: transparent;
text-color: @foreground;
}
textbox {
padding: 8px 10px;
border: 0px solid;
border-radius: 10px;
border-color: @border;
background-color: @alternate-background;
text-color: @foreground;
vertical-align: 0.5;
horizontal-align: 0.0;
highlight: none;
placeholder-color: @foreground;
blink: true;
markup: true;
}
error-message {
padding: 10px;
border: 2px solid;
border-radius: 10px;
border-color: @border;
background-color: @background;
text-color: @foreground;
}
+99
View File
@@ -0,0 +1,99 @@
#!/usr/bin/env bash
# Copyright (C) 2021 Damien Cassou
# Author: Damien Cassou <damien@cassou.me>
# Url: https://gitlab.com/DamienCassou/rofi-vpn
# Version: 0.2.0
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <https://www.gnu.org/licenses/>.
# Commentary:
# This program uses rofi and nmcli to let the user enable/disable VPN
# connections.
# Code:
# What to show in front of an active VPN connection:
ACTIVE_PREFIX="󰌘 "
# What to show in front of an inactive VPN connection:
INACTIVE_PREFIX="󰌙 "
# Display on standard output all VPN connections, one per line. An
# active VPN connection is prefixed with `ACTIVE_PREFIX` and an inactive
# one is prefixed with `INACTIVE_PREFIX`.
function list_vpn_connections() {
nmcli --get-values ACTIVE,NAME,TYPE connection show \
| grep ':vpn$' \
| sed \
-e "s/^no:/${INACTIVE_PREFIX}/" \
-e "s/^yes:/${ACTIVE_PREFIX}/" \
-e 's/:vpn$//'
}
# Take a line as displayed by `list_vpn_connections()` as argument and
# use nmcli to toggle the corresponding connection.
function toggle_vpn_connection() {
local result="$1"
local connection
connection=$(extract_connection_name_from_result "${result}")
if [[ $result = ${ACTIVE_PREFIX}* ]]; then
feedback=$(nmcli connection down "$connection")
dunstify "VPN Status '$connection'" "$feedback" --replace=553
else
kitty --class "kitty-vpn" --title "VPN Connection" nmcli connection --ask up "$connection"
#feedback=$(nmcli connection up "$connection")
dunstify "VPN Status '$connection'" "" --replace=553
fi
}
# Take a line as displayed by `list_vpn_connections()` as argument and
# remove `ACTIVE_PREFIX` or `INACTIVE_PREFIX` to only display the
# connection name.
function extract_connection_name_from_result() {
local result="$1"
# I don't know how to use plain bash to remove the prefix so I'm
# using sed:
# shellcheck disable=SC2001
sed -e 's/^.* \([^ ]\+\)$/\1/' <<< "$result"
}
# Execute the `rofi` command. The first argument of the function is
# used as lines to select from.
function start_rofi() {
local content="$1"
echo -e "$content" | rofi -dmenu -theme $HOME/.config/rofi/nm-vpn/nm-vpn.rasi -mesg "󰖂 VPN Connection Manager" -icon "󰖂"
}
# List the VPN connections and let the user toggle one using rofi.
function main() {
local connections
local result
connections=$(list_vpn_connections)
result=$(start_rofi "$connections")
if [ -n "$result" ]; then
toggle_vpn_connection "$result"
else
exit 1
fi
}
main
+42
View File
@@ -0,0 +1,42 @@
#!/usr/bin/env bash
####
## https://github.com/ericmurphyxyz/rofi-wifi-menu
####
notify-send "Getting list of available Wi-Fi networks..."
# Get a list of available wifi connections and morph it into a nice-looking list
wifi_list=$(nmcli --fields "SECURITY,SSID" device wifi list | sed 1d | sed 's/ */ /g' | sed -E "s/WPA*.?\S/ /g" | sed "s/^--/ /g" | sed "s/ //g" | sed "/--/d")
connected=$(nmcli -fields WIFI g)
if [[ "$connected" =~ "enabled" ]]; then
toggle="睊 Disable Wi-Fi"
elif [[ "$connected" =~ "disabled" ]]; then
toggle="直 Enable Wi-Fi"
fi
# Use rofi to select wifi network
chosen_network=$(echo -e "$toggle\n$wifi_list" | uniq -u | rofi -drun -i -selected-row 1 -p "Wi-Fi SSID: " )
# Get name of connection
chosen_id=$(echo "${chosen_network:3}" | xargs)
if [ "$chosen_network" = "" ]; then
exit
elif [ "$chosen_network" = "直 Enable Wi-Fi" ]; then
nmcli radio wifi on
elif [ "$chosen_network" = "睊 Disable Wi-Fi" ]; then
nmcli radio wifi off
else
# Message to show when connection is activated successfully
success_message="You are now connected to the Wi-Fi network \"$chosen_id\"."
# Get saved connections
saved_connections=$(nmcli -g NAME connection)
if [[ $(echo "$saved_connections" | grep -w "$chosen_id") = "$chosen_id" ]]; then
nmcli connection up id "$chosen_id" | grep "successfully" && notify-send "Connection Established" "$success_message"
else
if [[ "$chosen_network" =~ "" ]]; then
wifi_password=$(rofi -dmenu -p "Password: " )
fi
nmcli device wifi connect "$chosen_id" password "$wifi_password" | grep "successfully" && notify-send "Connection Established" "$success_message"
fi
fi
+76
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: "Hack 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: "Hack 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);
}
+119
View File
@@ -0,0 +1,119 @@
configuration {
show-icons: false;
}
@import "../colors.rasi"
window {
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
x-offset: 0px;
y-offset: 60px;
width: 635px;
border: 2px solid;
border-radius: 10px;
border-color: var(borders);
cursor: "default";
background-color: var(theme-bg-color);
}
mainbox {
enabled: true;
spacing: 15px;
margin: 0px;
padding: 30px;
border: 0px solid;
border-radius: 0px;
border-color: var(borders);
background-color: transparent;
children: ["inputbar", "listview" ];
}
inputbar {
enabled: true;
spacing: 15px;
margin: 0px;
padding: 0px;
background-color: transparent;
text-color: var(theme-text-color);
children: ["textbox-prompt-colon", "prompt"];
}
textbox-prompt-colon {
enabled: true;
expand: false;
font: "MonarchOS 10";
str: "";
padding: 12px 16px;
border-radius: 100%;
background-color: var(theme-selected-bg-color);
text-color: @theme-selected-fg-color;
}
prompt {
enabled: true;
padding: 12px;
border-radius: 100%;
background-color: var(theme-text-color);
text-color: var(theme-bg-color);
}
dummy {
background-color: inherit;
}
listview {
enabled: true;
columns: 2;
lines: 5;
cycle: true;
dynamic: false;
scrollbar: false;
layout: horizontal;
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";
}
element {
enabled: true;
spacing: 0px;
margin: 0px;
border: 0px solid;
border-radius: 100%;
background-color: transparent;
cursor: "pointer";
}
element-text {
font: "Hack Nerd Font 28";
background-color: transparent;
text-color: var(text);
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.5;
padding: 10px 40px;
horizontal-align: 0;
}
element selected.normal {
background-color: var(theme-selected-bg-color);
}
element-text selected.normal {
text-color: var(theme-bg-color);
}
+101
View File
@@ -0,0 +1,101 @@
#!/usr/bin/env bash
## Author : Aditya Shakya (adi1090x)
## Github : @adi1090x
#
## Rofi : Power Menu
#
# CMDs
uptime="`uptime -p | sed -e 's/up //g'`"
host=`hostname`
# Options
shutdown='󰤆'
reboot=''
lock=''
suspend=''
logout='󰗽'
yes=''
no='󰆢'
# Rofi CMD
rofi_cmd() {
rofi -dmenu \
-p "$host uptime: $uptime" \
-mesg "$host uptime: $uptime" \
-theme ~/.config/rofi/powermenu/powermenu.rasi
}
# Confirmation CMD
confirm_cmd() {
rofi -dmenu \
-p 'Confirmation' \
-mesg 'Confirm '${chosen} \
-theme ~/.config/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
if [[ "$DESKTOP_SESSION" == 'openbox' ]]; then
openbox --exit
elif [[ "$DESKTOP_SESSION" == 'bspwm' ]]; then
bspc quit
elif [[ "$DESKTOP_SESSION" == 'i3' ]]; then
i3-msg exit
elif [[ "$DESKTOP_SESSION" == 'plasma' ]]; then
qdbus org.kde.ksmserver /KSMServer logout 0 0 0
elif [[ "$DESKTOP_SESSION" == 'hyprland' ]]; then
hyprctl dispatch exit
fi
fi
else
exit 0
fi
}
# Actions
chosen="$(run_rofi)"
case ${chosen} in
$shutdown)
run_cmd --shutdown
;;
$reboot)
run_cmd --reboot
;;
$lock)
if [[ "$DESKTOP_SESSION" == 'bspwm' ]]; then
betterlockscreen -l
elif [[ "$DESKTOP_SESSION" == 'hyprland' ]]; then
killall rofi
swaylock
fi
;;
$suspend)
run_cmd --suspend
;;
$logout)
run_cmd --logout
;;
esac
+307
View File
@@ -0,0 +1,307 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""Rofi clipboard manager
Usage:
roficlip.py --daemon [-q | --quiet]
roficlip.py --show [--persistent | --actions] [-q | --quiet] [<item>]
roficlip.py --add [-q | --quiet ]
roficlip.py --remove [-q | --quiet]
roficlip.py --edit
roficlip.py (-h | --help)
roficlip.py (-v | --version)
Arguments:
<item> Selected item to be used with rofi
Commands:
--daemon Run clipboard manager daemon.
--show Show clipboard history.
--persistent Select to show persistent history.
--actions Select to show actions defined in config.
--add Add current clipboard to persistent storage.
--remove Remove current clipboard from persistent storage.
--edit Edit persistent storage with text editor.
-q, --quiet Do not notify, even if notification enabled in config.
-h, --help Show this screen.
-v, --version Show version.
"""
import errno
import os
import sys
import stat
import struct
from subprocess import Popen, DEVNULL
from tempfile import NamedTemporaryFile
try:
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk, Gdk, GLib
except ImportError:
raise
import yaml
from docopt import docopt
from xdg import BaseDirectory
try:
import notify2
except ImportError:
pass
class ClipboardManager():
def __init__(self):
# Init databases and fifo
name = 'roficlip'
self.ring_db = '{0}/{1}'.format(BaseDirectory.save_data_path(name), 'ring.db')
self.persist_db = '{0}/{1}'.format(BaseDirectory.save_data_path(name), 'persistent.db')
self.fifo_path = '{0}/{1}.fifo'.format(BaseDirectory.get_runtime_dir(strict=False), name)
self.config_path = '{0}/settings'.format(BaseDirectory.save_config_path(name))
if not os.path.isfile(self.ring_db):
open(self.ring_db, "a+").close()
if not os.path.isfile(self.persist_db):
open(self.persist_db, "a+").close()
if (
not os.path.exists(self.fifo_path) or
not stat.S_ISFIFO(os.stat(self.fifo_path).st_mode)
):
os.mkfifo(self.fifo_path)
self.fifo = os.open(self.fifo_path, os.O_RDONLY | os.O_NONBLOCK)
# Init clipboard and read databases
self.cb = Gtk.Clipboard.get(Gdk.SELECTION_CLIPBOARD)
self.ring = self.read(self.ring_db)
self.persist = self.read(self.persist_db)
# Load settings
self.load_config()
# Init notifications
if self.cfg['notify'] and 'notify2' in sys.modules:
self.notify = notify2
self.notify.init(name)
else:
self.cfg['notify'] = False
def daemon(self):
"""
Clipboard Manager daemon.
"""
GLib.timeout_add(300, self.cb_watcher)
GLib.timeout_add(300, self.fifo_watcher)
Gtk.main()
def cb_watcher(self):
"""
Callback function.
Watch clipboard and write changes to ring database.
Must return "True" for continuous operation.
"""
clip = self.cb.wait_for_text()
if self.sync_items(clip, self.ring):
self.ring = self.ring[0:self.cfg['ring_size']]
self.write(self.ring_db, self.ring)
return True
def fifo_watcher(self):
"""
Callback function.
Copy contents from fifo to clipboard.
Must return "True" for continuous operation.
"""
try:
fifo_in = os.read(self.fifo, 65536)
except OSError as err:
if err.errno == errno.EAGAIN or err.errno == errno.EWOULDBLOCK:
fifo_in = None
else:
raise
if fifo_in:
self.cb.set_text(fifo_in.decode('utf-8'), -1)
self.notify_send('Copied to the clipboard.')
return True
def sync_items(self, clip, items):
"""
Sync clipboard contents with specified items dict when needed.
Return "True" if dict modified, otherwise "False".
"""
if clip and (not items or clip != items[0]):
if clip in items:
items.remove(clip)
items.insert(0, clip)
return True
return False
def copy_item(self, clip):
"""
Writes to fifo item that should be copied to clipboard.
"""
if clip:
with open(self.fifo_path, "w") as file:
file.write(clip)
file.close()
def show_items(self, items):
"""
Format and show contents of specified items dict (for rofi).
"""
for clip in items:
clip = clip.replace('\n', self.cfg['newline_char'])
# Move text after last \# to beginning of string
if args['--persistent'] and self.cfg['show_comments_first'] and '#' in clip:
# Save index of last \#
idx = clip.rfind('#')
# Format string
clip = '{}{}'.format(clip[idx+1:], clip[:idx])
preview = clip[0:self.cfg['preview_width']]
print(preview)
def persistent_add(self):
"""
Add current clipboard to persistent storage.
"""
clip = self.cb.wait_for_text()
if self.sync_items(clip, self.persist):
self.write(self.persist_db, self.persist)
self.notify_send('Added to persistent.')
def persistent_remove(self):
"""
Remove current clipboard from persistent storage.
"""
clip = self.cb.wait_for_text()
if clip and clip in self.persist:
self.persist.remove(clip)
self.write(self.persist_db, self.persist)
self.notify_send('Removed from persistent.')
def persistent_edit(self):
"""
Edit persistent storage with text editor.
New line char will be used as separator.
"""
editor = os.getenv('EDITOR')
if self.persist and editor:
try:
tmp = NamedTemporaryFile(mode='w+')
for clip in self.persist:
clip = '{}\n'.format(clip.replace('\n', self.cfg['newline_char']))
tmp.write(clip)
tmp.flush()
except IOError as e:
print("I/O error({0}): {1}".format(e.errno, e.strerror))
else:
proc = Popen([editor, tmp.name], stdout=DEVNULL, stderr=DEVNULL)
ret = proc.wait()
if ret == 0:
tmp.seek(0, 0)
clips = tmp.read().splitlines()
if clips:
self.persist = []
for clip in clips:
clip = clip.replace('\n', '')
clip = clip.replace(self.cfg['newline_char'], '\n')
self.persist.append(clip)
self.write(self.persist_db, self.persist)
finally:
tmp.close()
def do_action(self, action):
"""
Run selected action on clipboard contents.
"""
if action:
clip = self.cb.wait_for_text()
params = self.actions[action].split(' ')
while '%s' in params:
params[params.index('%s')] = clip
Popen(params, stdout=DEVNULL, stderr=DEVNULL)
self.notify_send("Action: {}".format(action))
def notify_send(self, text):
"""
Show desktop notification.
"""
if self.cfg['notify']:
n = self.notify.Notification("Roficlip", text)
n.timeout = self.cfg['notify_timeout'] * 1000
n.show()
def read(self, fd):
"""
Helper function. Binary reader.
"""
result = []
with open(fd, "rb") as file:
bytes_read = file.read(4)
while bytes_read:
chunksize = struct.unpack('>i', bytes_read)[0]
bytes_read = file.read(chunksize)
result.append(bytes_read.decode('utf-8'))
bytes_read = file.read(4)
return result
def write(self, fd, items):
"""
Helper function. Binary writer.
"""
with open(fd, 'wb') as file:
for item in items:
item = item.encode('utf-8')
file.write(struct.pack('>i', len(item)))
file.write(item)
def load_config(self):
"""
Read config if exists, and/or provide defaults.
"""
# default settings
settings = {
'settings': {
'ring_size': 20,
'preview_width': 100,
'newline_char': '¬',
'notify': True,
'notify_timeout': 1,
'show_comments_first': False,
},
'actions': {}
}
if os.path.isfile(self.config_path):
with open(self.config_path, "r") as file:
config = yaml.safe_load(file)
for key in {'settings', 'actions'}:
if key in config:
settings[key].update(config[key])
self.cfg = settings['settings']
self.actions = settings['actions']
if __name__ == "__main__":
cm = ClipboardManager()
args = docopt(__doc__, version='0.4')
if args['--quiet']:
cm.cfg['notify'] = False
if args['--daemon']:
cm.daemon()
elif (args['--show'] and not args['--actions']):
if args['<item>']:
cm.copy_item(args['<item>'])
else:
cm.show_items(cm.persist if args['--persistent'] else cm.ring)
elif (args['--show'] and args['--actions']):
if args['<item>']:
cm.do_action(args['<item>'])
else:
cm.show_items(cm.actions)
elif args['--add']:
cm.persistent_add()
elif args['--remove']:
cm.persistent_remove()
elif args['--edit']:
cm.persistent_edit()
exit(0)
@@ -0,0 +1,9 @@
@import "../config.rasi"
@import "../colors.rasi"
configuration {
show-icons: false;
modi: "drun";
window-format: "{w} · {c} · {t}";
}
+77
View File
@@ -0,0 +1,77 @@
#!/bin/bash
# https://github.com/Gustash/hyprland-interactive-screenshot
# `list_geometry` returns the geometry of the focused of visible windows. You can also get they title
# by setting a second argument to `with_description`. The geometry and the title are seperated by `\t`.
#
# Arguments:
# $1: `focused` or `visible`
# $2: `with_description` or nothing
#
# Output examples:
# - with the `with_description` option:
# 12,43 100x200\tTermite
# - without the `with_description` option:
# 12,43 100x200
function list_geometry () {
[ "$2" = with_description ] && local append="\(.title)\t" || local append=
if [ "$1" = focused ]; then
hyprctl -j activewindow | jq -r '"'$append'\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"'
else
hyprctl -j clients | jq -r '.[] | select(.workspace.id | contains('$(hyprctl -j monitors | jq -r 'map(.activeWorkspace.id) | join(",")')')) | "'$append'\(.at[0]),\(.at[1]) \(.size[0])x\(.size[1])"'
fi
}
WINDOWS=`list_geometry visible with_description`
FOCUSED=`list_geometry focused`
CHOICE=`rofi -dmenu -theme ~/.config/rofi/screenshot/screenshot.rasi -p 'Screenshot' << EOF
fullscreen
region
focused
$WINDOWS
EOF`
SAVEDIR=${HYPRLAND_INTERACTIVE_SCREENSHOT_SAVEDIR}
[ -z "$SAVEDIR" ] && SAVEDIR=${SWAY_INTERACTIVE_SCREENSHOT_SAVEDIR:=~}
mkdir -p -- "$SAVEDIR"
FILENAME="$SAVEDIR/$(date +'%Y-%m-%d-%H%M%S_screenshot.png')"
EXPENDED_FILENAME="${FILENAME/#\~/$HOME}"
case $CHOICE in
fullscreen)
grim "$EXPENDED_FILENAME"
;;
region)
grim -g "$(slurp)" "$EXPENDED_FILENAME"
;;
focused)
grim -g "$FOCUSED" "$EXPENDED_FILENAME"
;;
'')
notify-send "Screenshot" "Cancelled"
exit 0
;;
*)
GEOMETRY="`echo \"$CHOICE\" | cut -d$'\t' -f1`"
grim -g "$GEOMETRY" "$EXPENDED_FILENAME"
esac
# If swappy is installed, prompt the user to edit the captured screenshot
if command -v swappy $>/dev/null
then
EDIT_CHOICE=`echo -e "\n󰆢" | rofi -dmenu -theme ~/.config/rofi/powermenu/confirm.rasi -p 'Edit' -mesg 'Edit?'`
case $EDIT_CHOICE in
)
swappy -f "$EXPENDED_FILENAME" -o "$EXPENDED_FILENAME"
;;
󰆢)
;;
'')
;;
esac
fi
wl-copy < "$EXPENDED_FILENAME"
notify-send "Screenshot" "File saved as <i>'$FILENAME'</i> and copied to the clipboard." -i "$EXPENDED_FILENAME"
@@ -0,0 +1,49 @@
configuration {
modi: "drun";
show-icons: false;
drun-display-format: "{name}";
}
@import "../config.rasi"
@import "../colors.rasi"
window {
enabled: true;
cursor: "default";
}
mainbox {
children: [ "message", "listview", "inputbar" ];
}
inputbar {
enabled: true;
children: [ "textbox-prompt-colon", "entry", "mode-switcher" ];
}
listview {
enabled: true;
columns: 2;
lines: 8;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
}
element-icon {
size: 0px;
}
+151
View File
@@ -0,0 +1,151 @@
#!/usr/bin/env bash
# author: unknown
# sentby: MoreChannelNoise (https://www.youtube.com/user/MoreChannelNoise)
# editby: gotbletu (https://www.youtube.com/user/gotbletu)
# demo: https://www.youtube.com/watch?v=kxJClZIXSnM
# info: this is a script to launch other rofi scripts,
# saves us the trouble of binding multiple hotkeys for each script,
# when we can just use one hotkey for everything.
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[""]="~/.config/rofi/locate/rofi-locate.sh"
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[""]='cliphist list | rofi -dmenu | cliphist decode | wl-copy'
LABELS[""]="Clipboard"
COMMANDS["󰖂"]='~/.config/rofi/nm-vpn/nm-vpn.sh'
LABELS["󰖂"]='VPN Connection Manager'
COMMANDS["󰗅"]='~/.config/rofi/volume/volume.sh'
LABELS["󰗅"]='Sound Manager'
COMMANDS[""]='~/.config/rofi/shortcuts/shortcuts.sh'
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/dom/.local/share/headset-charge-indicator/headset-charge-indicator.py &'
LABELS["󰋋"]='Headset Control'
COMMANDS[""]='~/.config/rofi/bluetooth/bluetooth.sh'
LABELS[""]='Bluetooth Control'
COMMANDS["󰛳"]='nm-applet --indicator &'
LABELS["󰛳"]='Networker Manager'
COMMANDS["󰴱"]='hyprpicker -f hex -a'
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 -theme $HOME/.config/rofi/settings-menu/settings-menu.rasi -show "Settings x Tools" -dmenu -mesg " Settings x 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
eval echo "Executing: ${COMMANDS[$choice]}"
eval ${COMMANDS[$choice]}
else
eval $choice | rofi
# prefer my above so I can use this same script to also launch apps like geany or leafpad etc (DK)
# echo "Unknown command: ${choice}" | rofi -dmenu -p "error"
fi
+5
View File
@@ -0,0 +1,5 @@
#!/bin/bash
config_file=~/.config/hypr/hl-keybindings.conf
keybinds=$(grep -oP '(?<=bind = ).*' $config_file)
keybinds=$(echo "$keybinds" | sed 's/,\([^,]*\)$/ = \1/' | sed 's/, exec//g' | sed 's/^,//g')
rofi -dmenu -p "Keybinds" <<< "$keybinds"
+19
View File
@@ -0,0 +1,19 @@
#!/bin/bash
mapfile -t allLines < $HOME/.config/sxhkd/sxhkdrc
jsonstr="["
for ((i = 0; i < ${#allLines[@]}; ++i)); do
if [[ ${allLines[$i]} =~ ^#.* ]]; then
shortcut="${allLines[$i]:1}: ${allLines[$(( $i + 1 ))]}"
if (( $i > 0 )); then
jsonstr+=","
fi
jsonstr+="{"
jsonstr+=\""name"\"":"
jsonstr+=\""${shortcut}"\"
jsonstr+=","\""command"\"":""\""\"
jsonstr+="}"
fi
done
jsonstr+="]"
echo $jsonstr > /tmp/sxhkdrc.json
rofi -modi " Hotkeys":"~/.config/rofi/helper/rofi-json.sh /tmp/sxhkdrc.json" -show " Hotkeys" -theme $HOME/.config/rofi/config.rasi
+1
View File
@@ -0,0 +1 @@
[{"name":"Window Switcher: alt + Tab","command":""},{"name":"System Monitor: ctrl + alt + Delete","command":""},{"name":" File Explorer: super + e","command":""},{"name":"Screenshot Tool: Print","command":""},{"name":"Kill GUI: super + k","command":""},{"name":"Screen Brightness +: XF86MonBrightnessUp","command":""},{"name":"Screen Brightness -: XF86MonBrightnessDown","command":""},{"name":"Song Prev, Next : XF86Audio{Prev,Next}","command":""},{"name":"Sond Play / Pause: XF86AudioPlay","command":""},{"name":" terminal emulator: super + Return","command":""},{"name":" program launcher: super + space","command":""},{"name":" Show this Shortcut List: super + s","command":""},{"name":" make sxhkd reload its configuration files:: super + Escape","command":""},{"name":": # bspwm hotkeys","command":""},{"name":" bspwm hotkeys: #","command":""},{"name":": ","command":""},{"name":" quit/restart bspwm: super + alt + {q,r}","command":""},{"name":" close and kill: super + {_,shift + }q","command":""},{"name":" alternate between the tiled and monocle layout: super + m","command":""},{"name":" send the newest marked node to the newest preselected node: super + y","command":""},{"name":" swap the current node and the biggest window: super + g","command":""},{"name":": # preselect","command":""},{"name":" preselect: #","command":""},{"name":": ","command":""},{"name":" preselect the direction: super + ctrl + {h,j,k,l}","command":""},{"name":" preselect the ratio: super + ctrl + {1-9}","command":""},{"name":" cancel the preselection for the focused node: super + ctrl + space","command":""},{"name":" cancel the preselection for the focused desktop: #super + ctrl + shift + space","command":""},{"name":"super + ctrl + shift + space: # bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel","command":""},{"name":" bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel: ","command":""},{"name":": # state/flags","command":""},{"name":" state/flags: #","command":""},{"name":": ","command":""},{"name":" set the window state: super + {t,shift + t,s,f}","command":""},{"name":" set the node flags: super + ctrl + {m,x,y,z}","command":""},{"name":": # focus/swap","command":""},{"name":" focus/swap: #","command":""},{"name":": ","command":""},{"name":" focus the node in the given direction: super + {_,shift + }{h,j,k,l}","command":""},{"name":" focus the node for the given path jump: super + {p,b,comma,period}","command":""},{"name":" focus the next/previous window in the current desktop: super + {_,shift + }c","command":""},{"name":" focus the next/previous desktop in the current monitor: super + {8,9}","command":""},{"name":" focus the last node/desktop: super + {grave,Tab}","command":""},{"name":" focus the older or newer node in the focus history: super + {o,i}","command":""},{"name":" focus or send to the given desktop: super + {_,shift + }{1-9,0}","command":""},{"name":": # move/resize","command":""},{"name":" move/resize: #","command":""},{"name":": ","command":""},{"name":" expand a window by moving one of its side outward: super + alt + {h,j,k,l}","command":""},{"name":" contract a window by moving one of its side inward: super + alt + shift + {h,j,k,l}","command":""},{"name":" move a floating window: #super + {Left,Down,Up,Right}","command":""},{"name":"super + {Left,Down,Up,Right}: # bspc node -v {-20 0,0 20,0 -20,20 0}","command":""},{"name":" bspc node -v {-20 0,0 20,0 -20,20 0}: ","command":""},{"name":" Move window by direction in same workspace: super + {Left,Down,Up,Right}","command":""}]
+176
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: "JetBrainsMono 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;
}
+224
View File
@@ -0,0 +1,224 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Rofi Theme File
* Rofi Version: 1.7.3
**/
/*****----- Configuration -----*****/
configuration {
modi: "";
show-icons: false;
}
/*****----- Global Properties -----*****/
@import "../config.rasi"
@import "../colors.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;
border-radius: 10px;
/* properties for all widgets */
enabled: true;
cursor: "default";
background-color: @background-colour;
}
/*****----- 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: false;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 6;
lines: 8;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: false;
fixed-columns: false;
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";
align: center;
}
scrollbar {
handle-width: 5px;
handle-color: @handle-colour;
border-radius: 10px;
background-color: transparent;
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 10px;
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(normal-background);
text-color: var(normal-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-normal-background);
text-color: var(normal-background);
}
element selected.active {
background-color: var(selected-normal-background);
text-color: var(normal-foreground);
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 24px;
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;
}
+122
View File
@@ -0,0 +1,122 @@
#!/usr/bin/env bash
## Author : Aditya Shakya (adi1090x)
## Github : @adi1090x
#
## Applets : Volume
theme="~/.config/rofi/volume/volume.rasi"
# Volume Info
mixer="`amixer info Master | grep 'Mixer name' | cut -d':' -f2 | tr -d \',' '`"
speaker="`amixer get Master | tail -n1 | awk -F ' ' '{print $5}' | tr -d '[]'`"
mic="`amixer get Capture | tail -n1 | awk -F ' ' '{print $5}' | tr -d '[]'`"
active=""
urgent=""
# Speaker Info
amixer get Master | grep '\[on\]' &>/dev/null
if [[ "$?" == 0 ]]; then
active="-a 1"
stext='Mute Speaker'
sicon='󰓃'
else
urgent="-u 1"
stext='Unmute Speaker'
sicon='󰓄'
fi
# Microphone Info
amixer get Capture | grep '\[on\]' &>/dev/null
if [[ "$?" == 0 ]]; then
[ -n "$active" ] && active+=",3" || active="-a 3"
mtext='Mute Mic'
micon=''
else
[ -n "$urgent" ] && urgent+=",3" || urgent="-u 3"
mtext='Unmute Mic'
micon=''
fi
currentsink=$(ponymix defaults|awk '/^sink/ {s=$1" "$2;getline;gsub(/^ +/,"",$0);print s" "$0}' | cut -d':' -f2)
currentsource=$(ponymix defaults|awk '/^source/ {s=$1" "$2;getline;gsub(/^ +/,"",$0);print s" "$0}' | cut -d':' -f2)
# Theme Elements
prompt="Speaker: $sicon Mic: $micon "
mesg="$mixer Speaker: $speaker Mic: $mic"
list_col='6'
list_row='3'
win_width='670px'
# Options
option_1="$micon $mtext $currentsource"
option_2="$sicon $stext $currentsink"
option_3="󱡫 Sink Switcher"
option_4=""
option_5=" Mixer"
option_6="󰍯 Noise Torch"
# Rofi CMD
#-theme-str "listview {columns: $list_col; lines: $list_row;}" \
rofi_cmd() {
rofi -theme-str "window {width: $win_width;}" \
-theme-str 'textbox-prompt-colon {str: "";}' \
-dmenu \
-p "$prompt" \
-mesg "$mesg" \
${active} ${urgent} \
-markup-rows \
-theme ${theme}
}
# Pass variables to rofi dmenu
run_rofi() {
echo -e "$option_1\n$option_2\n$option_3\n$option_4\n$option_5\n$option_6" | rofi_cmd
}
# Execute Command
run_cmd() {
if [[ "$1" == '--opt3' ]]; then
#amixer -Mq set Master,0 5%+ unmute
$HOME/.config/rofi/audio/rofi-sink-switcher.sh
elif [[ "$1" == '--opt2' ]]; then
amixer set Master toggle
elif [[ "$1" == '--opt4' ]]; then
amixer -Mq set Master,0 5%- unmute
elif [[ "$1" == '--opt1' ]]; then
amixer set Capture toggle
elif [[ "$1" == '--opt5' ]]; then
pavucontrol
elif [[ "$1" == '--opt6' ]]; then
noisetorch
fi
}
# Actions
chosen="$(run_rofi)"
case ${chosen} in
$option_1)
run_cmd --opt1
;;
$option_2)
run_cmd --opt2
;;
$option_3)
run_cmd --opt3
;;
$option_4)
run_cmd --opt4
;;
$option_5)
run_cmd --opt5
;;
$option_6)
run_cmd --opt6
;;
esac
+23
View File
@@ -0,0 +1,23 @@
screenshots
clock
indicator
submit-on-touch
effect-greyscale
indicator-caps-lock
line-uses-ring
indicator-radius=100
indicator-thickness=5
effect-blur=7x5
effect-vignette=0.5:0.5
grace=5
fade-in=0.2
ring-color=7f849c
key-hl-color=f38ba8
line-color=00000000
line-ver-color=00000000
line-wrong-color=00000000
inside-color=11111b88
separator-color=00000000
inside-ver-color=cba6f7
ring-ver-color=a6e3a1
layout-text-color=cdd6f4
+199
View File
@@ -0,0 +1,199 @@
{
"$schema": "/etc/xdg/swaync/configSchema.json",
"positionX": "right",
"positionY": "top",
"control-center-margin-top": 20,
"control-center-margin-bottom": 20,
"control-center-margin-right": 20,
"control-center-margin-left": 0,
"notification-icon-size": 48,
"notification-body-image-height": 160,
"notification-body-image-width": 90,
"timeout": 6,
"timeout-low": 4,
"timeout-critical": 0,
"fit-to-screen": true,
"control-center-width": 380,
"notification-window-width": 366,
"keyboard-shortcuts": true,
"image-visibility": "when-available",
"transition-time": 100,
"hide-on-clear": false,
"hide-on-action": true,
"script-fail-notify": true,
"scripts": {
"example-script": {
"exec": "echo 'Do something...'",
"urgency": "Normal"
}
},
"notification-visibility": {
"example-name": {
"state": "muted",
"urgency": "Low",
"app-name": "Spotify"
}
},
"widgets": [
"menubar",
"buttons-grid",
"volume",
"mpris",
"title",
"dnd",
"notifications"
],
"widget-config": {
"title": {
"text": "Notifications",
"clear-all-button": true,
"button-text": "Clear All"
},
"dnd": {
"text": "Do Not Disturb"
},
"label": {
"max-lines": 1,
"text": "Control Center"
},
"mpris": {
"image-size": 96,
"image-radius": 10
},
"backlight": {
"label": "",
"device": "intel_backlight",
"min": 10
},
"backlight#KB": {
"label": " ",
"device": "asus::kbd_backlight",
"subsystem": "leds"
},
"volume": {
"label": ""
},
"menubar": {
"menu#power-buttons": {
"label": "",
"position": "right",
"actions": [
{
"label": " Reboot",
"command": "systemctl reboot"
},
{
"label": " Lock",
"command": "swaylock.sh"
},
{
"label": " Logout",
"command": "loginctl terminate-session ${XDG_SESSION_ID-}"
},
{
"label": " Shut down",
"command": "systemctl poweroff"
}
]
},
"menu#powermode-buttons": {
"label": "",
"position": "right",
"actions": [
{
"label": "Performance",
"command": "powerprofilesctl set performance"
},
{
"label": "Balanced",
"command": "powerprofilesctl set balanced"
},
{
"label": "Power-saver",
"command": "powerprofilesctl set power-saver"
}
]
},
"menu#screenshot-buttons": {
"label": "",
"position": "left",
"actions": [
{
"label": " Entire screen",
"command": "swaync-client -cp && sleep 1 && hyprshot -m output"
},
{
"label": " Select a region",
"command": "swaync-client -cp && sleep 1 && hyprshot -m region"
},
{
"label": " Open screenshot menu",
"command": "swaync-client -cp && rofi-screenshot"
},
{
"label": " Open screenshot folder",
"command": "exo-open $HYPRSHOT_DIR"
}
]
},
"menu#screencast-buttons": {
"label": "",
"position": "left",
"actions": [
{
"label": " Entire screen",
"command": "swaync-client -cp && sleep 1 && recording.sh toggle fullscreen"
},
{
"label": " Select a region",
"command": "swaync-client -cp && sleep 1 && recording.sh toggle region"
},
{
"label": " Stop",
"command": "swaync-client -cp && recording.sh stop"
},
{
"label": " Open screencast folder",
"command": "$XDG_VIDEOS_DIR/Screencasts"
}
]
}
},
"buttons-grid": {
"actions": [
{
"label": "",
"command": "nm-connection-editor"
},
{
"label": "",
"command": "blueman"
},
{
"label": "",
"command": "nwg-look"
},
{
"label": "",
"command": "exo-open ~/ConfigHub"
},
{
"label": "",
"command": "ymuse"
},
{
"label": "",
"command": "orage"
},
{
"label": "",
"command": "pamac-manager"
},
{
"label": "",
"command": "firefox"
}
]
}
}
}
+327
View File
@@ -0,0 +1,327 @@
@define-color noti-border-color rgba(255, 255, 255, 0.15);
@define-color noti-bg #2a293a;
@define-color noti-bg-hover-alt #454545;
@define-color noti-bg-alt rgba(38,37,53,1);
@define-color noti-fg #acb0d0;
@define-color noti-bg-hover rgba(255, 255, 255, 0.1);
@define-color noti-bg-focus rgba(255, 255, 255, 0.1);
@define-color noti-close-bg rgba(255, 255, 255, 0.1);
@define-color noti-close-bg-hover rgba(255, 255, 255, 0.15);
@define-color noti-urgent rgba(255,0,80,0.8);
@define-color bg-selected #26A69A;
*{
font-family: "Hack Nerd Font";
color: @noti-fg;
}
.notification-row {
outline: none;
}
.notification-row:focus,
.notification-row:hover {
background: @noti-bg-focus;
}
.notification {
border: 1px solid @bg-selected;
border-radius: 4px;
margin: 6px 12px;
box-shadow: none;
padding: 0;
}
/* Uncomment to enable specific urgency colors */
/* .low {
background: yellow;
}
.normal {
background: green;
} */
.critical {
border: 1px solid @noti-urgent;
}
.notification-content {
background: transparent;
padding: 6px;
border-radius: 4px;
}
.close-button {
background: @noti-close-bg;
color: white;
text-shadow: none;
padding: 0;
border-radius: 100%;
margin-top: 10px;
margin-right: 16px;
box-shadow: none;
border: none;
min-width: 24px;
min-height: 24px;
}
.close-button:hover {
box-shadow: none;
background: @noti-close-bg-hover;
transition: all 0.15s ease-in-out;
border: none;
}
.notification-default-action,
.notification-action {
padding: 4px;
margin: 0;
box-shadow: none;
background: @noti-bg;
border: 1px solid @noti-border-color;
color: white;
}
.notification-default-action:hover,
.notification-action:hover {
-gtk-icon-effect: none;
background: @noti-bg-alt;
}
.notification-default-action {
border-radius: 4px;
}
/* When alternative actions are visible */
.notification-default-action:not(:only-child) {
border-bottom-left-radius: 0px;
border-bottom-right-radius: 0px;
}
.notification-action {
border-radius: 0px;
border-top: none;
border-right: none;
}
/* add bottom border radius to eliminate clipping */
.notification-action:first-child {
border-bottom-left-radius: 4px;
}
.notification-action:last-child {
border-bottom-right-radius: 4px;
border-right: 1px solid @noti-border-color;
}
.image {}
.body-image {
margin-top: 6px;
background-color: white;
border-radius: 6px;
}
.summary {
font-size: 14px;
font-weight: bold;
background: transparent;
color: white;
text-shadow: none;
}
.time {
font-size: 13px;
font-weight: bold;
background: transparent;
color: white;
text-shadow: none;
margin-right: 18px;
}
.body {
font-size: 12px;
font-weight: normal;
background: transparent;
color: white;
text-shadow: none;
}
/* The "Notifications" and "Do Not Disturb" text widget */
.top-action-title {
color: white;
text-shadow: none;
}
.control-center {
background-color: @noti-bg-alt;
border-radius: 10px;
padding-top:5px;
}
.control-center-list {
background: transparent;
}
.floating-notifications {
background: transparent;
}
/* Window behind control center and on all other monitors */
.blank-window {
background: transparent;
}
/*** Widgets ***/
/* Title widget */
.widget-title {
margin: 8px;
font-size: 16px;
}
.widget-title>button {
font-size: 10px;
color: white;
text-shadow: none;
background: @noti-bg;
border: 1px solid @noti-border-color;
box-shadow: none;
border-radius: 20px;
}
.widget-title>button:hover {
background: @noti-bg-hover;
}
/* DND widget */
.widget-dnd {
margin: 8px;
font-size: 1.1rem;
border-radius: 20px;
}
.widget-dnd>switch {
font-size: initial;
border-radius: 20px;
background: @noti-bg;
border: 1px solid @noti-border-color;
box-shadow: none;
}
.widget-dnd>switch:checked {
background: @noti-bg;
}
.widget-dnd>switch slider {
background: @noti-bg-hover;
border-radius: 10px;
}
/* Label widget */
.widget-label {
margin: 4px 8px 8px;
}
.widget-label>label {
font-size: 16px;
}
/* Mpris widget */
.widget-mpris {
/* The parent to all players */
}
.widget-mpris-player {
padding: 8px;
margin: 8px;
}
.widget-mpris-title {
font-weight: bold;
font-size: 1.25rem;
}
.widget-mpris-subtitle {
font-size: 1.1rem;
}
/* Volume and Brightness Widget*/
.widget-volume {
background-color: @noti-bg;
padding: 4px 4px 4px 20px;
margin: 0px 8px 8px 8px;
border-radius: 20px;
font-size: 14px;
}
.widget-backlight {
background-color: @noti-bg;
padding: 8px 8px 4px 8px;
margin: 8px 8px 0px 8px;
border-top-left-radius: 12px;
border-top-right-radius: 12px;
}
.KB {
padding: 4px 8px 4px 8px;
margin: 0px 8px 0px 8px;
border-radius: 0;
}
.widget-menubar>box{
padding: 8px 0px 4px;
margin: 0px 8px;
border-radius: 10px 10px 0px 0px;
background-color: @noti-bg;
}
.widget-menubar>box>.menu-button-bar>button{
border: 1px solid @noti-border-color;
background: @noti-bg;
border-radius: 10px;
margin: 4px 12px;
}
.widget-buttons-grid{
padding: 0px 8px 8px;
margin: 0px 8px 8px;
border-radius: 0px 0px 10px 10px;
background-color: @noti-bg;
font-size: 14px;
}
.widget-buttons-grid>flowbox>flowboxchild>button{
background: @noti-bg;
border-radius: 20px;
}
.widget-buttons-grid>flowbox>flowboxchild>button:hover {
background: @noti-bg-hover;
}
.screenshot-buttons,
.screencast-buttons,
.powermode-buttons,
.power-buttons{
border-radius: 20px;
}
.screenshot-buttons>button,
.screencast-buttons>button,
.powermode-buttons>button,
.power-buttons>button{
background: transparent;
padding: 2px 0px;
margin: 5px 70px 3px;
border: 1px solid @noti-border-color;
}
.screenshot-buttons>button:hover,
.screencast-buttons>button:hover,
.powermode-buttons>button:hover,
.power-buttons>button:hover{
background: @noti-bg-hover;
}
+172
View File
@@ -0,0 +1,172 @@
#App Launcher
super + space
$HOME/.config/rofi/launcher/launcher.sh
#Window Switcher
alt + Tab
$HOME/.config/rofi/launcher/launcher.sh window
#Add Desktop
#super + d
#$HOME/.config/bspwm/bspwm_desktops.sh -a
#Toggle Floating
super + f
bspc node -t ~floating
super + u
$HOME/.config/conky/conkytoggler
#System Monitor
ctrl + alt + Delete
kitty btop -p 2
#File Explorer
super + e
pcmanfm
#Clipboard manager
super + c
rofi -modi "clipboard:roficlip.py --show,persistent:roficlip.py --show --persistent,actions:roficlip.py --show --actions" -show clipboard
#Copy Paste
#super + c
# cliphist list | rofi -dmenu | cliphist decode | wl-copy
#Screenshot Tool
Print
flameshot gui
#Session Menu
super + F4
~/.config/rofi/powermenu/powermenu.sh
#VPN Menu
super + n
~/.config/rofi/nm-vpn/nm-vpn.sh
#Emoji Menu
super + i
rofi -modi 'emoji:~/.config/rofi/emojis/emojis.sh' -show emoji -theme '~/.config/rofi/emojis/emojis.rasi'
#Tools Menu
super + t
~/.config/rofi/helper/rofi-bangs.sh
#Kill GUI
super + k
xkill
#Screen Brightness Up
XF86MonBrightnessUp
brillo -q -u 150000 -A 5
#Screen Brightness Down
XF86MonBrightnessDown
brillo -q -u 150000 -U 5
#Terminal Emulator
super + Return
kitty
#Show this Shortcut List
super + s
$HOME/.config/rofi/shortcuts/shortcuts.sh
#Volume Menu
super + a
$HOME/.config/rofi/volume/volume.sh
#Song Prev, Next
XF86Audio{Prev,Next}
playerctl {previous,next}
#Sond Play / Pause
XF86AudioPlay
playerctl play-pause
#Reload sxhkd config
super + Escape
pkill -USR1 -x sxhkd
#Quit/Restart BSPWM
super + alt + {q,r}
bspc {quit,wm -r}
#Close and Kill Client
super + {_,shift + }q
bspc node -{c,k}
#Swap the current node and the biggest window
super + g
bspc node -s biggest.window
#Preselect the direction
super + ctrl + {h,j,k,l}
bspc node -p {west,south,north,east}
#Preselect the ratio
super + ctrl + {1-9}
bspc node -o 0.{1-9}
#Cancel the preselection for the focused node
super + ctrl + space
bspc node -p cancel
#Set the window state
super + {t,shift + t,s,f}
bspc node -t {tiled,pseudo_tiled,floating,fullscreen}
#Set the node flags
super + ctrl + {m,x,y,z}
bspc node -g {marked,locked,sticky,private}
#Focus the node in the given direction
super + {_,shift + }{h,j,k,l}
bspc node -{f,s} {west,south,north,east}
#Focus the node for the given path jump
super + {p,b,comma,period}
bspc node -f @{parent,brother,first,second}
#Focus the next/previous window in the current desktop
super + {_,shift + }c
bspc node -f {next,prev}.local.!hidden.window
#Focus the next/previous desktop in the current monitor
super + {8,9}
bspc desktop -f {prev,next}
#Focus the last node/desktop
super + {grave,Tab}
bspc {node,desktop} -f last
#Focus the older or newer node in the focus history
super + {o,i}
bspc wm -h off; \
bspc node {older,newer} -f; \
bspc wm -h on
#Focus or send to the given desktop
super + {_,shift + }{1-9,0}
bspc {desktop -f,node -d} '^{1-9,10}'
#Move window
super + {Left,Down,Up,Right}
$HOME/.config/bspwm/bspwm_smart_move {west,south,north,east}
#Rotate tree
#super + {Left,Right}
# bspc node @/ -C {forward,backward}
#Smart resize
super + ctrl + alt + {Left,Down,Up,Right}
n=10; \
{ d1=left; d2=right; dx=-$n; dy=0; \
, d1=bottom; d2=top; dx=0; dy=$n; \
, d1=top; d2=bottom; dx=0; dy=-$n; \
, d1=right; d2=left; dx=$n; dy=0; \
} \
bspc node --resize $d1 $dx $dy || bspc node --resize $d2 $dx $dy
+384
View File
@@ -0,0 +1,384 @@
{
"layer": "top",
"margin-top": 0,
"spacing": 0,
"modules-left": ["group/sys", "tray", "hyprland/workspaces"],
"modules-center": ["mpris", "wlr/taskbar"],
"modules-right": ["group/stats", "group/net", "group/sound", "cava", "battery", "custom/updates","idle_inhibitor"],
"group/net": {
"orientation": "inherit",
"modules": [
"custom/vpn",
"network",
"bluetooth"
]
},
"group/stats": {
"orientation": "inherit",
"modules": [
"custom/cpugov",
"cpu",
"memory",
"custom/gpu-usage",
"gamemode"
],
"drawer": {
"transition-duration": 500,
"transition-left-to-right": false
}
},
"group/sound": {
"orientation": "inherit",
"modules": [
"pulseaudio", "pulseaudio/slider", "custom/audio_idle_inhibitor"
],
"drawer": {
"transition-duration": 500,
"transition-left-to-right": true
}
},
"group/sys": {
"orientation": "inherit",
"modules": [
"custom/power", "clock"
]
},
"network": {
"format-wifi": "{icon}",
"format-ethernet": " {ifname}",
"format-disconnected": "󰱟 Offline",
"tooltip-format": "󰊗 {ifname} via {gwaddr}",
"tooltip-format-wifi": " WiFi {essid} ({signalStrength}%)",
"tooltip-format-ethernet": "󰱔 {ifname}",
"tooltip-format-disconnected": "Disconnected",
"max-length": 50,
"on-click": "nm-applet --indicator",
"format-icons": ["󱛅", "󱛂", "󱛃", "󱚽"],
"max-length": 5
},
"tray": {
"icon-size": 15,
"spacing": 10
},
"clock": {
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
"format-alt": " <b>{:%d.%m.%Y}</b>",
"format": " <b>{:%H:%M}</b>",
"calendar": {
"mode" : "month",
"mode-mon-col" : 3,
"weeks-pos" : "right",
"on-scroll" : 1,
"on-click-right": "mode",
"format": {
"months": "<span color='#b4befe'><b>{}</b></span>",
"days": "<span color='#bac2de'><b>{}</b></span>",
"weeks": "<span color='#f5e0dc'><b>W{}</b></span>",
"weekdays": "<span color='#f9e2af'><b>{}</b></span>",
"today": "<span color='#f38ba8'><b><u>{}</u></b></span>"
}
},
"actions": {
"on-click-right": "mode",
"on-click-forward": "tz_up",
"on-click-backward": "tz_down",
"on-scroll-up": "shift_up",
"on-scroll-down": "shift_down",
"on-click-middle": "alarm-clock-applet"
}
// "on-click": "evolution"
},
"user": {
"format": "{user}",
"interval": 240,
"height": 30,
"width": 30,
"icon": false,
"height": 16,
"width": 16,
"open-on-click": false
},
"pulseaudio": {
"format": "{format_source} | {icon} <b>{volume}</b>%",
"format-bluetooth": "{icon} {volume}% {format_source}",
"format-bluetooth-muted": " {icon} {format_source}",
"format-muted": "{icon} <b>0</b>%",
"format-source": "",
"format-source-muted": "",
"format-icons": {
"headphone": "",
"hands-free": "",
"headset": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", ""]
},
"on-click": "$HOME/.config/rofi/audio/rofi-sink-switcher.sh &",
"on-click-right": "pavucontrol",
"scroll-step": 5.0,
"max-volume": 99
},
"pulseaudio/slider": {
"min": 0,
"max": 99,
"orientation": "horizontal"
},
"custom/audio_idle_inhibitor": {
"format": "{icon}",
"exec": "sway-audio-idle-inhibit --dry-print-both-waybar",
"exec-if": "which sway-audio-idle-inhibit",
"return-type": "json",
"format-icons": {
"output": "",
"input": "",
"output-input": "",
"none": ""
}
},
"mpris": {
"format": "⏸ {title:.10}",
"format-paused": "▶ {player}",
"player-icons": {
"default": "⏸",
"mpv": "🎵",
"spotify": "",
"firefox": "󰈹"
},
"status-icons": {
"paused": "⏸"
}
},
"custom/power": {
"format": "󰣇",
"on-click": "$HOME/.config/rofi/powermenu/powermenu.sh"
},
"gamemode": {
"format": "{glyph}<small>{count}</small>",
"format-alt": "{glyph}",
"glyph": "",
"hide-not-running": true,
"use-icon": true,
"icon-name": "input-gaming-symbolic",
"icon-spacing": 4,
"icon-size": 14,
"tooltip": true,
"tooltip-format": "Games running: {count}"
},
"wlr/taskbar": {
"markup": true,
"format": "{icon} {title:.10}",
"icon-size": 16,
"tooltip-format": "{title:.100}",
"sort-by-app-id": true,
"on-click": "activate",
"on-click-middle": "close",
"ignore-list": [
"Alacritty"
],
"app_ids-mapping": {
"firefoxdeveloperedition": "firefox-developer-edition"
},
"rewrite": {
"Firefox Web Browser": "Firefox",
"Visual Studio Code": "Code",
"Nemo": "Dateien"
}
},
"hyprland/workspaces": {
"format": "{name}{windows}",
"window-rewrite-default": " 󰘔",
"on-click": "activate",
"format-window-separator": " ",
"format-icons": {
"urgent": "",
"focused": "",
"active": "",
"default": ""
},
"window-rewrite": {
"firefox": " ",
"LibreWolf": " ",
"celluloid": " ",
"videostream": " ",
"mpv": " ",
"rust": " ",
"private browsing": " ",
"google": " ",
"foot": " ",
"chrome": " ",
"Chromium": " ",
"nemo": " ",
"libreoffice calc": " ",
"libreoffice writer": " 󰈙",
"libreoffice": " 󰈙",
"vim": " ",
"nvim": " ",
"viewnior": " ",
"transmission": " ",
"music": " ",
"audacious": " ",
"webcord": " 󰙯",
"armcord": " 󰙯",
"goofcord": " 󰙯",
"discord": " 󰙯",
"Steam": " 󰓓",
"Teams": " 󰊻",
"kitty": " ",
"code": " 󰨞"
},
"sort-by-number": true
},
"hyprland/window": {
"format": "{}",
"rewrite": {
"(.*) — firefox": "🌎 $1",
"(.*) - zsh": "> [$1]",
"(.*) - kitty": "> [$1]"
},
"separate-outputs": false
},
"custom/updates": {
"format": "{icon}",
"return-type": "json",
"format-icons": {
"has-updates": "󱍷",
"updated": "󰂪"
},
"exec-if": "which waybar-module-pacman-updates",
"exec": "waybar-module-pacman-updates"
},
"custom/pacman": {
"format": "{} ",
"interval": 3600, // every hour
"exec": "checkupdates | wc -l", // # of updates
"exec-if": "exit 0", // always run; consider advanced run conditions
"on-click": "kitty 'sudo pacman -Syu'; pkill -SIGRTMIN+8 waybar", // update system
"signal": 8
},
"custom/notification": {
"tooltip": false,
"format": "{icon} {}",
"format-icons": {
"notification": "<span foreground='red'><sup></sup></span>",
"none": "",
"dnd-notification": "<span foreground='red'><sup></sup></span>",
"dnd-none": "",
"inhibited-notification": "<span foreground='red'><sup></sup></span>",
"inhibited-none": "",
"dnd-inhibited-notification": "<span foreground='red'><sup></sup></span>",
"dnd-inhibited-none": ""
},
"return-type": "json",
"exec-if": "which swaync-client",
"exec": "swaync-client -swb",
"on-click": "sh -c 'sleep 0.1s; swaync-client -t -sw; sleep 0.1s'",
"on-click-right": "swaync-client -d -sw",
"escape": true
},
"cava": {
// "cava_config": "$XDG_CONFIG_HOME/cava/cava.conf",
"framerate": 30,
"autosens": 1,
//"sensitivity": 50,
"bars": 2,
"lower_cutoff_freq": 50,
"higher_cutoff_freq": 10000,
"method": "pipewire",
"source": "auto",
"stereo": true,
"reverse": false,
"bar_delimiter": 0,
"monstercat": true,
"hide_on_silence": true,
"waves": true,
"noise_reduction": 0.77,
"input_delay": 2,
"sleep_timer": 5,
"format-icons" : ["▁", "▂", "▃", "▄", "▅", "▆", "▇", "█" ],
"actions": {
"on-click-right": "mode"
}
},
"cpu": {
"interval": 10,
"format": "CPU {icon}",
"max-length": 10,
"format-icons": [
"<span color='#69ff94' size='8pt' rise='1.5pt'>▁</span>", // green
"<span color='#2aa9ff' size='8pt' rise='1.5pt'>▂</span>", // blue
"<span color='#f8f8f2' size='8pt' rise='1.5pt'>▃</span>", // white
"<span color='#f8f8f2' size='8pt' rise='1.5pt'>▄</span>", // white
"<span color='#ffffa5' size='8pt' rise='1.5pt'>▅</span>", // yellow
"<span color='#ffffa5' size='8pt' rise='1.5pt'>▆</span>", // yellow
"<span color='#ff9977' size='8pt' rise='1.5pt'>▇</span>", // orange
"<span color='#dd532e' size='8pt' rise='1.5pt'>█</span>" // red
]
},
"memory": {
"interval": 30,
"format": "MEM {icon}",
"max-length": 10,
"tooltip": true,
"format-icons": [
"<span color='#69ff94' size='8pt' rise='1.5pt'>▁</span>", // green
"<span color='#2aa9ff' size='8pt' rise='1.5pt'>▂</span>", // blue
"<span color='#f8f8f2' size='8pt' rise='1.5pt'>▃</span>", // white
"<span color='#f8f8f2' size='8pt' rise='1.5pt'>▄</span>", // white
"<span color='#ffffa5' size='8pt' rise='1.5pt'>▅</span>", // yellow
"<span color='#ffffa5' size='8pt' rise='1.5pt'>▆</span>", // yellow
"<span color='#ff9977' size='8pt' rise='1.5pt'>▇</span>", // orange
"<span color='#dd532e' size='8pt' rise='1.5pt'>█</span>" // red
]
},
"custom/cpugov": {
"exec": "$HOME/.config/waybar/waybar-cpugov",
"return-type": "json",
"restart-interval": 10,
"on-click": "$HOME/.config/rofi/cpugov/rofi-cpugov.sh",
"on-click-right": "resources"
},
"custom/gpu-usage": {
"exec": "$HOME/.config/waybar/waybar-gpustat",
"return-type": "json",
"restart-interval": 10
},
"battery": {
"interval": 60,
"states": {
"warning": 30,
"critical": 15
},
"format": "{capacity}% {icon}",
"format-icons": ["", "", "", "", ""],
"max-length": 25
},
"bluetooth": {
// "controller": "controller1", // specify the alias of the controller if there are more than 1 on the system
"format": " {status}",
"format-disabled": "󰂲", // an empty format will hide the module
"format-connected": " {num_connections}",
"tooltip-format": "{controller_alias}\t{controller_address}",
"tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{device_enumerate}",
"tooltip-format-enumerate-connected": "{device_alias}\t{device_address}",
"on-click": "blueberry"
},
"idle_inhibitor": {
"format": "{icon}",
"format-icons": {
"activated": "",
"deactivated": ""
},
"tooltip-format-activated": " Idle Inhibitor activated",
"tooltip-format-deactivated": " Idle Inhibitor deactivated"
},
"custom/vpn": {
"format": "󰖂",
"exec": "echo '{\"class\": \"connected\", \"tooltip\": \"VPN Connected\"}'",
"exec-if": "test -d /proc/sys/net/ipv4/conf/tun0",
"return-type": "json",
"interval": 5
}
}
+228
View File
@@ -0,0 +1,228 @@
* {
border: none;
font-family: "Hack Nerd Font", sans-serif;
font-size: 13px;
color:alpha(@theme_text_color, 0.8);
}
window#waybar {
background: @theme_bg_color;
}
/*-----main groups----*/
.modules-right {
margin: 0 0 0 0;
}
.modules-center {
margin: 0 0 0 0;
}
.modules-left {
margin: 0 0 0 0;
}
/**
## ALL MODULES
**/
#clock,
#battery,
#backlight,
#cpu,
#memory,
#bluetooth,
#temperature,
#network,
#pulseaudio,
#tray,
#mode,
#idle_inhibitor,
#workspaces,
#custom-power,
#custom-menu,
#custom-media,
#custom-notification,
#custom-updates,
#custom-pacman,
#user,
#cava,
#custom-gpu-usage,
#custom-cpugov,
#custom-vpn.connected{
padding:0px 10px;
}
/**
* GROUPS
**/
#sys, #stats, #net, #sound {
margin: 0;
padding:2px 5px 1px 5px;
border-radius:0;
color:alpha(@theme_text_color, 0.5);
background-color:alpha(@theme_selected_fg_color, 0.3);
}
/**
* SYS
**/
#custom-power {
margin-left:0;
margin-right:0;
/*font-family: "MonarchOS", sans-serif;*/
}
#user {
padding-left:0;
font-weight:bold;
}
#stats .drawer-child {
padding-left: 10px;
padding-right: 10px;
}
/**
* SOUND
**/
#cava {
background-color:alpha(@theme_selected_fg_color, 0.3);
padding-left: 0;
}
#pulseaudio-slider {
padding-left: 10px;
padding-right: 10px;
}
#pulseaudio-slider slider {
min-height: 0px;
min-width: 0px;
opacity: 0;
background-image: none;
border: none;
box-shadow: none;
background-color: @insensitive_bg_color;
border:2px solid @theme_selected_bg_color;
}
#pulseaudio-slider trough {
min-height: 4px;
min-width: 80px;
border-radius: 5px;
background-color: #11111b;
}
#pulseaudio-slider highlight {
min-width: 5px;
border-radius: 5px;
background-color: #6c7086;
}
#custom-updates {
background-color:alpha(@theme_selected_fg_color, 0.3);
padding-right:12px
}
#tray {
background-color:alpha(@theme_selected_fg_color, 0.1);
}
/**
* MISC
**/
#mpris {
background-color: rgba(172,176,208, .3);
border-radius:20px;
margin: 8px 10px 8px 0px;
padding:0 10px;
}
/**
* WORKSPACES
**/
#workspaces {
background-color: transparent;
padding:0;
margin-left:10px
}
#workspaces button {
padding: 0px 10px;
background-color: transparent;
outline:none;
border-radius: 20px;
margin: 8px 5px 8px 0px;
}
#workspaces button:last-child {
margin-right: 0;
}
#workspaces button.empty {
color:inherit;
}
#workspaces button.active {
background-color: transparent;
}
#workspaces button.visible {
background-color:alpha(@theme_selected_bg_color, 0.3);
}
#workspaces button.urgent {
color: #cc3436;
}
#workspaces button:hover {
background-color:alpha(@theme_selected_bg_color, 0.4);
box-shadow: inherit;
text-shadow: inherit;
}
/**
## INDICATORS
**/
#pulseaudio.muted {
color: #cc3436;
}
#battery.charging {
color: #2dcc36;
}
#battery.warning:not(.charging) {
color: #e6e600;
}
#battery.critical:not(.charging) {
color: #cc3436;
}
#temperature.critical {
color: #cc3436;
}
#idle_inhibitor {
padding-right: 14px;
background-color:alpha(@theme_selected_fg_color, 0.3);
}
#idle_inhibitor.activated {
color:alpha(@theme_selected_bg_color, 0.9);
}
/**
* TASKBAR
**/
#taskbar {
font-size:8px;
background: transparent;
opacity: 1;
padding:0;
}
#taskbar button {
border-bottom: 2px solid alpha(@borders, 0.9);
padding:6px 10px 3px 10px;
background: transparent;
transition:100ms border ease-in-out;
margin-left:4px;
border-radius:0;
font-size:8px;
}
#taskbar button:first-child {
margin-left:0;
}
#taskbar button:hover {
background-color:alpha(@theme_selected_bg_color, 0.2);
}
#taskbar button.active {
background-color:alpha(@theme_selected_bg_color, 0.1);
border-bottom: 2px solid @borders;
opacity:1;
}
+49
View File
@@ -0,0 +1,49 @@
#!/usr/bin/bash
while :
do
CPU_GOV=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor)
case $CPU_GOV in
performance)
CPU_GOV_SHORT=󰓅
;;
balanced)
CPU_GOV_SHORT=󰾅
;;
powersave)
CPU_GOV_SHORT=󰌪
;;
userspace)
CPU_GOV_SHORT=uspace
;;
ondemand)
CPU_GOV_SHORT=ondmnd
;;
conservative)
CPU_GOV_SHORT=cons
;;
schedutil)
CPU_GOV_SHORT=sutil
;;
*)
STATEMENTS
;;
esac
CPU_GOV_FULL="${CPU_GOV^}"
s="text|alt|tooltip|class
$CPU_GOV_SHORT|$CPU_GOV_FULL|CPU Mode: $CPU_GOV_FULL|cpugov"
jq --unbuffered --compact-output -Rn '
( input | split("|") ) as $keys |
( inputs | split("|") ) as $vals |
[[$keys, $vals] | transpose[] | {key:.[0],value:.[1]}] | from_entries
' <<<"$s"
sleep 5
done
#echo '{"text": "$(CPU_GOV)", "alt": "$CPU_GOV", "tooltip": "$CPU_GOV", "class": "$cpugov" }'
+39
View File
@@ -0,0 +1,39 @@
#!/usr/bin/bash
while :
do
GPU_STAT=$(cat /sys/class/hwmon/hwmon5/device/gpu_busy_percent)
ICON="<span color='#69ff94' size='8pt' rise='1.5pt'>▁</span>"
if [ "$GPU_STAT" -lt 10 ]; then
ICON="<span color='#69ff94' size='8pt' rise='1.5pt'>▁</span>"
elif [ "$GPU_STAT" -lt 20 ]; then
ICON="<span color='#2aa9ff' size='8pt' rise='1.5pt'>▂</span>"
elif [ "$GPU_STAT" -lt 40 ]; then
ICON="<span color='#f8f8f2' size='8pt' rise='1.5pt'>▃</span>"
elif [ "$GPU_STAT" -lt 50 ]; then
ICON="<span color='#f8f8f2' size='8pt' rise='1.5pt'>▄</span>"
elif [ "$GPU_STAT" -lt 60 ]; then
ICON="<span color='#ffffa5' size='8pt' rise='1.5pt'>▅</span>"
elif [ "$GPU_STAT" -lt 70 ]; then
ICON="<span color='#ffffa5' size='8pt' rise='1.5pt'>▆</span>"
elif [ "$GPU_STAT" -lt 80 ]; then
ICON="<span color='#ff9977' size='8pt' rise='1.5pt'>▇</span>"
elif [ "$GPU_STAT" -lt 100 ]; then
ICON="<span color='#dd532e' size='8pt' rise='1.5pt'>█</span>"
fi
s="text|alt|tooltip|class|percentage
GPU $ICON|GPU $ICON $GPU_STAT%|GPU $ICON $GPU_STAT%|gpustat|$GPU_STAT"
jq --unbuffered --compact-output -Rn '
( input | split("|") ) as $keys |
( inputs | split("|") ) as $vals |
[[$keys, $vals] | transpose[] | {key:.[0],value:.[1]}] | from_entries
' <<<"$s"
sleep 5
done
#echo '{"text": "$(CPU_GOV)", "alt": "$CPU_GOV", "tooltip": "$CPU_GOV", "class": "$cpugov" }'
+53
View File
@@ -0,0 +1,53 @@
#!/usr/bin/bash
set -e
# https://blog.dhampir.no/content/sleeping-without-a-subprocess-in-bash-and-how-to-sleep-forever
snore() {
local IFS
[[ -n "${_snore_fd:-}" ]] || exec {_snore_fd}<> <(:)
read -r ${1:+-t "$1"} -u $_snore_fd || :
}
getter() {
DELAY=0.2
while snore $DELAY; do
SINKS=$(pactl --format=json list sinks)
CURRENT_SINK=$(pactl get-default-sink)
CURRENT_SINK_OBJ=$(pactl --format=json list sinks | jq '.[] | select(.state="$(pactl get-default-sink)")')
echo $CURRENT_SINK_OBJ
exit 1
s="text|alt|tooltip|class
$CPU_GOV_SHORT|$CPU_GOV_FULL|CPU Mode: $CPU_GOV_FULL|cpugov"
jq --unbuffered --compact-output -Rn '
( input | split("|") ) as $keys |
( inputs | split("|") ) as $vals |
[[$keys, $vals] | transpose[] | {key:.[0],value:.[1]}] | from_entries
' <<<"$s"
done
}
if [[ $1 = "-g" ]] then
getter
fi
exit 0
#echo '{"text": "$(CPU_GOV)", "alt": "$CPU_GOV", "tooltip": "$CPU_GOV", "class": "$cpugov" }'
+13
View File
@@ -0,0 +1,13 @@
[Settings]
folder = /home/dom/Pictures/Wallpaper
fill = Fill
sort = name
backend = swaybg
color = #241F31
language = en
subfolders = True
wallpaper = /home/dom/Pictures/Wallpaper/MonarchOS.png
monitors = All
swww_transition = any
post_command =

Some files were not shown because too many files have changed in this diff Show More