1
0
Fork 0
mirror of https://github.com/Horhik/dotfiles.git synced 2024-11-25 09:31:34 +00:00

Compare commits

..

No commits in common. "5bd88529eeb347e3d2997ec7123f99b19181a7e3" and "738427076816d5fa09ae00e3f6c1278341574796" have entirely different histories.

26 changed files with 285 additions and 1631 deletions

6
.gitignore vendored
View file

@ -20,9 +20,3 @@ home/pure_emacs/.emacs.d/.org-id-locations
home/pure_emacs/.emacs.d/.lsp-session-v1
home/pure_emacs/.emacs.d/url
home/pure_emacs/.emacs.d/session*
home/xmonad/.xmonad/xmonad.errors
home/pure_emacs/.emacs.d/bb/
home/pure_emacs/.emacs.d/eln-cache/
home/pure_emacs/.emacs.d/straight/
home/pure_emacs/.emacs.d/private/
home/pure_emacs/.emacs.d/private/*

View file

@ -1,20 +0,0 @@
#! /bin/sh
pgrep -x sxhkd > /dev/null || sxhkd &
bspc monitor -d I II III IV V VI VII VIII IX X
bspc config border_width 2
bspc config window_gap 12
bspc config split_ratio 0.52
bspc config borderless_monocle true
bspc config gapless_monocle true
bspc rule -a Gimp desktop='^8' state=floating follow=on
bspc rule -a Chromium desktop='^2'
bspc rule -a mplayer2 state=floating
bspc rule -a Kupfer.py focus=on
bspc rule -a Screenkey manage=off
alacritty &

View file

@ -1,121 +0,0 @@
#
# wm independent hotkeys
#
# terminal emulator
super + Return
alacritty
# program launcher
super + @space
rofi -show drun
# make sxhkd reload its configuration files:
super + Escape
pkill -USR1 -x sxhkd
#
# bspwm hotkeys
#
# quit/restart bspwm
super + alt + {q,r}
bspc {quit,wm -r}
# close and kill
super + {_,shift + }w
bspc node -{c,k}
# alternate between the tiled and monocle layout
super + m
bspc desktop -l next
# send the newest marked node to the newest preselected node
super + y
bspc node newest.marked.local -n newest.!automatic.local
# swap the current node and the biggest window
super + g
bspc node -s biggest.window
#
# state/flags
#
# 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/swap
#
# 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 + bracket{left,right}
bspc desktop -f {prev,next}.local
# 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}'
#
# preselect
#
# 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
# cancel the preselection for the focused desktop
super + ctrl + shift + space
bspc query -N -d | xargs -I id -n 1 bspc node id -p cancel
#
# move/resize
#
# expand a window by moving one of its side outward
super + alt + {h,j,k,l}
bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}
# contract a window by moving one of its side inward
super + alt + shift + {h,j,k,l}
bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}
# move a floating window
super + {Left,Down,Up,Right}
bspc node -v {-20 0,0 20,0 -20,20 0}

View file

@ -2,10 +2,10 @@
LocationMode=path-bar
ShowHidden=false
ShowSizeColumn=true
GeometryX=241
GeometryY=162
GeometryWidth=1437
GeometryHeight=773
GeometryX=633
GeometryY=124
GeometryWidth=654
GeometryHeight=858
SortColumn=modified
SortOrder=descending
StartupMode=recent

View file

@ -0,0 +1,8 @@
file:///home/horhik/code
file:///home/horhik/Documents
file:///home/horhik/Music
file:///home/horhik/Pictures
file:///home/horhik/Videos
file:///home/horhik/Downloads
file:///home/horhik/Nextcloud
file:///home/horhik/Nextcloud2

View file

@ -1,5 +1,5 @@
[Settings]
gtk-theme-name=Adwaita-dark
gtk-theme-name=Materia-dark
gtk-icon-theme-name=Paper-Mono-Dark
gtk-font-name=Noto Sans 11
gtk-cursor-theme-name=Bibata-Modern-Ice

View file

@ -1,230 +0,0 @@
#!/usr/bin/env bash
# this is a simple config for herbstluftwm
hc() {
herbstclient "$@"
herbstclient attr theme.title_when multiple_tabs
}
hc emit_hook reload
xsetroot -solid '#fe8019'
# remove all existing keybindings
hc keyunbind --all
# keybindings
# if you have a super key you will be much happier with Mod set to Mod4
Mod1=Mod1 # Use alt as the main modifier
Mod=Mod4 # Use the super key as the main modifier
hc keybind $Mod-Shift-q quit
hc keybind $Mod-Shift-r reload
hc keybind $Mod-Shift-c close
hc keybind $Mod-Return spawn "${TERMINAL:-alacritty}" # use your $TERMINAL with xterm as fallback
# basic movement in tiling and floating mode
# focusing clients
hc keybind $Mod-Left focus left
hc keybind $Mod-Down focus down
hc keybind $Mod-Up focus up
hc keybind $Mod-Right focus right
hc keybind $Mod-h focus left
hc keybind $Mod-j focus down
hc keybind $Mod-k focus up
hc keybind $Mod-l focus right
# moving clients in tiling and floating mode
hc keybind $Mod-Shift-Left shift left
hc keybind $Mod-Shift-Down shift down
hc keybind $Mod-Shift-Up shift up
hc keybind $Mod-Shift-Right shift right
hc keybind $Mod-Shift-h shift left
hc keybind $Mod-Shift-j shift down
hc keybind $Mod-Shift-k shift up
hc keybind $Mod-Shift-l shift right
# splitting frames
# create an empty frame at the specified direction
hc keybind $Mod-Control-u split bottom 0.5
hc keybind $Mod-Control-o split right 0.5
# let the current frame explode into subframes
hc keybind $Mod-Control-space split explode
# resizing frames and floating clients
resizestep=0.02
hc keybind $Mod-Control-h resize left +$resizestep
hc keybind $Mod-Control-j resize down +$resizestep
hc keybind $Mod-Control-k resize up +$resizestep
hc keybind $Mod-Control-l resize right +$resizestep
hc keybind $Mod-Control-Left resize left +$resizestep
hc keybind $Mod-Control-Down resize down +$resizestep
hc keybind $Mod-Control-Up resize up +$resizestep
hc keybind $Mod-Control-Right resize right +$resizestep
# tags
tag_names=( {1..9} )
tag_keys=( {1..9} 0 )
hc rename default "${tag_names[0]}" || true
for i in "${!tag_names[@]}" ; do
hc add "${tag_names[$i]}"
key="${tag_keys[$i]}"
if [ -n "$key" ] ; then
hc keybind "$Mod-$key" use_index "$i"
hc keybind "$Mod-Shift-$key" move_index "$i"
fi
done
# cycle through tags
hc keybind $Mod-period use_index +1 --skip-visible
hc keybind $Mod-comma use_index -1 --skip-visible
# layouting
hc keybind $Mod-r remove
hc keybind $Mod-s floating toggle
hc keybind $Mod-f fullscreen toggle
hc keybind $Mod-Control-f tiling toggle
hc keybind $Mod-Shift-f set_attr clients.focus.floating toggle
hc keybind $Mod-Shift-d set_attr clients.focus.decorated toggle
hc keybind $Mod-Control-m set_attr clients.focus.minimized true
hc keybind $Mod-Control-Shift-m jumpto last-minimized
hc keybind $Mod-Control-p pseudotile toggle
# The following cycles through the available layouts within a frame, but skips
# layouts, if the layout change wouldn't affect the actual window positions.
# I.e. if there are two windows within a frame, the grid layout is skipped.
hc keybind $Mod1-space \
or , and . compare tags.focus.curframe_wcount = 2 \
. cycle_layout +1 vertical horizontal max vertical grid \
, cycle_layout +1
# mouse
hc mouseunbind --all
hc mousebind $Mod-Button1 move
hc mousebind $Mod-Button2 zoom
hc mousebind $Mod-Button3 resize
# focus
hc keybind $Mod-BackSpace cycle_monitor
hc keybind $Mod-Tab cycle_all +1
hc keybind $Mod-Shift-Tab cycle_all -1
hc keybind $Mod-c cycle
hc keybind $Mod-i jumpto urgent
# theme
hc attr theme.tiling.reset 1
hc attr theme.floating.reset 1
hc set frame_border_active_color '#fe8019'
hc set frame_border_normal_color '#101010cc'
hc set frame_bg_normal_color '#3c383633'
hc set frame_bg_active_color '#fe801922'
hc set frame_border_width 0
hc set always_show_frame on
hc set frame_bg_transparent off
hc set frame_transparent_width 2
hc set frame_gap 0
# "#fe8019" "#d65d0e" "#af3a03'
hc attr theme.title_height 10
hc attr theme.title_when always
hc attr theme.title_font 'Mononoki Nerd Font:pixelsize=12' # example using Xft
# hc attr theme.title_font '-*-fixed-medium-r-*-*-13-*-*-*-*-*-*-*'
hc attr theme.title_depth 3 # space below the title's baseline
hc attr theme.active.color '#fe8019'
hc attr theme.title_color '#ffffff'
hc attr theme.normal.color '#fe801955'
hc attr theme.urgent.color '#7811A1'
hc attr theme.tab_color '#3c3836'
hc attr theme.active.tab_color '#ffffff00'
hc attr theme.active.tab_outer_color '#fe8019'
hc attr theme.active.tab_title_color '#f9f5d7'
hc attr theme.normal.title_color '#f2e5bc'
hc attr theme.inner_width 1
hc attr theme.inner_color black
hc attr theme.border_width 1
hc attr theme.fullscreen.border_width 1
hc attr theme.floating.border_width 1
hc attr theme.floating.outer_width 1
hc attr theme.floating.outer_color black
hc attr theme.active.inner_color '#fe8019'
hc attr theme.urgent.inner_color '#9A65B0'
hc attr theme.normal.inner_color '#3c3836'
# copy inner color to outer_color
for state in active urgent normal ; do
hc substitute C theme.${state}.inner_color \
attr theme.${state}.outer_color C
done
hc attr theme.tiling.outer_width 1
hc attr theme.background_color '#141414'
hc set window_gap 0
hc set frame_padding 0
hc set smart_window_surroundings off
hc set smart_frame_surroundings on
hc set mouse_recenter_gap 0
hc pad 1 30
hc pad 0 30
# rules
hc unrule -F
#hc rule class=XTerm tag=3 # move all xterms to tag 3
hc rule focus=on # normally focus new clients
hc rule floatplacement=smart
#hc rule focus=off # normally do not focus new clients
# give focus to most common terminals
#hc rule class~'(.*[Rr]xvt.*|.*[Tt]erm|Konsole)' focus=on
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(DIALOG|UTILITY|SPLASH)' floating=on
hc rule windowtype='_NET_WM_WINDOW_TYPE_DIALOG' focus=on
hc rule windowtype~'_NET_WM_WINDOW_TYPE_(NOTIFICATION|DOCK|DESKTOP)' manage=off
hc rule fixedsize floating=on
hc set tree_style '╾│ ├└╼─┐'
# unlock, just to be sure
hc unlock
# do multi monitor setup here, e.g.:
# hc set_monitors 1280x1024+0+0 1280x1024+1280+0
# or simply:
# hc detect_monitors
# find the panel
panel=~/.config/herbstluftwm/panel.sh
[ -x "$panel" ] || panel=/etc/xdg/herbstluftwm/panel.sh
for monitor in $(hc list_monitors | cut -d: -f1) ; do
# start it on each monitor
"$panel" "$monitor" &
done
hc keybind $Mod-p spawn rofi -show drun
hc keybind $Mod-Shift-s spawn flameshot gui
hc keybind $Mod-Shift-e spawn rofi -show emoji
#hc keybind $Mod-Shift-p spawn rofi-pass
#hc keybind $Mod-Shift-p spawn quickeepass ~/.password-store/Passwords.kdbx
# SCRATCHPADS
hc keybind $Mod-u spawn ~/.config/herbstluftwm/scratchpad.sh "hlwmScratch1" "alacritty --class=hlwmScratch1"
hc keybind $Mod-d spawn ~/.config/herbstluftwm/scratchpad.sh "hlwmScratchemascratch" "emacs --name hlwmScratchemascratch --title hlwmScratchemascratch"
hc keybind $Mod-Shift-m spawn ~/.config/herbstluftwm/scratchpad.sh "hlwmScratchVolume" "alacritty --class=hlwmScratchVolume -e pulsemixer"
hc keybind $Mod-Shift-d spawn ~/.config/herbstluftwm/scratchpad.sh "obsidian" "~.local/bin/Obsidian.AppImage"
hc keybind $Mod1-Control-space spawn emacsclient --eval "(emacs-everywhere)"
# put this somewhere after 'hc unrule -F' line
hc rule instance~hlwmScratch.* floating=on floatplacement=center # float all instances which contains 'hlwmScratch'
#Change Language
hc keybind $Mod-space spawn ~/.config/herbstluftwm/changelang
hc keybind $Mod1-shift spawn ~/.config/herbstluftwm/changelang
picom &
feh --bg-scale ~/Pictures/backgrounds/berries.jpg
syncthing &
~/.config/herbstluftwm/bar | lemonbar -n "herbstluftwm" -B "#000" -F "#fff" -f "mononoki Nerd Font:style=Bold:size=9" &

View file

@ -1,133 +0,0 @@
#!/bin/sh
export MAIN_DISK="/dev/nvme0n1p7"
#module GruvboxColors where
backgroundColor="#282828"
currentLineColor="#fabd2f"
selectionColor="#665c54"
foregroundColor="#ebdbb2"
foregroundSecondColor="#fbf1c1"
commentColor="#458588"
cyanColor="#83a598"
greenColor="#8ec07c"
greenDarkerColor="#689d6a"
orangeColor="#fe8019"
pinkColor="#d3869b"
purpleColor="#b16286"
redColor="#cc241d"
yellowColor="#fabd2f"
battery ()
{
val=$(acpi | grep -oh "[[:digit:]]*%" | grep -oh "[0-9]*")
echo %{F$greenColor}$val
#case $val in
# [1-9][0-9][0-9])
# echo "<fc=$greenColor>—{ </fc>$val<fc=$greenColor>%}</fc>"
# ;;
# [5-9][0-9])
# echo "<fc=$greenColor>—{ </fc>$val<fc=$greenColor>%}</fc>"
# ;;
#[1-4][0-9])
# echo "<fc=$yellowColor>—{ </fc>$val<fc=$yellowColor>%}</fc>"
# ;;
#[1-9])
# echo "<fc=$orangeColor>—{ </fc>$val<fc=$orangeColor>%}</fc>"
# ;;
#0)
# echo "<fc=$redColor> </fc>"
# ;;
#*)
# echo "<fc=$greenColor>—{ </fc>$val<fc=$greenColor>%}</fc>"
# ;;
#esac
}
volume ()
{
#maybe change to Right, Left, Mono
val=$(pulsemixer --get-volume | grep -oP '^.* ')
echo $val
#case $val in
# 100)
# echo "<fc=$redColor>—{ $val%}</fc>"
#;;
# [5-9][0-9])
# echo "<fc=$orangeColor>—{ $val%}</fc>"
# ;;
#[1-4][0-9])
# echo "<fc=$yellowColor>—{ $val%}</fc>"
# ;;
#[1-9])
# echo "<fc=$greenDarkerColor>—{ $val%}</fc>"
# ;;
#0)
# echo "<fc=$currentLineColor>—{}</fc>"
# ;;
#*)
# echo "<fc=$redColor>—{ $val%}</fc>"
#esac
}
diskspace ()
{
#might be another /dev/sda...
val="$(df $MAIN_DISK | grep -oh '[0-9]*%' | tail -n 1 )"
echo %{F$purpleColor}$val
}
wifi ()
{
val=$(iw dev | awk '$1=="ssid"{print $2}')
echo %{F$redColor}$val
}
#
# name=$(iwgetid -r)
#if [ $name != " " ];
# then
# #echo "<fc=$cyanColor>—{ </fc> $name<fc=$cyanColor>}</fc>"
# echo "$name"
# else
# echo 睊 off
# fi
layout ()
{
#echo "<fc=$orangeColor>—{ </fc>"$(xkblayout-state print %s)"<fc=$orangeColor>}</fc>"
echo "$(xkb-switch -p)"
}
timeanddate ()
{
#echo "<fc=$yellowColor>—{</fc>" "<fc=$yellowColor>$(date +'%T')}</fc>"
echo "$(date +'%T')"
}
calendar ()
{
echo "$(date +'%d/%m/%Y')"
}
toggl_timer () {
toggl=$($HOME/.local/scripts/toggl-current)
toggl_duration=$(echo $toggl | jq -r '.data .duration')
toggl_description=$(echo $toggl | jq -r '.data .description')
curr_time=$(date +%s)
duration_sec=$((curr_time + toggl_duration))
#duration=$(echo $((duration_sec / (60 * 60))):$((duration_sec / 60 - duration_sec / (60 * 60) * 60)):$((duration_sec % 60)))
echo "$duration"
}
COLOR_UNDERLINE="#ff0000"
kek="%{U$COLOR_UNDERLINE}%{+u}${line#?}%{-u}$PADDING"
while true
do
echo "%{S1}%{c}$(timeanddate)--$(calendar)%{r}wifi:$(wifi)--disk:$(diskspace)--vol:$(volume)%--bat:$(battery)%"
sleep 5
done
#echo "$kek%{$(volume)}%{$(layout)}%{$(diskspace)}%{$(timeanddate)}"
#<fc=$greenDarkerColor>—{</fc>$(calendar)<fc=$greenDarkerColor>}——</fc>"
#echo "                                          "

View file

@ -1,2 +0,0 @@
#! /bin/sh
setxkbmap us,ru && xkb-switch -n

View file

@ -1,60 +0,0 @@
#!/usr/bin/env bash
# File: scratchpad.sh
# Description: Script to toggle or create scratchpad windows
# Author: RayZ0rr (https://github.com/RayZ0rr)
name="$1"
command="${@: 2}"
clientsArray=( $(herbstclient foreach C clients. echo C | awk 'BEGIN{ORS=" "} {print $1}') )
for client in "${clientsArray[@]}" ; do
id=$(echo $client | cut -d '.' -f 2)
instanceName="$(herbstclient get_attr ${client}.instance)"
# className=$(herbstclient get_attr "${client}.class")
# titleName="$(herbstclient get_attr ${client}.title)"
if [[ "${instanceName}" == "${name}" ]] ; then # If the scratchpad window exists
visible_wid="$(xdotool search --onlyvisible --classname "${name}" | tail -1 2> /dev/null)"
if [[ -z "$visible_wid" ]]; then # If the scratchpad window is not visible
echo "${name} found. Showing scratchpad."
herbstclient bring ${id} # Bring scratchpad to focus
exit $?
else # If the scratchpad window is visible
echo "Hiding instance of ${name}."
herbstclient set_attr "${client}.minimized" true # Hide scratchpad
exit 0
fi
fi
done
if [[ $# -ne 2 ]]; then # If a command to launch it was not provided
echo "${name} not found. A command was not provided to launch it."
exit 1
fi
echo "${name} not found. Executing: '${command}'."
$command
# if ! eval "${@: 2}" ; then
if ! [ $? -eq 0 ]; then
echo "Provided command '${command}' failed"
exit 1
fi
# Wait for application to be available
while [[ -z "$wid" ]]; do
sleep 0.05;
wid="$(xdotool search --classname "${name}" | tail -1 2> /dev/null)"
done
exit 0

View file

@ -1,115 +0,0 @@
#!/bin/sh
backgroundColor="#282828"
currentLineColor="#fabd2f"
selectionColor="#665c54"
foregroundColor="#ebdbb2"
foregroundSecondColor="#fbf1c1"
commentColor="#458588"
cyanColor="#83a598"
greenColor="#8ec07c"
greenDarkerColor="#689d6a"
orangeColor="#fe8019"
pinkColor="#d3869b"
purpleColor="#b16286"
redColor="#cc241d"
yellowColor="#fabd2f"
battery ()
{
val=$(acpi | grep -oh "[[:digit:]]*%" | grep -oh "[0-9]*")
case $val in
[1—9][0—9][0—9])
echo "<fc=$greenColor>—{ </fc>$val<fc=$greenColor>%}</fc>"
;;
[5—9][0—9])
echo "<fc=$greenColor>—{ </fc>$val<fc=$greenColor>%}</fc>"
;;
[1—4][0—9])
echo "<fc=$yellowColor>—{ </fc>$val<fc=$yellowColor>%}</fc>"
;;
[1-9])
echo "<fc=$redColor>—{ </fc>$val<fc=$redColor>%}</fc>"
;;
0)
echo "<fc=$redColor> </fc>"
;;
*)
echo "<fc=$greenColor>—{ </fc>$val<fc=$greenColor>%}</fc>"
;;
esac
}
volume ()
{
#maybe change to Right, Left, Mono
val=$(amixer sget Master | grep 'Left:' | awk -F'[][]' '{ print $2 }'| grep -oh "[0-9]*")
case $val in
100)
echo "<fc=$redColor>—{ $val%}</fc>"
;;
[5-9][0-9])
echo "<fc=$yellowColor>—{ $val%}</fc>"
;;
[1-4][0-9])
echo "<fc=$pinkColor>—{ $val%}</fc>"
;;
[1-9])
echo "<fc=$greenDarkerColor>—{ $val%}</fc>"
;;
0)
echo "<fc=$selectionColor>—{0%}</fc>"
;;
*)
echo "<fc=$redColor>—{ $val%}</fc>"
esac
}
diskspace ()
{
#might be another /dev/sda...
echo "<fc=$pinkColor>—{ </fc>"$(df $MAIN_DISK | grep -oh "[0-9]*%" | tail -n 1)"<fc=$pinkColor>}</fc>"
}
wifi ()
{
name=$(iwgetid -r)
if [ $name != " " ];
then
echo "<fc=$cyanColor>—{ </fc>$name<fc=$cyanColor>}</fc>"
else
echo 睊 off
fi
}
layout ()
{
echo "<fc=$orangeColor>—{ </fc>"$(xkblayout-state print %s)"<fc=$orangeColor>}</fc>"
}
timeanddate ()
{
echo "<fc=$yellowColor>—{</fc>" "<fc=$yellowColor>$(date +'%T')}</fc>"
}
calendar ()
{
echo "<fc=$greenDarkerColor> </fc>"$(date +'%d/%m/%Y')
}
toggl_timer () {
toggl=$($HOME/.local/scripts/toggl-current)
toggl_duration=$(echo $toggl | jq -r '.data .duration')
toggl_description=$(echo $toggl | jq -r '.data .description')
curr_time=$(date +%s)
duration_sec=$((curr_time + toggl_duration))
duration=$(echo $((duration_sec / (60 * 60))):$((duration_sec / 60 - duration_sec / (60 * 60) * 60)):$((duration_sec % 60)))
echo "<fc=$greenDarkerColor>—{$toggl_description(</fc>"$duration"<fc=$greenDarkerColor>)}</fc>"
}
echo "$(wifi)$(battery)$(volume)$(layout)$(diskspace)$(timeanddate)<fc=$greenDarkerColor>—{</fc>$(calendar)<fc=$greenDarkerColor>}——</fc>"
#echo "                                          "

View file

@ -1,503 +0,0 @@
#################################
# Corners #
#################################
# requires: https://github.com/sdhand/compton
corner-radius = 0.0;
rounded-corners-exclude = [
"window_type = 'dialog'",
"window_type = 'popup_menu'",
"name = 'xmobar'",
"class_g = 'awesome'",
"class_g = 'libreoffice'",
"class_g = 'libreoffice,'",
"class_g = 'libreoffice-writer'",
"class_g = 'Libreoffice'",
"class_g = 'URxvt'",
"class_g = 'XTerm'",
"class_g = 'TelegramDesktop'",
"class_g = 'Element'",
"class_g = 'kitty'",
"class_g = 'Polybar'",
"class_g = 'xmobar'",
"class_g = 'Xmobar'",
"class_g = 'Bar'",
"class_g = 'xmonad'",
"class_g = 'Firefox'",
"class_g = 'Xmonad'",
"class_g = 'code-oss'",
"class_g = 'firefox'",
"class_g = 'firefox'",
"class_g = 'Thunderbird'"
];
round-borders = 1;
round-borders-exclude = [
#"class_g = 'TelegramDesktop'",
];
# Specify a list of border width rules, in the format `PIXELS:PATTERN`,
# Note we don't make any guarantee about possible conflicts with the
# border_width set by the window manager.
#
# example:
# round-borders-rule = [ "2:class_g = 'URxvt'" ];
#
round-borders-rule = [
"3:class_g = 'XTerm'",
"3:class_g = 'URxvt'",
"2:window_type = 'dropdown_menu'",
"2:class_g = 'Alacritty'",
"15:class_g = 'Signal'"
];
#################################
# 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 = 7;
# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
shadow-opacity = .75
# The left offset for shadows, in pixels. (defaults to -15)
# shadow-offset-x = -15
shadow-offset-x = -7;
# The top offset for shadows, in pixels. (defaults to -15)
# shadow-offset-y = -15
shadow-offset-y = -7;
# 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'",
"class_g = 'slop'",
"class_g = 'Polybar'",
"_GTK_FRAME_EXTENTS@:c"
];
# 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 Xinerama screen to the screen.
# xinerama-shadow-crop = 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.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.
# don't need this, we disable fading for all normal windows with wintypes: {}
fade-exclude = [
"class_g = 'slop'" # maim
]
# 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;
# 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 always be considered focused.
# focus-exclude = []
focus-exclude = [
"class_g = 'Cairo-clock'",
"class_g = 'Bar'", # lemonbar
"class_g = 'slop'" # maim
];
# 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 = []
opacity-rule = [
"80:class_g = 'Bar'", # lemonbar
"100:class_g = 'slop'", # maim
"100:class_g = 'XTerm'",
"100:class_g = 'URxvt'",
"100:class_g = 'kitty'",
"80:class_g = 'Alacritty'",
"70:class_g = 'Zathura'",
"80:class_g = 'Emacs'",
"80:class_g = 'Polybar'",
"100:class_g = 'code-oss'",
"100:class_g = 'Meld'",
"95:class_g = 'TelegramDesktop'",
"90:class_g = 'Joplin'",
"100:class_g = 'firefox'",
"100:class_g = 'Thunderbird'"
];
#################################
# 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";
blur: {
# requires: https://github.com/ibhagwan/picom
method = "kawase";
#method = "kernel";
strength = 7;
# deviation = 1.0;
# kernel = "11x11gaussian";
background = true;
background-frame = true;
background-fixed = true;
kern = "3x3box";
}
# Exclude conditions for background blur.
blur-background-exclude = [
#"window_type = 'dock'",
#"window_type = 'desktop'",
#"class_g = 'URxvt'",
#
# prevents picom from blurring the background
# when taking selection screenshot with `main`
# https://github.com/naelstrof/maim/issues/130
"class_g = 'slop'",
"window_type = 'dropdown_menu'",
"window_type = 'popup_menu'",
"class_g = 'libreoffice'",
"class_g = 'libreoffice,'",
"class_g = 'libreoffice-writer'",
"class_g = 'Libreoffice'",
"window_type = 'dialog'",
"window_type = 'tooltip'",
"window_type = 'notification'",
"_GTK_FRAME_EXTENTS@:c"
];
#################################
# 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.
#
experimental-backends = true;
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 = false;
# 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 = "info";
# 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.
#
# 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:
{
normal = { fade = false; shadow = false; }
tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; };
dock = { shadow = false; }
dnd = { shadow = false; }
popup_menu = { opacity = 3; shadow = false; blur = false; }
dropdown_menu = { opacity = 3; shadow = false; blur = false; }
};

View file

@ -18,10 +18,7 @@
(setq max-lisp-eval-depth 10000)
(require 'package)
(add-to-list 'package-archives
'("melpa" . "http://melpa.org/packages/") t)
(add-to-list 'package-archives
'("melpa" . "http://melpa.org/packages/") t)
'("melpa" . "http://stable.melpa.org/packages/"))
(package-initialize)
@ -30,30 +27,13 @@
(defvar package-list
'(gruvbox-theme))
'(use-package doom-themes))
(dolist (p package-list)
(when (not (package-installed-p p))
(package-install p)))
(defvar bootstrap-version)
(let ((bootstrap-file
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
(bootstrap-version 5))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))
(setq package-enable-at-startup nil)
(setq straight-use-package-by-default t)
(straight-use-package 'org)
(straight-use-package 'use-package)
#+end_src
#+RESULTS:
@ -73,7 +53,6 @@
(global-visual-line-mode)
#+end_src
#+RESULTS:
: t
@ -89,10 +68,10 @@
;; '("75b8719c741c6d7afa290e0bb394d809f0cc62045b93e1d66cd646907f8e6d43" "7661b762556018a44a29477b84757994d8386d6edee909409fabe0631952dad9" default))
;; '(package-selected-packages
;; '(neotree treemacs-persp spaceline-all-the-icons all-the-icons-ivy-rich all-the-icons-ivy treemacs-the-icons dired-icon treemacs-magit treemacs-projectile nlinum linum-mode unicode-fonts ewal-doom-themes ivy-rich which-key counsel org-roam treemacs-evil treemacs-all-the-icons treemacs use-package general gruvbox-theme flycheck-rust cargo linum-relative ac-racer lusty-explorer doom-modeline doom-themes rainbow-delimiters evil-mc rustic lsp-mode avy)))
(use-package gruvbox-theme
(use-package doom-themes
:ensure t
)
(load-theme 'gruvbox-dark-hard t)
(load-theme 'doom-gruvbox t)
;; (use-package gruvbox-theme
;; :ensure t
@ -304,7 +283,10 @@
:ensure t
:config (treemacs-set-scope-type 'Perspectives))
(use-package neotree
:ensure t
:init
(setq neo-theme (if (display-graphic-p) 'icons 'arrow)))
(org-babel-do-load-languages
'org-babel-load-languages
@ -312,6 +294,7 @@
(use-package magit)
(use-package workgroups2)
#+end_src
@ -437,12 +420,15 @@
:config
(setq which-key-idle-delay 0.3))
(use-package all-the-icons-ivy-rich
:ensure t
:init (all-the-icons-ivy-rich-mode 1))
;; (use-package ivy-rich
;; :init
;; (ivy-rich-mode 1))
;;
(use-package ivy-rich
:init
(ivy-rich-mode 1))
#+end_src
@ -459,8 +445,8 @@
(company-minimum-prefix-length 1)
(company-idle-delay 0.0))
;;(use-package company-box
;; :hook (company-mode . company-box-mode))
(use-package company-box
:hook (company-mode . company-box-mode))
#+end_src
** Popup
@ -644,55 +630,6 @@
#+RESULTS:
: t
** Org roam
#+begin_src emacs-lisp
(use-package org-roam
:straight
(:host github :repo "org-roam/org-roam" :branch "main" :files ("*.el" "out"))
:after org
:ensure t
:custom
(org-roam-directory (file-truename "~/Documents/KB/"))
:bind (("C-c n l" . org-roam-buffer-toggle)
("C-c n f" . org-roam-node-find)
("C-c n g" . org-roam-graph)
("C-c n i" . org-roam-node-insert)
("C-c n c" . org-roam-capture)
;; Dailies
("C-c n j" . org-roam-dailies-capture-today))
:config
;; If you're using a vertical completion framework, you might want a more informative completion interface
(setq org-roam-node-display-template (concat "${title:*} " (propertize "${tags:10}" 'face 'org-tag)))
(org-roam-db-autosync-mode)
;; If using org-roam-protocol
(require 'org-roam-protocol))
; (setq org-roam-v2-ack t)
(setq org-roam-directory (file-truename "~/Documents/KB"))
#+end_src
: org-roam-protocol
*** org-roam-ui
#+begin_src emacs-lisp
(use-package org-roam-ui
:straight
(:host github :repo "org-roam/org-roam-ui" :branch "main" :files ("*.el" "out"))
:after org-roam
normally we'd recommend hooking orui after org-roam, but since org-roam does not have
a hookable mode anymore, you're advised to pick something yourself
if you don't care about startup time, use
:hook (after-init . org-roam-ui-mode)
:config
(setq org-roam-ui-sync-theme t
org-roam-ui-follow t
org-roam-ui-update-on-save t
org-roam-ui-open-on-start t))
#+end_src
** Org mode
*** Org agenda commands
#+begin_src emacs-lisp
@ -749,22 +686,18 @@
:defer t
)
(use-package org
:straight
(:host github :repo "https://git.savannah.gnu.org/cgit/emacs/elpa.git" :branch "main" :files ("*.el" "out"))
;:demand t
;:load-path "~/.emacs.d/elpa/org-9.5.4/"
:hook ((org-mode . my/org-mode-setup)
(org-mode . variable-pitch-mode)
(org-mode . org-indent-mode)
(org-mode . prettify-symbols-mode)
)
:config (setq org-agenda-files `("~/Documents/GTD"))
:config (setq org-agenda-files `("~/Notes/GTD"))
(display-line-numbers-mode 0)
;(org-bullets-mode t)
;(org-indent-mode t)
;(setq org-ellipsis " ▸" org-hide-emphasis-markers t org-src-fontify-natively t
; org-src-tab-acts-natively t org-edit-src-content-indentation 2 org-hide-block-startup nil
; org-src-preserve-indentation nil org-startup-folded 'content org-cycle-separator-lines 2)
(org-bullets-mode t)
(org-indent-mode t)
(setq org-ellipsis " ▸" org-hide-emphasis-markers t org-src-fontify-natively t
org-src-tab-acts-natively t org-edit-src-content-indentation 2 org-hide-block-startup nil
org-src-preserve-indentation nil org-startup-folded 'content org-cycle-separator-lines 2)
(setq org-agenda-start-with-log-mode t)
(setq org-log-done 'time)
(setq org-log-into-drawer t)
@ -832,6 +765,60 @@
#+RESULTS:
: ((json . src json) (yaml . src yaml) (py . src python) (ts . src typescript) (sc . src scheme) (el . src emacs-lisp) (sh . src sh) (a . export ascii) (c . center) (C . comment) (e . example) (E . export) (h . export html) (l . export latex) (q . quote) (s . src) (v . verse))
** Org roam
#+begin_src emacs-lisp
(use-package org-roam
:ensure t
:hook
(after-init . org-roam-mode)
:general (general-nmap
:prefix "SPC r"
;; Org-roam keymap
"d" '(org-roam-dailies-find-today :which-key "roam today")
"t a" '(org-roam-tag-add :which-key "roam add tag")
"t d" '(org-roam-tag-delete :which-key "roam delete tag")
"a a" '(org-roam-alias-add :which-key "roam add alias")
"f f" '(org-roam-find-file :which-key "roam findgfile ")
"g" '(org-roam-graph-show :which-key "roam graph ")
"b b" '(org-roam-buffer-toggle-display :which-key "roam buffer toggle ")
"b s" '(org-roam-buffer-activate :which-key "roam buffer show ")
"b h" '(org-roam-buffer-deactivate :which-key "roam buffer hide ")
"s" '(org-roam-ui-mode :which-key "roam ui "))
:custom
(org-roam-directory (file-truename "~/org-notes"))
:config
(org-roam-db-autosync-mode)
(require 'org-roam-protocol)
(server-start t)
)
(setq org-roam-v2-ack t)
(setq org-roam-directory (file-truename "~/org-notes"))
(require 'org-roam-protocol)
#+end_src
: org-roam-protocol
*** org-roam-ui
#+begin_src emacs-lisp-no
(use-package websocket
:after org-roam
)
(use-package simple-httpd
:after org-roam
)
(require 'websocket)
(require 'simple-httpd)
(add-to-list 'load-path "~/.emacs.d/private/org-roam-ui")
(load-library "org-roam-ui")
#+end_src
* Languages
** Flycheck
#+begin_src emacs-lisp
@ -924,7 +911,7 @@
#+end_src
** Rust
#+begin_src aemacs-lisp
#+begin_src emacs-lisp
(use-package rust-mode
:config
(setq rust-format-on-save t)

View file

@ -1,10 +1,7 @@
(setq max-lisp-eval-depth 10000)
(require 'package)
(add-to-list 'package-archives
'("melpa" . "http://melpa.org/packages/") t)
(add-to-list 'package-archives
'("melpa" . "http://melpa.org/packages/") t)
'("melpa" . "http://stable.melpa.org/packages/"))
(package-initialize)
@ -13,31 +10,12 @@
(defvar package-list
'(gruvbox-theme))
'(use-package doom-themes))
(dolist (p package-list)
(when (not (package-installed-p p))
(package-install p)))
(defvar bootstrap-version)
(let ((bootstrap-file
(expand-file-name "straight/repos/straight.el/bootstrap.el" user-emacs-directory))
(bootstrap-version 5))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/raxod502/straight.el/develop/install.el"
'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))
(setq package-enable-at-startup nil)
(setq straight-use-package-by-default t)
(straight-use-package 'org)
(straight-use-package 'use-package)
(require 'package)
(setq inhibit-startup-message t)
(menu-bar-mode -1)
@ -59,10 +37,10 @@
;; '("75b8719c741c6d7afa290e0bb394d809f0cc62045b93e1d66cd646907f8e6d43" "7661b762556018a44a29477b84757994d8386d6edee909409fabe0631952dad9" default))
;; '(package-selected-packages
;; '(neotree treemacs-persp spaceline-all-the-icons all-the-icons-ivy-rich all-the-icons-ivy treemacs-the-icons dired-icon treemacs-magit treemacs-projectile nlinum linum-mode unicode-fonts ewal-doom-themes ivy-rich which-key counsel org-roam treemacs-evil treemacs-all-the-icons treemacs use-package general gruvbox-theme flycheck-rust cargo linum-relative ac-racer lusty-explorer doom-modeline doom-themes rainbow-delimiters evil-mc rustic lsp-mode avy)))
(use-package gruvbox-theme
(use-package doom-themes
:ensure t
)
(load-theme 'gruvbox-dark-hard t)
(load-theme 'doom-gruvbox t)
;; (use-package gruvbox-theme
;; :ensure t
@ -238,7 +216,10 @@
:ensure t
:config (treemacs-set-scope-type 'Perspectives))
(use-package neotree
:ensure t
:init
(setq neo-theme (if (display-graphic-p) 'icons 'arrow)))
(org-babel-do-load-languages
'org-babel-load-languages
@ -246,6 +227,7 @@
(use-package magit)
(use-package workgroups2)
(treemacs-create-theme "Material"
:icon-directory (treemacs-join-path treemacs-dir "/home/horhik/.emacs.d/icons")
@ -350,12 +332,14 @@
:config
(setq which-key-idle-delay 0.3))
(use-package all-the-icons-ivy-rich
:ensure t
:init (all-the-icons-ivy-rich-mode 1))
;; (use-package ivy-rich
;; :init
;; (ivy-rich-mode 1))
;;
(use-package ivy-rich
:init
(ivy-rich-mode 1))
(use-package company
:after lsp-mode
@ -368,8 +352,8 @@
(company-minimum-prefix-length 1)
(company-idle-delay 0.0))
;;(use-package company-box
;; :hook (company-mode . company-box-mode))
(use-package company-box
:hook (company-mode . company-box-mode))
;; (use-package ivy-postframe
;; :init
@ -527,43 +511,6 @@
(set-face-attribute 'org-column-title nil :background nil)
(setq org-src-fontify-natively t)
(use-package org-roam
:straight
:ensure t
:custom
(org-roam-directory (file-truename "~/Documents/KB/"))
:bind (("C-c n l" . org-roam-buffer-toggle)
("C-c n f" . org-roam-node-find)
("C-c n g" . org-roam-graph)
("C-c n i" . org-roam-node-insert)
("C-c n c" . org-roam-capture)
;; Dailies
("C-c n j" . org-roam-dailies-capture-today))
:config
;; If you're using a vertical completion framework, you might want a more informative completion interface
(setq org-roam-node-display-template (concat "${title:*} " (propertize "${tags:10}" 'face 'org-tag)))
(org-roam-db-autosync-mode)
;; If using org-roam-protocol
(require 'org-roam-protocol))
; (setq org-roam-v2-ack t)
(setq org-roam-directory (file-truename "~/Documents/KB"))
(use-package org-roam-ui
:straight
(:host github :repo "org-roam/org-roam-ui" :branch "main" :files ("*.el" "out"))
:after org-roam
;; normally we'd recommend hooking orui after org-roam, but since org-roam does not have
;; a hookable mode anymore, you're advised to pick something yourself
;; if you don't care about startup time, use
;; :hook (after-init . org-roam-ui-mode)
:config
(setq org-roam-ui-sync-theme t
org-roam-ui-follow t
org-roam-ui-update-on-save t
org-roam-ui-open-on-start t))
(setq org-agenda-settings '(
("d" "Dashboard 📜"
(
@ -613,20 +560,19 @@
(use-package pdf-tools
:defer t
)
(use-package org :demand t
:load-path "~/.emacs.d/elpa/org-9.5.4/"
(use-package org
:hook ((org-mode . my/org-mode-setup)
(org-mode . variable-pitch-mode)
(org-mode . org-indent-mode)
(org-mode . prettify-symbols-mode)
)
:config (setq org-agenda-files `("~/Documents/GTD"))
:config (setq org-agenda-files `("~/Notes/GTD"))
(display-line-numbers-mode 0)
;(org-bullets-mode t)
;(org-indent-mode t)
;(setq org-ellipsis " ▸" org-hide-emphasis-markers t org-src-fontify-natively t
; org-src-tab-acts-natively t org-edit-src-content-indentation 2 org-hide-block-startup nil
; org-src-preserve-indentation nil org-startup-folded 'content org-cycle-separator-lines 2)
(org-bullets-mode t)
(org-indent-mode t)
(setq org-ellipsis "" org-hide-emphasis-markers t org-src-fontify-natively t
org-src-tab-acts-natively t org-edit-src-content-indentation 2 org-hide-block-startup nil
org-src-preserve-indentation nil org-startup-folded 'content org-cycle-separator-lines 2)
(setq org-agenda-start-with-log-mode t)
(setq org-log-done 'time)
(setq org-log-into-drawer t)
@ -680,6 +626,39 @@
(add-to-list 'org-structure-template-alist '("yaml" . "src yaml"))
(add-to-list 'org-structure-template-alist '("json" . "src json"))
(use-package org-roam
:ensure t
:hook
(after-init . org-roam-mode)
:general (general-nmap
:prefix "SPC r"
;; Org-roam keymap
"d" '(org-roam-dailies-find-today :which-key "roam today")
"t a" '(org-roam-tag-add :which-key "roam add tag")
"t d" '(org-roam-tag-delete :which-key "roam delete tag")
"a a" '(org-roam-alias-add :which-key "roam add alias")
"f f" '(org-roam-find-file :which-key "roam findgfile ")
"g" '(org-roam-graph-show :which-key "roam graph ")
"b b" '(org-roam-buffer-toggle-display :which-key "roam buffer toggle ")
"b s" '(org-roam-buffer-activate :which-key "roam buffer show ")
"b h" '(org-roam-buffer-deactivate :which-key "roam buffer hide ")
"s" '(org-roam-ui-mode :which-key "roam ui "))
:custom
(org-roam-directory (file-truename "~/org-notes"))
:config
(org-roam-db-autosync-mode)
(require 'org-roam-protocol)
(server-start t)
)
(setq org-roam-v2-ack t)
(setq org-roam-directory (file-truename "~/org-notes"))
(require 'org-roam-protocol)
(use-package flycheck
:init
;;(flycheck-c/c++-clang-executable "c/c++-clang" "~/code/competitive/clang++")
@ -754,6 +733,17 @@
;; (add-hook 'lsp-mode-hook #'direnv-update-environment)
(use-package nix-mode)
(use-package rust-mode
:config
(setq rust-format-on-save t)
(add-hook 'rust-mode-hook
(lambda () (setq indent-tabs-mode nil)))
)
(use-package rustic
:config
(setq rustic-lsp-server 'rls)
)
(use-package mastodon
:config
(setq mastodon-instance-url "https://mastodon.ml")

@ -0,0 +1 @@
Subproject commit 9ad111d2102c24593f6ac012206bb4b2c9c6c4e1

View file

@ -1,9 +0,0 @@
setxkbmap us,ru
$HOME/.local/scripts/pipewire-mazafaka.sh
nitrogen --restore
nextcloud &
thunderbird &
syncthing &
picom &
picom &
nitrogen --restore

View file

@ -1,22 +0,0 @@
!/bin/sh
# LICENSE: PUBLIC DOMAIN
# switch between my layouts
# If an explicit layout is provided as an argument, use it. Otherwise, select the next layout from
# the set [us, it, fr].
if [[ -n "$1" ]]; then
setxkbmap $1
else
layout=$(setxkbmap -query | awk 'END{print $2}')
case $layout in
us)
setxkbmap it
;;
it)
setxkbmap fr
;;
*)
setxkbmap us
;;
esac
fi

View file

@ -1,15 +0,0 @@
#!/bin/sh
kill $(pidof pulseaudio)
kill $(pidof pulseaudio)
kill $(pidof pulseaudio)
kill $(pidof pulseaudio)
kill $(pidof pulseaudio)
pipewire &
pipewire-pulse &
kill $(pidof pulseaudio)
pipewire &
pipewire-pulse &
pipewire &
pipewire-pulse &
pipewire &
pipewire-pulse &

23
home/sway/.config/sway/config Normal file → Executable file
View file

@ -19,17 +19,16 @@ set $term alacritty
# Note: pass the final command to swaymsg so that the resulting window can be opened
# on the original workspace that the command was run on.
#set $menu dmenu_path | dmenu | xargs swaymsg exec --
set $menu dmenu_path | dmenu | xargs swaymsg exec --
set $menu dmenu_run -m dmenumon -fn dmenufont -nb col_gray1 -nf col_gray3 -sb col_cyan -sf col_gray4 -c -l 20
### Output configuration
#
# Default wallpaper (more resolutions are available in /usr/share/backgrounds/sway/)
#output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill
output * bg /usr/share/backgrounds/sway/Sway_Wallpaper_Blue_1920x1080.png fill
#
# Example configuration:
#
#output XWAYLAND0 resolution 1920x1080 position 1920,0
# output HDMI-A-1 resolution 1920x1080 position 1920,0
#
# You can get the names of your outputs by running: swaymsg -t get_outputs
@ -67,18 +66,12 @@ set $menu dmenu_path | dmenu | xargs swaymsg exec --
# Start a terminal
bindsym $mod+Return exec $term
# ROFI
bindsym $mod+P exec rofi -show drun
# ROFI PASS
bindsym $mod+Shift+P exec rofi-pass
# Screenshot
bindsym $mod+Shift+S exec flameshot gui
# Kill focused window
bindsym $mod+Shift+q kill
# Start your launcher
bindsym $mod+d exec $menu
# Drag floating windows by holding down $mod and left mouse button.
# Resize them with right mouse button + $mod.
# Despite the name, also works for non-floating windows.
@ -90,7 +83,7 @@ set $menu dmenu_path | dmenu | xargs swaymsg exec --
bindsym $mod+Shift+c reload
# Exit sway (logs you out of your Wayland session)
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -B 'Yes, exit sway' 'swaymsg exit'
bindsym $mod+Shift+e exec swaynag -t warning -m 'You pressed the exit shortcut. Do you really want to exit sway? This will end your Wayland session.' -b 'Yes, exit sway' 'swaymsg exit'
#
# Moving around:
#
@ -213,7 +206,7 @@ bar {
# When the status_command prints a new line to stdout, swaybar updates.
# The default just shows the current date and time.
status_command while date +'%Y-%m-%d %I:%M:%S %p'; do sleep 1; done
status_command while date +'%Y-%m-%d %l:%M:%S %p'; do sleep 1; done
colors {
statusline #ffffff

View file

@ -17,7 +17,7 @@ Config {
, sepChar = "%" -- delineator between plugin names and straight text
, alignSep = "][" -- separator between left-right alignment
, template = "<fc=#83a598>——{</fc>%StdinReader%<fc=#83a598>}———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————</fc>][%/home/horhik/.config/xmobar/bin/xmobarstatus%"
, template = "<fc=#83a598>——{</fc>%StdinReader%<fc=#83a598>}—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————</fc>][%/home/horhik/.config/xmobar/bin/xmobarstatus%"
-- general behavior
, lowerOnStart = False -- send to bottom of window stack on start

View file

@ -16,7 +16,7 @@
-- layout
, sepChar = "%" -- delineator between plugin names and straight text
, alignSep = "][" -- separator between left-right alignment
, template = "<fc=#a89984>--{</fc>%StdinReader%<fc=#a89984>}—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————</fc>][%/home/horhik/.config/xmobar/bin/xmobarstatus2%"
, template = "<fc=#a89984>--{</fc>%StdinReader%<fc=#a89984>}—————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————</fc>][%/home/horhik/.config/xmobar/bin/xmobarstatus2%"
-- general behavior
, lowerOnStart = False -- send to bottom of window stack on start

1
home/xmonad/.xmonad/xmonad.errors Normal file → Executable file
View file

@ -1 +0,0 @@
$ ghc --make xmonad.hs -i -ilib -fforce-recomp -main-is main -v0 -outputdir /home/horhik/.xmonad/build-x86_64-linux -o /home/horhik/.xmonad/xmonad-x86_64-linux

View file

@ -30,6 +30,7 @@ import XMonad.Layout.NoBorders (noBorders, smartBorders)
import XMonad.Hooks.DynamicLog
import XMonad.Util.Scratchpad
import XMonad.Util.NamedScratchpad
import XMonad.Util.Brightness as Bright
-- Layouts
import XMonad.Layout.Accordion
@ -57,12 +58,13 @@ import qualified XMonad.Layout.ToggleLayouts as T (toggleLayouts, ToggleLayout(T
import qualified XMonad.Layout.MultiToggle as MT (Toggle(..))
-- import Graphics.X11.ExtraTypes.XF86 as XF86
import qualified Graphics.X11.ExtraTypes.XF86 as XF86
import qualified XMonad.StackSet as W
import qualified Data.Map as M
import GruvboxColors as Colors
import TaskMonad
home = "/home/horhik/"
@ -98,7 +100,7 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
-- launch dmenu
-- , ((modm, xK_p ), spawn ("dmenu_run " ++ " -fn '" ++ myDmenuFont ++ "' -nb '" ++ backgroundColor ++ "' -nf '" ++ selectionColor ++ "' -sb '"++ selectionColor ++"' -sf '"++foregroundSecondColor++"' -shb '"++ greenDarkerColor ++ "' -c "++" -l "++" 20 "))
-- launch emoji picker
, ((modm , xK_e ), spawn "rofi -show emoji")
, ((modm , xK_e ), spawn "rofimoji")
, ((modm , xK_p ), spawn "rofi -show drun")
, ((modm .|. shiftMask , xK_p ), spawn "rofi-pass")
@ -107,7 +109,7 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
, ((modm .|. shiftMask, xK_c ), kill)
-- Rotate through the available layout algorithms
, ((controlMask, xK_Control_R ), sendMessage NextLayout)
, ((modm, xK_space ), sendMessage NextLayout)
-- Reset the layouts on the current workspace to default
, ((modm .|. shiftMask, xK_space ), setLayout $ XMonad.layoutHook conf)
@ -175,9 +177,9 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
-- flameshot gui
, ((modm .|. shiftMask, xK_s ), spawn "flameshot gui")
--, ((modm .|. mod1Mask , xK_space ), spawn "$HOME/.local/scripts/deadd_notify")
, ((modm .|. mod1Mask , xK_space ), spawn "$HOME/.local/scripts/deadd_notify")
-- change lang
, ((modm, xK_space) , spawn "setxkbmap us,ru; xkb-switch -n")
, ((modm, xK_Control_R) , spawn "setxkbmap us,ru; xkb-switch -n")
, ((modm, xK_Shift_R) , spawn "xkb-switch -n")
, ((modm, xK_d) , spawn "eww-toggl")
-- toggle fullscreen
@ -190,7 +192,8 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
, ((modm .|. shiftMask , xK_m), namedScratchpadAction myScratchpads "pulse")
, ((modm .|. shiftMask , xK_d), namedScratchpadAction myScratchpads "todoist")
, ((modm .|. shiftMask , xK_n), namedScratchpadAction myScratchpads "rss_news")
, ((modm .|. shiftMask, xK_d), namedScratchpadAction myScratchpads "emacs")
, ((modm .|. controlMask, xK_e), namedScratchpadAction myScratchpads "emacs")
, ((modm , xK_w), taskwarriorPrompt [(\x -> x == "processInbox", processInbox)])
-- | Programs
, ((modm .|. shiftMask, xK_z), spawn "zathura &") -- book reader (zathura)
@ -224,12 +227,13 @@ myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
, (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]
++
[
--((0, XF86.xF86XK_AudioPause ), spawn "playerctl play-pause")
--, ((0, XF86.xF86XK_AudioPrev ), spawn "playerctl previous")
--, ((0, XF86.xF86XK_AudioMute ), spawn "pulsemixer --toggle-mute")
--, ((0, XF86.xF86XK_AudioLowerVolume ), spawn "pulsemixer --set-volume $(($(pulsemixer --get-volume | cut -d ' ' -f 1) - 5))")
--, ((0, XF86.xF86XK_AudioRaiseVolume ), spawn "pulsemixer --set-volume $(($(pulsemixer --get-volume | cut -d ' ' -f 1) + 5))")
[ ((0, XF86.xF86XK_MonBrightnessUp ), Bright.increase)
, ((0, XF86.xF86XK_MonBrightnessDown), Bright.decrease)
, ((0, XF86.xF86XK_AudioPause ), spawn "playerctl play-pause")
, ((0, XF86.xF86XK_AudioPrev ), spawn "playerctl previous")
, ((0, XF86.xF86XK_AudioMute ), spawn "pulsemixer --toggle-mute")
, ((0, XF86.xF86XK_AudioLowerVolume ), spawn "pulsemixer --set-volume $(($(pulsemixer --get-volume | cut -d ' ' -f 1) - 5))")
, ((0, XF86.xF86XK_AudioRaiseVolume ), spawn "pulsemixer --set-volume $(($(pulsemixer --get-volume | cut -d ' ' -f 1) + 5))")
]
@ -394,6 +398,7 @@ myManageHook = (composeAll
, resource =? "kdesktop" --> doIgnore
])
<+> namedScratchpadManageHook myScratchpads
<+> namedScratchpadManageHook taskwarriorScratchpads
where
doCenter = customFloating $ W.RationalRect l t w h
where
@ -550,30 +555,26 @@ myLogHook (xmproc0, xmproc1) = dynamicLogWithPP $ xmobarPP { -- XMobar
--
-- By default, do nothing.
myStartupHook = do
spawnOnce "/home/horhik/.local/scripts/autostart.sh"
-- spawnOnce "picom &"
-- -- spawnOnce "compton --config ~/.config/compton/compton.conf &"
-- spawnOnce "setxkbmap us,ru &"
-- spawnOnce "kill $(pidof pulseaudio) ; pipewire &; pipewire-pulse &"
-- spawnOnce "kill $(pidof pulseaudio) ; pipewire &; pipewire-pulse &"
-- spawnOnce "/home/horhik/.local/scripts/pipewire-mazafaka.sh"
-- spawnOnce "nitromegen --restore"
-- --spawnOnce "eww daemon"
-- spawnOnce "nextcloud &"
-- spawnOnce "thunderbird &"
-- --spawnOnce "superproductivity"
-- spawnOnce "syncthing &"
-- --spawnOnce "sh ssh-agent bash ; ssh-add ~/.ssh/arch"
-- --spawnOnce "eval '$(ssh-agent -s)'; ssh-add ~/.ssh/id_rsa"
-- --spawnOnce ("$HOME/.cargo/bin/enact --watch --pos left")
-- --spawnOnce ("sleep 1; $HOME/.cargo/bin/enact --pos left")
-- -- spawnOnce ("xrandr --output HDMI1 --left-of eDP1&")
-- --spawnOnce (home ++ ".local/scripts/status/launch &")
-- --spawnOnce (home ++ ".local/scripts/touchpad.sh &")
-- -- spawnOnce ("cd /home/horhik/Freenet/downloads/fms; ./fms --daemon &")
-- --spawnOnce "xautolock -time 25 -locker i3lock-fancy-multimonitor -notifier 'xkb-switch -s us' &"
-- spawnOnce "eval '$(ssh-agent -s)'; ssh-add ~/.ssh/id_rsa &"
-- spawnOnce "xrandr --output HDMI-A-0 --right-of eDP &"
spawnOnce "nitrogen --restore &"
-- spawnOnce "compton --config ~/.config/compton/compton.conf &"
spawnOnce "picom --experimental-backends &"
spawnOnce "setxkbmap us,ru &"
spawnOnce "eww daemon"
spawnOnce "nextcloud"
spawnOnce "thunderbird"
spawnOnce "superproductivity"
spawnOnce "syncthing"
spawnOnce "sh ssh-agent bash ; ssh-add ~/.ssh/arch"
spawnOnce "eval '$(ssh-agent -s)'; ssh-add ~/.ssh/id_rsa"
spawnOnce ("$HOME/.cargo/bin/enact --watch --pos left")
spawnOnce ("sleep 1; $HOME/.cargo/bin/enact --pos left")
-- spawnOnce ("xrandr --output HDMI1 --left-of eDP1&")
spawnOnce (home ++ ".local/scripts/status/launch &")
spawnOnce (home ++ ".local/scripts/touchpad.sh &")
-- spawnOnce ("cd /home/horhik/Freenet/downloads/fms; ./fms --daemon &")
spawnOnce "xautolock -time 25 -locker i3lock-fancy-multimonitor -notifier 'xkb-switch -s us' &"
spawnOnce "eval '$(ssh-agent -s)'; ssh-add ~/.ssh/id_rsa &"
spawnOnce "xrandr --output HDMI-A-0 --right-of eDP &"
------------------------------------------------------------------------
-- Now run xmonad with all the defaults we set up.

View file

@ -1,89 +0,0 @@
sudo xbps-install -Su cabal
sudo xbps-install -Su ghc
sudo xbps-install -Su cabal
sudo xbps-install -Su xorg
sudo xbps-install -Su xserver
sudo xbps-install -Su xserver
sudo xbps-install -Su xorg-minimal
sudo xbps-install -Su xmonad xmobar
sudo xbps-install -Su cabal-install
sudo xbps-install -Su stow
sudo xbps-install -Su bspwm
sudo xbps-install -Su bspwm rofi rofi-emoji dmenu rofi-pass
sudo xbps-install -Su ncurses-libtinfo-libs ncurses-libtinfo-devel libX11-devel libXft-devel libXinerama-devel libXrandr-devel libXScrnSaver-devel pkg-config
sudo xbps-install -Su sddm
sudo xbps-install -Su alacritty
sudo xbps-install -Su st
sudo xbps-install -Su sway
sudo xbps-install -Su dmenu
sudo xbps-install -Su dmenu-wayland
sudo xbps-install -Su wdisplays
sudo xbps-install -Su brightnessctl
sudo xbps-install -Su gnupg
sudo xbps-install -Su gnugpg
sudo xbps-install -Su adb
sudo xbps-install -Su android-tools
sudo xbps-install -Su android-tools
sudo xbps-install -Su qt5-wayland
sudo xbps-install -Su flameshot
sudo xbps-install -Su ksnip sudo xbps-install -Su telegram-desktop
sudo xbps-install -Su nerd-fonts-ttf
sudo xbps-install -Su scrot
sudo xbps-install -Su scrot
sudo xbps-install -Su nigrogen
sudo xbps-install -Su nitrogen
sudo xbps-install -Su xkbswitch
sudo xbps-install -Su setxkbmap
sudo xbps-install -Su xonotic
sudo xbps-install -Su pulsemixer
sudo xbps-install -Su emacs
sudo xbps-install -Su emacs-x11
sudo xbps-install -Su emacs-gtk3
sudo xbps-install -Su xkb-switch
sudo xbps-install -Su gajim
sudo xbps-install -Su python-pip
sudo xbps-install -Su pip
sudo xbps-install -Su python3-pip
sudo xbps-install -Su libcaribou
sudo xbps-install -Su xtools
sudo xbps-install -Su python3-gi
sudo xbps-install -Su python3-cario
sudo xbps-install -Su python3-cairo
sudo xbps-install -Su python3-cairo-devel
sudo xbps-install -Su python-gobject
sudo xbps-install -Su python-gobject-devel
sudo xbps-install -Su python-gobject2-devel
sudo xbps-install -Su gajim
sudo xbps-install -Su gajim-omemo
sudo xbps-install -Su dino
xi libcairo2
xi libcairo
xi cario
xi cario-devel
xi python3-gi
xi keepmenu
xi electrum-ltc
xi pipewire
xi tmux
xi xf86-input-synaptics-devel
xi thunderbird
xi element-desktop
xi unzip
xi wget
xi ttf-ubuntu-font-family
xi syncthing
xi strawberry
xi kvantum
xi papirus-icon-theme
xi noto-fonts-emoji rofi-emoji twemoji unicode-emoji
xi bluez
xi bluedevil
xi blueman
xi bluedevil
xi bluez
xi bluez-qt5
xi rofi-emoji
xi xsel xclip
xi cmatrix
xi libreoffice