Add BSPWM config, clean dont't use configs

This commit is contained in:
Smirnov Olexandr 2021-01-22 11:27:54 +02:00
parent ed62788b9e
commit 246dc34d13
28 changed files with 303 additions and 727 deletions

View file

@ -21,6 +21,14 @@ Since i use **[rcm](https://github.com/thoughtbot/rcm)** set it:
yay -S rcm yay -S rcm
~~~ ~~~
Install deps:
~~~bash
sudo pacman -S neovim tmux git i3wm bspwm sxhkd qtile alacritty picom dunst ranger firefox ttf-font-awesome ttf-jetbrains-mono rofi zsh zathura redshift
yay -S polybar
pip install -U castero
~~~
And install configs: And install configs:
~~~bash ~~~bash
git clone https://github.com/Smirnov-O/dotfiles .dotfiles git clone https://github.com/Smirnov-O/dotfiles .dotfiles

View file

@ -1,7 +0,0 @@
Scripts:
- `arch_upd`: Update packages(pacman, aur). Only arch.
- `extract`: Extract archive.
- `giti`: Gitignore manager(For help exec: __giti help__).
- `kbhl`: Enable/disable keyboard highlight scrlock.
- `local-ip`: Get local IP addres.
- `public-ip`: Get public IP addres.

4
config/bspwm/bar.sh Executable file
View file

@ -0,0 +1,4 @@
#!/bin/bash
killall -q polybar
while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done
polybar -c ~/.config/bspwm/polybar bar&

49
config/bspwm/bspwmrc Executable file
View file

@ -0,0 +1,49 @@
#!/bin/sh
# Smirnov-O <ss2316544@gmail.com>
# BSPWM config file
## == Functions
Run() {
if ! pgrep $1; then $@& fi
}
## == Autostart
setxkbmap "us,ua" ",winkeys" "grp:alt_shift_toggle" -option "ctrl:nocaps" &
Run sxhkd -c .config/bspwm/sxhkd &
~/.config/bspwm/bar.sh &
Run nitrogen --restore &
Run lxsession &
Run picom &
## == BSPWM
bspc monitor -d 1 2 3 4 5 6 7 8 9
bspc config border_width 2
bspc config window_gap 8
bspc config split_ratio 0.52
bspc config borderless_monocle true
bspc config gapless_monocle true
bspc config click_to_focus true
bspc config single_monocle false
bspc config borderless_monocle true
# Colors
bspc config normal_border_color "#262A2B"
bspc config active_border_color "#1F2324"
bspc config focused_border_color "#008DCD"
bspc config presel_feedback_color "#51AFEF"
bspc config urgent_border_color "#FF6C6B"
# Rules
bspc rule -a Alacritty desktop='^1' focus=on follow=on
bspc rule -a firefox desktop='^2' focus=on
bspc rule -a VSCodium desktop='^3' focus=on follow=on
bspc rule -a '*:nvim' desktop='^3' focus=on follow=on
bspc rule -a '*:ranger' desktop='^4' focus=on follow=on
bspc rule -a Thunar desktop='^4' focus=on follow=on
bspc rule -a Joplin desktop='^5' focus=on
bspc rule -a discord descord='^6' focus=on
bspc rule -a TelegramDesktop descord='^6' focus=on
bspc rule -a Spotify descord='^9' focus=on
bspc rule -a google-tasks-desktop state=floating

99
config/bspwm/polybar Normal file
View file

@ -0,0 +1,99 @@
[settings]
enable-ipc = true
screenchange-reload = true
pseudo-transparency = true
[colors]
background = #262A2B
foreground = #DFDFDF
secondary = #008DCD
alert = #FF6C6B
[bar/bar]
width = 100%
height = 24
fixed-center = true
background = ${colors.background}
foreground = ${colors.foreground}
wm-restack = bspwm
module-margin-left = 1
module-margin-right = 1
font-0 = Iosevka Nerd Font:style=Medium:size=8;3
font-1 = FontAwesome5Free:style=Solid:size=7.5;2.5
modules-left = windowname
modules-center = bspwm
modules-right = pulseaudio archupd wifi-signal weather memory cpu keyboard time date
tray-position = right
[module/bspwm]
type = internal/bspwm
pin-workspaces = true
enable-click = true
fuzzy-match = true
enable-scroll = true
label-focused = 
label-focused-foreground = ${colors.secondary}
label-focused-padding = 2
label-occupied = 
label-occupied-foreground = ${colors.foreground}
label-occupied-padding = 2
label-urgent = 
label-urgent-foreground = ${colors.alert}
label-urgent-padding = 2
label-empty = 
label-empty-foreground = #58676C74
label-empty-padding = 2
[module/pulseaudio]
type = internal/pulseaudio
interval = 2
format-volume = <ramp-volume> <label-volume>
label-volume = %percentage%%
label-volume-foreground = ${root.foreground}
label-muted = 
ramp-volume-0 = 
[module/weather]
type = custom/script
exec = python3 ~/.config/polybar/scripts/weather.py
interval = 60
[module/archupd]
type = custom/script
exec = ~/.config/polybar/scripts/updates-pacman-aur.sh
interval = 60
[module/keyboard]
type = internal/xkeyboard
format-prefix = ""
label-layout =  %layout%
blacklist-0 = num lock
blacklist-1 = scroll lock
blacklist-2= caps lock
[module/cpu]
type = internal/cpu
format-prefix = " "
interval = 2
[module/memory]
type = internal/memory
interval = 2
label = %percentage_used%%
format-prefix = " "
[module/windowname]
type = internal/xwindow
label = %title%
label-maxlen = 90
[module/date]
type = internal/date
interval = 600
date = %d.%m.%Y
label =  %date%
[module/time]
type = internal/date
time = %H:%M
label =  %time%

BIN
config/bspwm/screen.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1 MiB

91
config/bspwm/sxhkd Normal file
View file

@ -0,0 +1,91 @@
# Smirnov-O <ss2316544@gmail.com>
# BSPWM/SXKBD config file
## == USER keys
super + Return
alacritty
super + shift + w
firefox
super + shift + f
alacritty --class="ranger" -e ranger
super + shift + e
alacritty --class="nvim" -e nvim
super + shift + c
vscodium
super + shift + d
org.zealdocs.Zeal
super + shift + q
xkill
## == USER Menus
super + shift + Return
rofi -location 2 -show drun
super + Escape
~/.script/dmenu/dmenu-power.sh
super + ctrl + i
passmenu -h 24 -p Passwords
super + ctrl + u
~/.script/dmenu/dmenu-config-edit.sh
## == BSPWM keys
super + q
bspc node -{c,k}
super + control + r
bspc wm -r && pkill -USR1 -x sxhkd
## == BSPWM windows
## Resize window
super + ctrl + {h,j,k,l}
bspc node -z {right -20 0,top 0 20,bottom 0 -20,left 20 0}
# Resize floating window
#super + shift + {h,j,k,l}
# bspc node -v {-20 0,0 20,0 -20,20 0}
# Change focus & move focus window
super + {_,shift + }{h,j,k,l}
bspc node -{f,s} {west,south,north,east}
# Change focus window
super + {_,shift + }c
bspc node -f {next,prev}.local.!hidden.window
# Preselect the direction
super + alt + {h,j,k,l}
bspc node -p {west,south,north,east}
# Preselect the ratio
super + alt + {1-9}
bspc node -o 0.{1-9}
# Cancel the preselection
super + ctrl + space
bspc node -p cancel
## == BSPWM workspace
## Next/Prev workspace
super + bracket{left,right}
bspc desktop -f {prev,next}.local
# Change WP & send window to WP
super + {_,shift + }{1-9}
bspc {desktop -f,node -d} focused:'^{1-9}'
## == BSPWM windwo layouts
# Set window layouts for specific window
super + {t,shift + t,s,f}
bspc node -t {tiled,pseudo_tiled,floating,fullscreen}
# Change windows layout
super + ctrl + {m,x,y,z}
bspc node -g {marked,locked,sticky,private}

View file

@ -1,13 +0,0 @@
# DWM
![Screenhot](screen.png)
------------------------
### Install
~~~bash
git clone https://git.suckless.org/dwm ~/.config/dwm
sudo cp ~/.config/dwm/dwm.desktop /usr/share/xsessions
cd ~/.config/dwm
sudo make clean install
~~~~

View file

@ -1,6 +0,0 @@
#!/bin/sh
xautolock -time 5 -locker "betterlockscreen --off 300 -t \"Computer is lockerd\" -l" &
setxkbmap "us,ua" ",winkeys" "grp:alt_shift_toggle" -option "ctrl:nocaps" &
nitrogen --restore &
lxsession &
picom -b &

View file

@ -1,125 +0,0 @@
static const unsigned int borderpx = 1; // border pixel of windows
static const unsigned int snap = 32; // snap pixel
static const int showbar = 1; // 0 means no bar
static const int topbar = 1; // 0 means bottom bar
static const char *fonts[] = { "monospace:size=10" };
static const char col_gray1[] = "#262A2B";
static const char col_gray2[] = "#262A2B";
static const char col_gray3[] = "#CED4DA";
static const char col_gray4[] = "#FFFFFF";
static const char col_cyan[] = "#008DCD";
static const char *colors[][3] = {
[SchemeNorm] = { col_gray3, col_gray1, col_gray2 },
[SchemeSel] = { col_gray4, col_cyan, col_cyan },
};
// Workspaces names
//static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
static const char *tags[] = { "", "", "", "", "", "", "", "", "" };
// Rules
static const Rule rules[] = {
{ "Gimp", NULL, NULL, 0, 1, -1 },
{ "Firefox", NULL, NULL, 1 << 8,0, -1 },
};
// Autostart
static const char *const autostart[] = {
"./.config/dwm/autostart.sh", NULL,
"./.script/dwmbar.sh", NULL,
NULL
};
// Layout
static const float mfact = 0.55; // factor of master area size [0.05..0.95]
static const int nmaster = 1; // number of clients in master area
static const int resizehints = 1; // 1 means respect size hints in tiled resizals
static const Layout layouts[] = {
{ "[]=", tile },
{ "><>", NULL },
{ "[M]", monocle },
};
// Key definitions
#define MODKEY Mod4Mask
#define TAGKEYS(KEY,TAG) \
{ MODKEY, KEY, view, {.ui = 1 << TAG} }, \
{ MODKEY|ControlMask, KEY, toggleview, {.ui = 1 << TAG} }, \
{ MODKEY|ShiftMask, KEY, tag, {.ui = 1 << TAG} }, \
{ MODKEY|ControlMask|ShiftMask, KEY, toggletag, {.ui = 1 << TAG} },
#define SHCMD(cmd) { .v = (const char*[]){ "/bin/sh", "-c", cmd, NULL } }
// Commands
static char dmenumon[2] = "0";
static const char *dmenucmd[] = { "dmenu_run", NULL };
static const char *launchercmd[] = { "rofi", "-location", "2", "-show", "drun", NULL };
static const char *passmenucmd[] = { "passmenu", "-h", "24", "-p", "Passwords", NULL };
static const char *dmenuconfig[] = { "./.script/dmenu/dmenu-config-edit.sh", NULL };
static const char *dmenupower[] = { "./.script/dmenu/dmenu-power.sh", NULL };
static const char *browsercmd[] = { "firefox", NULL };
static const char *filemanager[] = { "thunar", NULL };
static const char *codeeditor[] = { "alacritty", "-e", "nvim", NULL };
static const char *termcmd[] = { "alacritty", NULL };
// Keyboards binds
static Key keys[] = {
// User keys
{ MODKEY, XK_b, togglebar, {0} }, // Toggle status bar
{ MODKEY, XK_q, killclient, {0} }, // Kill window
{ MODKEY, XK_Return, spawn, {.v = termcmd } }, // Terminal
{ MODKEY|ShiftMask, XK_w, spawn, {.v = browsercmd } }, // Browser
{ MODKEY|ShiftMask, XK_f, spawn, {.v = filemanager } }, // File manager
{ MODKEY|ShiftMask, XK_e, spawn, {.v = codeeditor } }, // File manager
// Menus
{ MODKEY|ShiftMask, XK_Return, spawn, {.v = launchercmd } }, // Program menu
{ MODKEY|ControlMask, XK_i, spawn, {.v = passmenucmd } }, // Password menu
{ MODKEY|ControlMask, XK_u, spawn, {.v = dmenuconfig } }, // Configuration menu
{ MODKEY, XK_Escape, spawn, {.v = dmenupower } }, // Power menu
// Volume
{ MODKEY, XK_minus, spawn, SHCMD("amixer sset 'Master' 2%-") },
{ MODKEY, XK_equal, spawn, SHCMD("amixer sset 'Master' 2%+") },
{ MODKEY|ShiftMask, XK_minus, spawn, SHCMD("amixer sset 'Master' toggle") },
// DWM keys
{ MODKEY, XK_Tab, setlayout, {0} }, // Change layout
{ MODKEY|ShiftMask, XK_Tab, togglefloating, {0} }, // Set floating layout
{ MODKEY, XK_j, focusstack, {.i = +1 } },
{ MODKEY, XK_k, focusstack, {.i = -1 } },
{ MODKEY, XK_i, incnmaster, {.i = +1 } },
{ MODKEY, XK_d, incnmaster, {.i = -1 } },
{ MODKEY, XK_h, setmfact, {.f = -0.05} },
{ MODKEY, XK_l, setmfact, {.f = +0.05} },
{ MODKEY, XK_Return, zoom, {0} },
// Workspaces
TAGKEYS( XK_1, 0)
TAGKEYS( XK_2, 1)
TAGKEYS( XK_3, 2)
TAGKEYS( XK_4, 3)
TAGKEYS( XK_5, 4)
TAGKEYS( XK_6, 5)
TAGKEYS( XK_7, 6)
TAGKEYS( XK_8, 7)
TAGKEYS( XK_9, 8)
{ MODKEY, XK_0, view, {.ui = ~0 } },
{ MODKEY|ShiftMask, XK_0, tag, {.ui = ~0 } },
};
// Mouse binds
static Button buttons[] = {
// click event mask button function argument
{ ClkLtSymbol, 0, Button1, setlayout, {0} },
{ ClkLtSymbol, 0, Button3, setlayout, {.v = &layouts[2]} },
{ ClkWinTitle, 0, Button2, zoom, {0} },
{ ClkStatusText, 0, Button2, spawn, {.v = termcmd } },
{ ClkClientWin, MODKEY, Button1, movemouse, {0} },
{ ClkClientWin, MODKEY, Button2, togglefloating, {0} },
{ ClkClientWin, MODKEY, Button3, resizemouse, {0} },
{ ClkTagBar, 0, Button1, view, {0} },
{ ClkTagBar, 0, Button3, toggleview, {0} },
{ ClkTagBar, MODKEY, Button1, tag, {0} },
{ ClkTagBar, MODKEY, Button3, toggletag, {0} },
};

View file

@ -1,116 +0,0 @@
diff --git a/config.def.h b/config.def.h
index 1c0b587..ed056a4 100644
--- a/config.def.h
+++ b/config.def.h
@@ -18,6 +18,11 @@ static const char *colors[][3] = {
[SchemeSel] = { col_gray4, col_cyan, col_cyan },
};
+static const char *const autostart[] = {
+ "st", NULL,
+ NULL /* terminate */
+};
+
/* tagging */
static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
diff --git a/dwm.c b/dwm.c
index 9fd0286..1facd56 100644
--- a/dwm.c
+++ b/dwm.c
@@ -234,6 +234,7 @@ static int xerror(Display *dpy, XErrorEvent *ee);
static int xerrordummy(Display *dpy, XErrorEvent *ee);
static int xerrorstart(Display *dpy, XErrorEvent *ee);
static void zoom(const Arg *arg);
+static void autostart_exec(void);
/* variables */
static const char broken[] = "broken";
@@ -275,6 +276,34 @@ static Window root, wmcheckwin;
/* compile-time check if all tags fit into an unsigned int bit array. */
struct NumTags { char limitexceeded[LENGTH(tags) > 31 ? -1 : 1]; };
+/* dwm will keep pid's of processes from autostart array and kill them at quit */
+static pid_t *autostart_pids;
+static size_t autostart_len;
+
+/* execute command from autostart array */
+static void
+autostart_exec() {
+ const char *const *p;
+ size_t i = 0;
+
+ /* count entries */
+ for (p = autostart; *p; autostart_len++, p++)
+ while (*++p);
+
+ autostart_pids = malloc(autostart_len * sizeof(pid_t));
+ for (p = autostart; *p; i++, p++) {
+ if ((autostart_pids[i] = fork()) == 0) {
+ setsid();
+ execvp(*p, (char *const *)p);
+ fprintf(stderr, "dwm: execvp %s\n", *p);
+ perror(" failed");
+ _exit(EXIT_FAILURE);
+ }
+ /* skip arguments */
+ while (*++p);
+ }
+}
+
/* function implementations */
void
applyrules(Client *c)
@@ -1249,6 +1278,16 @@ propertynotify(XEvent *e)
void
quit(const Arg *arg)
{
+ size_t i;
+
+ /* kill child processes */
+ for (i = 0; i < autostart_len; i++) {
+ if (0 < autostart_pids[i]) {
+ kill(autostart_pids[i], SIGTERM);
+ waitpid(autostart_pids[i], NULL, 0);
+ }
+ }
+
running = 0;
}
@@ -1632,9 +1671,25 @@ showhide(Client *c)
void
sigchld(int unused)
{
+ pid_t pid;
+
if (signal(SIGCHLD, sigchld) == SIG_ERR)
die("can't install SIGCHLD handler:");
- while (0 < waitpid(-1, NULL, WNOHANG));
+ while (0 < (pid = waitpid(-1, NULL, WNOHANG))) {
+ pid_t *p, *lim;
+
+ if (!(p = autostart_pids))
+ continue;
+ lim = &p[autostart_len];
+
+ for (; p < lim; p++) {
+ if (*p == pid) {
+ *p = -1;
+ break;
+ }
+ }
+
+ }
}
void
@@ -2139,6 +2194,7 @@ main(int argc, char *argv[])
if (!(dpy = XOpenDisplay(NULL)))
die("dwm: cannot open display");
checkotherwm();
+ autostart_exec();
setup();
#ifdef __OpenBSD__
if (pledge("stdio rpath proc exec", NULL) == -1)

View file

@ -1,7 +0,0 @@
[Desktop Entry]
Encoding=UTF-8
Name=Dwm
Comment=Dynamic window manager
Exec=dwm
Icon=dwm
Type=XSession

Binary file not shown.

Before

Width:  |  Height:  |  Size: 415 KiB

View file

@ -18,13 +18,14 @@ hide_edge_borders smart
############ Variables ########### ############ Variables ###########
set $terminal alacritty set $terminal alacritty
set $browser firefox set $browser firefox
set $filemanager thunar set $filemanager alacritty -e ranger
set $codeeditor alacritty -e nvim set $codeeditor alacritty -e nvim
set $guicode vscodium set $guicode vscodium
set $documentationreader org.zealdocs.Zeal
############ Autostart ############ ############ Autostart ############
exec --no-startup-id exec setxkbmap "us,ua" ",winkeys" "grp:alt_shift_toggle" -option "ctrl:nocaps" exec --no-startup-id exec setxkbmap "us,ua" ",winkeys" "grp:alt_shift_toggle" -option "ctrl:nocaps"
exec --no-startup-id exec picom --experimental-backends -b exec_always --no-startup-id exec picom --experimental-backends -b
exec_always --no-startup-id exec $HOME/.config/i3/bar.sh exec_always --no-startup-id exec $HOME/.config/i3/bar.sh
exec --no-startup-id exec nitrogen --restore exec --no-startup-id exec nitrogen --restore
exec --no-startup-id exec lxsession exec --no-startup-id exec lxsession
@ -75,6 +76,7 @@ bindsym $mod+Shift+w exec $browser
bindsym $mod+Shift+f exec $filemanager bindsym $mod+Shift+f exec $filemanager
bindsym $mod+Shift+e exec $codeeditor bindsym $mod+Shift+e exec $codeeditor
bindsym $mod+Shift+c exec $guicode bindsym $mod+Shift+c exec $guicode
bindsym $mod+Shift+d exec $documentationreader
# Toogle polybar # Toogle polybar
bindsym $mod+b exec ~/.script/polybar-toggle bindsym $mod+b exec ~/.script/polybar-toggle
@ -93,6 +95,7 @@ bindsym $mod+Shift+minus exec "amixer sset Master toggle"
######### Window preferens ######## ######### Window preferens ########
assign [class="(?i)telegram|discord"] $ws6 assign [class="(?i)telegram|discord"] $ws6
for_window [title="Google Tasks"] floating enable
for_window [class="(?i)telegram|discord"] layout tabbed for_window [class="(?i)telegram|discord"] layout tabbed
focus_on_window_activation focus focus_on_window_activation focus

View file

@ -2,10 +2,11 @@ call plug#begin('~/.vim/plugged')
Plug 'Smirnov-O/nten16.vim' " Color scheme Plug 'Smirnov-O/nten16.vim' " Color scheme
Plug 'itchyny/lightline.vim' " Status line Plug 'itchyny/lightline.vim' " Status line
Plug 'airblade/vim-gitgutter' " Git indicator Plug 'airblade/vim-gitgutter' " Git indicator
Plug 'preservim/nerdtree' " File viewer
Plug 'ap/vim-css-color' " CSS color preview Plug 'ap/vim-css-color' " CSS color preview
Plug 'mhinz/vim-startify' " Start page Plug 'mhinz/vim-startify' " Start page
Plug 'dense-analysis/ale' " Linter Plug 'dense-analysis/ale' " Linter
Plug 'kassio/neoterm' " Terminal wrapper
Plug 'aurieh/discord.nvim' " Discord rich
Plug 'editorconfig/editorconfig-vim' " EditorConfig support Plug 'editorconfig/editorconfig-vim' " EditorConfig support
" Completion & snippets " Completion & snippets
@ -17,10 +18,11 @@ call plug#begin('~/.vim/plugged')
Plug 'metakirby5/codi.vim' Plug 'metakirby5/codi.vim'
Plug 'plasticboy/vim-markdown', {'for': 'markdown'} Plug 'plasticboy/vim-markdown', {'for': 'markdown'}
Plug 'vim-python/python-syntax', {'for': 'python'} Plug 'vim-python/python-syntax', {'for': 'python'}
Plug 'fatih/vim-go', {'for': 'go'}
Plug 'PotatoesMaster/i3-vim-syntax', {'for': 'i3'} Plug 'PotatoesMaster/i3-vim-syntax', {'for': 'i3'}
Plug 'kovetskiy/sxhkd-vim'
call plug#end() call plug#end()
" Theme " Theme
set termguicolors set termguicolors
colorscheme nten16 colorscheme nten16
@ -93,17 +95,6 @@ let g:vim_markdown_folding_disabled = 1
let g:vim_markdown_frontmatter = 1 let g:vim_markdown_frontmatter = 1
let g:markdown_fenced_languages = ['go', 'python', 'bash', 'sh=bash'] let g:markdown_fenced_languages = ['go', 'python', 'bash', 'sh=bash']
" Go
let g:go_template_autocreate = 0
let g:go_highlight_structs = 1
let g:go_highlight_methods = 1
let g:go_highlight_functions = 1
let g:go_highlight_operators = 1
let g:go_highlight_build_constraints = 1
let g:go_snippet_engine = ""
let g:go_fmt_command = "goimports"
let g:go_auto_type_info = 1
" == Plugins configuration " == Plugins configuration
let g:lightline = { let g:lightline = {

View file

@ -9,6 +9,12 @@ import (
) )
endsnippet endsnippet
snippet fn "Function"
func ${1:main}(${2:arg} ${3:type}) ${4:type} (
${5}
)
endsnippet
snippet for "For loop" snippet for "For loop"
for ${1:i\:\=1}; ${2:i\<\=10}; ${3:\i\+\+} { for ${1:i\:\=1}; ${2:i\<\=10}; ${3:\i\+\+} {
${4} ${4}

View file

@ -13,13 +13,16 @@ shadow-exclude = [
]; ];
############ Fading ########### ############ Fading ###########
fading = false; fading = true;
fade-in-step = 0.03; fading-openclose = true;
fade-out-step = 0.03; fade-in-step = 1;
fade-out-step = 1;
fade-delta = 0;
##### Transparency/Opacity #### ##### Transparency/Opacity ####
inactive-opacity = 1; inactive-opacity = 1;
frame-opacity = 0.7; active-opacity = 1;
frame-opacity = 0.8;
inactive-opacity-override = false; inactive-opacity-override = false;
focus-exclude = []; focus-exclude = [];
opacity-exclude = [ "class_g = 'openbox'" ]; opacity-exclude = [ "class_g = 'openbox'" ];
@ -27,6 +30,7 @@ opacity-rule = [ "0:_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'" ];
no-fading-openclose = true no-fading-openclose = true
##### Background-Blurring ##### ##### Background-Blurring #####
blur = false;
#blur-method = "dual_kawase"; #blur-method = "dual_kawase";
#blur-strength = 5; #blur-strength = 5;
#blur-kern = "3x3box"; #blur-kern = "3x3box";
@ -36,6 +40,7 @@ no-fading-openclose = true
####### General Settings ###### ####### General Settings ######
backend = "glx"; backend = "glx";
vsync = true; vsync = true;
xrender-sync-fence = true;
mark-wmwin-focused = true; mark-wmwin-focused = true;
mark-ovredir-focused = true; mark-ovredir-focused = true;
glx-no-stencil = true glx-no-stencil = true
@ -49,11 +54,11 @@ use-damage = true;
log-level = "warn"; log-level = "warn";
wintypes: { wintypes: {
tooltip = { fade = true; shadow = false; opacity = 1; focus = true; full-shadow = false; }; tooltip = { fade = true; shadow = false; opacity = 1; focus = true; full-shadow = false; };
menu = { fade = true; shadow = false; opacity = 1; }; menu = { fade = true; shadow = false; opacity = false; };
popup_menu = { fade = true; shadow = false; }; popup_menu = { fade = true; shadow = false; opacity = false; };
dropdown_menu = { fade = true; shadow = false; }; dropdown_menu = { fade = true; shadow = false; opacity = false; };
utility = { fade = true; shadow = false; }; utility = { fade = true; shadow = false; opacity = false; };
dialog = { fade = true; shadow = false; }; dialog = { fade = true; shadow = false; opacity = false; };
notify = { fade = true; shadow = true; }; notify = { fade = true; shadow = true; opacity = false; };
unknown = { fade = true; shadow = false; }; unknown = { fade = true; shadow = false; opacity = false; };
}; };

View file

@ -9,7 +9,7 @@ foreground = #DFDFDF
secondary = #008DCD secondary = #008DCD
alert = #FF6C6B alert = #FF6C6B
[bar/i3bar] [bar/bar]
monitor = ${env:MONITOR_MIDDLE} monitor = ${env:MONITOR_MIDDLE}
width = 100% width = 100%
height = 24 height = 24
@ -23,64 +23,18 @@ module-margin-right = 1
font-0 = Iosevka Nerd Font:style=Medium:size=8;3 font-0 = Iosevka Nerd Font:style=Medium:size=8;3
font-1 = FontAwesome5Free:style=Solid:size=7.5;2.5 font-1 = FontAwesome5Free:style=Solid:size=7.5;2.5
font-2 = Weather Icons:size=7;2 font-2 = Weather Icons:size=7;2
modules-left = i3 menu pacman-up window-name modules-left = i3 pacman-up window-name
modules-right = pulseaudio backlight wifi-signal keyboard time date modules-right = pulseaudio backlight wifi-signal keyboard time date
tray-position = right tray-position = right
[module/i3] [module/bspwm]
type = internal/i3 type = internal/bspwm
format = <label-state><label-mode> pin-workspaces = true
index-sort = false inline-mode = false
wrapping-scroll = false enable-click = false
label-mode-padding = 1 enable-scroll = false
label-mode-background = ${colors.alert} reverse-scroll = false
fuzzy-match = true
label-focused = %icon%
label-focused-background = ${colors.secondary}
label-focused-foreground = ${colors.foreground}
label-focused-padding = 1
label-focused-underline = ${colors.alert}
label-unfocused = %icon%
label-unfocused-foreground = ${colors.foreground}
label-unfocused-padding = 1
label-urgent = %icon%
label-urgent-background = ${colors.alert}
label-urgent-foreground = ${colors.foreground}
label-urgent-padding = 1
label-urgent-underline = ${colors.alert}
label-visible = %icon%
label-visible-background = ${colors.background}
label-visible-foreground = ${colors.foreground}
label-visible-padding = 1
label-visible-underline = ${colors.background}
ws-icon-0 = "1;1 "
ws-icon-1 = "2;2 "
ws-icon-2 = "3;3 "
ws-icon-3 = "4;4 "
ws-icon-4 = "5;5 "
ws-icon-5 = "6;6 "
ws-icon-6 = "7;7 "
ws-icon-7 = "8;8 "
ws-icon-8 = "9;9 "
[module/backlight]
type = internal/xbacklight
format = <ramp> <label>
label = %percentage%%
ramp-0 = 
[module/wifi-name]
type = internal/network
interface = wlp3s0
format-connected = <ramp-signal> <label-connected>
label-connected = %essid%
format-disconnected =
ramp-signal-0 = 
interval = 3
[module/wifi-signal] [module/wifi-signal]
type = custom/script type = custom/script

View file

@ -5,25 +5,10 @@ import os
API_KEY = os.getenv("OWM_POLYBAR") API_KEY = os.getenv("OWM_POLYBAR")
CITY = "Horodnytsya,UA" CITY = os.getenv("OWM_CITY")
try: JSON = requests.get(f"http://api.openweathermap.org/data/2.5/weather?q={CITY}&lang=EN&&units=metric&appid={API_KEY}").json()
except Exception as a: print("No connection ")
try: try:
if JSON['weather'][0]['main'] == "Clear": print("", int(JSON["main"]["temp"]),"°С") JSON = requests.get(f"http://api.openweathermap.org/data/2.5/weather?q={CITY}&lang=EN&&units=metric&appid={API_KEY}").json()
elif JSON['weather'][0]['main'] == "Thunderstorm": print("", int(JSON["main"]["temp"]),"°С") print("", int(JSON["main"]["temp"]), "°С")
elif JSON['weather'][0]['main'] == "Drizzle": print("", int(JSON["main"]["temp"]),"°С") except:
elif JSON['weather'][0]['main'] == "Rain": print("", int(JSON["main"]["temp"]),"°С") print(" err °С")
elif JSON['weather'][0]['main'] == "Snow": print("", int(JSON["main"]["temp"]),"°С")
elif JSON['weather'][0]['main'] == "Mist": print("", int(JSON["main"]["temp"]),"°С")
elif JSON['weather'][0]['main'] == "Smoke": print("", int(JSON["main"]["temp"]),"°С")
elif JSON['weather'][0]['main'] == "Haze": print("", int(JSON["main"]["temp"]),"°С")
elif JSON['weather'][0]['main'] == "Dust": print("", int(JSON["main"]["temp"]),"°С")
elif JSON['weather'][0]['main'] == "Fog": print("", int(JSON["main"]["temp"]),"°С")
elif JSON['weather'][0]['main'] == "Sand": print("", int(JSON["main"]["temp"]),"°С")
elif JSON['weather'][0]['main'] == "Ash": print("", int(JSON["main"]["temp"]),"°С")
elif JSON['weather'][0]['main'] == "Squall": print("", int(JSON["main"]["temp"]),"°С")
elif JSON['weather'][0]['main'] == "Tornado": print("", int(JSON["main"]["temp"]),"°С")
elif JSON['weather'][0]['main'] == "Clouds": print("", int(JSON["main"]["temp"]),"°С")
except Exception as e: print(int(JSON["main"]["temp"]),"°С")

View file

@ -7,7 +7,6 @@
selected-foreground: #ffffff; selected-foreground: #ffffff;
} }
#window { #window {
/* location: north; */
width: 100%; width: 100%;
height: 24px; height: 24px;
padding: 0px; padding: 0px;
@ -26,6 +25,8 @@
#listview { #listview {
layout: horizontal; layout: horizontal;
spacing: 0px; spacing: 0px;
fixed-height: false;
dynamic: true;
lines: 100; lines: 100;
} }
#entry { #entry {

View file

@ -1,25 +0,0 @@
highlight clear
highlight Win cterm=none ctermfg=default ctermbg=default
highlight Directory cterm=bold ctermfg=blue ctermbg=default
highlight Link cterm=bold ctermfg=cyan ctermbg=default
highlight BrokenLink cterm=bold ctermfg=red ctermbg=default
highlight Socket cterm=bold ctermfg=magenta ctermbg=default
highlight Device cterm=bold ctermfg=red ctermbg=default
highlight Fifo cterm=bold ctermfg=cyan ctermbg=default
highlight Executable cterm=bold ctermfg=green ctermbg=default
highlight Selected cterm=bold ctermfg=magenta ctermbg=default
highlight CurrLine cterm=bold,reverse ctermfg=4 ctermbg=black
highlight TopLine cterm=none ctermfg=white ctermbg=32
highlight TopLineSel cterm=bold ctermfg=white ctermbg=default
highlight StatusLine cterm=bold ctermfg=white ctermbg=default
highlight WildMenu cterm=underline,reverse ctermfg=white ctermbg=black
highlight CmdLine cterm=none ctermfg=white ctermbg=default
highlight ErrorMsg cterm=none ctermfg=red ctermbg=default
highlight Border cterm=none ctermfg=default ctermbg=default
highlight JobLine cterm=bold,reverse ctermfg=black ctermbg=white
highlight SuggestBox cterm=bold ctermfg=default ctermbg=default
highlight CmpMismatch cterm=bold ctermfg=white ctermbg=red
highlight AuxWin cterm=bold,underline,reverse,standout,italic ctermfg=default ctermbg=default
highlight TabLine cterm=none ctermfg=white ctermbg=default
highlight TabLineSel cterm=bold,reverse ctermfg=default ctermbg=default

View file

@ -1,93 +0,0 @@
colorscheme nten16
set vicmd=nvim
set syscalls
view
set history=100
set nofollowlinks
set sortnumbers
set undolevels=100
set norunexec
set timefmt=%m/%d\ %H:%M
set wildmenu
set wildstyle=popup
set suggestoptions=normal,visual,view,otherpane,keys,marks,registers
set ignorecase
set smartcase
set nohlsearch
set incsearch
set scrolloff=4
set trashdir=$HOME/.local/share/Trash/files
set vifminfo=dhistory,chistory,state,shistory,phistory,fhistory,dirstack,registers,bookmarks,bmarks
" === commands
command! zip zip -r %f.zip %f
command! targz tar -czvf %f.tar.gz %f
set rulerformat=
" === Key maps
nmap q ZQ
nnoremap gg ggj
nnoremap ! :shell<cr>
nnoremap w :view<cr>
nnoremap S :sort<cr>
nnoremap se :!$HOME/bin/extract %f &<cr>
nnoremap sa :!zip -r %f.zip %f
nnoremap ss :!tar -czvf %f.tar.gz @f
" === files
filetype *.csv,*.xlsx libreoffice %c %i
fileviewer *.csv sed "s/,,,,/,,-,,/g;s/,,/ /g" %c | column -t | sed "s/ - / /g" | cut -c -%pw
fileviewer *.html w3m -dump %c
filextype *.html,*.htm qutebrowser %f 2>/dev/null &
filetype <text/*> nvim
fileviewer <text/*> env -uCOLORTERM bat --color always --wrap never --pager never %c -p
filextype *.pdf zathura %c %i &
fileviewer *.pdf
\ vifmimg pdfpreview %px %py %pw %ph %c
\ %pc
\ vifmimg clear
" \ pdftotext -nopgbrk %c -
filetype <audio/*> mocp %c %i &
filetype <video/*> mpv %c %i &
filextype <image/*> sxiv %c %i &
fileviewer *.bmp,*.jpg,*.jpeg,*.png,*.xpm
\ ~/.config/vifm/vifmimg draw %px %py %pw %ph %c
\ %pc
\ ~/.config/vifm/vifmimg clear
filextype *.py nvim %c %i &
fileviewer *.zip,*.jar zip -sf %c
fileviewer *.tgz,*.tar.gz tar -tzf %c
fileviewer *.tar tar -tf %c
fileviewer *.rar unrar v %c
fileviewer *.7z 7z l %c
fileviewer */ ls --color --group-directories-first
fileviewer .*/ ls --color --group-directories-first
filetype * xdg-open %c
fileviewer * file -b %c
" go keys
nnoremap gh :cd ~<cr>
nnoremap gc :cd ~/Code<cr>
nnoremap gd :cd ~/Documents<cr>
nnoremap gb :cd ~/Documents/Books<cr>
nnoremap gm :cd ~/.dotfiles<cr>
nnoremap gn :cd ~/bin<cr>
nnoremap gz :cd ~/.script<cr>
" === file icons
set classify=' :dir:/, :exe:, :reg:, :link:'
set classify+=' ::../::, ::*.sh::, ::*.[hc]pp::, ::*.[hc]::, ::/^copying|license$/::, ::.git/,,*.git/::, ::*.epub,,*.fb2,,*.djvu::, ::*.pdf::, ::*.htm,,*.html,,**.[sx]html,,*.xml::'
set classify+=' ::*.7z,,*.ace,,*.arj,,*.bz2,,*.cpio,,*.deb,,*.dz,,*.gz,,*.jar,,*.lzh,,*.lzma,,*.rar,,*.rpm,,*.rz,,*.tar,,*.taz,,*.tb2,,*.tbz,,*.tbz2,,*.tgz,,*.tlz,,*.trz,,*.txz,,*.tz,,*.tz2,,*.xz,,*.z,,*.zip,,*.zoo::'
set classify+=' ::*.bmp,,*.gif,,*.jpeg,,*.jpg,,*.ico,,*.png,,*.ppm,,*.svg,,*.svgz,,*.tga,,*.tif,,*.tiff,,*.xbm,,*.xcf,,*.xpm,,*.xspf,,*.xwd::'
set classify+=' ::*.aac,,*.anx,,*.asf,,*.au,,*.axa,,*.flac,,*.m2a,,*.m4a,,*.mid,,*.midi,,*.mp3,,*.mpc,,*.oga,,*.ogg,,*.ogx,,*.ra,,*.ram,,*.rm,,*.spx,,*.wav,,*.wma,,*.ac3::'
set classify+=' ::*.avi,,*.ts,,*.axv,,*.divx,,*.m2v,,*.m4p,,*.m4v,,.mka,,*.mkv,,*.mov,,*.mp4,,*.flv,,*.mp4v,,*.mpeg,,*.mpg,,*.nuv,,*.ogv,,*.pbm,,*.pgm,,*.qt,,*.vob,,*.wmv,,*.xvid::'
set classify+=' ::*.doc,,*.docx::, ::*.xls,,*.xls[mx]::, ::*.pptx,,*.ppt::'

View file

@ -1,8 +0,0 @@
# Doom emacs
### Install
~~~bash
sudo pacman -S emacs ripgrep fd
git clone --depth 1 https://github.com/hlissner/doom-emacs ~/.emacs.d
~/.emacs.d/bin/doom install
~~~

View file

@ -1,17 +0,0 @@
(setq user-full-name "Smirnov Alexandr"
user-mail-address "ss2316544@gmail.com")
(setq doom-theme 'doom-one)
(setq org-directory "~/org/")
(setq display-line-numbers-type t)
(defun gk-markdown-preview-buffer ()
(interactive)
(let* ((buf-this (buffer-name (current-buffer)))
(buf-html (get-buffer-create
(format "*gk-md-html (%s)*" buf-this))))
(markdown-other-window (buffer-name buf-html))
(shr-render-buffer buf-html)
(eww-mode)
(kill-buffer buf-html)))

View file

@ -1,23 +0,0 @@
(custom-set-variables
'(package-selected-packages '(racket-mode markdown-mode zoutline)))
(custom-set-faces)
(use-package markdown-mode
:commands (markdown-mode gfm-mode)
:mode
("README.*\\.md\\'" . gfm-mode)
("\\.md\\'" . markdown-mode)
("\\.markdown\\'" . markdown-mode)
:hook
(markdown-mode . variable-pitch-mode)
(markdown-mode . yas-minor-mode)
(markdown-mode . smartparens-mode)
:custom
(markdown-command "pandoc")
(markdown-header-scaling t)
:config
(unbind-key "DEL" gfm-mode-map))

View file

@ -1,168 +0,0 @@
(doom! :input
;;chinese
;;japanese
;;layout ; auie,ctsrnm is the superior home row
:completion
company ; the ultimate code completion backend
;;helm ; the *other* search engine for love and life
;;ido ; the other *other* search engine...
ivy ; a search engine for love and life
:ui
;;deft ; notational velocity for Emacs
doom ; what makes DOOM look the way it does
doom-dashboard ; a nifty splash screen for Emacs
doom-quit ; DOOM quit-message prompts when you quit Emacs
(emoji +unicode) ; 🙂
;;fill-column ; a `fill-column' indicator
hl-todo ; highlight TODO/FIXME/NOTE/DEPRECATED/HACK/REVIEW
;;hydra
;;indent-guides ; highlighted indent columns
;;ligatures ; ligatures and symbols to make your code pretty again
;;minimap ; show a map of the code on the side
modeline ; snazzy, Atom-inspired modeline, plus API
;;nav-flash ; blink cursor line after big motions
neotree ; a project drawer, like NERDTree for vim
ophints ; highlight the region an operation acts on
(popup +defaults) ; tame sudden yet inevitable temporary windows
tabs ; a tab bar for Emacs
;;treemacs ; a project drawer, like neotree but cooler
unicode ; extended unicode support for various languages
;;vc-gutter ; vcs diff in the fringe
;;vi-tilde-fringe ; fringe tildes to mark beyond EOB
;;window-select ; visually switch windows
;;workspaces ; tab emulation, persistence & separate workspaces
;;zen ; distraction-free coding or writing
:editor
(evil +everywhere) ; come to the dark side, we have cookies
;;file-templates ; auto-snippets for empty files
fold ; (nigh) universal code folding
;;(format +onsave) ; automated prettiness
;;god ; run Emacs commands without modifier keys
;;lispy ; vim for lisp, for people who don't like vim
;;multiple-cursors ; editing in many places at once
;;objed ; text object editing for the innocent
;;parinfer ; turn lisp into python, sort of
;;rotate-text ; cycle region at point between text candidates
;;snippets ; my elves. They type so I don't have to
;;word-wrap ; soft wrapping with language-aware indent
:emacs
dired ; making dired pretty [functional]
;;electric ; smarter, keyword-based electric-indent
;;ibuffer ; interactive buffer management
undo ; persistent, smarter undo for your inevitable mistakes
vc ; version-control and Emacs, sitting in a tree
:term
eshell ; the elisp shell that works everywhere
;;shell ; simple shell REPL for Emacs
;;term ; basic terminal emulator for Emacs
;;vterm ; the best terminal emulation in Emacs
:checkers
syntax ; tasing you for every semicolon you forget
spell ; tasing you for misspelling mispelling
;;grammar ; tasing grammar mistake every you make
:tools
;;ansible
;;debugger ; FIXME stepping through code, to help you add bugs
;;direnv
;;docker
;;editorconfig ; let someone else argue about tabs vs spaces
;;ein ; tame Jupyter notebooks with emacs
(eval +overlay) ; run code, run (also, repls)
;;gist ; interacting with github gists
lookup ; navigate your code and its documentation
lsp
magit ; a git porcelain for Emacs
;;make ; run make tasks from Emacs
;;pass ; password manager for nerds
;;pdf ; pdf enhancements
;;prodigy ; FIXME managing external services & code builders
;;rgb ; creating color strings
;;taskrunner ; taskrunner for all your projects
;;terraform ; infrastructure as code
;;tmux ; an API for interacting with tmux
;;upload ; map local to remote projects via ssh/ftp
:os
(:if IS-MAC macos) ; improve compatibility with macOS
;;tty ; improve the terminal Emacs experience
:lang
;;agda ; types of types of types of types...
;;cc ; C/C++/Obj-C madness
;;clojure ; java with a lisp
;;common-lisp ; if you've seen one lisp, you've seen them all
;;coq ; proofs-as-programs
;;crystal ; ruby at the speed of c
;;csharp ; unity, .NET, and mono shenanigans
;;data ; config/data formats
;;(dart +flutter) ; paint ui and not much else
;;elixir ; erlang done right
;;elm ; care for a cup of TEA?
emacs-lisp ; drown in parentheses
;;erlang ; an elegant language for a more civilized age
;;ess ; emacs speaks statistics
;;faust ; dsp, but you get to keep your soul
;;fsharp ; ML stands for Microsoft's Language
;;fstar ; (dependent) types and (monadic) effects and Z3
;;gdscript ; the language you waited for
(go +lsp) ; the hipster dialect
;;(haskell +dante) ; a language that's lazier than I am
;;hy ; readability of scheme w/ speed of python
;;idris ; a language you can depend on
json ; At least it ain't XML
;;(java +meghanada) ; the poster child for carpal tunnel syndrome
;;javascript ; all(hope(abandon(ye(who(enter(here))))))
;;julia ; a better, faster MATLAB
;;kotlin ; a better, slicker Java(Script)
;;latex ; writing papers in Emacs has never been so fun
;;lean
;;factor
;;ledger ; an accounting system in Emacs
;;lua ; one-based indices? one-based indices
markdown ; writing docs for people to ignore
;;nim ; python + lisp at the speed of c
;;nix ; I hereby declare "nix geht mehr!"
;;ocaml ; an objective camel
org ; organize your plain life in plain text
;;php ; perl's insecure younger brother
;;plantuml ; diagrams for confusing people more
;;purescript ; javascript, but functional
python ; beautiful is better than ugly
;;qt ; the 'cutest' gui framework ever
;;racket ; a DSL for DSLs
;;raku ; the artist formerly known as perl6
;;rest ; Emacs as a REST client
;;rst ; ReST in peace
;;(ruby +rails) ; 1.step {|i| p "Ruby is #{i.even? ? 'love' : 'life'}"}
;;rust ; Fe2O3.unwrap().unwrap().unwrap().unwrap()
;;scala ; java, but good
;;scheme ; a fully conniving family of lisps
sh ; she sells {ba,z,fi}sh shells on the C xor
;;sml
;;solidity ; do you need a blockchain? No.
;;swift ; who asked for emoji variables?
;;terra ; Earth and Moon in alignment for performance.
;;web ; the tubes
;;yaml ; JSON, but readable
:email
;;(mu4e +gmail)
;;notmuch
;;(wanderlust +gmail)
:app
;;calendar
;;irc ; how neckbeards socialize
;;(rss +org) ; emacs as an RSS reader
;;twitter ; twitter client https://twitter.com/vnought
:config
;;literate
(default +bindings +smartparens))

View file

@ -1,3 +0,0 @@
(package! async)
(package! go-autocomplete)
(package! markdown-mode)

15
zshrc
View file

@ -16,20 +16,16 @@ DISABLE_AUTO_TITLE="true" # Disable auto-setting terminal title.
export UPDATE_ZSH_DAYS=7 # Change how often to auto-update. export UPDATE_ZSH_DAYS=7 # Change how often to auto-update.
export LANG=en_US.UTF-8 # Set locale export LANG=en_US.UTF-8 # Set locale
plugins=(pip python golang pass sudo heroku vi-mode git encode64) plugins=(pip python golang pass sudo git encode64)
source $ZSH/oh-my-zsh.sh source $ZSH/oh-my-zsh.sh
### Vim mode ###
VI_MODE_RESET_PROMPT_ON_MODE_CHANGE=true
VI_MODE_SET_CURSOR=true
MODE_INDICATOR="%F{cyan}+%f"
### Variables ### ### Variables ###
export EDITOR="nvim" export EDITOR="nvim"
export VISUAL="nvim" export VISUAL="nvim"
export GOPATH="$HOME/go" export GOPATH="$HOME/go"
### Function ### ### Function ###
function bgcolor { function bgcolor {
convert -size 1x1 xc:$1 /tmp/bgc.png convert -size 1x1 xc:$1 /tmp/bgc.png
@ -42,6 +38,7 @@ function codi() {
Codi $syntax" "$@" Codi $syntax" "$@"
} }
### Aliases ### ### Aliases ###
alias cls="clear" alias cls="clear"
alias mkdir="mkdir -p" alias mkdir="mkdir -p"
@ -73,9 +70,3 @@ alias .3="cd ../../.."
alias .4="cd ../../../.." alias .4="cd ../../../.."
alias .5="cd ../../../../.." alias .5="cd ../../../../.."
alias .6="cd ../../../../../.." alias .6="cd ../../../../../.."
# Doom emacs
alias doomsync="$HOME/.emacs.d/bin/doom sync"
alias doomupgrade="$HOME/.emacs.d/bin/doom upgrade"
alias doomdoctor="$HOME/.emacs.d/bin/doom doctor"
alias doom="$HOME/.emacs.d/bin/doom"