Merge branch 'master' into dmenuumount

This commit is contained in:
Luke Smith 2019-02-02 13:10:43 -05:00 committed by GitHub
commit a37aba2078
28 changed files with 162 additions and 198 deletions

View file

@ -2,7 +2,7 @@ bf ~/.bmfiles
bd ~/.bmdirs
cfb ~/.bashrc
cfz ~/.zshrc
cfv ~/.vimrc
cfv ~/.config/nvim/init.vim
cfr ~/.config/ranger/rc.conf
cfi ~/.config/i3/config
cfq ~/.config/qutebrowser/config.py

View file

@ -15,7 +15,7 @@ This is a partial key list.
q kill win kill win
w browser browser
e neomutt tutorials
r ranger sudo ranger
r ranger winresize
t toggle hor/vert gaps=15px
y calcurse resize left
u dropdown term resize down

View file

@ -1,43 +0,0 @@
esc left workspace exit i3
tab last workspace
- - vol -- vol
_ - vol -- vol
= + vol ++ vol
+ + vol ++ vol
q kill win kill win
w browser browser
e neomutt tutorials
r ranger sudo ranger
t toggle hor/vert gaps=15px
y calcurse resize left
u dropdown term resize down
i htop resize up
o sticky win resize right
p pause music
[ back 10 secs back 2 min
] forward 10 secs forward 2 min
\ last workspace
a calculator audio control
s + inner gaps - inner gaps
d dmenu remove gaps
f fullscreen freeze mode
g left workspace GIMP
h focus left move win left
j focus down move win down
k focus up move win up
l focus right move win right
; right workspace
' fast right win
z + outer gaps - outer gaps
x lock screen shutdown
c webcam
v visualizer projectm
b bar on/off stick/float win
n newsboat
m ncmpcpp mute audio
, previous song restart song
< previous song restart song
. next song
> next song
/ fast win below kill win
? fast win below kill win

View file

@ -44,6 +44,8 @@ for_window [instance="dropdown_dropdowncalc"] border pixel 2
for_window [instance="dropdown_*"] move position center
# #---Starting External Scripts---# #
# mpd startup
exec --no-startup-id mpd
# Setting the background:
exec --no-startup-id setbg
# Starts dunst for notifications:
@ -56,8 +58,6 @@ exec --no-startup-id remaps
exec --no-startup-id unclutter
# Run the script to update the mpd i3block on change.
exec_always --no-startup-id mpdupdate
# mpd startup
exec --no-startup-id mpd
# Podboat automatic queue and download
exec_always --no-startup-id podentr
@ -198,7 +198,7 @@ bindsym $mod+Shift+x exec --no-startup-id prompt "Shutdown computer?" "$shutdow
bindsym $mod+c exec --no-startup-id freealf
bindsym $mod+Shift+c exec --no-startup-id camtoggle
bindsym $mod+v exec --no-startup-id st -e vim -c "VimwikiIndex"
bindsym $mod+v exec --no-startup-id $term -e $EDITOR -c "VimwikiIndex"
#bindsym $mod+Shift+v
bindsym $mod+b bar mode toggle
@ -267,11 +267,10 @@ bindsym $mod+Shift+0 move container to workspace $ws10
for_window [class="Pinentry"] sticky enable
for_window [class="sent"] border pixel 0px
for_window [class="Blender"] move to workspace $ws6
for_window [class="marble"] move to workspace $ws7
for_window [title="GIMP Startup"] move workspace $ws5
for_window [class="Gimp"] move workspace $ws5
for_window [window_role="GtkFileChooserDialog"] resize shrink height 10 px
for_window [window_role="GtkFileChooserDialog"] resize set 800 600
for_window [window_role="GtkFileChooserDialog"] move position center
for_window [title="Default - Wine desktop"] floating enable
# Bindings to make the webcam float and stick.
@ -286,7 +285,7 @@ bindsym $mod+F2 restart
bindsym $mod+F3 exec --no-startup-id displayselect
bindsym $mod+F4 exec --no-startup-id prompt "Hibernate computer?" "$hibernate"
bindsym $mod+F5 exec --no-startup-id $netrefresh
bindsym $mod+F6 exec --no-startup-id $term -e transmission-remote-cli
bindsym $mod+F6 exec --no-startup-id torwrap
bindsym $mod+F7 exec --no-startup-id td-toggle
bindsym $mod+F8 exec --no-startup-id ~/.config/mutt/etc/mailsync.sh
bindsym $mod+F9 exec --no-startup-id dmenumount
@ -413,5 +412,3 @@ bindsym XF86Documents exec $term -e $FILE ~/Documents
##bindsym XF86Battery exec
##bindsym XF86Bluetooth exec
bindsym XF86WLAN exec $netrefresh
exec --no-startup-id lukescripts

View file

@ -11,7 +11,7 @@
## ncmpcpp.
##
#
#ncmpcpp_directory = ~/.ncmpcpp
ncmpcpp_directory = ~/.config/ncmpcpp
#
##
## Directory for storing downloaded lyrics. It defaults to ~/.lyrics since other

View file

@ -1,19 +1,21 @@
" _
" __ _(_)_ __ ___ _ __ ___
" \ \ / / | '_ ` _ \| '__/ __|
" \ V /| | | | | | | | | (__
" \_/ |_|_| |_| |_|_| \___|
let mapleader =","
let mapleader =" "
call plug#begin('~/.vim/plugged')
call plug#begin('~/.config/nvim/plugged')
Plug 'tpope/vim-surround'
Plug 'scrooloose/nerdtree'
Plug 'junegunn/goyo.vim'
Plug 'PotatoesMaster/i3-vim-syntax'
Plug 'jreybert/vimagit'
Plug 'LukeSmithxyz/vimling'
Plug 'vimwiki/vimwiki'
Plug 'bling/vim-airline'
Plug 'tpope/vim-commentary'
call plug#end()
set bg=light
set mouse=a
set nohlsearch
set clipboard=unnamedplus
" Some basics:
set nocompatible
filetype plugin on
@ -26,7 +28,7 @@ call plug#end()
autocmd FileType * setlocal formatoptions-=c formatoptions-=r formatoptions-=o
" Goyo plugin makes text more readable when writing prose:
map <leader>f :Goyo \| set linebreak<CR>
map <leader>f :Goyo \| set bg=light \| set linebreak<CR>
" Spell-check set to <leader>o, 'o' for 'orthography':
map <leader>o :setlocal spell! spelllang=en_us<CR>
@ -34,6 +36,17 @@ call plug#end()
" Splits open at the bottom and right, which is non-retarded, unlike vim defaults.
set splitbelow splitright
" Nerd tree
map <C-n> :NERDTreeToggle<CR>
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
" vimling:
nm <leader>d :call ToggleDeadKeys()<CR>
imap <leader>d <esc>:call ToggleDeadKeys()<CR>a
nm <leader>i :call ToggleIPA()<CR>
imap <leader>i <esc>:call ToggleIPA()<CR>a
nm <leader>q :call ToggleProse()<CR>
" Shortcutting split navigation, saving a keypress:
map <C-h> <C-w>h
map <C-j> <C-w>j
@ -51,7 +64,7 @@ call plug#end()
nnoremap S :%s//g<Left><Left>
" Compile document, be it groff/LaTeX/markdown/etc.
map <leader>c :w! \| !compiler <c-r>%<CR><CR>
map <leader>c :w! \| !compiler <c-r>%<CR>
" Open corresponding .pdf/.html or preview
map <leader>p :!opout <c-r>%<CR><CR>
@ -61,17 +74,11 @@ call plug#end()
" Ensure files are read as what I want:
let g:vimwiki_ext2syntax = {'.Rmd': 'markdown', '.rmd': 'markdown','.md': 'markdown', '.markdown': 'markdown', '.mdown': 'markdown'}
let g:vimwiki_list = [{'path': '~/vimwiki', 'syntax': 'markdown', 'ext': '.md'}]
autocmd BufRead,BufNewFile /tmp/calcurse*,~/.calcurse/notes/* set filetype=markdown
autocmd BufRead,BufNewFile *.ms,*.me,*.mom,*.man set filetype=groff
autocmd BufRead,BufNewFile *.tex set filetype=tex
" Readmes autowrap text:
autocmd BufRead,BufNewFile *.md set tw=79
" Use urlscan to choose and open a url:
:noremap <leader>u :w<Home> !urlscan -r 'linkhandler {}'<CR>
:noremap ,, !urlscan -r 'linkhandler {}'<CR>
" Copy selected text to system clipboard (requires gvim/nvim/vim-x11 installed):
vnoremap <C-c> "+y
map <C-p> "+P
@ -79,32 +86,25 @@ call plug#end()
" Enable Goyo by default for mutt writting
" Goyo's width will be the line limit in mutt.
autocmd BufRead,BufNewFile /tmp/neomutt* let g:goyo_width=80
autocmd BufRead,BufNewFile /tmp/neomutt* :Goyo
autocmd BufRead,BufNewFile /tmp/neomutt* :Goyo \| set bg=light
" Automatically deletes all trailing whitespace on save.
autocmd BufWritePre * %s/\s\+$//e
" When shortcut files are updated, renew bash and ranger configs with new material:
autocmd BufWritePost ~/.bm* !shortcuts
autocmd BufWritePost ~/.bmdirs,~/.bmfiles !shortcuts
" Run xrdb whenever Xdefaults or Xresources are updated.
autocmd BufWritePost ~/.Xresources,~/.Xdefaults !xrdb %
" Navigating with guides
inoremap <Space><Tab> <Esc>/<++><Enter>"_c4l
vnoremap <Space><Tab> <Esc>/<++><Enter>"_c4l
map <Space><Tab> <Esc>/<++><Enter>"_c4l
"____ _ _
"/ ___| _ __ (_)_ __ _ __ ___| |_ ___
"\___ \| '_ \| | '_ \| '_ \ / _ \ __/ __|
"___) | | | | | |_) | |_) | __/ |_\__ \
"|____/|_| |_|_| .__/| .__/ \___|\__|___/
"|_| |_|
inoremap <leader><leader> <Esc>/<++><Enter>"_c4l
vnoremap <leader><leader> <Esc>/<++><Enter>"_c4l
map <leader><leader> <Esc>/<++><Enter>"_c4l
"""LATEX
" Word count:
autocmd FileType tex map <leader><leader>o :w !detex \| wc -w<CR>
autocmd FileType tex map <leader>w :w !detex \| wc -w<CR>
" Code snippets
autocmd FileType tex inoremap ,fr \begin{frame}<Enter>\frametitle{}<Enter><Enter><++><Enter><Enter>\end{frame}<Enter><Enter><++><Esc>6kf}i
autocmd FileType tex inoremap ,fi \begin{fitch}<Enter><Enter>\end{fitch}<Enter><Enter><++><Esc>3kA

View file

@ -2,6 +2,10 @@ $include /etc/inputrc
set editing-mode vi
$if mode=vi
set show-mode-in-prompt on
set vi-ins-mode-string \1\e[6 q\2
set vi-cmd-mode-string \1\e[2 q\2
set keymap vi-command
# these are for vi-command mode
Control-l: clear-screen

View file

@ -13,10 +13,10 @@
Use vim keys (\f(CWh/j/k/l\fP) to navigate this document.
Pressing \f(CWs\fP will fit it to window width (\f(CWa\fP to revert).
\f(CWK\fP and \f(CWJ\fP zoom in and out.
\f(CWMod+f\fP to toggle fullscreen.
\f(CWSuper+f\fP to toggle fullscreen.
\f(CWf\fP will highlight links to follow which are selectable by typing the number that appears plus \f(CWEnter\fP.
\f(CWq\fP to quit.
(These are general zathura shortcuts.)
(These are general shortcuts of \f(CWzathura\fP, the pdf reader.)
.LI
.ITEM
\f(CWMod+F1\fP will show this document at any time.
@ -35,8 +35,9 @@ My website:
.PDF_WWW_LINK "https://lukesmith.xyz"
.ITEM
Donate:
.PDF_WWW_LINK "https://paypal.me/LukeMSmith/20" "https://paypal.me/LukeMSmith"
.PDF_WWW_LINK "https://lukesmith.xyz/donate" "https://lukesmith.xyz/donate"
.LIST OFF
FAQs are at the end of this document.
.HEADING 1 "Welcome!"
.HEADING 2 "Basic goals and principles of this system:"
.LI
@ -69,12 +70,11 @@ but you can also hold it down and it will act as another Windows/super/mod key.
The menu button (usually between the right Alt and Ctrl) is an alternative Super/Mod button.
This is to make one-handing on laptops easier.
.LIST OFF
.PP
If you'd like to change any of these keyboard changes, you need only open and change \f(CW~/.scripts/tools/remaps\fP.
Actually, this should go without saying, but \fIeverything\fP here can easily be changed.
.PP
Additionally, while this isn't a part of i3, the default editing mode in the shell is using vi bindings.
If you want to learn more of this, run \f(CWMod+Super+E\fP and type and select the option for "vi mode in shell".
If you want to learn more of this, run \f(CWMod+Shift+E\fP and type and select the option for "vi mode in shell".
This setting can be changed if you don't like it by deleting or commenting out the contents of \f(CW~/.inputrc\fP.
.HEADING 2 "The Status Bar"
.PP
@ -113,13 +113,17 @@ To type capital letters, hold down the \f(CWShift\fP key\(emthat might sound lik
, Be sure you play around with these. Be flexible with the basic commands and the system will grow on you quick.
.LI
.ITEM
\f(CWMod+Enter\fP \(en Spawn terminal
\f(CWMod+Enter\fP \(en Spawn terminal (the default terminal is \f(CWst\fP; run \f(CWman st\fP for more.)
.ITEM
\f(CWMod+q/Q\fP \(en Close window
.ITEM
\f(CWMod+d\fP \(en dmenu (For running commands or programs without shortcuts)
.ITEM
\f(CWMod+t\fP \(en Toggle between spawning vertically and horizontally
\f(CWMod+t\fP \(en Toggle between spawning vertically and horizontally\c
.FOOTNOTE
You may notice that one side of your window border is a different color.
This indicates the direction that the next window will spawn.
.FOOTNOTE END
.ITEM
\f(CWMod+f\fP \(en Fullscreen
.ITEM
@ -152,7 +156,7 @@ To type capital letters, hold down the \f(CWShift\fP key\(emthat might sound lik
.ITEM
\f(CWMod+B\fP \(en Toggle window float in bottom left corner (good for video watched intermittently)
.ITEM
\f(CWMod+N\fP \(en Same as above, but for the botttom right corner.
\f(CWMod+N\fP \(en Same as above, but for the bottom right corner.
.LIST OFF
.HEADING 2 "Basic Programs"
.PP
@ -162,7 +166,7 @@ Naturally, you can use \f(CWyay\fP to look for and install any you want to add.
.ITEM
\f(CWMod+r\fP \(en ranger (file browser/manager)
.ITEM
\f(CWMod+e\fP \(en mutt (email)
\f(CWMod+e\fP \(en mutt (email; not installed by default, see below)
.ITEM
\f(CWMod+m\fP \(en ncmpcpp (music player)
.ITEM
@ -300,42 +304,51 @@ previous recordings as their names are based on their exact times.
I've mapped those extra buttons that some keyboards have (play and pause
buttons, screen brightness, email, web browsing buttons, etc.) to what you
would expect.
.HEADING 1 "Special traits of this system"
.HEADING 2 "Easy config access"
.HEADING 1 "Bookmarking Files and Directories"
.PP
Open a terminal and type \f(CWbf\fP. This will open a file where you will see
customizable pairs of key shortcuts and config files and other important text
files. Enter any of these shortcuts in bash or ranger to immediately open the
file in vim.
Note the files \f(CW~/.bmdirs\fP and \f(CW~/.bmfiles\fP.
These files hold bookmarked directories and files respectively, along with shortcut keys to their left.
LARBS, specfically the \f(CWshortcuts\fP script, will automatically read these files and autogenerate aliases and shortcuts for bash/zsh and ranger from them.
.PP
You may add new entries here and they will be refreshed when you save the file
in vim. This will take effect immediately once you start a new instance of bash
or ranger or reload your previous sessions.
.HEADING 2 "Folder and config shortcuts"
For example, by default, the shortcut key for \f(CW~/Documents\fP is simply \f(CWd\fP.
Thus, if you type and run \f(CWd\fP in bash, you will automatically \f(CWcd\fP to \f(CW~/Documents\fP.
It also generates four ranger shortcuts using the shortcut \f(CWd\fP:
.LI
.ITEM
\f(CWgd\fP \(en
Go to \f(CW~/Documents\fP
.ITEM
\f(CWmd\fP \(en
Move (mv) selected file(s) to \f(CW~/Documents\fP
.ITEM
\f(CWtd\fP \(en
Create a new tab in \f(CW~/Documents\fP
.ITEM
\f(CWYd\fP \(en
Copy/yank (cp) a copy of the selected file(s) to \f(CWDocuments\fP
.LIST OFF
Shortcuts like these are generated for all key sequence/directory pairs in \f(CW~/.bmdirs\fP.
Additionally, you may also add editable files to \f(CW~/.bmfiles\fP.
Each key sequence you pair with a file will become an alias to edit it in either bash or ranger.
.PP
Open a terminal and type \f(CWbd\fP. This opens a file when you can keep and create
directory/folder shortcuts. There are only a few here now, because I don't know
what your folder structure is going to look like, but on my machine, I have 109
and growing.
.PP
Each line has a shortcut key/keys and its target. These can be used in several
applications. In bash, simply press \f(CWd\fP, the shortcut for \f(CW~/Documents\fP and you
will cd there (and automatically \f(CWls -a\fP).
.PP
ranger works similarly.
When in ranger, just press \f(CWg\fP then the shortcut of the folder you want to go to.
You may also press \f(CWt\fP plus the shortcut to open a new tab there.
\f(CWm\fP plus the shortcut moves the selected files to the folder and \f(CWY\fP copies them there.
\fBGet good at this. It will make management of even the most complex file system easy.\fP
.HEADING 2 "Dynamically constructed configs"
.PP
Each time you save changes to either the config shortcut file or the folder shortcut file in vim, vim will automatically run a bash script that updates your bash/ranger config, allowing you to use your new shortcuts in your next instance of bash/ranger or after resourcing your rc files.
Whenever you edit and save one of the bookmark files, vim will automatically rerun the shortcut script, thus uupdating the shortcuts that will be used in new instances of bash and ranger.
It just werks.
Note that it is your responsibility to ensure that none of the bindings you add conflict with another necessary function or command.
.HEADING 1 "Frequently Asked Questions (FAQs)"
.HEADING 2 "My keyboard isn't working as expected!"
.PP
LARBS runs some custom keyboard settings in \f(CW~/.scripts/tools/remaps\fP.
These settings may override your preferred settings, so you should open this file and comment out troublesome lines if you have issues.
.HEADING 2 "My audio isn't working!"
.PP
Sometimes, PulseAudio can be finicky on initial installation and configuration.
If you have no audio output, chances are your problems will be resolved by a reboot or manually killing and restarting PulseAudio.
You may also need to set your preferred default output sink which you can do by the command line, or by selecting one with \f(CWpulsemixer\fP (\f(CWmod+A\fP).
.HEADING 2 "How do I change the background/wallpaper?"
.PP
The easiest way is to use ranger, navigate to the file you want as your background, and press \f(CWbg\fP.
To be specific, i3 will always be looking to the file in \f(CW~/.config/wall.png\fP for the wallpaper, this ranger command copies the given file there and reruns feh to update it.
So if you want a persistent wallpaper, move/rename it to \f(CW~/.config/wall.png\fP.
The i3 configuration will always read the file \f(CW~/.config/wall.png\fP as the wallpaper.
The script \f(CWsetbg\fP, if run on an image will set it as the persistent background.
When using the file manager, you can simply hover over an image name and type \f(CWbg\fP and this will run \f(CWsetbg\fP.
.HEADING 2 "How I change the colorscheme?"
.PP
You can edit \f(CW~/.Xresources\fP to change the colorscheme.
@ -347,10 +360,13 @@ LARBS is also compatible with pywal, but it is not installed or used by default
.HEADING 2 "How do I set up my email?"
.LI
.ITEM
Create a GPG private/public key pair if you haven't already.
Install \f(CWneomutt\fP, \f(CWofflineimap\fP and \f(CWmsmtp\fP if you haven't already.
.ITEM
Create a GPG private/public key pair if you haven't already. Type \f(CWmod+shift+e\fP and you can select a tutorial for how to do this.
.ITEM
Download the mutt-wizard repository to the mutt config directory:
\f(CWgit clone https://github.com/lukesmithxyz/mutt-wizard ~/.config/mutt\fP
\fBREAD THE README.\fP
.PP
.ITEM
There run \f(CWmutt-wizard.sh\fP and follow the directions, specifically:
@ -360,7 +376,7 @@ Add an account.
.ITEM
Run \f(CWofflineimap -o\fP in the terminal.
.ITEM
Select the "Autodetect mailboxes" option.
Then select the "Autodetect mailboxes" option.
.LIST OFF
.LIST OFF
.PP
@ -379,6 +395,12 @@ By default, mpd, the music daemon assumes that \f(CW~/Music\fP is your music dir
This can be changed in \f(CW~/.config/mpd/mpd.conf\fP.
When you add music to your music folder, you may have to run \f(CWmpc up\fP in the terminal to update the database.
mpd is controlled by ncmpcpp, which is accessible by \f(CWMod+m\fP.
.HEADING 2 "How do I update LARBS?"
.PP
LARBS is deployed as a git repository in your home directory.
You can use it as such to fetch, diff and merge changes from the remote repository.
If you don't want to do that or don't know how to use git, you can actually just rerun the script (as root) and reinstall LARBS and it will automatically update an existing install if you select the same username.
This will overwrite the original config files though, including changes you made for them, but this is an easier brute force approach that will also install any new dependencies.
.HEADING 1 "Contact"
.LI
.ITEM
@ -388,15 +410,12 @@ mpd is controlled by ncmpcpp, which is accessible by \f(CWMod+m\fP.
.PDF_WWW_LINK "http://lukesmith.xyz" "https://lukesmith.xyz"
\(en For stalking!
.ITEM
.PDF_WWW_LINK "https://paypal.me/LukeMSmith" "PayPal"
\(en For gratitude!
.ITEM
.PDF_WWW_LINK "https://patreon.com/lukesmith" "Patreon"
\(en For support!
.PDF_WWW_LINK "https://lukesmith.xyz/donate" "https://lukesmith.xyz/donate"
\(en To incentivize more development of LARBS!
.ITEM
.PDF_WWW_LINK "https://github.com/LukeSmithxyz" "My Github Page"
\(en For the code behind it!
.ITEM
.PDF_WWW_LINK "http://lukesmith.xyz/rss.xml" "RSS"
\(en For even better updates!
\(en For updates!
.LIST OFF

View file

@ -3,7 +3,7 @@
ping -q -w 1 -c 1 `ip r | grep -m 1 default | cut -d ' ' -f 3` >/dev/null || exit
notify-send -i "$PIX/larbs.gif" "Checking for pacakge updates..."
notify-send -i "$PIX/larbs.svg" "Checking for pacakge updates..."
sudo pacman -Syyuw --noconfirm || notify-send "Error downloading updates.

View file

@ -4,7 +4,7 @@
ping -q -t 1 -c 1 `ip r | grep -m 1 default | cut -d ' ' -f 3` >/dev/null || exit
/usr/bin/notify-send -i "$PIX/rss.gif" "Updating RSS feeds..."
/usr/bin/notify-send -i "$PIX/rss.svg" "Updating RSS feeds..."
pgrep -x newsboat >/dev/null && /usr/bin/xdotool key --window "$(/usr/bin/xdotool search --name newsboat)" R && exit
@ -13,4 +13,4 @@ pkill -RTMIN+6 i3blocks
/usr/bin/newsboat -x reload
rm -f ~/.config/newsboat/.update
pkill -RTMIN+6 i3blocks
/usr/bin/notify-send -i "$PIX/rss.gif" "RSS feed update complete."
/usr/bin/notify-send -i "$PIX/rss.svg" "RSS feed update complete."

View file

@ -49,7 +49,7 @@ morescreen() { # If multi-monitor is selected and there are more than two screen
multimon() { # Multi-monitor handler.
case "$(echo "$screens" | wc -l)" in
1) xrandr $(echo "$allposs" | awk '{print "--output", $1, "--off"}' | tr '\n' ' ') ;;
1) xrandr $(echo "$allposs" | grep -v "$screens" | awk '{print "--output", $1, "--off"}' | tr '\n' ' ') ;;
2) twoscreen ;;
*) morescreen ;;
esac ;}
@ -65,7 +65,7 @@ chosen=$(printf "%s\\nmulti-monitor\\nmanual selection" "$screens" | dmenu -i -p
case "$chosen" in
"manual selection") arandr ; exit ;;
"multi-monitor") multimon ;;
*) xrandr --output "$chosen" --auto --scale 1.0x1.0 $(echo "$screens" | grep -v "$chosen" | awk '{print "--output", $1, "--off"}' | tr '\n' ' ') ;;
*) xrandr --output "$chosen" --auto --scale 1.0x1.0 $(echo "$allposs" | grep -v "$chosen" | awk '{print "--output", $1, "--off"}' | tr '\n' ' ') ;;
esac
setbg # Fix background if screen size/arangement has changed.

View file

@ -17,21 +17,21 @@ getmount() { \
mountusb() { \
chosen="$(echo "$usbdrives" | dmenu -i -p "Mount which drive?" | awk '{print $1}')"
sudo -A mount "$chosen" && notify-send "$chosen mounted." && exit 0
sudo -A mount "$chosen" && notify-send -i "$PIX/usb.svg" "$chosen mounted." && exit 0
getmount "/mnt /media /mount /home -maxdepth 5 -type d"
partitiontype="$(lsblk -no "fstype" "$chosen")"
case "$partitiontype" in
"vfat") sudo -A mount -t vfat "$chosen" "$mp" -o rw,umask=0000;;
*) sudo -A mount "$chosen" "$mp"; user="$(whoami)"; ug="$(groups | awk '{print $1}')"; sudo -A chown "$user":"$ug" 741 "$mp";;
esac
notify-send "$chosen mounted to $mp."
notify-send -i "$PIX/usb.svg" "$chosen mounted to $mp."
}
mountandroid() { \
chosen=$(echo "$anddrives" | dmenu -i -p "Which Android device?" | cut -d : -f 1)
getmount "$HOME -maxdepth 3 -type d"
simple-mtpfs --device "$chosen" "$mp"
notify-send "Android device mounted to $mp."
notify-send -i "$PIX/android.svg" "Android device mounted to $mp."
}
asktype() { \

View file

@ -7,13 +7,13 @@ unmountusb() {
[ -z "$drives" ] && exit
chosen=$(echo "$drives" | dmenu -i -p "Unmount which drive?" | awk '{print $1}')
[ -z "$chosen" ] && exit
sudo -A umount "$chosen" && pgrep -x dunst && notify-send "$chosen unmounted."
sudo -A umount "$chosen" && pgrep -x dunst && notify-send -i "$PIX/usb.svg" "$chosen unmounted."
}
unmountandroid() { \
chosen=$(awk '/simple-mtpfs/ {print $2}' /etc/mtab | dmenu -i -p "Unmount which device?")
[ -z "$chosen" ] && exit
sudo -A umount -l "$chosen" && pgrep -x dunst && notify-send "$chosen unmounted."
sudo -A umount -l "$chosen" && pgrep -x dunst && notify-send -i "$PIX/android.svg" "$chosen unmounted."
}
asktype() { \

View file

@ -1,19 +1,9 @@
#!/bin/sh
rm -f /tmp/locked.png
# If `imagemagick` is not installed, use a blank screen.
[ -f /usr/bin/convert ] &&
scrot -m -z /tmp/base.png &&
pgrep -x dunst && notify-send -i ~/.scripts/pix/lock.png "Locking computer..." &&
convert /tmp/base.png -blur 0x8 /tmp/locked.png
# Pause music (mocp, mpd and send the pause key to all mpv videos):
mocp -P >/dev/null 2>&1
# Pause mpd and send the pause key to all mpv videos:
mpc pause >/dev/null 2>&1
pauseallmpv >/dev/null 2>&1
i3lock -e -f -c 000000 -i /tmp/locked.png
i3lock -e -f -c 1d2021
# In five seconds, turn off display unless key press in last 4 seconds.
sleep 5 && [ 4000 -lt "$(xssstate -i)" ] && pgrep -x i3lock && xset dpms force off

View file

@ -1,9 +1,9 @@
#!/bin/sh
case "$(printf "a selected area\\ncurrent window\\nfull screen\\na selected area (copy)\\ncurrent window (copy)\\nfullscreen (copy)" | dmenu -l 6 -i -p "Screenshot which area?")" in
case "$(printf "a selected area\\ncurrent window\\nfull screen\\na selected area (copy)\\ncurrent window (copy)\\nfull screen (copy)" | dmenu -l 6 -i -p "Screenshot which area?")" in
"a selected area") maim -s pic-selected-"$(date '+%y%m%d-%H%M-%S').png" ;;
"current window") maim -i "$(xdotool getactivewindow)" pic-window-"$(date '+%y%m%d-%H%M-%S').png" ;;
"full screen") maim pic-full-"$(date '+%y%m%d-%H%M-%S').png" ;;
"a selected area (copy)") maim -s | xclip -selection clipboard -t image/png ;;
"current window (copy)") maim -i | xclip -selection clipboard -t image/png ;;
"current window (copy)") maim -i "$(xdotool getactivewindow)" | xclip -selection clipboard -t image/png ;;
"full screen (copy)") maim | xclip -selection clipboard -t image/png ;;
esac

View file

@ -1,15 +1,10 @@
#!/bin/sh
# If transmission-daemon is running, will ask to kill, else will ask to start.
[ ! -f /usr/bin/transmission-daemon ] && notify-send "Transmission daemon not installed." && exit
if pgrep -x transmission-da >/dev/null ;
then
yn=$(printf "No\\nYes" | dmenu -i -p "Kill transmission-daemon?")
[ "$yn" = "Yes" ] && killall transmission-da
[ "$(printf "No\\nYes" | dmenu -i -p "Kill transmission-daemon?")" = "Yes" ] && killall transmission-da && notify-send -i "$PIX/torrent.svg" "transmission-daemon killed."
else
yn=$(printf "No\\nYes" | dmenu -i -p "Start transmission daemon?")
[ "$yn" = "Yes" ] && transmission-daemon
ifinstalled transmission-cli || exit
[ "$(printf "No\\nYes" | dmenu -i -p "Start transmission daemon?")" = "Yes" ] && transmission-daemon && notify-send -i "$PIX/torrent.svg" "tranmission-daemon started."
fi
sleep 3 && pkill -RTMIN+7 i3blocks

6
.scripts/i3cmds/torwrap Executable file
View file

@ -0,0 +1,6 @@
#!/bin/sh
ifinstalled transmission-remote-cli transmission-cli || exit
! pgrep -x transmission-da >/dev/null && transmission-daemon && notify-send -i "$PIX/torrent.svg" "Starting torrent daemon..." && sleep 3 && pkill -RTMIN+7 i3blocks
$TERMINAL -e transmission-remote-cli

View file

@ -1,6 +1,6 @@
#!/bin/sh
# Credit to Maddison Hellstrom (@b0o on Github)
qrencode -o - -s 1 \
ifinstalled feh && qrencode -o - -s 1 \
"$(xclip -out -selection clipboard)" |
feh --zoom max \
-F \

View file

@ -1,8 +1,7 @@
#!/bin/sh
[ "$(pgrep -x "$(basename "$0")" | wc -l)" -gt 2 ] && exit
while : ; do
sleep 5 && while : ; do
pgrep -x mpd || exit
mpc idle > /dev/null
pkill -RTMIN+11 i3blocks ;

View file

@ -6,10 +6,12 @@ transmission-remote -l | grep % |
s/.*Seeding.*/Z/g;
s/.*100%.*/N/g;
s/.*Idle.*/B/g;
s/.*Uploading.*/L/g;
s/.*%.*/M/g" |
sort -h | uniq -c | sed " # Now we replace the standin letters with icons.
s/A/🛑/g;
s/B/⌛️/g;
s/L/🔼/g;
s/M/🔽/g;
s/N/✅/g;
s/Z/🌱/g" | awk '{print $2, $1}' | tr '\n' ' ' | sed -e "s/ $//g"
@ -18,7 +20,8 @@ case $BLOCK_BUTTON in
1) $TERMINAL -e transmission-remote-cli ;;
3) pgrep -x dunst >/dev/null && notify-send "<b>Torrent module:</b>
🛑: paused
⏳: waiting
⏳: idle (seeds needed)
🔼: uploading (unfinished)
🔽: downloading
✅: done
🌱: done and seeding" ;;

View file

@ -1,21 +1,14 @@
#!/bin/sh
# This script will compile or run another finishing operation on a document. I
# have this script run via vim.
#
# tex files: Compiles to pdf, including bibliography if necessary
# md files: Compiles to pdf via pandoc
# rmd files: Compiles via R Markdown
# c files: Compiles via whatever compiler is set to cc. Usually gcc.
# py files: runs via python command
# go files: compiles and runs with "go run"
# config.h files: (For suckless utils) recompiles and installs program.
# all others: run `sent` to show a presentation
# Compiles .tex. groff (.mom, .ms), .rmd, .md.
# Opens .sent files as sent presentations.
# Runs scripts based on extention or shebang
file=$(readlink -f "$1")
dir=$(dirname "$file")
base="${file%.*}"
shebang=$(sed -n 1p "$file")
cd "$dir" || exit
@ -29,22 +22,16 @@ textype() { \
$command --output-directory="$dir" "$base"
}
shebangtest() {
case "$shebang" in
\#\!*) "$file" ;;
*) sent "$file" 2>/dev/null & ;;
esac
}
case "$file" in
*\.ms) refer -PS -e "$file" | groff -me -ms -kejpt -T pdf > "$base".pdf ;;
*\.mom) refer -PS -e "$file" | groff -mom -kejpt -T pdf > "$base".pdf ;;
*\.rmd) echo "require(rmarkdown); render('$file')" | R -q --vanilla ;;
*\.tex) textype "$file" ;;
*\.md) pandoc "$file" --pdf-engine=xelatex -o "$base".pdf ;;
*config.h) make && sudo make install ;;
*config.h) sudo make install ;;
*\.c) cc "$file" -o "$base" && "$base" ;;
*\.py) python "$file" ;;
*\.go) go run "$file" ;;
*) shebangtest ;;
*\.sent) setsid sent "$file" 2>/dev/null & ;;
*) sed 1q "$file" | grep "^#!/" | sed "s/^#!//" | xargs -r -I % "$file" ;;
esac

View file

@ -1,3 +1,3 @@
#!/bin/sh
# If $1 command is not available, error code and notify.
command -v "$1" >/dev/null || { notify-send "$1 is not installed." && exit 1 ;}
command -v "$1" >/dev/null || { notify-send -i "$PIX/larbs.svg" "<b>$1</b> must be installed for this function." && exit 1 ;}

11
.scripts/tools/qndl Executable file
View file

@ -0,0 +1,11 @@
#!/bin/sh
# $1 is a url; $2 is a command
[ -z "$1" ] && exit
base="$(basename "$1")"
notify-send -i "$PIX/dl.svg" "Queuing $base..."
cmd="$2"
[ -z "$cmd" ] && cmd="youtube-dl --add-metadata"
idnum="$(tsp $cmd "$1")"
realname="$(echo "$base" | sed "s/?\(source\|dest\).*//;s/%20/ /g")"
tsp -D "$idnum" mv "$base" "$realname"
tsp -D "$idnum" notify-send -i "$PIX/check.svg" "$realname done."

View file

@ -7,12 +7,7 @@ queuefile="$HOME/.local/share/newsboat/queue"
while read -r line; do
[ -z "$line" ] && continue
url="$(echo "$line" | awk '{print $1}')"
base="$(basename "$url")"
notify-send -i "$PIX/dl.png" "Queuing $base..."
idnum="$(tsp curl -LO "$url")"
realname="$(echo "$base" | sed "s/?\(source\|dest\).*//;s/%20/ /g")"
tsp -D "$idnum" mv "$base" "$realname"
tsp -D "$idnum" notify-send -i "$PIX/check.png" "$realname done."
qndl "$url" "curl -LO"
done < "$queuefile"
echo > "$queuefile"

View file

@ -1,4 +1,4 @@
#!/bin/sh
# Sets the background. If given an argument, will set file as background.
[ ! -z "$1" ] && cp "$1" ~/.config/wall.png && notify-send -i "$HOME/.config/wall.png" "Wallpaper changed."
xwallpaper --center ~/.config/wall.png
xwallpaper --maximize ~/.config/wall.png

View file

@ -7,6 +7,6 @@
# transmission-daemon sometimes fails to take remote requests in its first
# moments.
pgrep -x transmission-da || (transmission-daemon && note "Starting daemon..." "$PIX/dl.png" && sleep 3 && pkill -RTMIN+7 i3blocks)
pgrep -x transmission-da || (transmission-daemon && note "Starting daemon..." "$PIX/dl.svg" && sleep 3 && pkill -RTMIN+7 i3blocks)
transmission-remote -a "$@" && note "Torrent added." "$PIX/dl.png"
transmission-remote -a "$@" && note "Torrent added." "$PIX/dl.svg"

1
.vim Symbolic link
View file

@ -0,0 +1 @@
.config/nvim/