1
0
mirror of https://github.com/frebib/dotfiles.git synced 2024-06-14 12:57:23 +00:00

155 Commits

Author SHA1 Message Date
7ec8be00be Merge remote-tracking branch 'origin/master' into surface 2018-11-22 10:23:29 +00:00
809f27b576 profile: general cleanup/organisation 2018-11-20 15:40:49 +00:00
c6f653f88c dunst: restyle notification for consistency 2018-11-20 15:40:31 +00:00
48b116e2a6 urxvt: increase terminal padding to match 2018-11-20 15:40:14 +00:00
8bd77f63cd scripts/dpi: ensure config directory exists 2018-11-20 15:39:26 +00:00
e8a3b91052 aliases: make bash compatible
Not POSIX sh compatible due to dsh() using bash arrays
2018-11-20 15:35:05 +00:00
ef4e16fe5b aliases: add gau/gaN git-add shortcuts 2018-11-20 15:07:07 +00:00
43a656ee96 scripts/dpi: add DPI live change script 2018-11-20 15:06:09 +00:00
51c91b4803 polybar: replace i3 bar with polybar 2018-11-18 22:22:59 +00:00
1a6c9dedc0 alacritty: update config for 0.2.3 2018-11-18 22:22:10 +00:00
820c355722 Remove --geometry flag from termite 2018-11-14 11:18:57 +00:00
868454c26a Remove GTK3 rounded corners 2018-11-14 11:17:06 +00:00
5185349b8c Remove borders & increase padding/gaps 2018-11-14 11:17:06 +00:00
bedead5cda git: fix global gitignore 2018-11-08 22:26:44 +00:00
e140647ba7 profile: remove XAUTHORITY override
For some reason it prevents X from starting in some cases.
Perhaps more research in the future to fix it
2018-11-07 15:00:55 +00:00
acf3e57c74 aliases: replace pacaur with yay 2018-11-06 18:44:14 +00:00
732a366b30 Merge remote-tracking branch 'origin/master' into surface 2018-11-06 18:41:15 +00:00
8f089165ab i3: start pulseaudio as a user service 2018-11-06 17:50:19 +00:00
add6050146 i3: replace i3lock with lightdm 2018-11-06 17:50:19 +00:00
4cb02a72da compton: use tryone144/compton dual_kawase blur 2018-11-06 17:50:16 +00:00
d8b36c48bb Merge remote-tracking branch 'origin/master' into surface 2018-11-05 22:27:20 +00:00
861ee18775 i3: format & minor cleanup 2018-11-05 20:19:44 +00:00
30cab7d90b xprofile: split xinitrc into xprofile
Finally adding "proper" display-manager support instead
of just using the xlogin shim service that isn't a proper
login session
2018-11-04 00:23:34 +00:00
56229dea13 vim: auto-resize splits on window resize 2018-11-03 23:05:44 +00:00
3471454e8e alacritty: add config to match termite/urxvt 2018-11-03 22:55:09 +00:00
fc8bfb220b xdg: add mimeapps.list for default applications 2018-11-03 22:44:39 +00:00
abe83d85c4 zsh: use feature/redrawhook for z-sy-hl 2018-11-03 22:44:09 +00:00
cfe95eb879 aliases: inline one-line function aliases 2018-10-31 21:51:52 +00:00
c03170a4ef aliases: use default viewer for PDFs 2018-10-31 21:50:09 +00:00
60b52ffc29 zsh: recolour/restyle git-rprompt 2018-10-31 21:48:57 +00:00
944d64a5e6 zsh: simplify RPROMPT return code 2018-10-31 21:44:57 +00:00
01abda43c3 aliases: fix env alias for interactive use 2018-10-31 17:26:36 +00:00
1894a6f965 aliases: disable calc globbing *yay* 2018-10-31 17:24:37 +00:00
990b9ffb30 aliases: mcd accepts paths with spaces
Even though heathens put spaces in file/directory names
2018-10-31 17:22:17 +00:00
927fdb5660 zsh: define empty highlight array 2018-10-31 16:47:19 +00:00
2c3d0edc28 aliases: add zl='zfs list' alias w/ completion 2018-10-30 20:23:48 +00:00
6e7f2f1074 aliases: add gcn override 2018-10-30 20:23:11 +00:00
e0db65a9d8 profile: add weechat XDG dir override 2018-10-30 13:17:11 +00:00
216737535e dunst: update icon path for Adwaita fallback 2018-10-22 21:50:42 +01:00
c5cd1cf36e vim: add Puppet/Vala syntax highlighting 2018-10-22 21:26:31 +01:00
863de0d0ef screenshot: replace imgur-screenshot with self-hosted alt 2018-10-22 21:25:04 +01:00
ebe00b192a zsh: split git RPROMPT into separate plugin 2018-10-20 13:42:18 +01:00
0e4b0aee25 zsh: add pkgfile command-not-found for Arch 2018-10-20 13:40:28 +01:00
8b1f6aaa01 i3: fix move/change window bindings
THIS EXPLAINS SO MUCH
I THOUGHT I WAS GOING MAD
2018-10-20 13:37:04 +01:00
12a46db7dd profile: add debian PATH support -_- 2018-10-19 15:07:09 +01:00
e4bc126708 git: add diff-highlight script for portability 2018-10-19 15:03:52 +01:00
a619593815 zsh: re-style highlighting somewhat 2018-10-19 14:49:55 +01:00
51edd3ddf7 zsh: use async for zsh-autosuggestions 2018-10-19 14:46:19 +01:00
f17a34c65a zsh: rebind vi-mode for dvorak 2018-10-19 14:45:52 +01:00
3dbc78c03b vim: fix dhtn navigation in :Explore 2018-10-19 14:44:31 +01:00
f37cf0f49b vim: always remove ~/.vim from rtp 2018-10-19 11:57:19 +01:00
abed398b07 vim: fix netrwhist file location 2018-10-19 11:51:24 +01:00
d0fee7b959 gtk3: increase terminal padding 2018-10-19 11:50:50 +01:00
f1371b67db mailnag: initial configuration 2018-10-19 11:15:35 +01:00
677fce1907 Merge remote-tracking branch 'origin/master' into surface 2018-10-03 12:36:18 +01:00
eb88ac1c04 aliases: override wget hsts-file path 2018-10-01 16:27:26 +01:00
38f0f8ccec aliases: move ls alias to group 2018-10-01 16:26:55 +01:00
289e31b65a profile: add PYTHONHISTFILE override 2018-10-01 16:26:27 +01:00
700dfdda6f git: Use diff-highlight for diff/patches 2018-10-01 16:25:15 +01:00
a3c0e5d7de zsh: improve highlighting & keybinds 2018-10-01 16:22:03 +01:00
580b9e33b5 aliases: fix dsh exec arguments 2018-08-21 17:31:21 +01:00
bbf329eb70 profile: add DISPLAY & XAUTHORITY to dbus 2018-08-21 13:35:50 +01:00
09be200c9c xdg: ~ is now desktop 2018-08-21 13:35:16 +01:00
650ff6e0c1 aliases: fix dsh/drsh usage/error bugs 2018-08-21 13:34:43 +01:00
89e325c503 rofi-{emoji;fontawesome}: use -normal-window for pickers 2018-07-30 09:38:59 +01:00
7b1bd4f808 i3/powermenu: left-align all entries 2018-07-30 09:38:25 +01:00
3b85967614 i3: start thunderbird on boot 2018-07-30 09:37:55 +01:00
eeb90bd2e3 latexmk: add config for xelatex 2018-07-30 09:37:34 +01:00
972ee067ab wallpaper: invoke feh to change wallpaper 2018-07-30 09:32:14 +01:00
5d3eb76075 aliases: split alpine-sdk and add more aliases 2018-07-30 09:31:18 +01:00
7f8c8eccb3 zsh: improve <ESC><ESC> sudo action with vim 2018-07-30 09:30:03 +01:00
815da41076 vim: improve VimTex experience 2018-07-30 09:29:22 +01:00
66e0bf911b zsh: replace perl pwd with POSIX sed variant 2018-07-30 09:29:00 +01:00
2562a50f89 zsh: use vim mode 2018-07-30 09:28:27 +01:00
5c705fde91 zsh: clean up directory handling 2018-07-30 09:26:31 +01:00
f0e6807814 rofi: adjust colour and window size 2018-07-30 09:23:07 +01:00
dbbb533850 i3: add fontawesome picker keybind 2018-07-30 09:16:15 +01:00
a057c840cd fontconfig: use sans/monospace defaults 2018-07-30 09:15:50 +01:00
c89a3829dc i3/blocks: update icons and configuration 2018-07-30 09:15:11 +01:00
f0508fe73e gopass: auto-confirm new transactions 2018-07-30 09:12:36 +01:00
59a138c605 dunst: add Xenlism-Wildfire icon path 2018-07-30 09:11:44 +01:00
e4e62ae40d fontconfig: Update fontawesome, remove nerdfonts 2018-07-30 09:11:24 +01:00
28dda3e9b0 git: Remove diff-so-fancy 2018-07-30 09:09:15 +01:00
83b006c9d5 Merge remote-tracking branch 'origin/master' into surface 2018-07-19 23:28:12 +01:00
c260a480aa Reinstate zsh-history-substring-search alongside fzf
This reverts commit e854d2b1d5.
2018-07-12 10:58:15 +01:00
015fffbbd4 Merge remote-tracking branch 'origin/master' into surface 2018-07-07 16:24:41 +01:00
94c3cb5741 aliases: add UID to dalpine 2018-06-23 23:49:11 +01:00
3bcb38f9f2 rofi: update to use rasi theming 2018-06-15 10:13:56 +01:00
d7f1a2193d gopass: update to 1.8.0 2018-06-11 13:31:50 +01:00
1418a51626 qt: fix GTK styling for QT5 2018-06-11 13:31:48 +01:00
7597a300f4 profile: Improve busybox/ash compatibility 2018-06-11 04:11:58 +01:00
f1a353aed5 rofi: fix hi-dpi scaling
See also: https://github.com/DaveDavenport/rofi/issues/815
2018-06-05 23:15:27 +01:00
2b2e963c2a aliases: dalpine uses spritsail/alpine now 2018-05-29 01:22:23 +01:00
b7ef22f4f6 i3: Alias Alt Mod1 as $mod 2018-05-29 01:21:53 +01:00
9b89946ea4 Add Breeze Obsidian as X11 cursor 2018-05-29 01:18:44 +01:00
22fa8c810f Merge remote-tracking branch 'origin/master' into surface 2018-05-20 16:41:54 +01:00
e854d2b1d5 Remove zsh-history-substring-search for fzf 2018-05-20 16:40:58 +01:00
ae67b62ebe Merge remote-tracking branch 'origin/master' into surface 2018-05-11 18:21:39 +01:00
b59607c147 dunst: re-enable notification icons 2018-05-11 18:06:11 +01:00
ea51f79785 Merge remote-tracking branch 'origin/master' into surface 2018-04-27 22:51:37 +01:00
24cf4ac494 vim: migrate from Vundle to vim-plug 2018-04-23 01:10:05 +01:00
fc4560b31f compton: improve blur on fading/exiting windows 2018-04-21 02:14:12 +01:00
c164577bd7 zsh: add nullglob option 2018-04-21 01:43:32 +01:00
2b631fb2cd Remove .fehbg script 2018-04-21 01:33:52 +01:00
40c3f61819 Remove broken ANSI codes from 'env' 2018-04-21 01:14:16 +01:00
c0420a7022 Add a more relevant README
Addresses #1
2018-04-21 01:10:10 +01:00
1c297d3a77 Reorganise many directories into XDG dirs 2018-04-21 01:03:48 +01:00
ae1acb194c vim: create missing directories on startup 2018-04-21 00:20:51 +01:00
73ecd1f584 Suppress tty output for busybox compatibility 2018-04-21 00:15:17 +01:00
ff4bdb5ec2 Only start Vim with --servername if supported 2018-04-21 00:10:30 +01:00
4579473479 Add $GOPATH/bin to PATH 2018-04-20 23:58:53 +01:00
fff7fa1452 Fix typo 'emoij' in rofi-emoji 2018-04-17 11:34:21 +01:00
1d590fe8c6 Add rofi-fontawesome picker variation 2018-04-17 11:33:34 +01:00
f03b3ee8df Merge remote-tracking branch 'origin/master' into surface 2018-04-12 03:32:07 +01:00
223034a3ea rofi-emoji: add various updates 2018-04-12 03:20:08 +01:00
5bb7c53519 vim: bind fzf and NERDTree 2018-04-12 03:00:02 +01:00
8edf74dc4f vim: make syntastic actually usable 2018-04-12 02:59:23 +01:00
366873ea47 vim: use chktex for latex/syntastic 2018-04-12 02:52:07 +01:00
e09e7105dd vim: correctly use XDG dirs 2018-04-12 02:51:32 +01:00
b512bace44 procps: add top config 2018-04-12 02:42:53 +01:00
69d884ec5f fontconfig: tweak fonts after Noto fiasco 2018-04-12 02:39:58 +01:00
f17927e0ee Merge remote-tracking branch 'origin/master' into surface 2018-04-12 02:32:31 +01:00
3f16439695 X11: remove redundant xsession file 2018-04-12 02:29:27 +01:00
fd63032392 Merge remote-tracking branch 'origin/master' into surface 2018-04-12 02:14:35 +01:00
8edd378b66 X11/xdg: migrate to XDG_CONFIG_DIR 2018-04-11 17:42:42 +01:00
1bc7dd7845 zsh: move zsh into .config 2018-04-11 16:42:01 +01:00
ebc435ad33 vim: unmap Q from ex mode 2018-04-05 11:25:42 +01:00
9ee742294d Merge branch 'master' into surface 2018-04-04 12:03:48 +01:00
e7baaf0a80 Merge branch 'master' into surface 2018-03-31 11:09:42 +01:00
5d90dda3f5 Merge branch 'master' into surface 2018-02-24 11:13:29 +00:00
82ad05ca0a Merge branch 'master' into surface 2018-02-24 11:10:43 +00:00
d52ece0b12 Merge remote-tracking branch 'origin/master' into surface 2018-02-22 13:27:57 +00:00
52cb279f3b Merge remote-tracking branch 'origin/master' into surface 2018-01-31 15:10:19 +00:00
618b78e62e i3/config: start nm-applet with i3 2017-12-26 15:43:47 +00:00
20e01667f9 profile: add surface-scripts directory to $PATH 2017-12-26 15:43:47 +00:00
e3b276aecf xsession: use correct name for integrated display 2017-12-26 15:43:47 +00:00
3dfed805f9 rotationd: start in .xsession instead of i3 2017-12-26 15:43:47 +00:00
61ab086664 compton: don't blur onboard background 2017-12-26 15:43:47 +00:00
7bbd52d4d8 Use consistent font sizes and DPI 2017-12-26 15:43:46 +00:00
b0267c548a Update surface-scripts HEAD 2017-12-26 15:43:46 +00:00
46c01329cf Surface cannot handle intense compton blur
This reverts commit d7097cf749.
2017-12-26 15:43:46 +00:00
9433c26d62 Add backlight control to i3 2017-12-26 15:43:46 +00:00
c1480498c1 Improve i3 touch experience with touchegg & fullscreen modifications 2017-12-26 15:43:46 +00:00
809104c10f Change again to new bash surface-scripts 2017-12-26 15:43:46 +00:00
45192635af Add rotation lock i3block 2017-12-26 15:43:46 +00:00
8b95f13919 Start onboard with i3 2017-12-26 15:43:45 +00:00
e15c8d4ed7 Poll blocks less frequently to save battery 2017-12-26 15:43:45 +00:00
f942d3ee31 Update surfacetools to my own fork 2017-12-26 15:43:45 +00:00
5084da39a5 Add updated dunst config for HiDPI 2017-12-26 15:43:45 +00:00
12f5f2bdc9 Start onboard with right-click 2017-12-26 15:43:45 +00:00
0921b3c91c Add autorotate script 2017-12-26 15:43:45 +00:00
e31edd3980 Scale everything for HiDPI screen 2017-12-26 15:43:45 +00:00
9d9035a8ad Force Chrome DPI scaling 2017-12-26 15:43:45 +00:00
4246ccac86 Add battery indicator to i3bar 2017-12-26 15:43:44 +00:00
24161b8a4a Prevent ssh-add breaking things temporarily 2017-12-26 15:43:44 +00:00
80 changed files with 2398 additions and 1795 deletions

View File

@ -1,96 +0,0 @@
!!=============================================================================
!! RXVT-unicode setting
!!=============================================================================
urxvt.depth: 32
urxvt.internalBorder: 4
urxvt.blurRadius: 25
urxvt.scrollBar: false
urxvt.saveLines: 10000
urxvt.preeditType: Root
urxvt.jumpScroll: false
urxvt.altSendsEscape: true
xterm.metaSendsEscape: true
!Set TERM
urxvt.termName: xterm-256color
Xft.dpi: 96
Xft.antialias: true
Xft.rgba: rgb
Xft.autohint: false
Xft.hinting: true
Xft.hintstyle: hintfull
urxvt*font: xft:Sauce Code Pro:style=Regular:size=9
urxvt*imFont: xft:Sauce Code Pro:style=Regular:size=9
urxvt*boldFont: xft:Sauce Code Pro:style=Bold:size=9
urxvt*italicFont: xft:Sauce Code Pro:style=Italic:size=9
urxvt*boldItalicFont: xft:Sauce Code Pro:style=Bold,Italic:size=9
! clickable Url and copy paste keys
urxvt.iso14755: false
urxvt.iso14755_52: false
urxvt.perl-ext-common: default,clipboard,vtwheel,font-size
urxvt.keysym.Shift-Control-C: perl:clipboard:copy
urxvt.keysym.Shift-Control-V: perl:clipboard:paste
urxvt.url-launcher: /usr/bin/chromium
urxvt.matcher.button: 1
urxvt.keysym.C-Up: font-size:increase
urxvt.keysym.C-Down: font-size:decrease
urxvt.keysym.C-S-Up: font-size:incglobal
urxvt.keysym.C-S-Down: font-size:decglobal
Xft.lcdfilter: lcddefault
! special
*.foreground: #ECEFF1
*.background: #002B36
!*.cursorColor: #ECEFF1
*.cursorColor: #5294E2
*.highlightColor: #5294E2
urxvt.background: [95]#383C4A
urxvt.scrollColor: #767B87
urxvt*dynamicColors: on
urxvt*highlightSelection: true
urxvt*colorMode: on
! black
*.color0: #333638
!white
*.color15: #eceff1
! gray
*.color7: #8b9396
*.color8: #475760
! red
*.color1: #ff3f00
*.color9: #ef5345
! green
*.color2: #8bc34a
*.color10: #9ccc65
! yellow
*.color3: #ffc107
*.color11: #ffa000
! blue
*.color4: #0266f4
*.color12: #3f86da
! magenta
*.color5: #cc17cc
*.color13: #a56ecC
! cyan
*.color6: #10aeba
*.color14: #5ddae2

View File

@ -1,4 +1,4 @@
#!/bin/sh #!/bin/bash
# Run all system xinitrc shell scripts # Run all system xinitrc shell scripts
xinitdir="/etc/X11/xinit/xinitrc.d" xinitdir="/etc/X11/xinit/xinitrc.d"
@ -11,8 +11,12 @@ if [ -d "$xinitdir" ]; then
done done
fi fi
source ~/.profile # Source generic xprofile stuff
source ~/.xsession source "$(dirname "${BASH_SOURCE[0]}")/xprofile"
xrdb -merge ~/.Xresources
# Start the gnome-keyring if it's installed
if exists gnome-keyring-daemon; then
export $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gnupg)
fi
exec i3 exec i3

28
.config/X11/xprofile Normal file
View File

@ -0,0 +1,28 @@
#!/bin/sh
# Graphical-specific environment variables
export TERMINAL="termite"
export BROWSER="chromium"
export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=on -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel"
export QT_QPA_PLATFORMTHEME=gtk2
export QT_STYLE_OVERRIDE=gtk2
export XDG_CURRENT_DESKTOP="GNOME" # Fixes xdg-open
# Load Xorg resources and set the DPI
xrdb -merge $XDG_CONFIG_HOME/X11/xresources
xrandr --dpi $(xrdb -query | grep -i xft.dpi | cut -d: -f2)
xrandr --output eDP1 --primary
setxkbmap -option caps:none
xset r rate 200 18
# Merge system clipboards
if [ -n "$DISPLAY" ] && exists autocutsel && ! pidof autocutsel 1>/dev/null; then
autocutsel -fork
autocutsel -selection PRIMARY -fork
fi
~/.local/share/surface-scripts/pend &
~/.local/share/surface-scripts/rotationd &

89
.config/X11/xresources Normal file
View File

@ -0,0 +1,89 @@
! Colour order:
! black
! red
! green
! yellow
! blue
! magenta
! cyan
! white/gray
! Normal colours
*.color0: #333638
*.color1: #f41f1c
*.color2: #8bc34a
*.color3: #ffc107
*.color4: #0266f4
*.color5: #cc17cc
*.color6: #10aeba
*.color7: #8b9396
! Bright colours
*.color8: #475760
*.color9: #e53727
*.color10: #9ccc65
*.color11: #ffa000
*.color12: #81b3f9
*.color13: #a56ecc
*.color14: #5ddae2
*.color15: #eceff1
Xft.dpi: 140
Xft.antialias: true
Xft.rgba: rgb
Xft.hinting: true
Xft.hintstyle: hintfull
Xft.lcdfilter: lcddefault
Xcursor.theme: Breeze_Obsidian
!!======================!!
!! RXVT-unicode setting !!
!!======================!!
urxvt.depth: 32
urxvt.internalBorder: 16
urxvt.blurRadius: 25
urxvt.saveLines: 10000
urxvt.preeditType: Root
urxvt.scrollBar: false
urxvt.jumpScroll: false
urxvt.scrollTtyOutput: false
urxvt.scrollWithBuffer: true
urxvt.scrollTtyKeypress: true
urxvt.altSendsEscape: true
xterm.metaSendsEscape: true
urxvt.termName: xterm-256color
urxvt.font: xft:Source Code Pro:style=regular:size=9.8
urxvt.imFont: xft:Source Code Pro:style=regular:size=9.8
urxvt.boldFont: xft:Source Code Pro:style=bold:size=9
urxvt.italicFont: xft:Source Code Pro:style=italic:size=9.8
urxvt.boldItalicFont: xft:Source Code Pro:style=bold,italic:size=9.8
urxvt.iso14755: false
urxvt.iso14755_52: false
urxvt.perl-ext-common: default,vtwheel,font-size
urxvt.url-launcher: /usr/bin/chromium
urxvt.matcher.button: 1
urxvt.keysym.C-Up: font-size:increase
urxvt.keysym.C-Down: font-size:decrease
urxvt.keysym.C-equal: font-size:reset
urxvt.keysym.C-slash: font-size:show
! special
*.foreground: #ECEFF1
*.background: #002B36
*.cursorColor: #5294E2
*.highlightColor: #5294E2
urxvt.background: [95]#383C4A
urxvt.scrollColor: #767B87
urxvt.dynamicColors: on
urxvt.highlightSelection: true
urxvt.colorMode: on

View File

@ -0,0 +1,467 @@
# Configuration for Alacritty, the GPU enhanced terminal emulator.
# Any items in the `env` entry below will be added as
# environment variables. Some entries may override variables
# set by alacritty itself.
env:
# TERM variable
#
# This value is used to set the `$TERM` environment variable for
# each instance of Alacritty. If it is not present, alacritty will
# check the local terminfo database and use 'alacritty' if it is
# available, otherwise 'xterm-256color' is used.
#
TERM: xterm-256color
window:
# Window dimensions (changes require restart)
#
# Specified in number of columns/lines, not pixels.
# If both are `0`, this setting is ignored.
dimensions:
columns: 80
lines: 24
# Window padding (changes require restart)
#
# Blank space added around the window in pixels. This padding is scaled
# by DPI and the specified value is always added at both opposing sides.
padding:
x: 15
y: 15
# Window decorations
#
# Values for `decorations`:
# - full: Borders and title bar
# - none: Neither borders nor title bar
decorations: full
scrolling:
# Maximum number of lines in the scrollback buffer.
# Specifying '0' will disable scrolling.
history: 10000
# Number of lines the viewport will move for every line scrolled when
# scrollback is enabled (history > 0).
multiplier: 3
# Faux Scrolling
#
# The `faux_multiplier` setting controls the number of lines the terminal
# should scroll when the alternate screen buffer is active. This is used
# to allow mouse scrolling for applications like `man`.
#
# Specifying `0` will disable faux scrolling.
faux_multiplier: 3
# Scroll to the bottom when new text is written to the terminal.
auto_scroll: false
# Spaces per Tab (changes require restart)
#
# This setting defines the width of a tab in cells.
#
# Some applications, like Emacs, rely on knowing about the width of a tab.
# To prevent unexpected behavior in these applications, it's also required to
# change the `it` value in terminfo when altering this setting.
tabspaces: 8
# Font configuration (changes require restart)
#
# Important font attributes like antialiasing, subpixel aa, and hinting can be
# controlled through fontconfig. Specifically, the following attributes should
# have an effect:
# - hintstyle
# - antialias
# - lcdfilter
# - rgba
#
# For instance, if you wish to disable subpixel antialiasing, you might set the
# rgba property to `none`. If you wish to completely disable antialiasing, you
# can set antialias to `false`.
#
# Please see these resources for more information on how to use fontconfig:
# - https://wiki.archlinux.org/index.php/font_configuration#Fontconfig_configuration
# - file:///usr/share/doc/fontconfig/fontconfig-user.html
font:
# Normal (roman) font face
normal:
family: monospace
# The `style` can be specified to pick a specific face.
# style: Regular
# Bold font face
bold:
family: monospace
# The `style` can be specified to pick a specific face.
# style: Bold
# Italic font face
italic:
family: monospace
# The `style` can be specified to pick a specific face.
# style: Italic
# Point size
size: 9.0
# Offset is the extra space around each character. `offset.y` can be thought of
# as modifying the line spacing, and `offset.x` as modifying the letter spacing.
offset:
x: 0
y: 0
# Glyph offset determines the locations of the glyphs within their cells with
# the default being at the bottom. Increasing `x` moves the glyph to the right,
# increasing `y` moves the glyph upwards.
glyph_offset:
x: 0
y: 0
# Display the time it takes to redraw each frame.
render_timer: false
# If `true`, bold text is drawn using the bright color variants.
draw_bold_text_with_bright_colors: true
colors:
# Default colors
primary:
foreground: '0xeceff1'
background: '0x383c4a'
# Bright and dim foreground colors
#
# The dimmed foreground color is calculated automatically if it is not present.
# If the bright foreground color is not set, or `draw_bold_text_with_bright_colors`
# is `false`, the normal foreground color will be used.
#
#dim_foreground: '0x9a9a9a'
#bright_foreground: '0xffffff'
# Cursor colors
#
# These will only be used when the `custom_cursor_colors` field is set to `true`.
cursor:
text: '0xeceff1'
cursor: '0x5294e2'
# Normal colors
normal:
black: '0x333638'
red: '0xf41f1c'
green: '0x8bc34a'
yellow: '0xffc107'
blue: '0x0266f4'
magenta: '0xcc17cc'
cyan: '0x10aeba'
white: '0x8b9396'
# Bright colors
bright:
black: '0x475760'
red: '0xe53727'
green: '0x9ccc65'
yellow: '0xffa000'
blue: '0x81b3f9'
magenta: '0xa56ecc'
cyan: '0x5ddae2'
white: '0xeceff1'
# Indexed Colors
#
# The indexed colors include all colors from 16 to 256.
# When these are not set, they're filled with sensible defaults.
#
#indexed_colors:
# - { index: 16, color: '0x000000' }
# Visual Bell
#
# Any time the BEL code is received, Alacritty "rings" the visual bell. Once
# rung, the terminal background will be set to white and transition back to the
# default background color. You can control the rate of this transition by
# setting the `duration` property (represented in milliseconds). You can also
# configure the transition function by setting the `animation` property.
#
# Values for `animation`:
# - Ease
# - EaseOut
# - EaseOutSine
# - EaseOutQuad
# - EaseOutCubic
# - EaseOutQuart
# - EaseOutQuint
# - EaseOutExpo
# - EaseOutCirc
# - Linear
#
# Specifying a `duration` of `0` will disable the visual bell.
visual_bell:
animation: EaseOutExpo
duration: 0
# Background opacity
#
# Window opacity as a floating point number from `0.0` to `1.0`.
# The value `0.0` is completely transparent and `1.0` is opaque.
background_opacity: 0.95
# Mouse bindings
#
# Available fields:
# - mouse
# - action
# - mods (optional)
#
# Values for `mouse`:
# - Middle
# - Left
# - Right
# - Numeric identifier such as `5`
#
# All available `mods` and `action` values are documented in the key binding
# section.
mouse_bindings:
- { mouse: Middle, action: PasteSelection }
mouse:
# Click settings
#
# The `double_click` and `triple_click` settings control the time
# alacritty should wait for accepting multiple clicks as one double
# or triple click.
double_click: { threshold: 300 }
triple_click: { threshold: 300 }
# If this is `true`, the cursor is temporarily hidden when typing.
hide_when_typing: false
url:
# URL launcher
#
# This program is executed when clicking on a text which is recognized as a URL.
# The URL is always added to the command as the last parameter.
launcher: xdg-open
# URL modifiers
#
# These are the modifiers that need to be held down for opening URLs when clicking
# on them. The available modifiers are documented in the key binding section.
#modifiers: Control|Shift
selection:
semantic_escape_chars: ",│`|:\"' ()[]{}<>"
# When set to `true`, selected text will be copied to both the primary and
# the selection clipboard. Otherwise, it will only be copied to the selection
# clipboard.
save_to_clipboard: false
dynamic_title: true
cursor:
# Cursor style
#
# Values for 'style':
# - ▇ Block
# - _ Underline
# - | Beam
style: Block
# If this is `true`, the cursor will be rendered as a hollow box when the
# window is not focused.
unfocused_hollow: true
# Live config reload (changes require restart)
live_config_reload: true
# Shell
#
# You can set `shell.program` to the path of your favorite shell, e.g. `/bin/fish`.
# Entries in `shell.args` are passed unmodified as arguments to the shell.
#
#shell:
# program: /bin/bash
# args:
# - --login
# Key bindings
#
# Key bindings are specified as a list of objects. Each binding will specify
# a key and modifiers required to trigger it, terminal modes where the binding
# is applicable, and what should be done when the key binding fires. It can
# either send a byte sequnce to the running application (`chars`), execute
# a predefined action (`action`) or fork and execute a specified command plus
# arguments (`command`).
#
# Example:
# `- { key: V, mods: Command, action: Paste }`
#
# Available fields:
# - key
# - mods (optional)
# - chars | action | command (exactly one required)
# - mode (optional)
#
# Values for `key`:
# - `A` -> `Z`
# - `F1` -> `F12`
# - `Key1` -> `Key0`
#
# A full list with available key codes can be found here:
# https://docs.rs/glutin/*/glutin/enum.VirtualKeyCode.html#variants
#
# Values for `mods`:
# - Command
# - Control
# - Shift
# - Alt
#
# Multiple `mods` can be combined using `|` like this: `mods: Control|Shift`.
# Whitespace and capitalization is relevant and must match the example.
#
# Values for `chars`:
# The `chars` field writes the specified string to the terminal. This makes
# it possible to pass escape sequences.
# To find escape codes for bindings like `PageUp` ("\x1b[5~"), you can run
# the command `showkey -a` outside of tmux.
# Note that applications use terminfo to map escape sequences back to
# keys. It is therefore required to update the terminfo when
# changing an escape sequence.
#
# Values for `action`:
# - Paste
# - PasteSelection
# - Copy
# - IncreaseFontSize
# - DecreaseFontSize
# - ResetFontSize
# - ScrollPageUp
# - ScrollPageDown
# - ScrollToTop
# - ScrollToBottom
# - ClearHistory
# - Hide
# - Quit
#
# Values for `command`:
# The `command` field must be a map containing a `program` string and
# an `args` array of command line parameter strings.
#
# Example:
# `command: { program: "alacritty", args: ["-e", "vttest"] }`
#
# Values for `mode`:
# - ~AppCursor
# - AppCursor
# - ~AppKeypad
# - AppKeypad
key_bindings:
- { key: V, mods: Control|Shift, action: Paste }
- { key: C, mods: Control|Shift, action: Copy }
- { key: Paste, action: Paste }
- { key: Copy, action: Copy }
- { key: Q, mods: Command, action: Quit }
- { key: W, mods: Command, action: Quit }
- { key: Insert, mods: Shift, action: PasteSelection }
- { key: Key0, mods: Control, action: ResetFontSize }
- { key: Equals, mods: Control, action: IncreaseFontSize }
- { key: Subtract, mods: Control, action: DecreaseFontSize }
- { key: Home, chars: "\x1bOH", mode: AppCursor }
- { key: Home, chars: "\x1b[H", mode: ~AppCursor }
- { key: End, chars: "\x1bOF", mode: AppCursor }
- { key: End, chars: "\x1b[F", mode: ~AppCursor }
- { key: PageUp, mods: Shift, chars: "\x1b[5;2~" }
- { key: PageUp, mods: Control, chars: "\x1b[5;5~" }
- { key: PageUp, chars: "\x1b[5~" }
- { key: PageDown, mods: Shift, chars: "\x1b[6;2~" }
- { key: PageDown, mods: Control, chars: "\x1b[6;5~" }
- { key: PageDown, chars: "\x1b[6~" }
- { key: Tab, mods: Shift, chars: "\x1b[Z" }
- { key: Back, chars: "\x7f" }
- { key: Back, mods: Alt, chars: "\x1b\x7f" }
- { key: Insert, chars: "\x1b[2~" }
- { key: Delete, chars: "\x1b[3~" }
- { key: Left, mods: Shift, chars: "\x1b[1;2D" }
- { key: Left, mods: Control, chars: "\x1b[1;5D" }
- { key: Left, mods: Alt, chars: "\x1b[1;3D" }
- { key: Left, chars: "\x1b[D", mode: ~AppCursor }
- { key: Left, chars: "\x1bOD", mode: AppCursor }
- { key: Right, mods: Shift, chars: "\x1b[1;2C" }
- { key: Right, mods: Control, chars: "\x1b[1;5C" }
- { key: Right, mods: Alt, chars: "\x1b[1;3C" }
- { key: Right, chars: "\x1b[C", mode: ~AppCursor }
- { key: Right, chars: "\x1bOC", mode: AppCursor }
- { key: Up, mods: Shift, chars: "\x1b[1;2A" }
- { key: Up, mods: Control, chars: "\x1b[1;5A" }
- { key: Up, mods: Alt, chars: "\x1b[1;3A" }
- { key: Up, chars: "\x1b[A", mode: ~AppCursor }
- { key: Up, chars: "\x1bOA", mode: AppCursor }
- { key: Down, mods: Shift, chars: "\x1b[1;2B" }
- { key: Down, mods: Control, chars: "\x1b[1;5B" }
- { key: Down, mods: Alt, chars: "\x1b[1;3B" }
- { key: Down, chars: "\x1b[B", mode: ~AppCursor }
- { key: Down, chars: "\x1bOB", mode: AppCursor }
- { key: F1, chars: "\x1bOP" }
- { key: F2, chars: "\x1bOQ" }
- { key: F3, chars: "\x1bOR" }
- { key: F4, chars: "\x1bOS" }
- { key: F5, chars: "\x1b[15~" }
- { key: F6, chars: "\x1b[17~" }
- { key: F7, chars: "\x1b[18~" }
- { key: F8, chars: "\x1b[19~" }
- { key: F9, chars: "\x1b[20~" }
- { key: F10, chars: "\x1b[21~" }
- { key: F11, chars: "\x1b[23~" }
- { key: F12, chars: "\x1b[24~" }
- { key: F1, mods: Shift, chars: "\x1b[1;2P" }
- { key: F2, mods: Shift, chars: "\x1b[1;2Q" }
- { key: F3, mods: Shift, chars: "\x1b[1;2R" }
- { key: F4, mods: Shift, chars: "\x1b[1;2S" }
- { key: F5, mods: Shift, chars: "\x1b[15;2~" }
- { key: F6, mods: Shift, chars: "\x1b[17;2~" }
- { key: F7, mods: Shift, chars: "\x1b[18;2~" }
- { key: F8, mods: Shift, chars: "\x1b[19;2~" }
- { key: F9, mods: Shift, chars: "\x1b[20;2~" }
- { key: F10, mods: Shift, chars: "\x1b[21;2~" }
- { key: F11, mods: Shift, chars: "\x1b[23;2~" }
- { key: F12, mods: Shift, chars: "\x1b[24;2~" }
- { key: F1, mods: Control, chars: "\x1b[1;5P" }
- { key: F2, mods: Control, chars: "\x1b[1;5Q" }
- { key: F3, mods: Control, chars: "\x1b[1;5R" }
- { key: F4, mods: Control, chars: "\x1b[1;5S" }
- { key: F5, mods: Control, chars: "\x1b[15;5~" }
- { key: F6, mods: Control, chars: "\x1b[17;5~" }
- { key: F7, mods: Control, chars: "\x1b[18;5~" }
- { key: F8, mods: Control, chars: "\x1b[19;5~" }
- { key: F9, mods: Control, chars: "\x1b[20;5~" }
- { key: F10, mods: Control, chars: "\x1b[21;5~" }
- { key: F11, mods: Control, chars: "\x1b[23;5~" }
- { key: F12, mods: Control, chars: "\x1b[24;5~" }
- { key: F1, mods: Alt, chars: "\x1b[1;6P" }
- { key: F2, mods: Alt, chars: "\x1b[1;6Q" }
- { key: F3, mods: Alt, chars: "\x1b[1;6R" }
- { key: F4, mods: Alt, chars: "\x1b[1;6S" }
- { key: F5, mods: Alt, chars: "\x1b[15;6~" }
- { key: F6, mods: Alt, chars: "\x1b[17;6~" }
- { key: F7, mods: Alt, chars: "\x1b[18;6~" }
- { key: F8, mods: Alt, chars: "\x1b[19;6~" }
- { key: F9, mods: Alt, chars: "\x1b[20;6~" }
- { key: F10, mods: Alt, chars: "\x1b[21;6~" }
- { key: F11, mods: Alt, chars: "\x1b[23;6~" }
- { key: F12, mods: Alt, chars: "\x1b[24;6~" }
- { key: F1, mods: Super, chars: "\x1b[1;3P" }
- { key: F2, mods: Super, chars: "\x1b[1;3Q" }
- { key: F3, mods: Super, chars: "\x1b[1;3R" }
- { key: F4, mods: Super, chars: "\x1b[1;3S" }
- { key: F5, mods: Super, chars: "\x1b[15;3~" }
- { key: F6, mods: Super, chars: "\x1b[17;3~" }
- { key: F7, mods: Super, chars: "\x1b[18;3~" }
- { key: F8, mods: Super, chars: "\x1b[19;3~" }
- { key: F9, mods: Super, chars: "\x1b[20;3~" }
- { key: F10, mods: Super, chars: "\x1b[21;3~" }
- { key: F11, mods: Super, chars: "\x1b[23;3~" }
- { key: F12, mods: Super, chars: "\x1b[24;3~" }

View File

@ -0,0 +1 @@
--force-device-scale-factor=1.2

View File

@ -17,7 +17,7 @@ shadow-ignore-shaped = false; # Avoid drawing shadow on all shaped windows
# Opacity # Opacity
menu-opacity = 0.9; # The opacity for menus. (default 1.0) menu-opacity = 0.9; # The opacity for menus. (default 1.0)
inactive-opacity = 0.8; # Default opacity of inactive windows. (0.0 - 1.0) inactive-opacity = 0.7; # Default opacity of inactive windows. (0.0 - 1.0)
active-opacity = 1.0; # Default opacity for active windows. (0.0 - 1.0) active-opacity = 1.0; # Default opacity for active windows. (0.0 - 1.0)
frame-opacity = 1.0; # Opacity of window titlebars and borders. (0.1 - 1.0) frame-opacity = 1.0; # Opacity of window titlebars and borders. (0.1 - 1.0)
inactive-opacity-override = true; # Let inactive opacity set by 'inactive-opacity' overrides inactive-opacity-override = true; # Let inactive opacity set by 'inactive-opacity' overrides
@ -25,25 +25,24 @@ inactive-opacity-override = true; # Let inactive opacity set by 'inactive-opacit
opacity-rule = [ opacity-rule = [
"0:_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'" "0:_NET_WM_STATE@:32a *= '_NET_WM_STATE_HIDDEN'"
]; ];
alpha-step = 0.06; # XRender backend: Step size for alpha pictures. Increasing alpha-step = 0.02; # XRender backend: Step size for alpha pictures. Increasing
# it may result in less X resource usage, # it may result in less X resource usage,
# Yet f ading may look bad. # Yet f ading may look bad.
# inactive-dim = 0.2; # Dim inactive windows. (0.0 - 1.0)
#inactive-dim-fixed = true; # Do not let dimness adjust based on window opacity. # Blurring
inactive-opacity-exclude = [ "window_type = 'dock'", "window_type = 'desktop'" ]; blur-method = "dual_kawase";
blur-strength = 6;
blur-background = true; # Blur background of transparent windows. blur-background = true; # Blur background of transparent windows.
blur-background-exclude = [ "class_g = 'Peek'", "class_g = 'Onboard'", "class_g = 'slop'" ]; blur-background-exclude = [ "class_g = 'Peek'", "class_g = 'Onboard'", "class_g = 'slop'", "class_g = 'Polybar'" ];
blur-background-frame = false; # Blur background of opaque windows with transparent blur-background-frame = true; # Blur background of opaque windows with transparent
# frames as well. # frames as well.
blur-background-fixed = true; # Do not let blur radius adjust based on window opacity. blur-background-fixed = false; # Do not let blur radius adjust based on window opacity.
# Exclude conditions for background blur. # Exclude conditions for background blur.
# python compton-convgen.py --dump-compton gaussian 9 -f=sigma=10
blur-kern = "9,9,0.852144,0.882497,0.904837,0.918512,0.923116,0.918512,0.904837,0.882497,0.852144,0.882497,0.913931,0.937067,0.951229,0.955997,0.951229,0.937067,0.913931,0.882497,0.904837,0.937067,0.960789,0.975310,0.980199,0.975310,0.960789,0.937067,0.904837,0.918512,0.951229,0.975310,0.990050,0.995012,0.990050,0.975310,0.951229,0.918512,0.923116,0.955997,0.980199,0.995012,0.995012,0.980199,0.955997,0.923116,0.918512,0.951229,0.975310,0.990050,0.995012,0.990050,0.975310,0.951229,0.918512,0.904837,0.937067,0.960789,0.975310,0.980199,0.975310,0.960789,0.937067,0.904837,0.882497,0.913931,0.937067,0.951229,0.955997,0.951229,0.937067,0.913931,0.882497,0.852144,0.882497,0.904837,0.918512,0.923116,0.918512,0.904837,0.882497,0.852144"
# Fading # Fading
fading = true; # Fade windows during opacity changes. fading = true; # Fade windows during opacity changes.
# fade-delta = 16; # The time between steps in a fade in milliseconds. (default 10). # fade-delta = 16; # The time between steps in a fade in milliseconds. (default 10).
fade-in-step = 0.025; # Opacity change between steps while fading in. (default 0.028). fade-in-step = 0.022; # Opacity change between steps while fading in. (default 0.028).
fade-out-step = 0.02; # Opacity change between steps while fading out. (default 0.03). fade-out-step = 0.02; # Opacity change between steps while fading out. (default 0.03).
# no-fading-openclose = true; # Avoid fade windows in/out when opening/closing. # no-fading-openclose = true; # Avoid fade windows in/out when opening/closing.
# fade-exclude = [ ]; # Exclude conditions for fading. # fade-exclude = [ ]; # Exclude conditions for fading.
@ -78,7 +77,7 @@ invert-color-include = [ ]; # Conditions for windows to be painted with inverte
glx-no-stencil = true; # Recommended. glx-no-stencil = true; # Recommended.
glx-copy-from-front = false; # Useful with --glx-swap-method, glx-copy-from-front = false; # Useful with --glx-swap-method,
# glx-use-copysubbuffermesa = true; # Recommended if it works. Breaks VSync. # glx-use-copysubbuffermesa = true; # Recommended if it works. Breaks VSync.
# glx-no-rebind-pixmap = true; # Recommended if it works. glx-no-rebind-pixmap = true; # Recommended if it works.
glx-swap-method = "undefined"; # See man page. glx-swap-method = "undefined"; # See man page.
# Window type settings # Window type settings

View File

@ -1,5 +1,5 @@
[global] [global]
font = Noto Sans 10 font = sans 9
# Allow a small subset of html markup: # Allow a small subset of html markup:
# <b>bold</b> # <b>bold</b>
@ -21,7 +21,7 @@
# %I iconname (without its path) # %I iconname (without its path)
# %p progress value if set ([ 0%] to [100%]) or nothing # %p progress value if set ([ 0%] to [100%]) or nothing
# Markup is allowed # Markup is allowed
format = "<b>%s</b>\n%b" format = "<b>%s %p</b>\n%b"
# Sort messages by urgency. # Sort messages by urgency.
sort = yes sort = yes
@ -51,7 +51,6 @@
# Ignore newlines '\n' in notifications. # Ignore newlines '\n' in notifications.
ignore_newline = no ignore_newline = no
# The geometry of the window: # The geometry of the window:
# [{width}]x{height}[+/-{x}+/-{y}] # [{width}]x{height}[+/-{x}+/-{y}]
# The geometry of the message window. # The geometry of the message window.
@ -66,16 +65,16 @@
# screen width minus the width defined in within the geometry option. # screen width minus the width defined in within the geometry option.
# 53 = 30 + 23 (bar-height) # 53 = 30 + 23 (bar-height)
geometry = "300x5-30+52" geometry = "560x5-30+30"
# Shrink window if it's smaller than the width. Will be ignored if # Shrink window if it's smaller than the width. Will be ignored if
# width is 0. # width is 0.
shrink = no shrink = yes
# The transparency of the window. Range: [0; 100]. # The transparency of the window. Range: [0; 100].
# This option will only work if a compositing windowmanager is # This option will only work if a compositing windowmanager is
# present (e.g. xcompmgr, compiz, etc.). # present (e.g. xcompmgr, compiz, etc.).
# transparency = 10 transparency = 15
# Don't remove messages, if the user is idle (no mouse or keyboard input) # Don't remove messages, if the user is idle (no mouse or keyboard input)
# for longer than idle_threshold seconds. # for longer than idle_threshold seconds.
@ -103,7 +102,7 @@
sticky_history = yes sticky_history = yes
# Maximum amount of notifications kept in history # Maximum amount of notifications kept in history
history_length = 20 history_length = 100
# Display indicators for URLs (U) and actions (A). # Display indicators for URLs (U) and actions (A).
show_indicators = no show_indicators = no
@ -119,10 +118,10 @@
separator_height = 2 separator_height = 2
# Padding between text and separator. # Padding between text and separator.
padding = 12 padding = 15
# Horizontal padding. # Horizontal padding.
horizontal_padding = 20 horizontal_padding = 16
# Define a color for the separator. # Define a color for the separator.
# possible values are: # possible values are:
@ -144,12 +143,14 @@
browser = /usr/bin/chromium browser = /usr/bin/chromium
# Align icons left/right/off # Align icons left/right/off
icon_position = off icon_position = left
# Scale larger icons down to this size, set to 0 to disable
max_icon_size = 72
# Paths to default icons. # Paths to default icons.
icon_folders = /usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/ icon_path = /usr/share/icons/Xenlism-Wildfire/Status/:/usr/share/icons/Xenlism-Wildfire/Devices/:/usr/share/icons/Adwaita/32x32/status:/usr/share/icons/Adwaita/32x32/devices
frame_width = 0
frame_width = 3
frame_color = "#404552" frame_color = "#404552"
[shortcuts] [shortcuts]

View File

@ -2,43 +2,38 @@
<!DOCTYPE fontconfig SYSTEM "fonts.dtd"> <!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig> <fontconfig>
<match> <match>
<test name="family"> <test qual="any" name="family"><string>sans-serif</string></test>
<string>sans-serif</string> <edit name="family" mode="prepend" binding="strong">
</test>
<edit name="family" mode="prepend" binding="weak">
<string>Noto Sans</string> <string>Noto Sans</string>
<string>Noto Color Emoji</string> <string>Noto Color Emoji</string>
<string>FontAwesome 5 Pro Light</string>
</edit> </edit>
</match> </match>
<match> <match>
<test name="family"> <test qual="any" name="family"><string>serif</string></test>
<string>serif</string> <edit name="family" mode="prepend" binding="strong">
</test>
<edit name="family" mode="prepend" binding="weak">
<string>Noto Serif</string> <string>Noto Serif</string>
<string>Noto Color Emoji</string> <string>Noto Color Emoji</string>
<string>FontAwesome 5 Pro Light</string>
</edit> </edit>
</match> </match>
<match> <match>
<test name="family"> <test qual="any" name="family"><string>monospace</string></test>
<string>monospace</string> <edit name="family" mode="prepend" binding="strong">
</test> <string>Source Code Pro</string>
<edit name="family" mode="prepend" binding="weak">
<string>Sauce Code Pro</string>
<string>Noto Color Emoji</string> <string>Noto Color Emoji</string>
<string>FontAwesome 5 Pro Light</string>
</edit> </edit>
</match> </match>
<match>
<test name="family"> <match target="font">
<string>Apple Color Emoji</string> <test qual="all" name="family" compare="eq"><string>Noto Sans</string></test>
</test> <edit name="hintstyle" mode="assign"><const>hintnone</const></edit>
<edit name="family" mode="prepend" binding="weak">
<string>Noto Color Emoji</string>
</edit>
</match> </match>
<match target="font"> <match target="font">
<edit name="hintstyle" mode="assign"> <test qual="all" name="family" compare="eq"><string>Source Code Pro</string></test>
<const>hintfull</const> <edit name="hintstyle" mode="assign"><const>hintfull</const></edit>
</edit> <edit name="lcdfilter" mode="assign"><const>lcddefault</const></edit>
<edit name="rgba" mode="assign"><const>rgb</const></edit>
</match> </match>
</fontconfig> </fontconfig>

View File

@ -4,8 +4,10 @@
signingkey = CFBB6A86 signingkey = CFBB6A86
[core] [core]
autocrlf = input autocrlf = input
excludesfile = $HOME/.config/git/gitignore excludesfile = /home/frebib/.config/git/gitignore
pager = diff-so-fancy | less pager = diff-highlight | $PAGER
[interactive]
diffFilter = diff-highlight
[commit] [commit]
gpgsign = true gpgsign = true
[push] [push]
@ -35,8 +37,6 @@
suppresscc = self suppresscc = self
[diff] [diff]
algorithm = patience algorithm = patience
[interactive]
diffFilter = diff-so-fancy --patch-mode
[color] [color]
ui = true ui = true
[color "diff"] [color "diff"]
@ -51,7 +51,5 @@
oldHighlight = red 88 oldHighlight = red 88
newNormal = green newNormal = green
newHighlight = green 22 newHighlight = green 22
[diff-so-fancy]
changeHunkIndicators = false
# vim: noet # vim: noet

35
.config/gopass/config.yml Normal file
View File

@ -0,0 +1,35 @@
root:
askformore: false
autoclip: false
autoimport: true
autosync: true
check_recipient_hash: false
cliptimeout: 45
concurrency: 1
editrecipients: false
nocolor: false
noconfirm: true
nopager: false
notifications: false
path: gpgcli-gitcli-fs+file:///home/frebib/.local/share/pass
recipient_hash: {}
safecontent: false
usesymbols: false
mounts:
spritsail:
askformore: false
autoclip: false
autoimport: true
autosync: true
check_recipient_hash: false
cliptimeout: 45
concurrency: 1
editrecipients: false
nocolor: false
noconfirm: true
nopager: false
notifications: false
path: gpgcli-gitcli-fs+file:///home/frebib/.local/share/pass-spritsail
recipient_hash: {}
safecontent: false
usesymbols: false

View File

@ -1,5 +1,15 @@
VteTerminal, VteTerminal,
TerminalScreen, TerminalScreen,
vte-terminal { vte-terminal {
padding: 6px; padding: 1.3em;
}
.window-frame, .window-frame:backdrop {
margin: 0;
border-style: none;
border-radius: 0;
}
.titlebar {
border-radius: 0;
} }

View File

@ -1,90 +0,0 @@
#!/bin/bash
# Copyright (C) 2012 Stefan Breunig <stefan+measure-net-speed@mathphys.fsk.uni-heidelberg.de>
# Copyright (C) 2014 kaueraal
# Copyright (C) 2015 Thiago Perrotta <perrotta dot thiago at poli dot ufrj dot br>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Use the provided interface, otherwise the device used for the default route.
if [[ -n $BLOCK_INSTANCE ]]; then
INTERFACE=$BLOCK_INSTANCE
else
INTERFACE=$(ip route | awk '/^default/ { print $5 ; exit }')
fi
# Issue #36 compliant.
if ! [ -e "/sys/class/net/${INTERFACE}/operstate" ] || ! [ "`cat /sys/class/net/${INTERFACE}/operstate`" = "up" ]
then
echo "$INTERFACE down"
echo "$INTERFACE down"
echo "#FF0000"
exit 0
fi
# path to store the old results in
path="/dev/shm/$(basename $0)-${INTERFACE}"
# grabbing data for each adapter.
read rx < "/sys/class/net/${INTERFACE}/statistics/rx_bytes"
read tx < "/sys/class/net/${INTERFACE}/statistics/tx_bytes"
# get time
time=$(date +%s)
# write current data if file does not exist. Do not exit, this will cause
# problems if this file is sourced instead of executed as another process.
if ! [[ -f "${path}" ]]; then
echo "${time} ${rx} ${tx}" > "${path}"
chmod 0666 "${path}"
fi
# read previous state and update data storage
read old < "${path}"
echo "${time} ${rx} ${tx}" > "${path}"
# parse old data and calc time passed
old=(${old//;/ })
time_diff=$(( $time - ${old[0]} ))
# sanity check: has a positive amount of time passed
[[ "${time_diff}" -gt 0 ]] || exit
# calc bytes transferred, and their rate in byte/s
rx_diff=$(( $rx - ${old[1]} ))
tx_diff=$(( $tx - ${old[2]} ))
rx_rate=$(( $rx_diff / $time_diff ))
tx_rate=$(( $tx_diff / $time_diff ))
# shift by 10 bytes to get KiB/s. If the value is larger than
# 1024^2 = 1048576, then display MiB/s instead
# incoming
echo -n " "
rx_kib=$(( $rx_rate >> 10 ))
if [[ "$rx_rate" -gt 1048576 ]]; then
printf '%sk' "`echo "scale=1; $rx_kib / 1024" | bc`"
else
echo -n "${rx_kib}k"
fi
echo -n " "
# outgoing
echo -n " "
tx_kib=$(( $tx_rate >> 10 ))
if [[ "$tx_rate" -gt 1048576 ]]; then
printf '%sm' "`echo "scale=1; $tx_kib / 1024" | bc`"
else
echo -n "${tx_kib}k"
fi

View File

@ -1,97 +0,0 @@
#!/usr/bin/perl
#
# Copyright 2014 Pierre Mavro <deimos@deimos.fr>
# Copyright 2014 Vivien Didelot <vivien@didelot.org>
#
# Licensed under the terms of the GNU GPL v3, or any later version.
#
# This script is meant to use with i3blocks. It parses the output of the "acpi"
# command (often provided by a package of the same name) to read the status of
# the battery, and eventually its remaining time (to full charge or discharge).
#
# The color will gradually change for a percentage below 85%, and the urgency
# (exit code 33) is set if there is less that 5% remaining.
use strict;
use warnings;
use Switch;
my $acpi;
my $status;
my $percent;
my $hours = -1;
my $mins;
my $full_text;
my $short_text;
my $bat_number = $ENV{BLOCK_INSTANCE} || 0;
# read the first line of the "acpi" command output
open (ACPI, "acpi -b | grep 'Battery $bat_number' |") or die;
$acpi = <ACPI>;
close(ACPI);
# fail on unexpected output
if ($acpi !~ /: (\w+), (\d+)%/) {
die "$acpi\n";
}
$status = $1;
$percent = $2;
if ($acpi =~ /, (\d+):(\d+)/) {
$hours = $1;
$mins = $2;
}
if ($status eq 'Discharging') {
if ($percent <= 10) {
$full_text = "";
} elsif ($percent <= 40) {
$full_text = "";
} elsif ($percent <= 75) {
$full_text = "";
} else {
$full_text = "";
}
} elsif ($status eq 'Charging') {
$full_text = '';
} else {
$full_text = '';
}
$full_text .= " $percent%";
$short_text = $full_text;
switch($ENV{BLOCK_BUTTON} || 0) {
case "1" {
if ($hours lt 0) {
$full_text .= " Charged";
} else {
$full_text .= " ($hours:$mins";
if ($status eq 'Discharging') {
$full_text .= ")";
} else {
$full_text .= " until full)";
}
}
}
case "4" { system("light -U -l 1") }
case "5" { system("light -A -l 1") }
}
# print text
print "$full_text\n";
print "$short_text\n";
# consider color and urgent flag only on discharge
if ($status eq 'Discharging') {
if ($percent < 20) {
print "#FF0000\n";
} elsif ($percent < 40) {
print "#FFCB00\n";
}
}
exit(0);

View File

@ -1,5 +0,0 @@
case $BLOCK_BUTTON in
1) printf " "$(date '+%d/%m/%y') ; exit ;;
2|3) i3-sensible-terminal -r i3blocks-clock-term --geometry 68x35 -e "$SHELL -c \"cal -y $(date +'%Y');$SHELL\"" &>/dev/null & ;;
*) printf " "$(date '+%H:%M')
esac

View File

@ -1,93 +0,0 @@
# i3blocks config file
#
# Please see man i3blocks for a complete reference!
# The man page is also hosted at http://vivien.github.io/i3blocks
#
# List of valid properties:
#
# align
# color
# command
# full_text
# instance
# interval
# label
# min_width
# name
# separator
# separator_block_width
# short_text
# signal
# urgent
# Global properties
#
# The top properties below are applied to every block, but can be overridden.
# Each block command defaults to the script name to avoid boilerplate.
command=~/.config/i3/blocks/$BLOCK_NAME
markup=none
#full_text=
align=center
color=#F3F4F5
separator=false
separator_block_width=12
#[window title]
#command=xtitle -s #| sed 's/^$/ /g'"
#color=#A6D1FA
#align=center
#min_width=700
#interval=persist
[volume]
interval=persist
signal=10
[separator]
[iface]
label=
interval=60
signal=15
[separator]
[updates]
label=
interval=600
signal=5
[separator]
[cpu_usage]
label=
interval=persist
[separator]
[memory]
label=
interval=10
[separator]
[temperature]
label=
interval=5
[separator]
#[battery]
#label=
#interval=5
[keyboard]
label=
interval=30
[separator]
[clock]
interval=5
min_width=" 00:00"

View File

@ -1,31 +0,0 @@
#!/bin/bash
# by Paul Colby (http://colby.id.au), no rights reserved ;)
# https://github.com/Leo-G/DevopsWiki/wiki/How-Linux-CPU-Usage-Time-and-Percentage-is-calculated
PREV_TOTAL=0
PREV_IDLE=0
while true; do
# Get the total CPU statistics, discarding the 'cpu ' prefix.
CPU=(`sed -n 's/^cpu\s//p' /proc/stat`)
IDLE=${CPU[3]} # Just the idle CPU time.
# Calculate the total CPU time.
TOTAL=0
for VALUE in "${CPU[@]}"; do
let "TOTAL=$TOTAL+$VALUE"
done
# Calculate the CPU usage since we last checked.
let "DIFF_IDLE=$IDLE-$PREV_IDLE"
let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL"
let "DIFF_USAGE=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10"
echo -e "$DIFF_USAGE%\n$DIFF_USAGE%"
# Remember the total and idle CPU times for the next check.
PREV_TOTAL="$TOTAL"
PREV_IDLE="$IDLE"
# Wait before checking again.
sleep 1
done

View File

@ -1,41 +0,0 @@
#!/bin/sh
# Copyright (C) 2014 Julien Bonjean <julien@bonjean.info>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
DIR="${BLOCK_INSTANCE:-$HOME}"
ALERT_LOW="${1:-10}" # color will turn red under this value (default: 10%)
df -h -P -l "$DIR" | awk -v alert_low=$ALERT_LOW '
/\/.*/ {
# full text
print $4
# short text
print $4
use=$5
# no need to continue parsing
exit 0
}
END {
gsub(/%$/,"",use)
if (100 - use < alert_low) {
# color
print "#FF0000"
}
}
'

View File

@ -1,62 +0,0 @@
#!/bin/bash
# Copyright (C) 2014 Julien Bonjean <julien@bonjean.info>
# Copyright (C) 2014 Alexander Keller <github@nycroth.com>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#------------------------------------------------------------------------
# Use the provided interface, otherwise the device used for the default route.
if [[ -n $BLOCK_INSTANCE ]]; then
IF=$BLOCK_INSTANCE
else
IF=$(ip route | awk '/^default/ { print $5 ; exit }')
fi
#------------------------------------------------------------------------
# As per #36 -- It is transparent: e.g. if the machine has no battery or wireless
# connection (think desktop), the corresponding block should not be displayed.
[[ ! -d /sys/class/net/${IF} ]] && exit
#------------------------------------------------------------------------
if [[ -z $IF ]] || [[ "$(cat /sys/class/net/$IF/operstate)" = 'down' ]]; then
echo down # full text
echo down # short text
echo \#FF0000 # color
exit
fi
case $1 in
-4) AF=inet ;;
-6) AF=inet6 ;;
*) AF=inet6? ;;
esac
# if no interface is found, use the first device with a global scope
LOCIP=$(ip addr show $IF | perl -n -e "/$AF ([^\/]+).* scope global/ && print \$1 and exit")
#------------------------------------------------------------------------
case $BLOCK_BUTTON in
1) curl -s https://api.ipify.org;
break;;
2) curl -s https://api.ipify.org | tee >(xclip -i);
break;;
0|3) echo "$LOCIP" | tee >(xclip -i);
break;;
*) echo "$LOCIP"
break;;
esac

View File

@ -1,10 +0,0 @@
#!/bin/sh
[[ $BLOCK_BUTTON -eq 1 ]] && `$DOTFILES/scripts/togglekeyboard`
layout=$(setxkbmap -query | grep 'layout:' | awk '{print $2}')
variant=$(setxkbmap -query | grep 'variant:' | awk '{print $2}')
short=`([ "$variant" ] && echo $variant || echo $layout) | cut -c1-2`
echo -e "$short\n$short" | awk '{print toupper($0)}'

View File

@ -1,70 +0,0 @@
#!/usr/bin/perl
#
# Copyright 2014 Marcelo Cerri <mhcerri at gmail dot com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
use strict;
use warnings;
use utf8;
use Getopt::Long;
use File::Basename;
# Default values
my $indicator = $ENV{BLOCK_INSTANCE} || "CAPS";
my $color_on = "#00FF00";
my $color_off = "#222222";
sub help {
my $program = basename($0);
printf "Usage: %s [-c <color on>] [-C <color off>]\n", $program;
printf " -c <color on>: hex color to use when indicator is on\n";
printf " -C <color off>: hex color to use when indicator is off\n";
printf "\n";
printf "Note: environment variable \$BLOCK_INSTANCE should be one of:\n";
printf " CAPS, NUM (default is CAPS).\n";
exit 0;
}
Getopt::Long::config qw(no_ignore_case);
GetOptions("help|h" => \&help,
"c=s" => \$color_on,
"C=s" => \$color_off) or exit 1;
# Key mapping
my %indicators = (
CAPS => 0x00000001,
NUM => 0x00000002,
);
# Retrieve key flags
my $mask = 0;
open(XSET, "xset -q |") or die;
while (<XSET>) {
if (/LED mask:\s*([0-9]+)/) {
$mask = $1;
last;
}
}
close(XSET);
# Output
printf "%s\n", $indicator;
printf "%s\n", $indicator;
if (($indicators{$indicator} || 0) & $mask) {
printf "%s\n", $color_on;
} else {
printf "%s\n", $color_off;
}
exit 0

View File

@ -1,34 +0,0 @@
#!/bin/sh
# Copyright (C) 2014 Julien Bonjean <julien@bonjean.info>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
load="$(cut -d ' ' -f1 /proc/loadavg)"
cpus="$(nproc)"
# full text
echo "$load"
# short text
echo "$load"
# color if load is too high
awk -v cpus=$cpus -v cpuload=$load '
BEGIN {
if (cpus <= cpuload) {
print "#FF0000";
exit 33;
}
}
'

View File

@ -1,76 +0,0 @@
#!/usr/bin/perl
# Copyright (C) 2014 Tony Crisci <tony@dubstepdish.com>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# Requires playerctl binary to be in your path (except cmus)
# See: https://github.com/acrisci/playerctl
# Set instance=NAME in the i3blocks configuration to specify a music player
# (playerctl will attempt to connect to org.mpris.MediaPlayer2.[NAME] on your
# DBus session).
use Env qw(BLOCK_INSTANCE);
my @metadata = ();
my $player_arg = "";
if ($BLOCK_INSTANCE) {
$player_arg = "--player='$BLOCK_INSTANCE'";
}
if ($ENV{'BLOCK_BUTTON'} == 1) {
system("playerctl $player_arg previous");
} elsif ($ENV{'BLOCK_BUTTON'} == 2) {
system("playerctl $player_arg play-pause");
} elsif ($ENV{'BLOCK_BUTTON'} == 3) {
system("playerctl $player_arg next");
}
if ($player_arg eq '' or $player_arg =~ /cmus$/) {
# try cmus first
my @cmus = split /^/, qx(cmus-remote -Q);
if ($? == 0) {
foreach my $line (@cmus) {
my @data = split /\s/, $line;
if (shift @data eq 'tag') {
my $key = shift @data;
my $value = join ' ', @data;
@metadata[0] = $value if $key eq 'artist';
@metadata[1] = $value if $key eq 'title';
}
}
if (@metadata) {
# metadata found so we are done
print(join ' - ', @metadata);
exit 0;
}
}
# if cmus was given, we are done
exit 0 unless $player_arg eq '';
}
my $artist = qx(playerctl $player_arg metadata artist);
# exit status will be nonzero when playerctl cannot find your player
exit(0) if $?;
push(@metadata, $artist) if $artist;
my $title = qx(playerctl $player_arg metadata title);
exit(0) if $?;
push(@metadata, $title) if $title;
print(join(" - ", @metadata)) if @metadata;

View File

@ -1,65 +0,0 @@
#!/bin/sh
# Copyright (C) 2014 Julien Bonjean <julien@bonjean.info>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
TYPE="${BLOCK_INSTANCE:-mem}"
if [ $BLOCK_BUTTON -gt 0 ]; then
i3-sensible-terminal -r floating-term --geometry 100x54 -e 'top -d 0.1'
fi
awk -v type=$TYPE '
BEGIN {
swap_total=1
mem_total=1
}
/^MemTotal:/ {
mem_total=$2
}
/^MemFree:/ {
mem_free=$2
}
/^Buffers:/ {
mem_free+=$2
}
/^Cached:/ {
mem_free+=$2
}
/^SwapTotal:/ {
swap_total=$2
}
/^SwapFree:/ {
swap_free=$2
}
END {
if (type == "swap") {
swap_perc = (swap_total - swap_free) / swap_total * 100
printf("%.0f%\n", swap_perc)
printf("%.0f%\n", swap_perc)
perc = swap_perc
}
else{
mem_perc = (mem_total - mem_free) / mem_total * 100
printf("%.0f%\n", mem_perc)
printf("%.0f%\n", mem_perc)
perc = mem_perc
}
if (perc > 80)
print "#FFCB00"
else if (perc > 60)
print "#FFCB00"
}
' /proc/meminfo

View File

@ -1,149 +0,0 @@
#!/usr/bin/perl
# Made by Pierre Mavro/Deimosfr <deimos@deimos.fr>
# Licensed under the terms of the GNU GPL v3, or any later version.
# Version: 0.2
# Usage:
# 1. The configuration name of OpenVPN should be familiar for you (home,work...)
# 2. The device name in your configuration file should be fully named (tun0,tap1...not only tun or tap)
# 3. When you launch one or multiple OpenVPN connexion, be sure the PID file is written in the correct folder (ex: --writepid /run/openvpn/home.pid)
use strict;
use warnings;
use utf8;
use Getopt::Long;
my $openvpn_enabled='/dev/shm/openvpn_i3blocks_enabled';
my $openvpn_disabled='/dev/shm/openvpn_i3blocks_disabled';
# Print output
sub print_output {
my $ref_pid_files = shift;
my @pid_files = @$ref_pid_files;
my $change=0;
# Total pid files
my $total_pid = @pid_files;
if ($total_pid == 0) {
print "VPN: down\n"x2;
# Delete OpenVPN i3blocks temp files
if (-f $openvpn_enabled) {
unlink $openvpn_enabled or die "Can't delete $openvpn_enabled\n";
# Colorize if VPN has just went down
print '#FF0000\n';
}
unless (-f $openvpn_disabled) {
open(my $shm, '>', $openvpn_disabled) or die "Can't write $openvpn_disabled\n";
}
exit(0);
}
# Check if interface device is present
my $vpn_found=0;
my $pid;
my $cmd_line;
my @config_name;
my @config_path;
my $interface;
my $current_config_path;
my $current_config_name;
foreach (@pid_files) {
# Get current PID
$pid=0;
open(PID, '<', $_);
while(<PID>) {
chomp $_;
$pid = $_;
}
close(PID);
# Check if PID has been found
if ($pid ==0) {
print "Can't get PID $_: $!\n";
}
# Check if PID is still alive
$cmd_line='/proc/'.$pid.'/cmdline';
if (-f $cmd_line) {
# Get config name
open(CMD_LINE, '<', $cmd_line);
while(<CMD_LINE>) {
chomp $_;
if ($_ =~ /--config\s*(.*\.conf)/) {
# Get interface from config file
$current_config_path = $1;
# Remove unwanted escape chars
$current_config_path =~ s/\x{00}//g;
$interface = 'null';
# Get configuration name
if ($current_config_path =~ /(\w+).conf/) {
$current_config_name=$1;
} else {
$current_config_name='unknow';
}
# Get OpenVPN interface device name
open(CONFIG, '<', $current_config_path) or die "Can't read config file '$current_config_path': $!\n";
while(<CONFIG>) {
chomp $_;
if ($_ =~ /dev\s+(\w+)/) {
$interface=$1;
last;
}
}
close(CONFIG);
# check if interface exist
unless ($interface eq 'null') {
if (-d "/sys/class/net/$interface") {
push @config_name, $current_config_name;
$vpn_found=1;
# Write enabled file
unless (-f $openvpn_enabled) {
open(my $shm, '>', $openvpn_enabled) or die "Can't write $openvpn_enabled\n";
$change=1;
}
}
}
}
}
close(CMD_LINE);
}
}
# Check if PID found
my $names;
my $short_status;
if ($vpn_found == 1) {
$names = join('/', @config_name);
$short_status='up';
} else {
$short_status='down';
$names = $short_status;
}
print "VPN: $names\n";
print "VPN: $short_status\n";
# Print color if there were changes
print "#00FF00\n" if ($change == 1);
exit(0);
}
sub check_opts {
# Vars
my @pid_file=glob '/run/openvpn/*.pid';
# Set options
GetOptions( "help|h" => \&help,
"p=s" => \@pid_file);
print_output(\@pid_file);
}
sub help {
print "Usage: openvpn [-d pid folder files]\n";
print "-d : pid folder files (default /run/openvpn/*.pid)\n";
print "Note: devices in configuration file should be named with their number (ex: tun0, tap1)\n";
exit(1);
}
&check_opts;

View File

@ -1,69 +0,0 @@
#!/usr/bin/perl
# Copyright 2014 Pierre Mavro <deimos@deimos.fr>
# Copyright 2014 Vivien Didelot <vivien@didelot.org>
# Copyright 2014 Andreas Guldstrand <andreas.guldstrand@gmail.com>
# Copyright 2014 Benjamin Chretien <chretien at lirmm dot fr>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
use strict;
use warnings;
use utf8;
use Getopt::Long;
binmode(STDOUT, ":utf8");
# default values
my $t_warn = 70;
my $t_crit = 90;
my $chip = "coretemp-isa-0000";
my $temperature = -9999;
sub help {
print "Usage: temperature [-w <warning>] [-c <critical>] [--chip <chip>]\n";
print "-w <percent>: warning threshold to become yellow\n";
print "-c <percent>: critical threshold to become red\n";
print "--chip <chip>: sensor chip\n";
exit 0;
}
GetOptions("help|h" => \&help,
"w=i" => \$t_warn,
"c=i" => \$t_crit,
"chip=s" => \$chip);
# Get chip temperature
open (SENSORS, "sensors -u $chip |") or die;
while (<SENSORS>) {
if (/^\s+temp1_input:\s+[\+]*([\-]*\d+\.\d)/) {
$temperature = $1;
last;
}
}
close(SENSORS);
$temperature eq -9999 and die 'Cannot find temperature';
# Print short_text, full_text
print int($temperature)."°c\n" x2;
# Print color, if needed
if ($temperature >= $t_crit) {
print "#FF0000\n";
exit 33;
} elsif ($temperature >= $t_warn) {
print "#FFFC00\n";
}
exit 0;

View File

@ -1,27 +0,0 @@
#!/bin/bash
CARDS=$(pacmd list-cards | grep -e index: -e alsa.card_name | xargs -n5 | awk '{print $2}')
if [[ ${#CARDS} != 3 ]]; # there is a space
then
echo "This script works only with 2 outputs, and you have ..."
pacmd list-cards | grep -e index: -e alsa.card_name | xargs -n5
exit
fi
i=1
for card_index in $CARDS ;
do
eval CARD$i=$card_index
let i+=1
done
LAST_SINK_LINE=$(pacmd list-sink-inputs | grep -e index: -e sink: | xargs -n5 | tail -n1)
last_sink_app_index=$( echo $LAST_SINK_LINE | awk '{print $2}' )
last_sink_out_index=$( echo $LAST_SINK_LINE | awk '{print $4}' )
[[ ${last_sink_out_index} == ${CARD1} ]] && new_sink_out=$CARD2 || new_sink_out=$CARD1
#echo "$last_sink_app_index > $last_sink_out_index > ${new_sink_out}"
pacmd move-sink-input ${last_sink_app_index} ${new_sink_out}

View File

@ -1,31 +0,0 @@
#!/bin/bash
set -e
for p in trizen pacaur yaourt pacman; do
if $p --version &>/dev/null; then
PAC="$p"
break;
fi
done
if [ -z "$PAC" ]; then
>&2 echo "Error: No Arch package manager found?"
fi
if [ "$BLOCK_BUTTON" == 1 ]; then
nohup i3-sensible-terminal -r i3blocks-update-term -e "sh -c '$PAC -Syu || exec zsh; pkill -RTMIN+5 i3blocks'" &>/dev/null &
disown
fi
if [ $p = "pacman" ]; then
exec 3< <(checkupdates)
else
exec 3< <({ checkupdates & cower -u & })
fi
count="$(wc -l <&3)"
if [ -n "$count" -a "$count" -gt 0 ]; then
echo $count
echo $count
fi

View File

@ -1,182 +0,0 @@
#!/bin/bash
# Displays the default device, volume, and mute status for i3blocks
AUDIO_HIGH_SYMBOL=' '
AUDIO_MED_THRESH=59
AUDIO_MED_SYMBOL=' '
AUDIO_LOW_THRESH=0
AUDIO_LOW_SYMBOL=' '
AUDIO_MUTED_SYMBOL='X'
AUDIO_INTERVAL=5
DEFAULT_COLOR="#ffffff"
MUTED_COLOR="#a0a0a0"
LONG_FORMAT=0
SHORT_FORMAT=3
USE_PERCENT=0
USE_ALSA_NAME=0
USE_DESCRIPTION=0
SUBSCRIBE=1
while getopts F:Sf:padH:M:L:X:T:t:C:c:i:m:s:h opt; do
case "$opt" in
S) SUBSCRIBE=1 ;;
F) LONG_FORMAT="$OPTARG" ;;
f) SHORT_FORMAT="$OPTARG" ;;
p) USE_PERCENT=0 ;;
a) USE_ALSA_NAME=1 ;;
d) USE_DESCRIPTION=1 ;;
H) AUDIO_HIGH_SYMBOL="$OPTARG" ;;
M) AUDIO_MED_SYMBOL="$OPTARG" ;;
L) AUDIO_LOW_SYMBOL="$OPTARG" ;;
X) AUDIO_MUTED_SYMBOL="$OPTARG" ;;
T) AUDIO_MED_THRESH="$OPTARG" ;;
t) AUDIO_LOW_THRESH="$OPTARG" ;;
C) DEFAULT_COLOR="$OPTARG" ;;
c) MUTED_COLOR="$OPTARG" ;;
i) AUDIO_INTERVAL="$OPTARG" ;;
m) MIXER="$OPTARG" ;;
s) SCONTROL="$OPTARG" ;;
h) printf \
"Usage: volume-pulseaudio [-S] [-F format] [-f format] [-p] [-a|-d] [-H symb] [-M symb]
[-L symb] [-X symb] [-T thresh] [-t thresh] [-C color] [-c color] [-i inter]
[-m mixer] [-s scontrol] [-h]
Options:
-F, -f\tOutput format (-F long format, -f short format) to use, amongst:
\t0\t symb vol [index:name]\t (default long)
\t1\t symb vol [name]
\t2\t symb vol [index]\t (default short)
\t3\t symb vol
-S\tSubscribe to volume events (requires persistent block, always uses long format)
-p\tOmit the percent sign (%%) in volume
-a\tUse ALSA name if possible
-d\tUse device description instead of name if possible
-H\tSymbol to use when audio level is high. Default: '$AUDIO_HIGH_SYMBOL'
-M\tSymbol to use when audio level is medium. Default: '$AUDIO_MED_SYMBOL'
-L\tSymbol to use when audio level is low. Default: '$AUDIO_LOW_SYMBOL'
-X\tSymbol to use when audio is muted. Default: '$AUDIO_MUTED_SYMBOL'
-T\tThreshold for medium audio level. Default: $AUDIO_MED_THRESH
-t\tThreshold for low audio level. Default: $AUDIO_LOW_THRESH
-C\tColor for non-muted audio. Default: $DEFAULT_COLOR
-c\tColor for muted audio. Default: $MUTED_COLOR
-i\tInterval size of volume increase/decrease. Default: $AUDIO_INTERVAL
-m\tUse the given mixer.
-s\tUse the given scontrol.
-h\tShow this help text
" && exit 0;;
esac
done
if [[ -z "$MIXER" ]] ; then
MIXER="default"
if amixer -D pulse info >/dev/null 2>&1 ; then
MIXER="pulse"
fi
fi
if [[ -z "$SCONTROL" ]] ; then
SCONTROL=$(amixer -D "$MIXER" scontrols | sed -n "s/Simple mixer control '\([^']*\)',0/\1/p" | head -n1)
fi
CAPABILITY=$(amixer -D $MIXER get $SCONTROL | sed -n "s/ Capabilities:.*cvolume.*/Capture/p")
function move_sinks_to_new_default {
DEFAULT_SINK=$1
pacmd list-sink-inputs | grep index: | grep -o '[0-9]\+' | while read SINK
do
pacmd move-sink-input $SINK $DEFAULT_SINK
done
}
function set_default_playback_device_next {
inc=${1:-1}
num_devices=$(pacmd list-sinks | grep -c index:)
sink_arr=($(pacmd list-sinks | grep index: | grep -o '[0-9]\+'))
default_sink_index=$(( $(pacmd list-sinks | grep index: | grep -no '*' | grep -o '^[0-9]\+') - 1 ))
default_sink_index=$(( ($default_sink_index + $num_devices + $inc) % $num_devices ))
default_sink=${sink_arr[$default_sink_index]}
pacmd set-default-sink $default_sink
move_sinks_to_new_default $default_sink
}
case "$BLOCK_BUTTON" in
1) set_default_playback_device_next ;;
2) amixer -q -D $MIXER sset $SCONTROL $CAPABILITY toggle ;;
3) set_default_playback_device_next -1 ;;
4) amixer -q -D $MIXER sset $SCONTROL $CAPABILITY $AUDIO_INTERVAL%+ ;;
5) amixer -q -D $MIXER sset $SCONTROL $CAPABILITY $AUDIO_INTERVAL%- ;;
esac
function print_format {
PERCENT="%"
[[ $USE_PERCENT == 0 ]] && PERCENT=""
case "$1" in
1) echo "$SYMBOL$VOL$PERCENT [$NAME]" ;;
2) echo "$SYMBOL$VOL$PERCENT [$INDEX]";;
3) echo "$SYMBOL$VOL$PERCENT" ;;
*) echo "$SYMBOL$VOL$PERCENT [$INDEX:$NAME]" ;;
esac
}
function print_block {
for name in INDEX NAME VOL MUTED; do
read $name
done < <(pacmd list-sinks | grep "index:\|name:\|volume: front\|muted:" | grep -A3 '*')
INDEX=$(echo "$INDEX" | grep -o '[0-9]\+')
VOL=$(echo "$VOL" | grep -o "[0-9]*%" | head -1 )
VOL="${VOL%?}"
NAME=$(echo "$NAME" | sed \
's/.*<.*\.\(.*\)>.*/\1/; t;'\
's/.*<\(.*\)>.*/\1/; t;'\
's/.*/unknown/')
if [[ $USE_ALSA_NAME == 1 ]] ; then
ALSA_NAME=$(pacmd list-sinks |\
awk '/^\s*\*/{f=1}/^\s*index:/{f=0}f' |\
grep "alsa.name\|alsa.mixer_name" |\
head -n1 |\
sed 's/.*= "\(.*\)".*/\1/')
NAME=${ALSA_NAME:-$NAME}
elif [[ $USE_DESCRIPTION == 1 ]] ; then
DESCRIPTION=$(pacmd list-sinks |\
awk '/^\s*\*/{f=1}/^\s*index:/{f=0}f' |\
grep "device.description" |\
head -n1 |\
sed 's/.*= "\(.*\)".*/\1/')
NAME=${DESCRIPTION:-$NAME}
fi
if [[ $MUTED =~ "no" ]] ; then
SYMBOL=$AUDIO_HIGH_SYMBOL
[[ $VOL -le $AUDIO_MED_THRESH ]] && SYMBOL=$AUDIO_MED_SYMBOL
[[ $VOL -le $AUDIO_LOW_THRESH ]] && SYMBOL=$AUDIO_LOW_SYMBOL
COLOR=$DEFAULT_COLOR
else
SYMBOL=$AUDIO_MUTED_SYMBOL
COLOR=$MUTED_COLOR
VOL=""
fi
# if [[ $SUBSCRIBE == 1 ]] ; then
# print_format "$LONG_FORMAT"
# else
# print_format "$LONG_FORMAT"
print_format "$SHORT_FORMAT"
# echo "$COLOR"
# fi
}
print_block
if [[ $SUBSCRIBE == 1 ]] ; then
while read -r EVENT; do
print_block
done < <(pactl subscribe | stdbuf -oL grep change)
fi

View File

@ -1,46 +0,0 @@
#!/bin/bash
# Copyright (C) 2014 Alexander Keller <github@nycroth.com>
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#------------------------------------------------------------------------
INTERFACE="${BLOCK_INSTANCE:-wlan0}"
#------------------------------------------------------------------------
# As per #36 -- It is transparent: e.g. if the machine has no battery or wireless
# connection (think desktop), the corresponding block should not be displayed.
[[ ! -d /sys/class/net/${INTERFACE}/wireless ]] ||
[[ "$(cat /sys/class/net/$INTERFACE/operstate)" = 'down' ]] && exit
#------------------------------------------------------------------------
QUALITY=$(grep $INTERFACE /proc/net/wireless | awk '{ print int($3 * 100 / 70) }')
#------------------------------------------------------------------------
echo $QUALITY% # full text
echo $QUALITY% # short text
# color
if [[ $QUALITY -ge 80 ]]; then
echo "#00FF00"
elif [[ $QUALITY -lt 80 ]]; then
echo "#FFF600"
elif [[ $QUALITY -lt 60 ]]; then
echo "#FFAE00"
elif [[ $QUALITY -lt 40 ]]; then
echo "#FF0000"
fi

View File

@ -3,25 +3,26 @@
# Please see http://i3wm.org/docs/userguide.html for a complete reference! # Please see http://i3wm.org/docs/userguide.html for a complete reference!
set $mod Mod4 set $mod Mod4
set $alt Mod1
floating_modifier $mod floating_modifier $mod
font pango:Noto Sans 9 font pango:sans 9
# kill focused window # kill focused window
bindsym $mod+apostrophe kill bindsym $mod+apostrophe kill
bindsym Mod1+F4 kill bindsym $alt+F4 kill
# change window focus # change window focus
bindsym $mod+d focus left bindsym $mod+d focus left
bindsym $mod+n focus right
bindsym $mod+t focus up
bindsym $mod+h focus down bindsym $mod+h focus down
bindsym $mod+t focus up
bindsym $mod+n focus right
# move focused window # move focused window
bindsym $mod+Shift+d move left bindsym $mod+Shift+d move left
bindsym $mod+Shift+n move down bindsym $mod+Shift+h move down
bindsym $mod+Shift+t move up bindsym $mod+Shift+t move up
bindsym $mod+Shift+h move right bindsym $mod+Shift+n move right
# split in horizontal orientation # split in horizontal orientation
bindsym $mod+m split h bindsym $mod+m split h
@ -30,6 +31,7 @@ bindsym $mod+w split v
# enter fullscreen mode for the focused container # enter fullscreen mode for the focused container
bindsym $mod+Shift+f fullscreen toggle global bindsym $mod+Shift+f fullscreen toggle global
bindsym $mod+f fullscreen toggle bindsym $mod+f fullscreen toggle
popup_during_fullscreen leave_fullscreen
# change container layout (stacked, tabbed, toggle split) # change container layout (stacked, tabbed, toggle split)
bindsym $mod+p layout stacking bindsym $mod+p layout stacking
@ -44,21 +46,7 @@ bindsym $mod+e sticky toggle
bindsym $mod+a focus parent bindsym $mod+a focus parent
bindsym $mod+o focus child bindsym $mod+o focus child
# Screen configs # set $10 "10:"
set $bl "DP-5"
set $tl "DP-1"
set $br "HDMI-0"
set $tr "DP-3"
# Workspace -> Screen
workspace 1 output $bl
workspace 2 output $br
workspace 3 output $tl
workspace 4 output $tr
workspace 5 output $bl
workspace 6 output $br
workspace 7 output $tl
workspace 8 output $tr
# switch to workspace # switch to workspace
bindsym $mod+1 workspace 1 bindsym $mod+1 workspace 1
@ -70,13 +58,13 @@ bindsym $mod+6 workspace 6
bindsym $mod+7 workspace 7 bindsym $mod+7 workspace 7
bindsym $mod+8 workspace 8 bindsym $mod+8 workspace 8
bindsym $mod+9 workspace 9 bindsym $mod+9 workspace 9
bindsym $mod+0 workspace 10 bindsym $mod+0 workspace $10
# move workspaces across screens # move workspaces across screens
bindsym $mod+Mod1+d move workspace to output left bindsym $mod+$alt+d move workspace to output left
bindsym $mod+Mod1+n move workspace to output right bindsym $mod+$alt+n move workspace to output right
bindsym $mod+Mod1+t move workspace to output up bindsym $mod+$alt+t move workspace to output up
bindsym $mod+Mod1+h move workspace to output down bindsym $mod+$alt+h move workspace to output down
# move focused container to workspace # move focused container to workspace
bindsym $mod+Shift+1 move container to workspace 1 bindsym $mod+Shift+1 move container to workspace 1
@ -88,7 +76,7 @@ bindsym $mod+Shift+6 move container to workspace 6
bindsym $mod+Shift+7 move container to workspace 7 bindsym $mod+Shift+7 move container to workspace 7
bindsym $mod+Shift+8 move container to workspace 8 bindsym $mod+Shift+8 move container to workspace 8
bindsym $mod+Shift+9 move container to workspace 9 bindsym $mod+Shift+9 move container to workspace 9
bindsym $mod+Shift+0 move container to workspace 10 bindsym $mod+Shift+0 move container to workspace $10
# opens logout/shutdown menu # opens logout/shutdown menu
bindsym $mod+Shift+Escape exec --no-startup-id ~/.config/i3/powermenu.sh bindsym $mod+Shift+Escape exec --no-startup-id ~/.config/i3/powermenu.sh
@ -106,29 +94,7 @@ client.unfocused $inactive-bg-color $inactive-bg-color $inactive-text-co
client.focused_inactive $inactive-bg-color $inactive-bg-color $inactive-text-color $bg-color client.focused_inactive $inactive-bg-color $inactive-bg-color $inactive-text-color $bg-color
client.urgent $urgent-bg-color $urgent-bg-color $text-color $bg-color client.urgent $urgent-bg-color $urgent-bg-color $text-color $bg-color
bar { exec_always --no-startup-id killall -q polybar; while pgrep -u $UID -x polybar >/dev/null; do sleep 1; done; exec polybar -r i3bar
status_command i3blocks -c ~/.config/i3/blocks/config
workspace_buttons yes
strip_workspace_numbers yes
tray_output primary
tray_padding 4
height 24
output $bl
output $br
output primary
position bottom
colors {
separator #757575
background #2f343f
# border background text
focused_workspace $bg-color $bg-color $text-color
inactive_workspace $inactive-bg-color $inactive-bg-color $inactive-text-color
urgent_workspace $urgent-bg-color $urgent-bg-color $text-color
}
}
# Window rules # Window rules
for_window [class="Pinentry"] floating enable for_window [class="Pinentry"] floating enable
@ -140,35 +106,33 @@ for_window [window_role="i3blocks-update-term"] floating enable
for_window [window_role="i3blocks-clock-term"] floating enable for_window [window_role="i3blocks-clock-term"] floating enable
for_window [title="^rofi$"] floating enable for_window [title="^rofi$"] floating enable
new_window pixel 5 new_window none
new_float none new_float none
gaps inner 7 gaps inner 12
gaps outer 2 gaps outer 4
#smart_gaps on
focus_follows_mouse yes focus_follows_mouse yes
# keybindings # keybindings
bindsym $mod+Shift+j reload bindsym $mod+Shift+j reload
#bindsym $mod+Shift+p restart
bindsym $mod+c exec chromium bindsym $mod+c exec chromium
bindsym $mod+v exec "i3-sensible-terminal -e \\"$SHELL -c vim;$SHELL\\" bindsym $mod+v exec "i3-sensible-terminal -e \\"$SHELL -c vim;$SHELL\\"
bindsym $mod+Ctrl+v exec "i3-sensible-terminal -r floating-term -e \\"$SHELL -c vim;$SHELL\\" bindsym $mod+Ctrl+v exec "i3-sensible-terminal -r floating-term -e \\"$SHELL -c vim;$SHELL\\"
bindsym Mod1+Tab exec ~/.config/i3/alt-tab.sh bindsym Mod1+Tab exec ~/.config/i3/alt-tab.sh
bindsym $mod+Return exec i3-sensible-terminal bindsym $mod+Return exec i3-sensible-terminal
bindsym $mod+Ctrl+Return exec i3-sensible-terminal -r floating-term --geometry 96x30 bindsym $mod+Ctrl+Return exec i3-sensible-terminal -r floating-term
bindsym $mod+Shift+Return exec i3-sensible-terminal -d "`xcwd`" bindsym $mod+Shift+Return exec i3-sensible-terminal -d "`xcwd`"
bindsym $mod+Ctrl+Shift+Return exec i3-sensible-terminal -r floating-term --geometry 96x30 -d "`xcwd`" bindsym $mod+Ctrl+Shift+Return exec i3-sensible-terminal -r floating-term -d "`xcwd`"
bindsym $mod+l exec ~/.config/i3/lock.sh bindsym $mod+l exec ~/.config/i3/lock.sh
# -fg "#CCD3DAE3" -bg "#CC383C4A" -hlbg "#CC5294E2"
bindsym $mod+space exec "pkill rofi; rofi -show run -sidebar-mode -terminal i3-sensible-terminal -normal-window" bindsym $mod+space exec "pkill rofi; rofi -show run -sidebar-mode -terminal i3-sensible-terminal -normal-window"
bindsym $mod+Shift+p exec rofi-pass bindsym $mod+Shift+p exec rofi-pass
bindsym $mod+Shift+e exec rofi-emoji bindsym $mod+Shift+e exec rofi-emoji
bindsym --release Print exec imgur-screenshot bindsym $mod+Shift+i exec rofi-fontawesome
bindsym --release $mod+Print exec imgur-screenshot -f bindsym --release Print exec screenshot
bindsym $mod+Mod1+space exec --no-startup-id ~/.config/i3/cycleaudio.py && pkill -RTMIN+10 i3blocks bindsym --release $mod+Print exec imgur-screenshot
bindsym $mod+numbersign exec "termite -e 'sh -c xclip\ -o\ |\ gpg\ --decrypt\ 2>&1\ \;\ $SHELL'" bindsym $mod+$alt+space exec --no-startup-id ~/.config/i3/cycleaudio.py && pkill -RTMIN+10 i3blocks
bindsym $mod+numbersign exec "i3-sensible-terminal -e 'sh -c xclip\ -o\ |\ gpg\ --decrypt\ 2>&1\ \;\ $SHELL'"
bindsym $mod+r exec "bash -c 'pwgen -nc 32 1 | tee >(xargs notify-send Generated\ password\:) | xclip -i'" bindsym $mod+r exec "bash -c 'pwgen -nc 32 1 | tee >(xargs notify-send Generated\ password\:) | xclip -i'"
bindsym $mod+g exec "LINK=$(gist -PRpc); notify-send -c transfer \\"<a href=\\\\"$LINK\\\\">$LINK</a>\\"" bindsym $mod+g exec "LINK=$(gist -PRpc); notify-send -c transfer \\"<a href=\\\\"$LINK\\\\">$LINK</a>\\""
@ -183,25 +147,27 @@ bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume @DEFAULT
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle
bindsym XF86MonBrightnessUp exec xbacklight -inc 5 && pkill -RTMIN+12 i3blocks bindsym XF86MonBrightnessUp exec xbacklight -inc 5 && pkill -RTMIN+12 i3blocks
bindsym XF86MonBrightnessDown exec xbacklight -dec 5 && pkill -RTMIN+12 i3blocks bindsym XF86MonBrightnessDown exec xbacklight -dec 5 && pkill -RTMIN+12 i3blocks
exec --no-startup-id "ip monitor | while read; do pkill -RTMIN+15 i3blocks; done"
# app launch shortcuts # app launch shortcuts
exec --no-startup-id ~/.fehbg
exec --no-startup-id ~/.config/i3/disable-standby-fs.py exec --no-startup-id ~/.config/i3/disable-standby-fs.py
exec --no-startup-id xautolock -time 5 -locker ~/.config/i3/lock.sh -nocloseout -nocloseerr exec --no-startup-id feh --no-fehbg --no-xinerama --bg-fill ~/pictures/lakesidesunrise.jpg
exec --no-startup-id xautolock -time 5 -locker 'dm-tool lock' -nocloseout -nocloseerr
# startup programs # startup programs
exec --no-startup-id pulseaudio
exec --no-startup-id nextcloud exec --no-startup-id nextcloud
exec --no-startup-id nm-applet
exec --no-startup-id blueman-applet exec --no-startup-id blueman-applet
exec --no-startup-id redshift exec --no-startup-id redshift
exec --no-startup-id xbindkeys exec --no-startup-id xbindkeys
exec --no-startup-id solaar exec --no-startup-id solaar
exec --no-startup-id pullover exec --no-startup-id pullover
exec --no-startup-id onboard
exec --no-startup-id touchegg
exec --no-startup-id mailnag
exec --no-startup-id compton -b --config ~/.config/compton.conf exec --no-startup-id compton -b --config ~/.config/compton.conf
exec --no-startup-id chromium --no-startup-window exec --no-startup-id chromium --no-startup-window
exec --no-startup-id thunderbird
exec i3-msg 'workspace 1; exec sleep 2 && chromium' exec i3-msg 'workspace 1; exec chromium'
exec i3-msg 'workspace 2; exec i3-sensible-terminal'
# vim:ft=i3 # vim:ft=i3

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.8 KiB

View File

@ -1,40 +0,0 @@
#!/usr/bin/env bash
icon="$HOME/.config/i3/lock.png"
tmpbg='/tmp/screen.png'
(( $# )) && { icon=$1; }
PX=0
PY=0
# lockscreen image info
R=$(file $icon | grep -o '[0-9]* x [0-9]*')
RX=$(echo $R | cut -d' ' -f 1)
RY=$(echo $R | cut -d' ' -f 3)
RES=$(xrandr --query | grep ' connected primary' | cut -f4 -d' ')
# monitor position/offset
SRX=$(echo $RES | cut -d'x' -f 1) # x pos
SRY=$(echo $RES | cut -d'x' -f 2 | cut -d'+' -f 1) # y pos
SROX=$(echo $RES | cut -d'x' -f 2 | cut -d'+' -f 2) # x offset
SROY=$(echo $RES | cut -d'x' -f 2 | cut -d'+' -f 3) # y offset
PX=$(($SROX + $SRX/2 - $RX/2))
PY=$(($SROY + $SRY/2 - $RY/2))
# screenshot, pixelise and overlay
maim | convert - -scale 5% -scale 2000% $icon -geometry +$PX+$PY -composite -matte $tmpbg
if command mpc 2>&1 1>/dev/null; then
playing=$(mpc status | grep playing | wc -l)
[[ $playing == 1 ]] && mpc pause
fi
i3lock -i "$tmpbg" -n -e
if command mpc 2>&1 1>/dev/null; then
[[ $playing == 1 ]] && mpc play
fi
rm "$tmpbg"

View File

@ -1,6 +1,6 @@
#!/bin/bash #!/bin/sh
option=$(echo " lock| logout| sleep| hibernate| power off| reboot| windows" | rofi -sep "|" -dmenu -i -p "" -auto-select -hide-scrollbar -monitor 0 -width 8 -lines 6 -location 3 -tokenize false -matching normal | xargs) option=$(echo "lock|logout|sleep|hibernate|power off|reboot|windows" | rofi -sep "|" -dmenu -i -p "" -auto-select -hide-scrollbar -monitor 0 -width 8 -lines 7 -location 3 -tokenize false -matching normal | xargs)
case $option in case $option in
lock) ./lock.sh;; lock) ./lock.sh;;

16
.config/latexmk/latexmkrc Normal file
View File

@ -0,0 +1,16 @@
$clean_ext = "bbl run.xml eps-converted-to.pdf";
$pdf_mode = 1;
$pdf_previewer = 'evince';
$latex = 'xetex -shell-escape';
$pdflatex = 'xelatex -shell-escape';
add_cus_dep('glo', 'gls', 0, 'run_makeglossaries');
add_cus_dep('acn', 'acr', 0, 'run_makeglossaries');
sub run_makeglossaries {
if ( $silent ) {
system "makeglossaries -q '$_[0]'";
}
else {
system "makeglossaries '$_[0]'";
};
}

View File

@ -0,0 +1,29 @@
[spamfilterplugin]
filter_text = viagra
[core]
imap_idle_timeout = 10
enabled_plugins = dbusplugin, libnotifyplugin, soundplugin
poll_interval = 10
credentialstore = auto
connectivity_test = auto
autostart = 1
[soundplugin]
soundfile = mailnag.ogg
[libnotifyplugin]
notification_mode = 2
max_visible_mails = 10
[account1]
enabled = 1
name = frebib.net
user = me@frebib.net
password =
server = imappro.zoho.com
port = 993
ssl = 1
imap = 1
idle = 0
folder = INBOX, Spam

42
.config/mimeapps.list Normal file
View File

@ -0,0 +1,42 @@
[Default Applications]
# eog for images
image/bmp=eog.desktop
image/gif=eog.desktop
image/jpeg=eog.desktop
image/jpg=eog.desktop
image/pjpeg=eog.desktop
image/png=eog.desktop
image/svg+xml-compressed=eog.desktop
image/svg+xml=eog.desktop
image/tiff=eog.desktop
image/x-bmp=eog.desktop
image/x-gray=eog.desktop
image/x-icb=eog.desktop
image/x-ico=eog.desktop
image/x-png=eog.desktop
image/x-portable-anymap=eog.desktop
image/x-portable-bitmap=eog.desktop
image/x-portable-graymap=eog.desktop
image/x-portable-pixmap=eog.desktop
# evince for pdfs
application/pdf=evince.desktop
# vim for textual files
application/x-shellscript=vim.desktop
text/english=vim.desktop
text/plain=vim.desktop
text/x-makefile=vim.desktop
# Chromium for web/html
text/html=chromium.desktop
x-scheme-handler/about=chromium.desktop
x-scheme-handler/http=chromium.desktop
x-scheme-handler/https=chromium.desktop
x-scheme-handler/unknown=chromium.desktop
# Various desktop applications
inode/directory=nautilus.desktop
x-scheme-handler/magnet=deluge.desktop
x-scheme-handler/tg=telegramdesktop.desktop

313
.config/polybar/config Normal file
View File

@ -0,0 +1,313 @@
[colours]
background = transparent
text = #eceff1
icon = #147a82
warning = #bd2c40
critical = #bd2c40
[settings]
format-foreground = ${colours.text}
format-background = ${colours.background}
format-spacing = 0
format-margin = 2.5
format-offset = 0
[bar/i3bar]
monitor = ${env:MONITOR:eDP1}
dpi = ${xrdb:Xft.dpi:-1}
fixed-center = false
enable-ipc = true
width = 100%
height = 44
bottom = true
radius = 0
foreground = ${colours.text}
background = ${colours.background}
line-size = 0
line-colour = #f00
padding-left = 2
padding-right = 2
module-margin-left = 0
module-margin-right = 1
font-0 = sans:pixelsize=9;1
font-1 = FontAwesome5Pro:pixelsize=10;2
modules-left = i3
modules-center =
# modules-right = volume updates weather xkeyboard wlan eth memory cpu xbacklight battery temperature date
modules-right = volume updates weather wlan eth memory cpu xbacklight battery temperature date
tray-position = right
tray-detached = false
tray-background = ${root.background}
tray-offset-x = -6
tray-offset-y = -2
tray-maxsize = 24
tray-padding = 2
tray-scale = 1.0
cursor-click = pointer
cursor-scroll = ns-resize
[module/updates]
type = custom/script
exec = $XDG_CONFIG_HOME/polybar/update.sh
tail = true
format-prefix = " "
format-prefix-foreground = ${colours.icon}
click-left = i3-msg exec -- i3-sensible-terminal -r i3blocks-update-term -e "yay && kill -USR1 %pid% || kill --USR1 %pid%"
[module/weather]
type = custom/script
exec = $XDG_CONFIG_HOME/polybar/weather.sh
interval = 120
click-left = i3-msg exec "i3-sensible-terminal -r floating-term -e 'sh -c \"xdotool getactivewindow windowsize 910 680 && curl wttr.in && sleep infinity\"'"
[module/xkeyboard]
type = internal/xkeyboard
format = <label-layout> <label-indicator>
format-prefix = " "
format-prefix-foreground = ${colours.icon}
format-prefix-underline = ${colours.background}
label-layout = %name%
label-indicator = %name%
[module/i3]
type = internal/i3
format = <label-state> <label-mode>
index-sort = true
wrapping-scroll = false
; Only show workspaces on the same output as the bar
; pin-workspaces = true
label-mode-padding = 3
label-mode-foreground = ${colours.text}
label-mode-background = ${colours.background}
; focused = Active workspace on focused monitor
label-focused = %index%
label-focused-padding = ${self.label-mode-padding}
label-focused-foreground = ${colours.text}
label-focused-background = ${colours.background}
label-focused-underline = ${colours.background}
; unfocused = Inactive workspace on any monitor
label-unfocused = ${self.label-focused}
label-unfocused-padding = ${self.label-focused-padding}
label-unfocused-foreground= ${colours.icon}
label-unfocused-underline = ${self.label-focused-underline}
; visible = Active workspace on unfocused monitor
label-visible = ${self.label-focused}
label-visible-foreground= ${colours.icon}
label-visible-padding = ${self.label-focused-padding}
label-visible-background = ${self.label-focused-background}
label-visible-underline = ${self.label-focused-underline}
; urgent = Workspace with urgency hint set
label-urgent = ${self.label-focused}
label-urgent-foreground = ${colours.warning}
label-urgent-padding = ${self.label-focused-padding}
[module/xbacklight]
type = internal/xbacklight
label = %percentage%
format = <label>
format-prefix = " "
format-prefix-foreground = ${colours.icon}
[module/backlight-acpi]
inherit = module/xbacklight
type = internal/backlight
card = intel_backlight
[module/cpu]
type = internal/cpu
interval = 2
format-prefix = " "
format-prefix-foreground = ${colours.icon}
format-underline = ${colours.background}
label = %percentage%%
[module/memory]
type = internal/memory
interval = 2
format-prefix = " "
format-prefix-foreground = ${colours.icon}
label = %percentage_used%%
[module/wlan]
type = internal/network
interface = wlp1s0
interval = 3.0
format-connected = <ramp-signal> <label-connected>
format-connected-underline = ${colours.background}
label-connected = %essid%
format-disconnected =
;format-disconnected = <label-disconnected>
;format-disconnected-underline = ${self.format-connected-underline}
;label-disconnected = %ifname% disconnected
;label-disconnected-foreground = ${colours.icon}
ramp-signal-0 = 
ramp-signal-1 = 
ramp-signal-2 = 
ramp-signal-foreground = ${colours.icon}
[module/eth]
type = internal/network
interface = eth0
interval = 3.0
label-connected = %local_ip%
format-connected-prefix = " "
format-connected-prefix-foreground = ${colours.icon}
format-connected-underline = ${colours.background}
;format-disconnected = RIP
;format-disconnected = <label-disconnected>
;format-disconnected-underline = ${self.format-connected-underline}
;label-disconnected = %ifname% disconnected
label-disconnected-foreground = ${colours.critical}
[module/date]
type = internal/date
interval = 1
label = %{A3:i3-sensible-terminal -r i3blocks-clock-term -e "sh -c \"xdotool getactivewindow windowsize 500 600; cal -y $(date +%Y); stty -echo; exec sleep infinity\"" &:}%date% %time%%{A}
time = %H:%M
time-alt = %a %e %b %Y %H:%M:%S
format-prefix = " "
format-prefix-foreground = ${colours.icon}
[module/volume]
type = internal/pulseaudio
label-volume = %percentage%
format-volume = %{A3:pavucontrol:}<ramp-volume> <label-volume>%{A}
format-muted = %{A3:pavucontrol:}<label-muted>%{A}
label-volume-foreground = ${root.foreground}
format-muted-foreground = ${colours.icon}
ramp-volume-foreground = ${colours.icon}
label-muted = ""
ramp-volume-0 = ""
ramp-volume-1 = ""
ramp-volume-2 = ""
ramp-volume-3 = ""
ramp-volume-4 = ""
ramp-volume-5 = ""
[module/battery]
type = internal/battery
battery = BAT0
adapter = AC0
full-at = 95
format-full = <label-full>
format-charging = <label-charging>
format-discharging = <ramp-capacity> <label-discharging>
format-full-underline = ${self.format-charging-underline}
format-charging-underline = ${colours.background}
format-discharging-underline = ${self.format-charging-underline}
format-full-prefix = " "
format-charging-prefix = " "
ramp-capacity-0 = 
ramp-capacity-1 = 
ramp-capacity-2 = 
ramp-capacity-3 = 
ramp-capacity-4 = 
format-full-prefix-foreground = ${colours.icon}
format-charging-prefix-foreground = ${colours.icon}
ramp-capacity-foreground = ${colours.icon}
ramp-capacity-0-foreground = ${colours.critical}
ramp-capacity-1-foreground = ${colours.warning}
[module/temperature]
type = internal/temperature
thermal-zone = 1
warn-temperature = 70
format = <ramp> <label>
format-warn = <ramp> <label-warn>
label = %temperature-c%
label-warn = %temperature-c%
label-warn-foreground = ${colours.background}
ramp-0 = 
ramp-1 = 
ramp-2 = 
ramp-3 = 
ramp-4 = 
ramp-5 = 
ramp-6 = 
ramp-7 = 
ramp-foreground = ${colours.icon}
[module/powermenu]
type = custom/menu
expand-right = true
label-open = 
label-close = cancel
label-separator = |
label-open-foreground = ${colours.icon}
label-close-foreground = ${colours.background}
label-separator-foreground = ${colours.icon}
menu-0-0 = reboot
menu-0-0-exec = menu-open-1
menu-0-1 = power off
menu-0-1-exec = menu-open-2
menu-1-0 = cancel
menu-1-0-exec = menu-open-0
menu-1-1 = reboot
menu-1-1-exec = sudo reboot
menu-2-0 = power off
menu-2-0-exec = sudo poweroff
menu-2-1 = cancel
menu-2-1-exec = menu-open-0
[settings]
screenchange-reload = true
;compositing-background = xor
;compositing-background = screen
;compositing-foreground = source
;compositing-border = over
; vim:ft=dosini

11
.config/polybar/update.sh Executable file
View File

@ -0,0 +1,11 @@
#!/bin/sh
dothething() { count=$( (checkupdates & yay -Qum) 2>/dev/null | wc -l); test $count -gt 0 && echo $count || echo; }
trap 'true' HUP USR1
while true; do
dothething
sleep 120 &
wait
done

141
.config/polybar/weather.sh Executable file
View File

@ -0,0 +1,141 @@
#!/bin/sh
get_icon_day() {
case $1 in
210) echo;; # light thunderstorm
211) echo;; # thunderstorm
500) echo;; # light rain
721) echo;; # haze
800) echo;; # clear sky
801) echo;; # few clouds
802) echo;; # scattered clouds
803) echo;; # broken clouds
804) echo;; # overcast clouds
*) return 1;;
esac
}
get_icon_night() {
case $1 in
210) echo;; # light thunderstorm
211) echo;; # thunderstorm
500) echo;; # light rain
800) echo;; # clear sky
801) echo;; # few clouds
802) echo;; # scattered clouds
803) echo;; # broken clouds
804) echo;; # overcast clouds
*) return 1;;
esac
}
get_icon() {
case $1 in
d) fn=get_icon_day;;
n) fn=get_icon_night;;
esac
if $fn $2; then
return
fi
case $2 in
200) echo;; # thunderstorm with light rain
201) echo;; # thunderstorm with rain
202) echo;; # thunderstorm with heavy rain
210) echo;; # light thunderstorm
211) echo;; # thunderstorm
212) echo;; # heavy thunderstorm
221) echo;; # ragged thunderstorm
230) echo;; # thunderstorm with light drizzle
231) echo;; # thunderstorm with drizzle
232) echo;; # thunderstorm with heavy drizzle
300) echo;; # light intensity drizzle
301) echo;; # drizzle
302) echo;; # heavy intensity drizzle
310) echo;; # light intensity drizzle rain
311) echo;; # drizzle rain
312) echo;; # heavy intensity drizzle rain
313) echo;; # shower rain and drizzle
314) echo;; # heavy shower rain and drizzle
321) echo;; # shower drizzle
500) echo;; # light rain
501) echo;; # moderate rain
502) echo;; # heavy intensity rain
503) echo;; # very heavy rain
504) echo;; # extreme rain
511) echo;; # freezing rain
520) echo;; # light intensity shower rain
521) echo;; # shower rain
522) echo;; # heavy intensity shower rain
531) echo;; # ragged shower rain
600) echo;; # light snow
601) echo;; # snow
602) echo;; # heavy snow
611) echo;; # sleet
612) echo;; # shower sleet
615) echo;; # light rain and snow
616) echo;; # rain and snow
620) echo;; # light shower snow
621) echo;; # shower snow
622) echo;; # heavy shower snow
701) echo;; # mist
711) echo;; # smoke
721) echo;; # haze
741) echo;; # fog
762) echo;; # volcanic ash
781) echo;; # tornado
800) echo ;; # clear sky
801) echo ;; # few clouds
802) echo ;; # scattered clouds
803) echo ;; # broken clouds
804) echo ;; # overcast clouds
# 731) echo ;; # sand, dust whirls
# 751) echo ;; # sand
# 761) echo ;; # dust
# 771) echo ;; # squalls
*) echo;;
esac
}
KEY="$OPENWEATHERMAP_API_KEY"
CITY=""
UNITS="metric"
SYMBOL="°"
ICON_COL="147a82"
API="https://api.openweathermap.org/data/2.5"
if [ ! -z $CITY ]; then
if [ "$CITY" -eq "$CITY" ] 2>/dev/null; then
CITY_PARAM="id=$CITY"
else
CITY_PARAM="q=$CITY"
fi
weather=$(curl -sf "$API/weather?appid=$KEY&$CITY_PARAM&units=$UNITS")
else
location=$(curl -sf https://location.services.mozilla.com/v1/geolocate?key=geoclue)
if [ ! -z "$location" ]; then
location_lat="$(echo "$location" | jq '.location.lat')"
location_lon="$(echo "$location" | jq '.location.lng')"
weather=$(curl -sf "$API/weather?appid=$KEY&lat=$location_lat&lon=$location_lon&units=$UNITS")
else
echo "%{F#$ICON_COL}%{F-}"
fi
fi
if [ ! -z "$weather" ]; then
# weather_desc=$(echo "$weather" | jq -r ".weather[0].description")
weather_temp=$(echo "$weather" | jq '.main.temp' | cut -d "." -f 1)
weather_code=$(echo "$weather" | jq -r '.weather[0].id')
time_of_day=$(echo "$weather" | jq -r '.weather[0].icon | split("") | last')
icon=$(get_icon "$time_of_day" "$weather_code")
echo "%{F#$ICON_COL}$icon%{F-} $weather_temp$SYMBOL"
fi

16
.config/procps/toprc Normal file
View File

@ -0,0 +1,16 @@
top's Config File (Linux processes with windows)
Id:i, Mode_altscr=0, Mode_irixps=0, Delay_time=0.100, Curwin=0
Def fieldscur=<3D>&K<><4B><EFBFBD><EFBFBD><EFBFBD>@<40><><EFBFBD>56<35>F<EFBFBD>')*+,-./0128<>?ABCGHIJLMNOPQRSTUVWXYZ[\]^_`abcdefghij
winflags=163638, sortindx=21, maxtasks=0, graph_cpus=1, graph_mems=1
summclr=1, msgsclr=1, headclr=3, taskclr=1
Job fieldscur=<3D><><EFBFBD><EFBFBD><EFBFBD>(<28><>Ļ<EFBFBD>@<<3C><>)*+,-./012568>?ABCFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij
winflags=163124, sortindx=0, maxtasks=0, graph_cpus=2, graph_mems=0
summclr=6, msgsclr=6, headclr=7, taskclr=6
Mem fieldscur=<3D><><EFBFBD><<3C><><EFBFBD><EFBFBD><EFBFBD>MBN<42>D34<33><34>&'()*+,-./0125689FGHIJKLOPQRSTUVWXYZ[\]^_`abcdefghij
winflags=163124, sortindx=21, maxtasks=0, graph_cpus=2, graph_mems=0
summclr=5, msgsclr=5, headclr=4, taskclr=5
Usr fieldscur=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)+,-./1234568;<=>?@ABCFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghij
winflags=163124, sortindx=3, maxtasks=0, graph_cpus=2, graph_mems=0
summclr=3, msgsclr=3, headclr=2, taskclr=3
Fixed_widest=0, Summ_mscale=2, Task_mscale=1, Zero_suppress=0

View File

@ -0,0 +1,42 @@
* {
background-color: transparent;
text-color: #D3DAE3;
border-color: @text-color;
}
window {
border: 0.3em;
border-color: #2f343f;
padding: 0.8em;
background-color: rgba(56, 60, 74, 0.95);
transparency: "real";
}
inputbar {
padding: 0 0 0.3em;
border: 0 0 0.1em;
}
prompt {
padding: 0 0.4em 0 0.2em;
}
listview {
padding: 0.3em 0;
}
element {
padding: 0.1em 0.2em;
}
button {
border: 0 0 0.1em;
border-color: transparent;
}
button.selected.normal {
border-color: @text-color;
}
element.selected.normal {
background-color: rgb(64, 132, 214);
}
/* vim: ft=css sw=2 */

View File

@ -8,9 +8,9 @@ rofi.color-normal: #00383C4A, #D3DAE3, #00383C4A, #5294E2, #ECEFF1
rofi.bc: #CC383C4A rofi.bc: #CC383C4A
rofi.bw: 5 rofi.bw: 5
rofi.padding: 8 rofi.padding: 8
rofi.lines: 12 rofi.lines: 14
rofi.width: 40 rofi.width: 40
rofi.font: Noto Sans 14 rofi.font: Noto Sans 18
rofi.line-margin: 6 rofi.line-margin: 6
rofi.sep: | rofi.sep: |
rofi.prompt: > rofi.prompt: >

145
.config/rofi/config.rasi Normal file
View File

@ -0,0 +1,145 @@
configuration {
theme: "arc-dark";
font: "sans 14";
dpi: 0;
width: 40;
lines: 12;
/* show-icons: true; */
separator-style: "solid";
modi: "window,run,ssh";
kb-row-tab: "Shift-Tab";
kb-row-select: "Tab";
terminal: "i3-sensible-terminal";
matching: "glob";
tokenize: true;
/* columns: 1;*/
/* bw: 1;*/
/* location: 0;*/
/* padding: 5;*/
/* yoffset: 0;*/
/* xoffset: 0;*/
/* fixed-num-lines: true;*/
/* ssh-client: "ssh";*/
/* ssh-command: "{terminal} -e {ssh-client} {host}";*/
/* run-command: "{cmd}";*/
/* run-list-command: "";*/
/* run-shell-command: "{terminal} -e {cmd}";*/
/* window-command: "xkill -id {window}";*/
/* window-match-fields: "all";*/
/* drun-icon-theme: ;*/
/* drun-match-fields: "name,generic,exec,categories";*/
/* disable-history: false;*/
/* sort: false;*/
/* levenshtein-sort: false;*/
/* case-sensitive: false;*/
/* cycle: true;*/
/* sidebar-mode: false;*/
/* eh: 1;*/
/* auto-select: false;*/
/* parse-hosts: false;*/
/* parse-known-hosts: true;*/
/* combi-modi: "window,run";*/
/* m: "-5";*/
/* line-margin: 2;*/
/* line-padding: 1;*/
/* filter: ;*/
/* hide-scrollbar: false;*/
/* fullscreen: false;*/
/* fake-transparency: false;*/
/* dpi: -1;*/
/* threads: 0;*/
/* scrollbar-width: 8;*/
/* scroll-method: 0;*/
/* fake-background: "screenshot";*/
/* window-format: "{w} {i}{c} {t}";*/
/* click-to-exit: true;*/
/* show-match: true;*/
/* color-normal: ;*/
/* color-urgent: ;*/
/* color-active: ;*/
/* color-window: ;*/
/* max-history-size: 25;*/
/* combi-hide-mode-prefix: false;*/
/* pid: "/run/user/1000/rofi.pid";*/
/* display-window: ;*/
/* display-windowcd: ;*/
/* display-run: ;*/
/* display-ssh: ;*/
/* display-drun: ;*/
/* display-combi: ;*/
/* display-keys: ;*/
/* kb-primary-paste: "Control+V,Shift+Insert";*/
/* kb-secondary-paste: "Control+v,Insert";*/
/* kb-clear-line: "Control+w";*/
/* kb-move-front: "Control+a";*/
/* kb-move-end: "Control+e";*/
/* kb-move-word-back: "Alt+b";*/
/* kb-move-word-forward: "Alt+f";*/
/* kb-move-char-back: "Left,Control+b";*/
/* kb-move-char-forward: "Right,Control+f";*/
/* kb-remove-word-back: "Control+Alt+h,Control+BackSpace";*/
/* kb-remove-word-forward: "Control+Alt+d";*/
/* kb-remove-char-forward: "Delete,Control+d";*/
/* kb-remove-char-back: "BackSpace,Control+h";*/
/* kb-remove-to-eol: "Control+k";*/
/* kb-remove-to-sol: "Control+u";*/
/* kb-accept-entry: "Control+j,Control+m,Return,KP_Enter";*/
/* kb-accept-custom: "Control+Return";*/
/* kb-accept-alt: "Shift+Return";*/
/* kb-delete-entry: "Shift+Delete";*/
/* kb-mode-next: "Shift+Right,Control+Tab";*/
/* kb-mode-previous: "Shift+Left,Control+ISO_Left_Tab";*/
/* kb-row-left: "Control+Page_Up";*/
/* kb-row-right: "Control+Page_Down";*/
/* kb-row-up: "Up,Control+p,ISO_Left_Tab";*/
/* kb-row-down: "Down,Control+n";*/
/* kb-page-prev: "Page_Up";*/
/* kb-page-next: "Page_Down";*/
/* kb-row-first: "Home,KP_Home";*/
/* kb-row-last: "End,KP_End";*/
/* kb-screenshot: "Alt+S";*/
/* kb-toggle-case-sensitivity: "grave,dead_grave";*/
/* kb-toggle-sort: "Alt+grave";*/
/* kb-cancel: "Escape,Control+g,Control+bracketleft";*/
/* kb-custom-1: "Alt+1";*/
/* kb-custom-2: "Alt+2";*/
/* kb-custom-3: "Alt+3";*/
/* kb-custom-4: "Alt+4";*/
/* kb-custom-5: "Alt+5";*/
/* kb-custom-6: "Alt+6";*/
/* kb-custom-7: "Alt+7";*/
/* kb-custom-8: "Alt+8";*/
/* kb-custom-9: "Alt+9";*/
/* kb-custom-10: "Alt+0";*/
/* kb-custom-11: "Alt+exclam";*/
/* kb-custom-12: "Alt+at";*/
/* kb-custom-13: "Alt+numbersign";*/
/* kb-custom-14: "Alt+dollar";*/
/* kb-custom-15: "Alt+percent";*/
/* kb-custom-16: "Alt+dead_circumflex";*/
/* kb-custom-17: "Alt+ampersand";*/
/* kb-custom-18: "Alt+asterisk";*/
/* kb-custom-19: "Alt+parenleft";*/
/* kb-select-1: "Super+1";*/
/* kb-select-2: "Super+2";*/
/* kb-select-3: "Super+3";*/
/* kb-select-4: "Super+4";*/
/* kb-select-5: "Super+5";*/
/* kb-select-6: "Super+6";*/
/* kb-select-7: "Super+7";*/
/* kb-select-8: "Super+8";*/
/* kb-select-9: "Super+9";*/
/* kb-select-10: "Super+0";*/
/* ml-row-left: "ScrollLeft";*/
/* ml-row-right: "ScrollRight";*/
/* ml-row-up: "ScrollUp";*/
/* ml-row-down: "ScrollDown";*/
/* me-select-entry: "MousePrimary";*/
/* me-accept-entry: "MouseDPrimary";*/
/* me-accept-custom: "Control+MouseDPrimary";*/
}
/* vim: ft=css sw=2 */

View File

@ -0,0 +1 @@
/usr/lib/systemd/user/pulseaudio.socket

View File

@ -1,5 +1,5 @@
[options] [options]
font = SauceCodePro 9 font = monospace 9.5
scrollback_lines = 1000000 scrollback_lines = 1000000
cursor_blink = off cursor_blink = off
size_hints = true size_hints = true

View File

@ -5,7 +5,7 @@
# homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an # homedir-relative path, or XDG_xxx_DIR="/yyy", where /yyy is an
# absolute path. No other format is supported. # absolute path. No other format is supported.
# #
XDG_DESKTOP_DIR="$HOME/documents" XDG_DESKTOP_DIR="$HOME"
XDG_DOCUMENTS_DIR="$HOME/documents" XDG_DOCUMENTS_DIR="$HOME/documents"
XDG_DOWNLOAD_DIR="$HOME/downloads" XDG_DOWNLOAD_DIR="$HOME/downloads"
XDG_MUSIC_DIR="$HOME/music" XDG_MUSIC_DIR="$HOME/music"

View File

@ -1,7 +1,8 @@
/bundle/ /.netrwhist
/autoload/plug.vim
/plug/
/spell/ /spell/
/swapfiles/ /swapfiles/
/viminfo
/viminf*.tmp
/vim-latex /vim-latex
/.netrwhist /viminf*.tmp
/viminfo

View File

@ -1,13 +1,15 @@
set nocompatible " be iMproved, required set nocompatible " be iMproved, required
" Reconfigure Vim to be clean! " Reconfigure Vim to be clean!
set rtp+=~/.config/vim set undodir=$XDG_CACHE_HOME/vim/undo//
set directory=.,~/.config/vim set directory=$XDG_CACHE_HOME/vim/swap//
set viminfo+=n~/.config/vim/viminfo set backupdir=$XDG_CACHE_HOME/vim/backup//
set directory=$HOME/.config/vim/swapfiles// set viminfo+='1000,n$XDG_CACHE_HOME/vim/viminfo
set runtimepath-=$HOME/.vim
set runtimepath^=$XDG_CONFIG_HOME/vim,$VIMRUNTIME,$XDG_CONFIG_HOME/vim/after
let g:netrw_home=$XDG_CACHE_HOME.'/vim'
syntax enable silent !mkdir -p $XDG_CACHE_HOME/vim/swap $XDG_CACHE_HOME/vim/undo $XDG_CACHE_HOME/vim/backup
filetype plugin on
set tabstop=4 set tabstop=4
set shiftwidth=0 " Use tabstop set shiftwidth=0 " Use tabstop
@ -40,12 +42,16 @@ let mapleader="\<space>"
" Autosave settings " Autosave settings
function! SaveIfExist() function! SaveIfExist()
if @% != "" && filereadable(@%) && !&readonly && &modified if @% != "" && filereadable(@%) && !&readonly && &modified
SyntasticCheck
write write
endif endif
endfunction endfunction
set autowrite set autowrite
autocmd CursorHold,CursorHoldI,InsertLeave,FocusGained,FocusLost * call SaveIfExist() autocmd CursorHold,CursorHoldI,InsertLeave,FocusGained,FocusLost * call SaveIfExist()
" Auto-resize split on window resize
autocmd VimResized * wincmd =
" Search options " Search options
set hlsearch set hlsearch
set ignorecase set ignorecase
@ -76,34 +82,41 @@ set cul cuc
highlight CursorLine cterm=NONE ctermbg=8 highlight CursorLine cterm=NONE ctermbg=8
highlight CursorColumn cterm=NONE ctermbg=8 highlight CursorColumn cterm=NONE ctermbg=8
" set the runtime path to include Vundle and initialize if empty(glob('$XDG_CONFIG_HOME/vim/autoload/plug.vim'))
set rtp+=~/.config/vim/bundle/Vundle.vim silent !curl -fsSLo $XDG_CONFIG_HOME/vim/autoload/plug.vim --create-dirs
call vundle#begin() \ https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
call vundle#rc('~/.config/vim/bundle') autocmd VimEnter * PlugInstall --sync | source $VIMRC
endif
Plugin 'VundleVim/Vundle.vim' call plug#begin('$XDG_CONFIG_HOME/vim/plug')
Plugin 'Valloric/YouCompleteMe'
Plugin 'scrooloose/syntastic'
Plugin 'scrooloose/nerdtree'
Plugin 'tpope/vim-sensible'
Plugin 'tpope/vim-fugitive'
Plugin 'tpope/vim-rhubarb'
Plugin 'tpope/vim-abolish'
Plugin 'tpope/vim-surround'
Plugin 'tpope/vim-repeat'
Plugin 'tpope/vim-commentary'
Plugin 'majutsushi/tagbar'
Plugin 'airblade/vim-gitgutter'
Plugin 'ryanoasis/vim-devicons'
Plugin 'vim-airline/vim-airline'
Plugin 'vim-airline/vim-airline-themes'
Plugin 'chr4/nginx.vim'
Plugin 'PotatoesMaster/i3-vim-syntax'
Plugin 'lervag/vimtex'
Plugin 'JamshedVesuna/vim-markdown-preview'
Plugin 'junegunn/fzf.vim'
call vundle#end() Plug 'Valloric/YouCompleteMe'
Plug 'scrooloose/syntastic'
Plug 'scrooloose/nerdtree', { 'on': 'NERTreeToggle' }
Plug 'tpope/vim-sensible'
Plug 'tpope/vim-fugitive'
Plug 'tpope/vim-rhubarb'
Plug 'tpope/vim-abolish'
Plug 'tpope/vim-surround'
Plug 'tpope/vim-repeat'
Plug 'tpope/vim-commentary'
Plug 'majutsushi/tagbar'
Plug 'airblade/vim-gitgutter'
Plug 'ryanoasis/vim-devicons'
Plug 'vim-airline/vim-airline'
Plug 'vim-airline/vim-airline-themes'
Plug 'lervag/vimtex'
Plug 'JamshedVesuna/vim-markdown-preview'
Plug 'junegunn/fzf.vim'
Plug 'fatih/vim-go', { 'do': ':GoUpdateBinaries' }
" Syntax Highlighting
Plug 'chr4/nginx.vim'
Plug 'PotatoesMaster/i3-vim-syntax'
Plug 'puppetlabs/puppet-syntax-vim'
Plug 'arrufat/vala.vim'
call plug#end()
" Change to dvorak-mapped keys " Change to dvorak-mapped keys
let g:use_dvorak = 1 let g:use_dvorak = 1
@ -115,17 +128,32 @@ if !exists('g:ycm_semantic_triggers')
endif endif
let g:ycm_semantic_triggers.tex = g:vimtex#re#youcompleteme let g:ycm_semantic_triggers.tex = g:vimtex#re#youcompleteme
"let g:vimtex_view_method='zathura' "let g:vimtex_view_method='zathura'
let g:tex_flavor='latex' let g:tex_flavor='xelatex'
let g:vimtex_indent_enabled = 0 " auto-indentation is wrong and annoying let g:vimtex_indent_enabled = 0 " auto-indentation is wrong and annoying
let g:syntastic_tex_checkers = ['chktex']
autocmd FileType tex silent VimtexCompile autocmd FileType tex silent VimtexCompile
autocmd FileType tex setlocal spell autocmd FileType tex setlocal spell
autocmd FileType tex TagbarOpen augroup vimtex
autocmd!
autocmd BufWritePost tex call vimtex#toc#refresh()
autocmd BufWritePost tex call vimtex#labels#refresh()
autocmd BufWritePost tex silent VimtexCompile
augroup END
" Vim-Airline config " Vim-Airline config
let g:Powerline_symbols = 'fancy' let g:Powerline_symbols = 'fancy'
let g:airline_powerline_fonts = 1 let g:airline_powerline_fonts = 1
let g:airline_theme='solarized' let g:airline_theme='solarized'
let g:airline#extensions#tabline#enabled = 1 let g:airline#extensions#tabline#enabled = 1
let g:syntastic_always_populate_loc_list = 1
let g:syntastic_auto_loc_list = 1
let g:syntastic_check_on_open = 1
let g:syntastic_check_on_wq = 0
set statusline+=%#warningmsg#
set statusline+=%{SyntasticStatuslineFlag()}
set statusline+=%*
" vim-markdown plugin " vim-markdown plugin
let vim_markdown_preview_toggle=0 let vim_markdown_preview_toggle=0
@ -149,10 +177,12 @@ let g:tagbar_singleclick = 1
let g:tagbar_autopreview = 1 let g:tagbar_autopreview = 1
" NERDTree configuration " NERDTree configuration
map <leader><space> :NERDTreeToggle<CR> map <leader><tab> :NERDTreeToggle<CR>
" FZF configurationn " FZF configurationn
map <leader><tab> :Files<CR> map <leader><space> :Files<CR>
map <leader>b :Buffers<CR>
map <leader>l :Lines<CR>
" Disable mouse " Disable mouse
set mouse=nicr set mouse=nicr
@ -192,10 +222,6 @@ if (exists("g:use_dvorak") && g:use_dvorak == 1)
noremap h j noremap h j
noremap t k noremap t k
noremap n l noremap n l
noremap D H
noremap H J
noremap T K
noremap N L
noremap gh gj noremap gh gj
noremap gt gk noremap gt gk
@ -250,7 +276,20 @@ if (exists("g:use_dvorak") && g:use_dvorak == 1)
\ 'x': ['tsd', 'tsD'], \ 'x': ['tsd', 'tsD'],
\} \}
let NERDTreeMapOpenInTab='\t' " NERDTree configuration
let NERDTreeMapOpenInTab='\t' " prevent t opening file
" Also remap keys in :Explore
augroup netrw_dvorak_fix
autocmd!
autocmd filetype netrw call Fix_netrw_maps_for_dvorak()
augroup END
function! Fix_netrw_maps_for_dvorak()
noremap <buffer> d h
noremap <buffer> h j
noremap <buffer> t k
noremap <buffer> n l
endfunction
endif endif
@ -265,5 +304,8 @@ com! WQA wqa
" Write with sudo " Write with sudo
cmap w!! w !sudo tee > /dev/null % cmap w!! w !sudo tee > /dev/null %
" Unmap ex-mode
map Q <nop>
autocmd FileType markdown setlocal ts=2 sts=2 sw=2 et autocmd FileType markdown setlocal ts=2 sts=2 sw=2 et
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 et autocmd FileType yaml setlocal ts=2 sts=2 sw=2 et

4
.config/zsh/.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
/antigen/
/log/
/histfile
/.zcompdump*

View File

@ -3,12 +3,8 @@ unsetopt MULTIBYTE
# Config and cache directory paths # Config and cache directory paths
CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}" CONFIG_DIR="${XDG_CONFIG_HOME:-$HOME/.config}"
ZSH_DIR="$CONFIG_DIR/zsh" ZSH_DIR="$CONFIG_DIR/zsh"
ZSH_CACHE_DIR="$CONFIG_DIR/oh-my-zsh/cache"
ADOTDIR="$ZSH_DIR/antigen" # Antigen directory
LOG_DIR="$ZSH_DIR/log" LOG_DIR="$ZSH_DIR/log"
ANTIGEN_LOG="$LOG_DIR/antigen-$(date +"%Y_%m_%d_%I_%M_%p").log" mkdir -p "$LOG_DIR"
mkdir -p "$ZSH_CACHE_DIR" "$ZSH_DIR" "$LOG_DIR"
HISTFILE="$ZSH_DIR/histfile" HISTFILE="$ZSH_DIR/histfile"
HISTSIZE=999999 HISTSIZE=999999
@ -17,14 +13,14 @@ SAVEHIST=999999
exists() { which $@ 0<&- 1>/dev/null 2>/dev/null; } exists() { which $@ 0<&- 1>/dev/null 2>/dev/null; }
# Only set tty if running interactively # Only set tty if running interactively
if exists tty && tty -s; then if exists tty && tty -s 1>/dev/null 2>/dev/null; then
# Resolve at shell runtime # Resolve at shell runtime
export GPG_TTY="$(tty)" export GPG_TTY="$(tty)"
fi fi
# Set some useful ZSH/Bash options # Set some useful ZSH/Bash options
setopt sharehistory histignorealldups histignorespace histreduceblanks setopt sharehistory histignorealldups histignorespace histreduceblanks
setopt pathdirs autocd autopushd extendedglob alwaystoend dvorak setopt pathdirs autocd autopushd extendedglob nullglob alwaystoend interactivecomments dvorak
# Completion initialisation # Completion initialisation
autoload -U compinit ; compinit autoload -U compinit ; compinit
@ -40,10 +36,19 @@ zstyle ':completion:*' matcher-list '' 'm:{[:lower:][:upper:]}={[:upper:][:lower
zstyle ':completion:*' rehash true zstyle ':completion:*' rehash true
zstyle ':completion:*' menu select zstyle ':completion:*' menu select
zstyle ':completion:*' list-colors "${(@s.:.)LS_COLORS}" zstyle ':completion:*' list-colors "${(@s.:.)LS_COLORS}"
zstyle ':compinstall' filename "$HOME/.zshrc" zstyle ':compinstall' filename "${ZDOTDIR:-~}/.zshrc"
# Pre-load vi-mode edit-command-line before antigen plugins are loaded
autoload -z edit-command-line
zle -N edit-command-line
export WORDCHARS='*?_[]~=&;!#$%^(){}'
x-bash-backward-kill-word(){ WORDCHARS='' zle kill-word; }
zle -N x-bash-backward-kill-word
# Load antigen & plugins # Load antigen & plugins
ADOTDIR="$ZSH_DIR/antigen" # Antigen directory
ANTIGEN_LOG="$LOG_DIR/antigen-$(date +"%Y_%m_%d_%I_%M_%p").log"
antigen_src="$ADOTDIR/antigen.zsh" antigen_src="$ADOTDIR/antigen.zsh"
if [ ! -f "$antigen_src" ]; then if [ ! -f "$antigen_src" ]; then
git clone https://github.com/zsh-users/antigen.git "$ADOTDIR" git clone https://github.com/zsh-users/antigen.git "$ADOTDIR"
@ -52,14 +57,17 @@ source "$antigen_src"
antigen bundle zsh-users/zsh-completions antigen bundle zsh-users/zsh-completions
antigen bundle zsh-users/zsh-autosuggestions antigen bundle zsh-users/zsh-autosuggestions
antigen bundle Tarrasch/zsh-syntax-highlighting
antigen bundle zsh-users/zsh-history-substring-search antigen bundle zsh-users/zsh-history-substring-search
antigen bundle zsh-users/zsh-syntax-highlighting@feature/redrawhook
antigen bundle mafredri/zsh-async
antigen apply antigen apply
# Vim mode!
bindkey -v
export KEYTIMEOUT=25
# Set some key-binds # Set some key-binds
bindkey -e
bindkey "^[[1;3C" forward-word bindkey "^[[1;3C" forward-word
bindkey "^[[1;5C" forward-word bindkey "^[[1;5C" forward-word
bindkey "^[[1;3D" backward-word bindkey "^[[1;3D" backward-word
@ -68,19 +76,27 @@ bindkey "^[[7~" beginning-of-line
bindkey "^[[8~" end-of-line bindkey "^[[8~" end-of-line
bindkey "^[[3~" delete-char bindkey "^[[3~" delete-char
bindkey "^[[3;3~" delete-word bindkey "^[[3;3~" delete-word
export WORDCHARS='*?_[]~=&;!#$%^(){}'
x-bash-backward-kill-word(){
WORDCHARS='' zle kill-word
}
zle -N x-bash-backward-kill-word
bindkey '^[^[[3~' x-bash-backward-kill-word bindkey '^[^[[3~' x-bash-backward-kill-word
bindkey '^[^[[3^' x-bash-backward-kill-word bindkey '^[^[[3^' x-bash-backward-kill-word
bindkey '^[[A' fzf-history-widget # Up (fzf)
bindkey '^[[B' fzf-history-widget # Down (fzf)
bindkey '^[[1;3A' history-substring-search-up # Alt+Up (hsh)
bindkey '^[[1;3B' history-substring-search-down # Alt+Down (hsh)
bindkey '^[[A' history-substring-search-up bindkey "^V" edit-command-line
bindkey '^[[B' history-substring-search-down bindkey -M vicmd "^V" edit-command-line
bindkey -M vicmd d vi-backward-char
bindkey -M vicmd h vi-down-line-or-history
bindkey -M vicmd t vi-up-line-or-history
bindkey -M vicmd n vi-forward-char
bindkey -M vicmd k vi-delete
bindkey -M vicmd K vi-kill-eol
bindkey -M vicmd j vi-find-next-char-skip
bindkey -M vicmd l vi-repeat-search
ZSH_AUTOSUGGEST_USE_ASYNC=true
ZSH_AUTOSUGGEST_CLEAR_WIDGETS=("${(@)ZSH_AUTOSUGGEST_CLEAR_WIDGETS:#(up|down)-line-or-history}") ZSH_AUTOSUGGEST_CLEAR_WIDGETS=("${(@)ZSH_AUTOSUGGEST_CLEAR_WIDGETS:#(up|down)-line-or-history}")
ZSH_AUTOSUGGEST_CLEAR_WIDGETS+=(history-substring-search-up history-substring-search-down) ZSH_AUTOSUGGEST_CLEAR_WIDGETS+=(history-substring-search-up history-substring-search-down)
@ -88,25 +104,31 @@ HISTORY_SUBSTRING_SEARCH_FUZZY=true
HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE=true HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE=true
HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND='underline' HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND='underline'
typeset -A ZSH_HIGHLIGHT_STYLES default='fg=12'
ZSH_HIGHLIGHT_STYLES[default]='fg=12' prog='fg=blue'
ZSH_HIGHLIGHT_STYLES=()
ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets root line)
ZSH_HIGHLIGHT_STYLES[root]='bg=red'
ZSH_HIGHLIGHT_STYLES[default]=$default
ZSH_HIGHLIGHT_STYLES[arg0]=$prog
ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=red,bold' ZSH_HIGHLIGHT_STYLES[unknown-token]='fg=red,bold'
ZSH_HIGHLIGHT_STYLES[reserved-word]='fg=yellow' ZSH_HIGHLIGHT_STYLES[reserved-word]='fg=yellow'
ZSH_HIGHLIGHT_STYLES[alias]='fg=blue' ZSH_HIGHLIGHT_STYLES[alias]=$prog
ZSH_HIGHLIGHT_STYLES[suffix-alias]='fg=green,underline' ZSH_HIGHLIGHT_STYLES[suffix-alias]='fg=green'
ZSH_HIGHLIGHT_STYLES[builtin]='fg=blue' ZSH_HIGHLIGHT_STYLES[builtin]='fg=4'
ZSH_HIGHLIGHT_STYLES[function]='fg=blue' ZSH_HIGHLIGHT_STYLES[function]=$prog
ZSH_HIGHLIGHT_STYLES[command]='fg=blue' ZSH_HIGHLIGHT_STYLES[command]=$prog
ZSH_HIGHLIGHT_STYLES[precommand]='fg=blue' ZSH_HIGHLIGHT_STYLES[precommand]='fg=4'
ZSH_HIGHLIGHT_STYLES[commandseparator]='fg=cyan' ZSH_HIGHLIGHT_STYLES[commandseparator]='fg=cyan'
ZSH_HIGHLIGHT_STYLES[hashed-command]='fg=green' ZSH_HIGHLIGHT_STYLES[hashed-command]='fg=green'
ZSH_HIGHLIGHT_STYLES[path]='fg=blue' ZSH_HIGHLIGHT_STYLES[path]='fg=cyan'
ZSH_HIGHLIGHT_STYLES[path_prefix]='fg=yellow,bold' ZSH_HIGHLIGHT_STYLES[path_separator]='fg=cyan'
ZSH_HIGHLIGHT_STYLES[path_prefix]='fg=208'
ZSH_HIGHLIGHT_STYLES[globbing]='fg=red' ZSH_HIGHLIGHT_STYLES[globbing]='fg=red'
ZSH_HIGHLIGHT_STYLES[comment]='fg=7' ZSH_HIGHLIGHT_STYLES[comment]='fg=7'
ZSH_HIGHLIGHT_STYLES[history-expansion]='fg=blue' ZSH_HIGHLIGHT_STYLES[history-expansion]=$default
ZSH_HIGHLIGHT_STYLES[single-hyphen-option]='fg=12' ZSH_HIGHLIGHT_STYLES[single-hyphen-option]=$default
ZSH_HIGHLIGHT_STYLES[double-hyphen-option]='fg=12' ZSH_HIGHLIGHT_STYLES[double-hyphen-option]=$default
ZSH_HIGHLIGHT_STYLES[back-quoted-argument]='fg=magenta' ZSH_HIGHLIGHT_STYLES[back-quoted-argument]='fg=magenta'
ZSH_HIGHLIGHT_STYLES[single-quoted-argument]='fg=yellow' ZSH_HIGHLIGHT_STYLES[single-quoted-argument]='fg=yellow'
ZSH_HIGHLIGHT_STYLES[double-quoted-argument]='fg=yellow' ZSH_HIGHLIGHT_STYLES[double-quoted-argument]='fg=yellow'
@ -115,10 +137,13 @@ ZSH_HIGHLIGHT_STYLES[dollar-double-quoted-argument]='fg=cyan'
ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]='fg=cyan' ZSH_HIGHLIGHT_STYLES[back-double-quoted-argument]='fg=cyan'
ZSH_HIGHLIGHT_STYLES[back-dollar-quoted-argument]='fg=cyan' ZSH_HIGHLIGHT_STYLES[back-dollar-quoted-argument]='fg=cyan'
ZSH_HIGHLIGHT_STYLES[assign]='fg=green' ZSH_HIGHLIGHT_STYLES[assign]='fg=green'
ZSH_HIGHLIGHT_STYLES[redirection]='fg=cyan' ZSH_HIGHLIGHT_STYLES[redirection]='fg=cyan,bold'
source "$DOTFILES/aliases" source "$DOTFILES/aliases"
# Load some manual plugins # Load some manual plugins
source "$ZSH_DIR/plugins/sudo.zsh" source "$ZSH_DIR/plugins/sudo.zsh"
source "$ZSH_DIR/plugins/fish-theme.zsh" source "$ZSH_DIR/plugins/fish-theme.zsh"
source "$ZSH_DIR/plugins/git-rprompt.zsh"
[ -f '/usr/share/fzf/key-bindings.zsh' ] && source /usr/share/fzf/key-bindings.zsh
[ -f '/usr/share/doc/pkgfile/command-not-found.zsh' ] && source /usr/share/doc/pkgfile/command-not-found.zsh

View File

@ -1,63 +1,7 @@
# ZSH Theme emulating the Fish shell's default prompt. # ZSH Theme emulating the Fish shell's default prompt.
_fishy_collapsed_wd() { _fishy_collapsed_wd() {
echo $(pwd | perl -pe ' pwd | sed -E 's|^'$HOME'|~|;s|(.*)/|\1%|;s|((^\|/)\.?[^/%]{1})[^/%]*|\1|g;s|(.*)%|\1/|'
BEGIN {
binmode STDIN, ":encoding(UTF-8)";
binmode STDOUT, ":encoding(UTF-8)";
}; s|^$ENV{HOME}|~|g; s|/([^/.])[^/]*(?=/)|/$1|g; s|/\.([^/])[^/]*(?=/)|/.$1|g
')
}
git_prompt_info() {
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$ZSH_THEME_GIT_PROMPT_SUFFIX"
}
git_prompt_status() {
# Get the status of the working tree
INDEX=$(command git status --porcelain -b 2> /dev/null)
STATUS=""
if $(echo "$INDEX" | grep -E '^\?\? ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_UNTRACKED$STATUS"
fi
if $(echo "$INDEX" | grep '^A ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS"
elif $(echo "$INDEX" | grep '^M ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS"
fi
if $(echo "$INDEX" | grep '^ M ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS"
elif $(echo "$INDEX" | grep '^AM ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS"
elif $(echo "$INDEX" | grep '^ T ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS"
fi
if $(echo "$INDEX" | grep '^R ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_RENAMED$STATUS"
fi
if $(echo "$INDEX" | grep '^ D ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS"
elif $(echo "$INDEX" | grep '^D ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS"
elif $(echo "$INDEX" | grep '^AD ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS"
fi
if $(command git rev-parse --verify refs/stash >/dev/null 2>&1); then
STATUS="$ZSH_THEME_GIT_PROMPT_STASHED$STATUS"
fi
if $(echo "$INDEX" | grep '^UU ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_UNMERGED$STATUS"
fi
if $(echo "$INDEX" | grep '^## .*ahead' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_AHEAD$STATUS"
fi
if $(echo "$INDEX" | grep '^## .*behind' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_BEHIND$STATUS"
fi
if $(echo "$INDEX" | grep '^## .*diverged' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_DIVERGED$STATUS"
fi
echo $STATUS
} }
# Required for dynamic prompt # Required for dynamic prompt
@ -67,17 +11,4 @@ local user_color='green'; [ $UID -eq 0 ] && user_color='red'
PROMPT="%n@%m %F{$user_color}\$(_fishy_collapsed_wd)%f%(!.#.>) " PROMPT="%n@%m %F{$user_color}\$(_fishy_collapsed_wd)%f%(!.#.>) "
PROMPT2='%F{red}\ %f' PROMPT2='%F{red}\ %f'
local return_status="%F{red}%(?..%?)%f" RPROMPT='%F{red}%(?.. %?)%f'
RPROMPT='${return_status}$(git_prompt_info)$(git_prompt_status)%{$reset_color%}'
ZSH_THEME_GIT_PROMPT_PREFIX=" "
ZSH_THEME_GIT_PROMPT_SUFFIX=""
ZSH_THEME_GIT_PROMPT_DIRTY=""
ZSH_THEME_GIT_PROMPT_CLEAN=""
ZSH_THEME_GIT_PROMPT_ADDED="%{$fg_bold[green]%}+"
ZSH_THEME_GIT_PROMPT_MODIFIED="%{$fg_bold[blue]%}!"
ZSH_THEME_GIT_PROMPT_DELETED="%{$fg_bold[red]%}-"
ZSH_THEME_GIT_PROMPT_RENAMED="%{$fg_bold[magenta]%}>"
ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg_bold[yellow]%}#"
ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg_bold[cyan]%}?"

View File

@ -0,0 +1,74 @@
# ZSH RPROMPT containing simple Git status
git_prompt_info() {
ref=$(git symbolic-ref HEAD 2> /dev/null) || return
echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$ZSH_THEME_GIT_PROMPT_SUFFIX"
}
git_prompt_status() {
# Get the status of the working tree
INDEX=$(command git status --porcelain -b 2> /dev/null)
RESET='%f'
STATUS=""
if $(echo "$INDEX" | grep -E '^\?\? ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_UNTRACKED$RESET$STATUS"
fi
if $(echo "$INDEX" | grep '^A ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$RESET$STATUS"
elif $(echo "$INDEX" | grep '^M ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$RESET$STATUS"
fi
if $(echo "$INDEX" | grep '^ M ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$RESET$STATUS"
elif $(echo "$INDEX" | grep '^AM ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$RESET$STATUS"
elif $(echo "$INDEX" | grep '^ T ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$RESET$STATUS"
fi
if $(echo "$INDEX" | grep '^R ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_RENAMED$RESET$STATUS"
fi
if $(echo "$INDEX" | grep '^ D ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$RESET$STATUS"
elif $(echo "$INDEX" | grep '^D ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$RESET$STATUS"
elif $(echo "$INDEX" | grep '^AD ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$RESET$STATUS"
fi
if $(command git rev-parse --verify refs/stash >/dev/null 2>&1); then
STATUS="$ZSH_THEME_GIT_PROMPT_STASHED$RESET$STATUS"
fi
if $(echo "$INDEX" | grep '^UU ' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_UNMERGED$RESET$STATUS"
fi
if $(echo "$INDEX" | grep '^## .*ahead' &> /dev/null); then
AHEAD=$(echo "$INDEX" | sed -nE 's/.*ahead\s([0-9]*).*/\1/p')
STATUS="$ZSH_THEME_GIT_PROMPT_AHEAD$AHEAD$RESET$STATUS"
fi
if $(echo "$INDEX" | grep '^## .*behind' &> /dev/null); then
BEHIND=$(echo "$INDEX" | sed -nE 's/.*behind\s([0-9]*).*/\1/p')
STATUS="$ZSH_THEME_GIT_PROMPT_BEHIND$BEHIND$RESET$STATUS"
fi
if $(echo "$INDEX" | grep '^## .*diverged' &> /dev/null); then
STATUS="$ZSH_THEME_GIT_PROMPT_DIVERGED$RESET$STATUS"
fi
echo $STATUS
}
# Required for dynamic prompt
setopt prompt_subst
ZSH_THEME_GIT_PROMPT_PREFIX=" "
ZSH_THEME_GIT_PROMPT_SUFFIX=""
ZSH_THEME_GIT_PROMPT_DIRTY=""
ZSH_THEME_GIT_PROMPT_CLEAN=""
ZSH_THEME_GIT_PROMPT_AHEAD="%F{green}↑"
ZSH_THEME_GIT_PROMPT_BEHIND="%F{red}↓"
ZSH_THEME_GIT_PROMPT_ADDED="%F{green}+"
ZSH_THEME_GIT_PROMPT_MODIFIED="%F{blue}~"
ZSH_THEME_GIT_PROMPT_DELETED="%F{red}-"
ZSH_THEME_GIT_PROMPT_RENAMED="%F{magenta}>"
ZSH_THEME_GIT_PROMPT_UNMERGED="%F{yellow}#"
ZSH_THEME_GIT_PROMPT_UNTRACKED="%F{cyan}?"
RPROMPT="\$(git_prompt_info)\$(git_prompt_status)%{\$reset_color%}$RPROMPT"

View File

@ -4,14 +4,11 @@ sudo-command-line() {
[[ -z $BUFFER ]] && zle up-history [[ -z $BUFFER ]] && zle up-history
if [[ $BUFFER == sudo\ * ]]; then if [[ $BUFFER == sudo\ * ]]; then
LBUFFER="${LBUFFER#sudo }" LBUFFER="${LBUFFER#sudo }"
elif [[ $BUFFER == $EDITOR\ * ]] || [[ $BUFFER == vi\ * ]]; then elif [[ $BUFFER == $EDITOR\ * ]] || [[ $BUFFER == vi\ * ]] || [[ $BUFFER == vim\ * ]]; then
LBUFFER="${LBUFFER#$EDITOR }" LBUFFER="s$LBUFFER"
LBUFFER="${LBUFFER#vi }" elif [[ $BUFFER == sudoedit\ * ]] || [[ $BUFFER == svi\ * ]]|| [[ $BUFFER == svim\ * ]]; then
LBUFFER="svi $LBUFFER"
elif [[ $BUFFER == sudoedit\ * ]] || [[ $BUFFER == svi\ * ]]; then
LBUFFER="${LBUFFER#sudoedit }" LBUFFER="${LBUFFER#sudoedit }"
LBUFFER="${LBUFFER#svi }" LBUFFER="${LBUFFER#s}"
LBUFFER="$EDITOR $LBUFFER"
else else
LBUFFER="sudo $LBUFFER" LBUFFER="sudo $LBUFFER"
fi fi

2
.fehbg
View File

@ -1,2 +0,0 @@
#!/bin/sh
'feh' '--no-xinerama' '--bg-fill' '/home/frebib/pictures/lakesidesunrise.jpg'

3
.gitmodules vendored Normal file
View File

@ -0,0 +1,3 @@
[submodule "surface-scripts"]
path = surface-scripts
url = https://github.com/frebib/surface-scripts.git

View File

@ -2,35 +2,53 @@ export LC_ALL=en_GB.UTF-8
export LANG=en_GB.UTF-8 export LANG=en_GB.UTF-8
export LC_NUMERIC=en_GB export LC_NUMERIC=en_GB
export CONFIG_DIR="$HOME/.config" export XDG_CONFIG_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
export XDG_CONFIG_HOME="$CONFIG_DIR" export XDG_CACHE_HOME="${XDG_CACHE_HOME:-$HOME/.cache}"
export XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
export XDG_LOCAL_HOME="$HOME/.local"
mkdir -p "$XDG_CONFIG_HOME" "$XDG_CACHE_HOME" "$XDG_DATA_HOME" "$XDG_LOCAL_HOME"
case "$(basename "$(readlink -f /proc/$$/exe)")" in case "$(basename "$(readlink -f /proc/$$/exe)")" in
zsh) thisfile="$(readlink -f "${(%):-%N}")";; zsh) thisfile="$(readlink -f "${(%):-%N}")";;
bash) thisfile="$(readlink -f "${BASH_SOURCE[0]}")";; bash) thisfile="$(readlink -f "${BASH_SOURCE[0]}")";;
*) thisfile="$(find /proc/$$/fd/ | xargs readlink -f | grep .profile | head -n1)";; *) thisfile="$(find /proc/$$/fd/ | xargs -n1 -r readlink -f | grep profile | head -n1)";;
esac esac
export DOTFILES="$(dirname "${thisfile:-$CONFIG_DIR/dotfiles}")"
export PATH="${PATH}:$DOTFILES/scripts"
export XDG_CURRENT_DESKTOP="GNOME" # Fixes xdg-open
# Allow Vim to load from ~/.config/vim
export VIMDIR="$CONFIG_DIR/vim"
export MYVIMRC="$VIMDIR/vimrc"
export VIMINIT=":so $MYVIMRC"
export EDITOR="vim" export EDITOR="vim"
export VISUAL="vim" export VISUAL="vim"
export MANPAGER="less -+N"
export TERMINAL="termite" # Override paths for non-compliant programs
export BROWSER="chromium" # https://wiki.archlinux.org/index.php/XDG_Base_Directory_support
export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=on -Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel"
export QT_QPA_PLATFORMTHEME=gtk2 export CARGO_HOME="$XDG_DATA_HOME/cargo"
export GOPATH="$HOME/.cache/go" export GNUPGHOME="$XDG_CONFIG_HOME/gnupg"
export GOPATH="$XDG_DATA_HOME/go"
export GTK2_RC_FILES="$XDG_CONFIG_HOME/gtk-2.0/settings.ini"
export PASSWORD_STORE_DIR="$XDG_DATA_HOME/pass"
export PYTHONHISTFILE="$XDG_DATA_HOME/python/histfile"
export RUSTUP_HOME="$XDG_DATA_HOME/rustup"
export TERMINFO="$XDG_DATA_HOME/terminfo"
export TERMINFO_DIRS="$XDG_DATA_HOME/terminfo:/usr/share/terminfo"
export VIMDIR="$XDG_CONFIG_HOME/vim"
export VIMRC="$VIMDIR/vimrc"
export VIMINIT=":so $VIMRC"
export WEECHAT_HOME="$XDG_CONFIG_HOME/weechat"
export XINITRC="$XDG_CONFIG_HOME/X11/xinitrc"
export ZDOTDIR="$XDG_CONFIG_HOME/zsh"
export DOTFILES="$(dirname "${thisfile:-$XDG_CONFIG_HOME/dotfiles/.profile}")"
export PATH="${PATH}:/sbin:/usr/sbin:$DOTFILES/scripts:$HOME/.local/share/surface-scripts:$GOPATH/bin"
exists() { which $@ 0<&- 1>/dev/null 2>/dev/null; } exists() { which $@ 0<&- 1>/dev/null 2>/dev/null; }
# Configure less and add colours
export LESS="-RI" export LESS="-RI"
export PAGER="less $LESS" export PAGER="less"
export MANPAGER="less -+N"
# Disable histfile
export LESSHISTFILE=-
if exists tput; then if exists tput; then
export LESS_TERMCAP_mb=$(tput bold; tput setaf 2) # green export LESS_TERMCAP_mb=$(tput bold; tput setaf 2) # green
export LESS_TERMCAP_md=$(tput bold; tput setaf 6) # cyan export LESS_TERMCAP_md=$(tput bold; tput setaf 6) # cyan
@ -48,24 +66,16 @@ if exists tput; then
fi fi
# Source secret keys and values into environment # Source secret keys and values into environment
if [ -f "$CONFIG_DIR/secrets" ]; then if [ -f "$XDG_CONFIG_HOME/secrets" ]; then
set -o allexport set -o allexport
source $CONFIG_DIR/secrets source $XDG_CONFIG_HOME/secrets
set +o allexport set +o allexport
fi fi
# Merge system clipboards # Start a dbus session daemon for programs that require it
if [ -n "$DISPLAY" ] && exists autocutsel && ! pidof autocutsel 1>/dev/null; then
autocutsel -fork
autocutsel -selection PRIMARY -fork
fi
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] && exists dbus-launch; then if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] && exists dbus-launch; then
eval $(dbus-launch --sh-syntax --exit-with-session) eval $(dbus-launch --sh-syntax --exit-with-session)
dbus-update-activation-environment --systemd DISPLAY dbus-update-activation-environment --systemd \
DBUS_SESSION_BUS_ADDRESS DISPLAY XAUTHORITY
fi fi
# Start the gnome-keyring if it's installed
if exists gnome-keyring-daemon; then
export $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh,gnupg)
fi

View File

@ -1,3 +0,0 @@
setxkbmap -option caps:none
xset r rate 200 18
xrandr --dpi 96

View File

@ -1,17 +1,10 @@
These are the configs I use on my Arch Linux installation at home. They can be use and changed as much or as little as you please # frebib/dotfiles
## Usage ## Usage
To quickly get started, clone this repo and run the setup scripts. To get started, clone this repo and link the relevant files/directories
git clone https://github.com/frebib/dotfiles.git ~/.config/dotfiles ```shell
cd ~/.config/dotfiles git clone https://github.com/frebib/dotfiles.git ~/.config/dotfiles
ln -sfv .config/dotfiles/.config/* .config/
You can put the `dotfiles` directory anywhere, just be sure to update the `$DOTFILES` envvar in `.profile` ln -sfv .config/dotfiles/.profile .zprofile
```
To link all the configuration files, run the init-dotfiles script:
**Be warned that this will destroy your current configs without warning**
scripts/init-dotfiles.sh
To install all of my packages & programs, check out my other repo <https://github.com/frebib/arch-install/> and the [`userinstall`](https://github.com/frebib/arch-install/blob/master/userinstall) script

187
aliases
View File

@ -1,16 +1,42 @@
#!/usr/bin/zsh # Global aliases for ZSH
if alias -g 2>/dev/null; then
alias -g ...=../..
alias -g ....=../../..
alias -g .....=../../../..
alias -g ......=../../../../..
alias -g H='| head'
alias -g T='| tail'
alias -g G='| grep'
alias -g L="| less"
alias -g C="| wc -l"
alias -g S="| sort"
alias -g U="| uniq"
alias -g count="| wc -l"
alias -g NO="1> /dev/null"
alias -g NE="2> /dev/null"
alias -g NUL="&> /dev/null"
alias -g BG="&;disown"
alias -g COL="| column -t"
alias -g CLIP="| xclip -i -selection primary -f | xclip -i -selection clipboard"
fi
# Common Aliases # File default aliases
alias -g ...=../.. if alias -s 2>/dev/null; then
alias -g ....=../../.. alias -s pdf="open"
alias -g .....=../../../.. alias -s zip="unzip -l"
alias -g ......=../../../../.. alias -s rar="unrar l"
alias -s tar="tar tf"
alias -s gz="tar tf"
alias -s jar="java -jar"
alias -s git="git clone --recursive"
fi
alias ..la="cd ..;la" alias ..la="cd ..;la"
alias ..ll="cd..;ll" alias ..ll="cd..;ll"
alias ..l="..ll" alias ..l="..ll"
alias l=ll alias l=ll
alias ls='ls --color=auto'
alias ll="ls -lFh --group-directories-first" alias ll="ls -lFh --group-directories-first"
alias la="ls -lAFh --group-directories-first" alias la="ls -lAFh --group-directories-first"
alias lt='ls -lAFh --sort=time' alias lt='ls -lAFh --sort=time'
@ -19,27 +45,11 @@ alias al=la # No, I don't need the Mono Assembly Linker
alias md="mkdir -p" alias md="mkdir -p"
alias rd="rmdir -p" alias rd="rmdir -p"
mcd(){ mkdir -p $@ && cd $@; }
alias -- -='cd -' alias -- -='cd -'
alias cdt='cd `mktemp -d`' alias cdt='cd `mktemp -d`'
alias grep='grep --color'
alias -g H='| head'
alias -g T='| tail'
alias -g G='| grep'
alias -g L="| less"
alias -g C="| wc -l"
alias -g S="| sort"
alias -g U="| uniq"
alias -g count="| wc -l"
alias -g NO="1> /dev/null"
alias -g NE="2> /dev/null"
alias -g NUL="&> /dev/null"
alias -g BG="&;disown"
alias -g COL="| column -t"
alias -g CLIP="| xclip -i -selection primary -f | xclip -i -selection clipboard"
calc() { bc -l <<< "$@"; }
alias svi=sudoedit alias svi=sudoedit
alias svim=sudoedit
# This will enable us to use aliases in sudo. # This will enable us to use aliases in sudo.
# (If alias finishes with a space or tab, the shell will check if the next command is also aliased.) # (If alias finishes with a space or tab, the shell will check if the next command is also aliased.)
# Source: https://github.com/mayah/home/blob/master/.zsh/zshrc.d/alias.zsh # Source: https://github.com/mayah/home/blob/master/.zsh/zshrc.d/alias.zsh
@ -47,69 +57,80 @@ alias sudo='sudo -E '
alias open=xdg-open alias open=xdg-open
# Command rewrites # Command rewrites
alias ls='ls --color=always'
alias rm='rm -i' alias rm='rm -i'
alias mv='mv -i' alias mv='mv -i'
alias cp='cp -ir' alias cp='cp -ir'
alias pacman='pacman --color=always'
alias pacaur='pacaur --color=always'
alias tree='tree --dirsfirst -C -F'
alias make="make -j$(nproc)"
alias dd='dd status=progress' alias dd='dd status=progress'
alias env='env | sort'
alias ssh="ssh -tt" alias ssh="ssh -tt"
alias vim="vim --servername vim -p" alias wget="wget --hsts-file=$XDG_DATA_HOME/wget/hsts-file"
alias vi=vim alias vi=vim
alias grip='grip --user=frebib --pass=$GRIP_API_KEY' alias grip='grip --user=frebib --pass=$GRIP_API_KEY'
alias acme.sh='$XDG_CONFIG_HOME/acme.sh/acme.sh --home $XDG_CONFIG_HOME/acme.sh --config-home $XDG_CONFIG_HOME/acme.sh --log $XDG_CONFIG_HOME/acme.sh/acme.sh.log' alias acme.sh='$XDG_CONFIG_HOME/acme.sh/acme.sh --home $XDG_CONFIG_HOME/acme.sh --config-home $XDG_CONFIG_HOME/acme.sh --log $XDG_CONFIG_HOME/acme.sh/acme.sh.log'
alias acmesh='$XDG_CONFIG_HOME/acme.sh/acme.sh --home $XDG_CONFIG_HOME/acme.sh --config-home $XDG_CONFIG_HOME/acme.sh --log $XDG_CONFIG_HOME/acme.sh/acme.sh.log' alias acmesh='$XDG_CONFIG_HOME/acme.sh/acme.sh --home $XDG_CONFIG_HOME/acme.sh --config-home $XDG_CONFIG_HOME/acme.sh --log $XDG_CONFIG_HOME/acme.sh/acme.sh.log'
exists gopass && alias pass='gopass' alias alpine-sdk='docker run -ti --rm \
alias abuild='docker run -ti --rm \
-e USER \ -e USER \
-e UID="$(id -u)" \
-e PWD \ -e PWD \
-e HOME \ -e HOME \
-w $PWD \ -w $PWD \
-v $PWD:$PWD \ -v $PWD:$PWD \
-v ~/.abuild:$HOME/.abuild \ -v ~/.abuild:$HOME/.abuild \
frebib/alpine-sdk:edge abuild' -v ~/.abuild/distfiles:/var/cache/distfiles \
frebib/alpine-sdk:edge'
alias abuild='alpine-sdk abuild'
alias abuild-sign='alpine-sdk abuild-sign'
alias apk='alpine-sdk apk'
alias hddtemps='find /sys/block/ -name sd\* | sed "s|sys/block|dev|g" | sudo xargs hddtemp | sort -t: -k3'
alias stripansi='sed -r "s/\x1B\[(([0-9]+)(;[0-9]+)*)?[m,K,H,f,J]//g"'
alias calc="noglob bc -l <<<" # noglob allows * without quoting
exists pacman && \
alias pacman='pacman --color=always'
exists yay && \
alias p='yay'
exists tree && \
alias tree='tree --dirsfirst -C -F'
exists make && \
alias make="make -j$(nproc)"
exists gopass && \
alias pass='gopass'
echo | busybox grep --color '' >/dev/null 2>&1 && \
alias grep='grep --color'
vim --version 2>/dev/null | command grep -q +clientserver && \
alias vim="vim --servername vim -p"
# Function aliases
env() { command env $@ | stripansi | sort; }
mcd(){ mkdir -p -- $@ && cd -- $@; }
randstr() { tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w $1 | head -n 1; }
# System aliases # System aliases
alias s="sudo systemctl" alias s="sudo systemctl"
alias j=journalctl alias j=journalctl
alias p=pacaur
alias ps='ps aux' alias ps='ps aux'
alias catn='tail -n +1 --' alias catn='tail -n +1 --'
alias kl='killall -s 9' alias kl='killall -s 9'
alias chx='chmod +x' alias chx='chmod +x'
# File default aliases
pdf() {
evince $@ NE BG
}
alias -s pdf=pdf
alias -s zip="unzip -l"
alias -s rar="unrar l"
alias -s tar="tar tf"
alias -s gz="tar tf"
alias -s jar="java -jar"
alias -s git="git clone --recursive"
# Git Aliases # Git Aliases
alias g=git alias g=git
alias gignore='$EDITOR .gitignore' alias gignore='$EDITOR .gitignore'
alias gitc='$EDITOR ~/.config/git/config' alias gitc='$EDITOR $XDG_CONFIG_HOME/git/config'
alias ggignore='$EDITOR ~/.config/git/gitignore' alias ggignore='$EDITOR $XDG_CONFIG_HOME/git/gitignore'
alias gcl="git clone --recursive" alias gcl="git clone --recursive"
alias gco="git checkout" alias gco="git checkout"
alias gcom="git checkout master" alias gcom="git checkout master"
alias ga="git add" alias ga="git add"
alias gap="git add -p" alias gap="git add -p"
alias gau="git add -u"
alias gaN="git add -N"
alias gaa="ga -A" alias gaa="ga -A"
alias grm="git rm" alias grm="git rm"
alias gc="git commit" alias gc="git commit"
alias gcm="gc -m" alias gcm="gc -m"
gcmst() { git stash -u -k && git commit -m "$1" && git stash pop; } gcmst() { git stash -u -k && git commit -m "$1" && git stash pop; }
alias gca="git commit --amend" alias gca="git commit --amend"
alias gcn="git commit --no-edit"
alias gcan="git commit --amend --no-edit" alias gcan="git commit --amend --no-edit"
alias gcam="git commit --amend -m" alias gcam="git commit --amend -m"
alias gst="git status" alias gst="git status"
@ -128,14 +149,7 @@ alias gpsuom="git push --set-upstream origin master"
alias gpall="git remote | xargs -L1 git push" alias gpall="git remote | xargs -L1 git push"
alias gl="git pull --rebase" alias gl="git pull --rebase"
alias glp="gl && gp" alias glp="gl && gp"
gd() { alias gd="git diff"
local commit=$1
if [ -z "$commit" ] || [ ${commit:0:1} != '@' ]; then
git diff $@
else
git diff "@~${commit:1}^!"
fi
}
alias gds="git diff --staged" alias gds="git diff --staged"
alias gsh="git show" alias gsh="git show"
alias glg="git log --stat --color" alias glg="git log --stat --color"
@ -169,21 +183,25 @@ alias dbl='docker build --pull'
alias dbl.='docker build --pull .' alias dbl.='docker build --pull .'
alias drun='docker run -ti' alias drun='docker run -ti'
alias dkl='docker kill' alias dkl='docker kill'
dklrm() { docker kill $@ ; docker rm $@ } dklrm() { docker kill $@ ; docker rm $@; }
alias dst='docker stop' alias dst='docker stop'
alias drst='docker restart' alias drst='docker restart'
alias dnet='docker network' alias dnet='docker network'
alias dvol='docker volume' alias dvol='docker volume'
alias dlg='docker logs -f' alias dlg='docker logs -f'
alias dalpine='docker run -ti --rm alpine /bin/sh' alias dalpine='docker run -ti --rm spritsail/alpine /bin/sh'
alias drm-stopped='docker container prune' alias drm-stopped='docker container prune'
alias drmi-untag='docker image prune' alias drmi-untag='docker image prune'
alias dprune='docker system prune -f' alias dprune='docker system prune -f'
alias dsh='_CMD=dsh _dsh exec' dsh() { do_dsh 2 exec $@; return $?; }
alias drsh='_CMD=drsh _dsh run --rm --entrypoint=' _dsh() { __docker_complete_running_containers $@; }
_dsh() { drsh() { do_dsh 4 run --rm --entrypoint= $@; return $?; }
if [ $# -lt 2 ]; then _drsh() { __docker_container_subcommand $@; }
echo "Usage: ${_CMD:-$0} [user@]container [program [args]]" >&2 do_dsh() {
local minargs=$1
shift
if [ $# -lt $minargs ]; then
echo "Usage: ${funcstack[2]} [user@]container [program [args]]" >&2
return 64 return 64
fi fi
@ -216,18 +234,20 @@ _dsh() {
fi fi
if [ -z "$prog" ]; then if [ -z "$prog" ]; then
set -o pipefail shell_args=()
local rm=
if [ "$dowhat" = 'run' ]; then if [ "$dowhat" = 'run' ]; then
rm='--rm --entrypoint=' shell_args=(--rm --entrypoint=)
fi fi
for shell in bash sh; do for shell in bash sh; do
if shell_path="$(eval "docker $dowhat $rm $host which $shell" <&- | sed 's|[\r\n]||g')"; then shell_path="$(set -o pipefail; docker $dowhat ${shell_args[@]} "$host" which "$shell" <&- | sed 's|[\r\n]||g')"
retval=$?
if [ $retval -eq 0 ]; then
prog="$shell_path" prog="$shell_path"
break break
elif [ $retval -ge 125 ]; then
return
fi fi
done done
set +o pipefail
if [ -z "$prog" ]; then if [ -z "$prog" ]; then
echo "Warning: No shell found in path.. trying /bin/sh" >&2 echo "Warning: No shell found in path.. trying /bin/sh" >&2
prog=/bin/sh prog=/bin/sh
@ -237,41 +257,32 @@ _dsh() {
docker $dowhat ${docker_args[@]} -ti $usercmd $host $(xargs <<< $prog) docker $dowhat ${docker_args[@]} -ti $usercmd $host $(xargs <<< $prog)
} }
alias dm='docker-machine'
dm-con() {
eval $(docker-machine env $1)
}
alias dmc=dm-con
alias dc='docker-compose' alias dc='docker-compose'
alias dm='docker-machine'
alias dmc='eval $(docker-machine env $1)'
# ZFS aliases # ZFS aliases
alias zfs='sudo zfs' alias zfs='sudo zfs'
alias zpool='sudo zpool' alias zpool='sudo zpool'
alias z=zfs alias z=zfs
alias zp=zpool alias zp=zpool
zl() { (set -o pipefail; command zfs list $@ | grep -Ev 'docker/[0-9a-f]{64}'); return $?; }
_zl() { _zfs "list $@"; }
# General Aliases # General Aliases
alias ssha='eval `ssh-agent` ; ssh-add' alias ssha='eval `ssh-agent` ; ssh-add'
alias aliases="$EDITOR $DOTFILES/aliases ; exec zsh" alias aliases="$EDITOR $DOTFILES/aliases ; exec zsh"
alias vimrc="$EDITOR $MYVIMRC" alias vimrc="$EDITOR $VIMRC"
alias zshrc="$EDITOR ~/.zshrc ; exec zsh" alias zshrc="$EDITOR ${ZDOTDIR:-$HOME}/.zshrc ; exec zsh"
alias gitrc="$EDITOR ~/.config/git/config" alias gitrc="$EDITOR $XDG_CONFIG_HOME/git/config"
alias xinitrc="$EDITOR ~/.xinitrc" alias xinitrc="$EDITOR $XDG_CONFIG_HOME/X11/xinitrc"
alias xresources="$EDITOR ~/.Xresources ; xrdb merge ~/.Xresources" alias xresources="$EDITOR $XDG_CONFIG_HOME/X11/xresources ; xrdb merge $XDG_CONFIG_HOME/X11/xresources"
alias xsession="$EDITOR ~/.xsession"
alias sshc="$EDITOR ~/.ssh/config" alias sshc="$EDITOR ~/.ssh/config"
alias dotfiles="cd $DOTFILES" alias dotfiles="cd $DOTFILES"
alias i3c="$EDITOR ~/.config/i3/config ; i3-msg restart" alias i3c="$EDITOR $XDG_CONFIG_HOME/i3/config ; i3-msg restart"
alias i3bc="$EDITOR ~/.config/i3/blocks/config ; i3-msg restart"
i3b() {
$EDITOR ~/.config/i3/blocks/$@
}
alias sf=screenfetch alias sf=screenfetch
alias nf=neofetch alias nf=neofetch
randstr() { tr -dc 'a-zA-Z0-9' < /dev/urandom | fold -w $1 | head -n 1; }
alias rot13="tr '[A-Za-z]' '[N-ZA-Mn-za-m]'" alias rot13="tr '[A-Za-z]' '[N-ZA-Mn-za-m]'"
alias lab="ssh -tt tw '~/ctl' 2>/dev/null"
# vim: ft=sh # vim: ft=sh

BIN
lakesidesunrise.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 MiB

View File

@ -11,4 +11,4 @@ xrandr --output $BOTTOM_LEFT --primary --mode 1920x1080 --pos 0x1080 --rotate no
--output $TOP_RIGHT --mode 1920x1080 --pos 1920x0 --rotate inverted \ --output $TOP_RIGHT --mode 1920x1080 --pos 1920x0 --rotate inverted \
--output $BOTTOM_RIGHT --mode 1920x1080 --pos 1920x1080 --rotate normal --output $BOTTOM_RIGHT --mode 1920x1080 --pos 1920x1080 --rotate normal
[ -e ~/.fehbg ] && ~/.fehbg feh --no-fehbg --no-xinerama --bg-fill ~/pictures/lakesidesunrise.jpg

289
scripts/diff-highlight Executable file
View File

@ -0,0 +1,289 @@
#!/usr/bin/perl
package DiffHighlight;
use 5.008;
use warnings FATAL => 'all';
use strict;
# Highlight by reversing foreground and background. You could do
# other things like bold or underline if you prefer.
my @OLD_HIGHLIGHT = (
color_config('color.diff-highlight.oldnormal'),
color_config('color.diff-highlight.oldhighlight', "\x1b[7m"),
color_config('color.diff-highlight.oldreset', "\x1b[27m")
);
my @NEW_HIGHLIGHT = (
color_config('color.diff-highlight.newnormal', $OLD_HIGHLIGHT[0]),
color_config('color.diff-highlight.newhighlight', $OLD_HIGHLIGHT[1]),
color_config('color.diff-highlight.newreset', $OLD_HIGHLIGHT[2])
);
my $RESET = "\x1b[m";
my $COLOR = qr/\x1b\[[0-9;]*m/;
my $BORING = qr/$COLOR|\s/;
my @removed;
my @added;
my $in_hunk;
my $graph_indent = 0;
our $line_cb = sub { print @_ };
our $flush_cb = sub { local $| = 1 };
# Count the visible width of a string, excluding any terminal color sequences.
sub visible_width {
local $_ = shift;
my $ret = 0;
while (length) {
if (s/^$COLOR//) {
# skip colors
} elsif (s/^.//) {
$ret++;
}
}
return $ret;
}
# Return a substring of $str, omitting $len visible characters from the
# beginning, where terminal color sequences do not count as visible.
sub visible_substr {
my ($str, $len) = @_;
while ($len > 0) {
if ($str =~ s/^$COLOR//) {
next
}
$str =~ s/^.//;
$len--;
}
return $str;
}
sub handle_line {
my $orig = shift;
local $_ = $orig;
# match a graph line that begins a commit
if (/^(?:$COLOR?\|$COLOR?[ ])* # zero or more leading "|" with space
$COLOR?\*$COLOR?[ ] # a "*" with its trailing space
(?:$COLOR?\|$COLOR?[ ])* # zero or more trailing "|"
[ ]* # trailing whitespace for merges
/x) {
my $graph_prefix = $&;
# We must flush before setting graph indent, since the
# new commit may be indented differently from what we
# queued.
flush();
$graph_indent = visible_width($graph_prefix);
} elsif ($graph_indent) {
if (length($_) < $graph_indent) {
$graph_indent = 0;
} else {
$_ = visible_substr($_, $graph_indent);
}
}
if (!$in_hunk) {
$line_cb->($orig);
$in_hunk = /^$COLOR*\@\@ /;
}
elsif (/^$COLOR*-/) {
push @removed, $orig;
}
elsif (/^$COLOR*\+/) {
push @added, $orig;
}
else {
flush();
$line_cb->($orig);
$in_hunk = /^$COLOR*[\@ ]/;
}
# Most of the time there is enough output to keep things streaming,
# but for something like "git log -Sfoo", you can get one early
# commit and then many seconds of nothing. We want to show
# that one commit as soon as possible.
#
# Since we can receive arbitrary input, there's no optimal
# place to flush. Flushing on a blank line is a heuristic that
# happens to match git-log output.
if (!length) {
$flush_cb->();
}
}
sub flush {
# Flush any queued hunk (this can happen when there is no trailing
# context in the final diff of the input).
show_hunk(\@removed, \@added);
@removed = ();
@added = ();
}
sub highlight_stdin {
while (<STDIN>) {
handle_line($_);
}
flush();
}
# Ideally we would feed the default as a human-readable color to
# git-config as the fallback value. But diff-highlight does
# not otherwise depend on git at all, and there are reports
# of it being used in other settings. Let's handle our own
# fallback, which means we will work even if git can't be run.
sub color_config {
my ($key, $default) = @_;
my $s = `git config --get-color $key 2>/dev/null`;
return length($s) ? $s : $default;
}
sub show_hunk {
my ($a, $b) = @_;
# If one side is empty, then there is nothing to compare or highlight.
if (!@$a || !@$b) {
$line_cb->(@$a, @$b);
return;
}
# If we have mismatched numbers of lines on each side, we could try to
# be clever and match up similar lines. But for now we are simple and
# stupid, and only handle multi-line hunks that remove and add the same
# number of lines.
if (@$a != @$b) {
$line_cb->(@$a, @$b);
return;
}
my @queue;
for (my $i = 0; $i < @$a; $i++) {
my ($rm, $add) = highlight_pair($a->[$i], $b->[$i]);
$line_cb->($rm);
push @queue, $add;
}
$line_cb->(@queue);
}
sub highlight_pair {
my @a = split_line(shift);
my @b = split_line(shift);
# Find common prefix, taking care to skip any ansi
# color codes.
my $seen_plusminus;
my ($pa, $pb) = (0, 0);
while ($pa < @a && $pb < @b) {
if ($a[$pa] =~ /$COLOR/) {
$pa++;
}
elsif ($b[$pb] =~ /$COLOR/) {
$pb++;
}
elsif ($a[$pa] eq $b[$pb]) {
$pa++;
$pb++;
}
elsif (!$seen_plusminus && $a[$pa] eq '-' && $b[$pb] eq '+') {
$seen_plusminus = 1;
$pa++;
$pb++;
}
else {
last;
}
}
# Find common suffix, ignoring colors.
my ($sa, $sb) = ($#a, $#b);
while ($sa >= $pa && $sb >= $pb) {
if ($a[$sa] =~ /$COLOR/) {
$sa--;
}
elsif ($b[$sb] =~ /$COLOR/) {
$sb--;
}
elsif ($a[$sa] eq $b[$sb]) {
$sa--;
$sb--;
}
else {
last;
}
}
if (is_pair_interesting(\@a, $pa, $sa, \@b, $pb, $sb)) {
return highlight_line(\@a, $pa, $sa, \@OLD_HIGHLIGHT),
highlight_line(\@b, $pb, $sb, \@NEW_HIGHLIGHT);
}
else {
return join('', @a),
join('', @b);
}
}
# we split either by $COLOR or by character. This has the side effect of
# leaving in graph cruft. It works because the graph cruft does not contain "-"
# or "+"
sub split_line {
local $_ = shift;
return utf8::decode($_) ?
map { utf8::encode($_); $_ }
map { /$COLOR/ ? $_ : (split //) }
split /($COLOR+)/ :
map { /$COLOR/ ? $_ : (split //) }
split /($COLOR+)/;
}
sub highlight_line {
my ($line, $prefix, $suffix, $theme) = @_;
my $start = join('', @{$line}[0..($prefix-1)]);
my $mid = join('', @{$line}[$prefix..$suffix]);
my $end = join('', @{$line}[($suffix+1)..$#$line]);
# If we have a "normal" color specified, then take over the whole line.
# Otherwise, we try to just manipulate the highlighted bits.
if (defined $theme->[0]) {
s/$COLOR//g for ($start, $mid, $end);
chomp $end;
return join('',
$theme->[0], $start, $RESET,
$theme->[1], $mid, $RESET,
$theme->[0], $end, $RESET,
"\n"
);
} else {
return join('',
$start,
$theme->[1], $mid, $theme->[2],
$end
);
}
}
# Pairs are interesting to highlight only if we are going to end up
# highlighting a subset (i.e., not the whole line). Otherwise, the highlighting
# is just useless noise. We can detect this by finding either a matching prefix
# or suffix (disregarding boring bits like whitespace and colorization).
sub is_pair_interesting {
my ($a, $pa, $sa, $b, $pb, $sb) = @_;
my $prefix_a = join('', @$a[0..($pa-1)]);
my $prefix_b = join('', @$b[0..($pb-1)]);
my $suffix_a = join('', @$a[($sa+1)..$#$a]);
my $suffix_b = join('', @$b[($sb+1)..$#$b]);
return visible_substr($prefix_a, $graph_indent) !~ /^$COLOR*-$BORING*$/ ||
visible_substr($prefix_b, $graph_indent) !~ /^$COLOR*\+$BORING*$/ ||
$suffix_a !~ /^$BORING*$/ ||
$suffix_b !~ /^$BORING*$/;
}
package main;
# Some scripts may not realize that SIGPIPE is being ignored when launching the
# pager--for instance scripts written in Python.
$SIG{PIPE} = 'DEFAULT';
DiffHighlight::highlight_stdin();
exit 0;

View File

@ -16,6 +16,4 @@ xrandr --newmode $MODELINE 2>/dev/null || true
xrandr --addmode $OUTPUT $MODENAME 2>/dev/null || true xrandr --addmode $OUTPUT $MODENAME 2>/dev/null || true
xrandr --output $OUTPUT --mode $MODENAME xrandr --output $OUTPUT --mode $MODENAME
if [ -f ~/.fehbg -a -x ~/.fehbg ]; then feh --no-fehbg --no-xinerama --bg-fill ~/pictures/lakesidesunrise.jpg
~/.fehbg
fi

31
scripts/dpi Executable file
View File

@ -0,0 +1,31 @@
#!/bin/sh
set -e
# Based on https://github.com/vincentbernat/awesome-configuration/blob/master/bin/xsettingsd-setup
dpi=$1
if [ -z "$1" ]; then
>&2 printf "Usage\n\t%s: <dpi>" "$(basename "$0")"
exit 1
fi
CONF_DIR="${XDG_CONFIG_HOME:-$HOME/.config}/xsettingsd"
mkdir -p "$CONF_DIR"
# Build xsettingsd.local
{
cat $CONF_DIR/xsettingsd.conf 2>/dev/null || true
echo Xft/DPI $(( $dpi*1024 ))
echo Gdk/WindowScalingFactor $(( $dpi/96 ))
echo Gdk/UnscaledDPI $(( $dpi*1024/($dpi/96) ))
} > $CONF_DIR/xsettingsd.local
pid=$(xprop -name xsettingsd _NET_WM_PID 2> /dev/null | awk '{print $NF}')
if [ -z "$pid" ]; then
xsettingsd -c $CONF_DIR/xsettingsd.local &
else
kill -HUP $pid
fi
echo Xft.dpi: $dpi | xrdb -merge

View File

@ -27,23 +27,4 @@ done
cd $HOME cd $HOME
mkdir -p .local/share/ && cd .local/share mkdir -p .local/share/ && cd .local/share
echo cd `pwd` echo cd `pwd`
ln -sfv $DOTFILES/fonts . ln -sfv $DOTFILES/surfacetools .
sudo -s << EOF
cd ~
echo -n "cd "
pwd
ln -sfv $DOTFILES .config/
ln -sfv $userhome/.zshrc .
ln -sfv $userhome/.profile .
ln -sfv $userhome/.zprofile .
ln -sfv $userhome/.vimrc .
ln -sfv $userhome/.vim/ .
ln -sfv $userhome/.gtkrc-2.0 .
mkdir -p .config && cd .config/
echo -n "cd "
pwd
ln -sfv $userhome/.config/gtk-3.0 .
EOF

View File

@ -4,7 +4,7 @@
# century is about apparently... # century is about apparently...
# #
# Requirements: # Requirements:
# rofi, xsel, xdotool, curl, xmllint # rofi, xclip, xdotool, curl, xmllint
# #
# Usage: # Usage:
# 1. Download all emoji # 1. Download all emoji
@ -21,10 +21,9 @@
# #
# Where to save the emojis file. # Where to save the emojis file.
EMOJI_FILE="$HOME/.cache/emojis.txt" EMOJI_FILE="${XDG_CACHE_DIR:-$HOME/.cache}/emojis.txt"
# Urls of emoji to download. # Urls of emoji to download.
# You can remove what you don't need.
URLS=( URLS=(
'https://emojipedia.org/people/' 'https://emojipedia.org/people/'
'https://emojipedia.org/nature/' 'https://emojipedia.org/nature/'
@ -39,7 +38,9 @@ URLS=(
function download() { function download() {
echo "" > "$EMOJI_FILE" notify "$(basename "$0")" 'Downloading all emoji for your pleasure'
echo -n > "$EMOJI_FILE"
for url in "${URLS[@]}"; do for url in "${URLS[@]}"; do
echo "Downloading: $url" echo "Downloading: $url"
@ -58,20 +59,51 @@ function download() {
echo "$emojis" >> "$EMOJI_FILE" echo "$emojis" >> "$EMOJI_FILE"
done done
notify "$(basename "$0")" "We're all set!"
} }
function toclip() {
xclip -i -selection primary
xclip -o -selection primary | xclip -i -selection clipboard
}
function repeat() {
local rplc str="$1" count="$2"
rplc="$(printf "%${count}s")"
echo "${rplc// /"$str"}"
}
function notify() {
if which notify-send 1>/dev/null 2>/dev/null; then
notify-send "$1" "$2"
fi
}
function display() { function display() {
emoji=$(cat "$EMOJI_FILE" | grep -v '#' | grep -v '^[[:space:]]*$') emoji=$(cat "$EMOJI_FILE" | grep -v '#' | grep -v '^[[:space:]]*$')
line=$(echo "$emoji" | rofi -dmenu -i -p emoji -kb-custom-1 Ctrl+c $@) update="⏫ Update emoji cache"
emoji=$(printf "$emoji\n$update")
line=$(echo "$emoji" | rofi -dmenu -i -p emoji -normal-window -kb-custom-1 Ctrl+c -kb-row-tab '' -kb-row-select Tab $@)
exit_code=$? exit_code=$?
if [ "${line[@]}" == "$update" ]; then
download
exit 0
fi
line=($line) line=($line)
last=${line[${#line[@]}-1]}
quantifier="${last:${#last}-1:1}"
echo "$quantifier" | egrep -q '^[0-9]+$' || quantifier=1
emojis="$(repeat "${line[0]}" "$quantifier")"
if [ $exit_code == 0 ]; then if [ $exit_code == 0 ]; then
xdotool type --clearmodifiers "${line[0]}" xdotool type --clearmodifiers "$emojis"
echo -n "$emojis" | xclip -i
elif [ $exit_code == 10 ]; then elif [ $exit_code == 10 ]; then
echo -n "${line[0]}" | xsel -i -b echo -n "$emojis" | xclip -i
fi fi
} }

94
scripts/rofi-fontawesome Executable file
View File

@ -0,0 +1,94 @@
#!/usr/bin/env bash
#
# Use rofi to pick fontawesome because that's what this
# century is about apparently...
#
# Requirements:
# rofi, xclip, xdotool, curl, xmllint
#
# Usage:
# 1. Download all fontawesome
# $ rofi-fontawesome --download
#
# 2. Run it!
# $ rofi-fontawesome
#
# Notes:
# * You'll need a fontawesome font like "Noto fontawesome" or "fontawesomeOne".
# * Confirming an item will automatically paste it WITHOUT
# writing it to your clipboard.
# * Ctrl+C will copy it to your clipboard WITHOUT pasting it.
#
# Where to save the fontawesomes file.
FONTAWESOME_FILE="${XDG_CACHE_DIR:-$HOME/.cache}/fontawesome.txt"
function download() {
notify "$(basename "$0")" 'Downloading all Font Awesome for your pleasure'
echo -n > "$FONTAWESOME_FILE"
curl https://raw.githubusercontent.com/FortAwesome/Font-Awesome/master/advanced-options/metadata/icons.json | \
jq '.[] | "\\u" + .unicode + "\t" + .label' -r | \
xargs -0 printf \
> "$FONTAWESOME_FILE"
notify "$(basename "$0")" "We're all set!"
}
function toclip() {
xclip -i -selection primary
xclip -o -selection primary | xclip -i -selection clipboard
}
function repeat() {
local rplc str="$1" count="$2"
rplc="$(printf "%${count}s")"
echo "${rplc// /"$str"}"
}
function notify() {
if which notify-send 1>/dev/null 2>/dev/null; then
notify-send "$1" "$2"
fi
}
function display() {
fontawesome=$(cat "$FONTAWESOME_FILE" | grep -v '#' | grep -v '^[[:space:]]*$')
update=""$'\t'"Update Font Awesome cache"
fontawesome=$(printf "$fontawesome\n$update")
line=$(echo "$fontawesome" | rofi -dmenu -i -p fontawesome -normal-window -kb-custom-1 Ctrl+c -kb-row-tab '' -kb-row-select Tab $@)
exit_code=$?
if [ "${line[@]}" == "$update" ]; then
download
exit 0
fi
#IFS=$'\t'
line=($line)
last=${line[${#line[@]}-1]}
quantifier="${last:${#last}-1:1}"
echo "$quantifier" | egrep -q '^[0-9]+$' || quantifier=1
icons="$(repeat "${line[0]}" "$quantifier")"
if [ $exit_code == 0 ]; then
xdotool type --clearmodifiers "$icons"
echo -n "$icons" | xclip -i
elif [ $exit_code == 10 ]; then
echo -n "$icons" | xclip -i
fi
}
if [[ "$1" =~ -D|--download ]]; then
download
exit 0
elif [[ "$1" =~ -h|--help ]]; then
echo "usage: $0 [-D|--download]"
exit 0
fi
[ ! -f "$FONTAWESOME_FILE" ] && download
display

55
scripts/screenshot Executable file
View File

@ -0,0 +1,55 @@
#!/bin/sh
set -e
NOTIFY_APPNAME="$(basename "$0")"
NOTIFY_ICONPATH="/usr/share/icons/Xenlism-Wildfire/Apps/screenshot.svg"
SCROT_CMD="maim -m 10 -us %"
FILENAME=`date "+$NOTIFY_APPNAME-%Y-%m-%d-%H%M%S.png"`
DIRECTORY="$HOME/pictures/screenshots"
SCP_HOST=frebib@Poseidon.nerdhouse.io
SCP_PATH=/dave/www/frebib.net/s
URL_PATH=https://frebib.net/s
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
send_notification() {
title="$1"
body="$2"
replace_id="$3"
notify-send \
-a "$NOTIFY_APPNAME" \
-i "$NOTIFY_ICONPATH" \
"$title" "$body" \
$(if [ -n "$replace_id" ]; then printf "%s" "-r $replace_id"; fi) \
-p
}
# Make the screenshot directory
mkdir -p "$DIRECTORY"
# Take the screenshot and save it
out_path="$DIRECTORY/$FILENAME"
if ! error=$(eval ${SCROT_CMD//\%/$out_path} 2>&1); then
send_notification "Screenshot error" "Failed to take a screenshot:<br><br>$error" >/dev/null
exit 1
fi
notif_id=$(send_notification "Screenshot uploading" "$FILENAME<br><br>The image is available in the clipboard immediately" || true)
# Add image to clipboard
xclip -i "$out_path" -selection primary -t image/png
# 'Upload' the screenshot
if ! error=$(scp -C $out_path $SCP_HOST:$SCP_PATH 2>&1); then
send_notification "Screenshot upload error" "Failed to upload image:<br><br>$error" >/dev/null
exit 2
fi
# Add URL to clipboard
out_url="$URL_PATH/$FILENAME"
echo "$out_url" | xclip -i -selection clipboard
send_notification "Screenshot uploaded!" "$out_url" $notif_id >/dev/null || true

View File

@ -26,4 +26,4 @@ vim +PluginUpdate +qall
######################### #########################
cd "$VIMDIR/bundle/YouCompleteMe" cd "$VIMDIR/bundle/YouCompleteMe"
git submodule update --init --recursive git submodule update --init --recursive
./install.py --system-libclang --clang-completer ./install.py --system-libclang --clang-completer --go-completer --rust-completer --js-completer --java-completer

1
surface-scripts Submodule

Submodule surface-scripts added at f94e25f0b8

1
surface3-scripts Submodule

Submodule surface3-scripts added at bd6eaf1fb0