update theme
This commit is contained in:
@@ -8,19 +8,19 @@
|
|||||||
#+begin_src yaml
|
#+begin_src yaml
|
||||||
font:
|
font:
|
||||||
normal:
|
normal:
|
||||||
family: Hack Nerd Font Mono
|
family: SauceCodePro Nerd Font Mono
|
||||||
style: Regular
|
style: Regular
|
||||||
|
|
||||||
bold:
|
bold:
|
||||||
family: Hack Nerd Font Mono
|
family: SauceCodePro Nerd Font Mono
|
||||||
style: Bold
|
style: Bold
|
||||||
|
|
||||||
italic:
|
italic:
|
||||||
family: Hack Nerd Font Mono
|
family: SauceCodePro Nerd Font Mono
|
||||||
style: Italic
|
style: Italic
|
||||||
|
|
||||||
bold_italic:
|
bold_italic:
|
||||||
family: Hack Nerd Font Mono
|
family: SauceCodePro Nerd Font Mono
|
||||||
style: Bold Italic
|
style: Bold Italic
|
||||||
|
|
||||||
size: 10.0
|
size: 10.0
|
||||||
|
|||||||
148
applications.org
148
applications.org
@@ -3,19 +3,17 @@
|
|||||||
#+PROPERTY: header-args:conf :comments none :mkdirp yes
|
#+PROPERTY: header-args:conf :comments none :mkdirp yes
|
||||||
|
|
||||||
* Mime Applications
|
* Mime Applications
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.config/mimeapps.list
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf :tangle ~/.config/mimeapps.list
|
||||||
[Default Applications]
|
[Default Applications]
|
||||||
text/plain=nvim.desktop
|
text/plain=nvim.desktop
|
||||||
x-scheme-handler/magnet=torrent.desktop;
|
|
||||||
text/x-shellscript=nvim.desktop;
|
text/x-shellscript=nvim.desktop;
|
||||||
image/png=img.desktop;
|
image/png=img.desktop;
|
||||||
image/jpeg=img.desktop;
|
image/jpeg=img.desktop;
|
||||||
image/gif=img.desktop;
|
image/gif=img.desktop;
|
||||||
|
|
||||||
application/rss+xml=rss.desktop
|
application/rss+xml=rss.desktop
|
||||||
|
|
||||||
x-scheme-handler/mailto=neomutt.desktop
|
x-scheme-handler/mailto=neomutt.desktop
|
||||||
message/rfc822=neomutt.desktop
|
message/rfc822=neomutt.desktop
|
||||||
|
|
||||||
@@ -23,17 +21,23 @@ x-scheme-handler/magnet=stig.desktop;
|
|||||||
application/x-bittorrent=stig.desktop
|
application/x-bittorrent=stig.desktop
|
||||||
|
|
||||||
application/pdf=zathura.desktop
|
application/pdf=zathura.desktop
|
||||||
x-scheme-handler/http=qutebrowser.desktop
|
|
||||||
x-scheme-handler/https=qutebrowser.desktop
|
text/xml=org.qutebrowser.qutebrowser.desktop
|
||||||
x-scheme-handler/ftp=qutebrowser.desktop
|
text/html=org.qutebrowser.qutebrowser.desktop
|
||||||
x-scheme-handler/chrome=qutebrowser.desktop
|
x-scheme-handler/http=org.qutebrowser.qutebrowser.desktop
|
||||||
text/html=qutebrowser.desktop
|
x-scheme-handler/https=org.qutebrowser.qutebrowser.desktop
|
||||||
application/x-extension-htm=qutebrowser.desktop
|
x-scheme-handler/ftp=org.qutebrowser.qutebrowser.desktop
|
||||||
application/x-extension-html=qutebrowser.desktop
|
x-scheme-handler/chrome=org.qutebrowser.qutebrowser.desktop
|
||||||
application/x-extension-shtml=qutebrowser.desktop
|
application/x-extension-htm=org.qutebrowser.qutebrowser.desktop
|
||||||
application/xhtml+xml=qutebrowser.desktop
|
application/x-extension-html=org.qutebrowser.qutebrowser.desktop
|
||||||
application/x-extension-xhtml=qutebrowser.desktop
|
application/x-extension-shtml=org.qutebrowser.qutebrowser.desktop
|
||||||
application/x-extension-xht=qutebrowser.desktop
|
application/xhtml+xml=org.qutebrowser.qutebrowser.desktop
|
||||||
|
application/x-extension-xhtml=org.qutebrowser.qutebrowser.desktop
|
||||||
|
application/x-extension-xht=org.qutebrowser.qutebrowser.desktop
|
||||||
|
x-scheme-handler/about=org.qutebrowser.qutebrowser.desktop
|
||||||
|
x-scheme-handler/unknown=org.qutebrowser.qutebrowser.desktop
|
||||||
|
|
||||||
|
text/calendar=ics_add.desktop
|
||||||
|
|
||||||
[Added Associations]
|
[Added Associations]
|
||||||
text/plain=mousepad.desktop;
|
text/plain=mousepad.desktop;
|
||||||
@@ -41,14 +45,12 @@ application/x-bittorrent=stig.desktop;
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
* Neomutt
|
* Neomutt
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.local/share/applications/neomutt.desktop
|
#+begin_src conf :tangle ~/.local/share/applications/neomutt.desktop
|
||||||
:END:
|
|
||||||
#+begin_src conf
|
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Name=Neomutt
|
Name=Neomutt
|
||||||
GenericName=Email client
|
GenericName=Email client
|
||||||
Exec=$TERMINAL -e neomutt %u
|
Exec=alacritty -e neomutt %u
|
||||||
Type=Application
|
Type=Application
|
||||||
Icon=/usr/share/icons/Papirus/64x64/apps/mutt.svg
|
Icon=/usr/share/icons/Papirus/64x64/apps/mutt.svg
|
||||||
Categories=Network;Email;
|
Categories=Network;Email;
|
||||||
@@ -57,12 +59,10 @@ StartupNotify=true
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Matlab
|
* Matlab
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.local/share/applications/matlab.desktop
|
#+begin_src conf :tangle ~/.local/share/applications/matlab.desktop
|
||||||
:END:
|
|
||||||
#+begin_src conf
|
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Version=R2020b
|
Version=R2019b
|
||||||
Type=Application
|
Type=Application
|
||||||
Terminal=false
|
Terminal=false
|
||||||
MimeType=text/x-matlab
|
MimeType=text/x-matlab
|
||||||
@@ -74,25 +74,6 @@ Comment=Scientific computing environment
|
|||||||
StartupNotify=true
|
StartupNotify=true
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Neovim
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.local/share/applications/nvim.desktop
|
|
||||||
:END:
|
|
||||||
#+begin_src conf
|
|
||||||
[Desktop Entry]
|
|
||||||
Name=Neovim
|
|
||||||
GenericName=Text Editor
|
|
||||||
Comment=Edit text files
|
|
||||||
Exec=nvim %F
|
|
||||||
Terminal=true
|
|
||||||
Type=Application
|
|
||||||
Keywords=Text;editor;
|
|
||||||
Icon=/usr/share/icons/Papirus/48x48/apps/nvim.svg
|
|
||||||
Categories=Utility;TextEditor;
|
|
||||||
StartupNotify=false
|
|
||||||
MimeType=text/english;text/plain;text/x-makefile;
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Images
|
* Images
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args: :tangle ~/.local/share/applications/img.desktop
|
:header-args: :tangle ~/.local/share/applications/img.desktop
|
||||||
@@ -105,10 +86,8 @@ Exec=/usr/bin/sxiv -a %u
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Org-Protocol
|
* Org-Protocol
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.local/share/applications/org-protocol.desktop
|
#+begin_src conf :tangle ~/.local/share/applications/org-protocol.desktop
|
||||||
:END:
|
|
||||||
#+begin_src conf
|
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Name=org-protocol
|
Name=org-protocol
|
||||||
Exec=emacsclient %u
|
Exec=emacsclient %u
|
||||||
@@ -118,64 +97,9 @@ Terminal=false
|
|||||||
MimeType=x-scheme-handler/org-protocol;
|
MimeType=x-scheme-handler/org-protocol;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Ranger
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.local/share/applications/ranger.desktop
|
|
||||||
:END:
|
|
||||||
#+begin_src conf
|
|
||||||
[Desktop Entry]
|
|
||||||
Type=Application
|
|
||||||
Name=ranger
|
|
||||||
Comment=Launches the ranger file manager
|
|
||||||
Icon=utilities-terminal
|
|
||||||
Terminal=true
|
|
||||||
Exec=ranger
|
|
||||||
Categories=ConsoleOnly;System;FileTools;FileManager
|
|
||||||
MimeType=inode/directory;inode/mount-point;x-scheme-handler/ssh;x-scheme-handler/smb;x-scheme-handler/nfs;x-scheme-handler/ftp;
|
|
||||||
#+end_src
|
|
||||||
* Emacs Client
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.local/share/applications/emacsclient.desktop
|
|
||||||
:END:
|
|
||||||
#+begin_src conf
|
|
||||||
[Desktop Entry]
|
|
||||||
Name=Emacs Client
|
|
||||||
GenericName=Text Editor
|
|
||||||
Comment=Edit text
|
|
||||||
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
|
|
||||||
Exec=emacsclient -c %f
|
|
||||||
Icon=emacs
|
|
||||||
Type=Application
|
|
||||||
Terminal=false
|
|
||||||
Categories=Utility;TextEditor;
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Qutebrowser
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.local/share/applications/qutebrowser.desktop
|
|
||||||
:END:
|
|
||||||
#+begin_src conf
|
|
||||||
[Desktop Entry]
|
|
||||||
Name=qutebrowser
|
|
||||||
StartupWMClass=qutebrowser
|
|
||||||
GenericName=Web Browser
|
|
||||||
Comment=A keyboard-driven, vim-like browser based on PyQt5
|
|
||||||
Icon=qutebrowser
|
|
||||||
Type=Application
|
|
||||||
Categories=Network;WebBrowser;
|
|
||||||
Exec=qutebrowser %u
|
|
||||||
Terminal=false
|
|
||||||
StartupNotify=true
|
|
||||||
MimeType=text/html;text/xml;application/xhtml+xml;application/xml;application/rdf+xml;image/gif;image/jpeg;image/png;x-scheme-handler/http;x-scheme-handler/https;x-scheme-handler/qute;
|
|
||||||
Keywords=Browser
|
|
||||||
Actions=new-window;preferences;
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Zathura
|
* Zathura
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.local/share/applications/zathura.desktop
|
#+begin_src conf :tangle ~/.local/share/applications/zathura.desktop
|
||||||
:END:
|
|
||||||
#+begin_src conf
|
|
||||||
[Desktop Entry]
|
[Desktop Entry]
|
||||||
Version=1.0
|
Version=1.0
|
||||||
Type=Application
|
Type=Application
|
||||||
@@ -201,3 +125,15 @@ MimeType=application/x-bittorrent
|
|||||||
Categories=Network;FileTransfer;P2P;
|
Categories=Network;FileTransfer;P2P;
|
||||||
Keywords=p2p;bittorrent;transmission;rpc;
|
Keywords=p2p;bittorrent;transmission;rpc;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* ICS-Add
|
||||||
|
|
||||||
|
#+begin_src conf :tangle ~/.local/share/applications/ics_add.desktop
|
||||||
|
[Desktop Entry]
|
||||||
|
Name=ICS Add
|
||||||
|
Comment=Add ICS file to the calendar
|
||||||
|
Terminal=true
|
||||||
|
Exec=ics-add %U
|
||||||
|
Type=Application
|
||||||
|
MimeType=text/calendar
|
||||||
|
#+end_src
|
||||||
|
|||||||
81
bash.org
81
bash.org
@@ -21,8 +21,8 @@
|
|||||||
|
|
||||||
** FZF
|
** FZF
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
. /usr/share/doc/fzf/examples/completion.bash
|
. /usr/share/fzf/completion.bash
|
||||||
. /usr/share/doc/fzf/examples/key-bindings.bash
|
. /usr/share/fzf/key-bindings.bash
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Ignore case for auto-completion
|
** Ignore case for auto-completion
|
||||||
@@ -86,9 +86,13 @@ alias grep='grep --colour=auto'
|
|||||||
alias cp="cp -i" # confirm before overwriting something
|
alias cp="cp -i" # confirm before overwriting something
|
||||||
alias df='df -h' # human-readable sizes
|
alias df='df -h' # human-readable sizes
|
||||||
alias free='free -m' # show sizes in MB
|
alias free='free -m' # show sizes in MB
|
||||||
alias bat='batcat'
|
|
||||||
alias mutt="neomutt"
|
alias mutt="neomutt"
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
Change default configuration file location:
|
||||||
|
#+BEGIN_SRC bash
|
||||||
alias tmux='tmux -f $XDG_CONFIG_HOME/tmux/tmux.conf'
|
alias tmux='tmux -f $XDG_CONFIG_HOME/tmux/tmux.conf'
|
||||||
|
alias mbsync='mbsync -c $XDG_CONFIG_HOME/isync/mbsyncrc'
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
*** One letter aliases
|
*** One letter aliases
|
||||||
@@ -118,11 +122,6 @@ alias :e=nvim
|
|||||||
alias path='echo -e ${PATH//:/\\n}'
|
alias path='echo -e ${PATH//:/\\n}'
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
*** Other
|
|
||||||
#+begin_src bash
|
|
||||||
alias fd="fdfind"
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Functions
|
** Functions
|
||||||
*** =colors= - Display colors
|
*** =colors= - Display colors
|
||||||
#+BEGIN_SRC bash
|
#+BEGIN_SRC bash
|
||||||
@@ -250,7 +249,7 @@ PROMPT_COMMAND="history -a; $PROMPT_COMMAND"
|
|||||||
** QT And GTK Themes
|
** QT And GTK Themes
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
export QT_QPA_PLATFORMTHEME="qt5ct"
|
export QT_QPA_PLATFORMTHEME="qt5ct"
|
||||||
export GTK2_RC_FILES="$HOME/.gtkrc-2.0"
|
export GTK2_RC_FILES="$HOME/.config/gtk-2.0/gtkrc.mine"
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Gui program to ask for sudo password
|
** Gui program to ask for sudo password
|
||||||
@@ -258,15 +257,6 @@ export GTK2_RC_FILES="$HOME/.gtkrc-2.0"
|
|||||||
export SUDO_ASKPASS=~/.local/bin/askpass-rofi
|
export SUDO_ASKPASS=~/.local/bin/askpass-rofi
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Gnome Keyring Daemon
|
|
||||||
Enable the keyring for applications run through the terminal
|
|
||||||
#+begin_src bash
|
|
||||||
if [ -n "$DESKTOP_SESSION" ];then
|
|
||||||
eval $(gnome-keyring-daemon --start)
|
|
||||||
export SSH_AUTH_SOCK
|
|
||||||
fi
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Export some default applications
|
** Export some default applications
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
export EDITOR="nvim"
|
export EDITOR="nvim"
|
||||||
@@ -280,6 +270,21 @@ export FILE="ranger"
|
|||||||
*** XDG Default
|
*** XDG Default
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
export XDG_CONFIG_HOME="$HOME/.config"
|
export XDG_CONFIG_HOME="$HOME/.config"
|
||||||
|
export XDG_DATA_HOME="$HOME/.local/share"
|
||||||
|
export XDG_STATE_HOME="$HOME/.local/state"
|
||||||
|
export XDG_CACHE_HOME="$HOME/.cache"
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src bash
|
||||||
|
export LESSHISTFILE=-
|
||||||
|
export GNUPGHOME="$XDG_DATA_HOME/gnupg"
|
||||||
|
export _JAVA_OPTIONS=-Djava.util.prefs.userRoot="$XDG_CONFIG_HOME/java"
|
||||||
|
export PASSWORD_STORE_DIR="$XDG_DATA_HOME/pass"
|
||||||
|
export INPUTRC="$XDG_CONFIG_HOME/readline/inputrc"
|
||||||
|
export XINITRC="$XDG_CONFIG_HOME/X11/xinitrc"
|
||||||
|
export CARGO_HOME="$XDG_DATA_HOME/cargo"
|
||||||
|
export GTK2_RC_FILES="$XDG_CONFIG_HOME/gtkrc-2.0"
|
||||||
|
export MATLAB_LOG_DIR="$XDG_CACHE_HOME/matlab"
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Use Ripgrep for FZF
|
*** Use Ripgrep for FZF
|
||||||
@@ -288,37 +293,39 @@ export FZF_DEFAULT_COMMAND='rg --files --no-ignore --hidden --follow --glob "!.g
|
|||||||
export FZF_DEFAULT_OPTS='--layout=reverse --height=20'
|
export FZF_DEFAULT_OPTS='--layout=reverse --height=20'
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Goland
|
|
||||||
#+begin_src bash
|
|
||||||
export GOPATH=$HOME/go
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Latex Path
|
*** Latex Path
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
export TEXMFHOME=$HOME/.local/share/texmf
|
export TEXMFHOME=$HOME/.local/share/texmf
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Python Path
|
|
||||||
#+begin_src bash
|
|
||||||
export PYTHONPATH="${PYTHONPATH}:/usr/lib/python3.9/site-packages/configobj"
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Linkding
|
*** Linkding
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
export LINKDING_URL=`pass nas/linkding_url`
|
export LINKDING_URL=`pass nas/linkding_url`
|
||||||
export LINKDING_TOKEN=`pass nas/linkding_token`
|
export LINKDING_TOKEN=`pass nas/linkding_token`
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
*** Restic
|
||||||
|
#+begin_src bash
|
||||||
|
export RESTIC_REPOSITORY=sftp:thomas@homelab:/srv/storage/Backups/esrf-laptop
|
||||||
|
export RESTIC_PASSWORD_COMMAND="pass show restic"
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Go
|
||||||
|
#+begin_src bash
|
||||||
|
export GOPATH=$HOME/.config/go
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Japanese input
|
||||||
|
#+begin_src bash
|
||||||
|
# Japanese input
|
||||||
|
export QT_IM_MODULE=fcitx
|
||||||
|
export XMODIFIERS=@im=fcitx
|
||||||
|
export GTK_IM_MODULE=fcitx
|
||||||
|
#+end_src
|
||||||
|
|
||||||
** Path
|
** Path
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
PATH=$HOME/appimages:$PATH
|
|
||||||
PATH=$HOME/.gem/ruby/2.5.0/bin:$PATH
|
|
||||||
PATH=$GOPATH:$GOPATH/bin:$PATH
|
|
||||||
PATH=~/.config/emacs/bin:$PATH
|
|
||||||
PATH=~/.local/bin:$PATH
|
PATH=~/.local/bin:$PATH
|
||||||
PATH=~/.local/bin/nvim/bin:$PATH
|
|
||||||
PATH=~/.npm-global/bin:$PATH
|
|
||||||
PATH=~/miniconda3/bin:$PATH
|
|
||||||
export PATH
|
export PATH
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
@@ -329,9 +336,9 @@ if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
|
|||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* =~/.inputrc=
|
* =inputrc=
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args: :tangle ~/.inputrc
|
:header-args: :tangle ~/.config/readline/inputrc
|
||||||
:header-args+: :comments both :mkdirp yes
|
:header-args+: :comments both :mkdirp yes
|
||||||
:CUSTOM_ID: inputrc
|
:CUSTOM_ID: inputrc
|
||||||
:END:
|
:END:
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
:CUSTOM_ID: phonebook
|
:CUSTOM_ID: phonebook
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
The phone-list is taken from =scp opid21@lid21nano:/mnt/multipath-shares/sware/pub/phonelist/share/annuaire.txt /home/thomas/.local/data/annuaire.txt=
|
The phone-list is taken from =scp rnice@esrf.fr:/mnt/multipath-shares/sware/pub/phonelist/share/annuaire.txt /home/thomas/.local/data/annuaire.txt=
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/phonebook
|
#+begin_src bash :tangle ~/.local/bin/phonebook
|
||||||
cat ~/.local/data/annuaire.txt | fzf --header="NAME Phone Box department roomNumber description mail"
|
cat ~/.local/data/annuaire.txt | fzf --header="NAME Phone Box department roomNumber description mail"
|
||||||
@@ -33,77 +33,62 @@ khard | fzf --header="Index Name Phone
|
|||||||
$TERMINAL --title esrf-phonebook -e contacts
|
$TERMINAL --title esrf-phonebook -e contacts
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* =qutebrowser=
|
|
||||||
:PROPERTIES:
|
|
||||||
:CUSTOM_ID: qutebrowser
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/qutebrowser
|
|
||||||
~/.local/soft/qutebrowser/.venv/bin/python3 -m qutebrowser "$@"
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* =remote-home= - Remote Desktop to Home PC
|
|
||||||
:PROPERTIES:
|
|
||||||
:CUSTOM_ID: remote-home
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/remote-home
|
|
||||||
notify-send 'Rdesktop' "Connection to Home PC..."
|
|
||||||
|
|
||||||
common_arg="/clipboard /bpp:8 /bpp:16 /compression -themes -wallpaper /async-update /async-input -glyph-cache /audio-mode:1 /dynamic-resolution /auto-reconnect /wm-class:RDP_PC /grab-keyboard /cert:ignore"
|
|
||||||
|
|
||||||
xfreerdp $common_arg /u:thomas /p:$(pass home_pc/thomas | sed -n 1p) /v:192.168.1.72 > /tmp/freerdp_home_pc.log 2>&1 &
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* =remote-desktop= - Remote Desktop Connect
|
* =remote-desktop= - Remote Desktop Connect
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: remote-desktop
|
:CUSTOM_ID: remote-desktop
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/remote-desktop
|
#+begin_src bash :tangle ~/.local/bin/remote-desktop
|
||||||
computer=$(echo -e 'WID21SPEEDGOAT1\nWBM23SPEEDGOAT1\nWID24SPEEDGOAT1\nPCMEL1\nRNICE\nPCDEHAEZE\nLAPPAMU1\nPCNASS1\nDesktop-W10' | rofi -i -dmenu -no-custom -p 'Computer:' -l 20);
|
computer=$(echo -e 'WID21SPEEDGOAT1\nWID24SPEEDGOAT1\nWBM23SPEEDGOAT1\nWMELSPEEDGOAT1\nWID31PC1\nPCOPTRO\nPCMEL1\nPCMEL2\nRNICE\nPCDEHAEZE\nLAPMEL01\nDesktop-W10' | rofi -i -dmenu -no-custom -p 'Computer:' -l 20);
|
||||||
|
|
||||||
if [[ -z "$computer" ]]; then
|
if [[ -z "$computer" ]]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
notify-send 'Rdesktop' "Connection to ${computer}..."
|
dunstify --replace=99425 'Rdesktop' "Connection to ${computer}..."
|
||||||
|
|
||||||
proxy_arg=""
|
proxy_arg=""
|
||||||
if [ "$computer" = "Desktop-W10" ]; then
|
if [ "$computer" = "Desktop-W10" ]; then
|
||||||
# If connect to local PC
|
# If connect to local PC
|
||||||
if [ ping -c 1 -t 1 desktop-w10.lan &> /dev/null ]; then
|
ping -c 1 desktop-w10.lan &> /dev/null
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
# And outside of local network, use proxy
|
# And outside of local network, use proxy
|
||||||
proxy_arg="/proxy:socks5://localhost:8080"
|
proxy_arg="/proxy:socks5://localhost:8080"
|
||||||
fi
|
fi
|
||||||
elif [ -z "$(timeout 1s dig +short proxy.esrf.fr.)" ]; then
|
else
|
||||||
|
ping -c 1 proxy.esrf.fr &> /dev/null
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
# Outside the ESRF network
|
# Outside the ESRF network
|
||||||
proxy_arg="/proxy:socks5://localhost:8081"
|
proxy_arg="/proxy:socks5://localhost:8081"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
common_arg="/clipboard /bpp:8 /bpp:16 /compression -themes -wallpaper /async-update /async-input -glyph-cache /audio-mode:1 /dynamic-resolution /auto-reconnect /wm-class:RDP_$computer /grab-keyboard /cert:ignore"
|
common_arg="/clipboard /bpp:8 /bpp:16 /compression -themes -wallpaper /async-update /async-input -glyph-cache /audio-mode:1 /dynamic-resolution /auto-reconnect /wm-class:RDP_$computer /grab-keyboard /cert:ignore"
|
||||||
|
|
||||||
case "$computer" in
|
case "$computer" in
|
||||||
"RNICE" | "PCDEHAEZE" | "PCNASS1")
|
"RNICE" | "PCDEHAEZE")
|
||||||
xfreerdp $proxy_arg $common_arg /d:ESRF /u:dehaeze /p:$(pass esrf.fr/dehaeze | sed -n 1p) /v:$computer.esrf.fr > /tmp/freerdp_${computer}.log 2>&1 & ;;
|
xfreerdp $proxy_arg $common_arg /d:ESRF /u:dehaeze /p:$(pass esrf.fr/dehaeze | sed -n 1p) /v:$computer.esrf.fr > /tmp/freerdp_${computer}.log 2>&1 & ;;
|
||||||
|
|
||||||
"PCMEL1")
|
"PCMEL1" | "PCMEL2" | "PCOPTRO" | "LAPMEL01")
|
||||||
xfreerdp $proxy_arg $common_arg /d:ESRF /u:OPPEL /p:TonicPEL /v:$computer.esrf.fr > /tmp/freerdp_${computer}.log 2>&1 & ;;
|
xfreerdp $proxy_arg $common_arg /d:ESRF /u:OPPEL /p:TonicPEL /v:$computer.esrf.fr > /tmp/freerdp_${computer}.log 2>&1 & ;;
|
||||||
|
|
||||||
|
"WMELSPEEDGOAT1")
|
||||||
|
xfreerdp $proxy_arg $common_arg /d:ESRF /u:opd23 /p:tonic23 /v:$computer.esrf.fr > /tmp/freerdp_${computer}.log 2>&1 & ;;
|
||||||
|
|
||||||
|
"WID31PC1")
|
||||||
|
xfreerdp $proxy_arg $common_arg /d:ESRF /u:opid31 /p:tonic31 /v:$computer.esrf.fr > /tmp/freerdp_${computer}.log 2>&1 & ;;
|
||||||
|
|
||||||
"WID21SPEEDGOAT1")
|
"WID21SPEEDGOAT1")
|
||||||
xfreerdp $proxy_arg $common_arg /d:ESRF /u:opid21 /p:tonic21 /v:$computer.esrf.fr > /tmp/freerdp_${computer}.log 2>&1 & ;;
|
xfreerdp $proxy_arg $common_arg /d:ESRF /u:opid21 /p:tonic21 /v:$computer.esrf.fr > /tmp/freerdp_${computer}.log 2>&1 & ;;
|
||||||
|
|
||||||
"WBM23SPEEDGOAT1")
|
|
||||||
xfreerdp $proxy_arg $common_arg /d:ESRF /u:opd23 /p:tonic23 /v:$computer.esrf.fr > /tmp/freerdp_${computer}.log 2>&1 & ;;
|
|
||||||
|
|
||||||
"WID24SPEEDGOAT1")
|
"WID24SPEEDGOAT1")
|
||||||
xfreerdp $proxy_arg $common_arg /d:ESRF /u:opid24 /p:tonic24 /v:$computer.esrf.fr > /tmp/freerdp_${computer}.log 2>&1 & ;;
|
xfreerdp $proxy_arg $common_arg /d:ESRF /u:opid24 /p:tonic24 /v:$computer.esrf.fr > /tmp/freerdp_${computer}.log 2>&1 & ;;
|
||||||
|
|
||||||
"LAPPAMU1")
|
"WBM23SPEEDGOAT1")
|
||||||
xfreerdp $proxy_arg $common_arg /d:ESRF /u:opid00 /p:tonic00 /v:$computer.esrf.fr > /tmp/freerdp_${computer}.log 2>&1 & ;;
|
xfreerdp $proxy_arg $common_arg /d:ESRF /u:opd23 /p:tonic23 /v:$computer.esrf.fr > /tmp/freerdp_${computer}.log 2>&1 & ;;
|
||||||
|
|
||||||
"Desktop-W10")
|
"Desktop-W10")
|
||||||
xfreerdp $proxy_arg $common_arg /d:ESRF /u:thomas /p:$(pass windows/Desktop-W10 | sed -n 1p) /v:192.168.1.72 > /tmp/freerdp_${computer}.log 2>&1 & ;;
|
xfreerdp $proxy_arg $common_arg /u:thomas /p:$(pass windows/Desktop-W10 | sed -n 1p) /v:192.168.1.72 > /tmp/freerdp_${computer}.log 2>&1 & ;;
|
||||||
|
|
||||||
esac
|
esac
|
||||||
#+end_src
|
#+end_src
|
||||||
@@ -129,9 +114,22 @@ dehaeze@rnice:/home/esrf/dehaeze/ /home/thomas/mnt/unix_home fuse.sshfs no
|
|||||||
//wfiles/groupshare /home/thomas/mnt/groupshare vsifs noauto,user,credentials=/home/thomas/.smbcredentials,uid=1001,gid=1001,forceuid,forcegid 0 0
|
//wfiles/groupshare /home/thomas/mnt/groupshare vsifs noauto,user,credentials=/home/thomas/.smbcredentials,uid=1001,gid=1001,forceuid,forcegid 0 0
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/mount-dir
|
#+begin_src text :tangle no
|
||||||
|
//wfiles/groupshare /home/thomas/mnt/groupshare cifs noauto,user,uid=1000,gid=1000,credentials=/home/thomas/.smbcredentials 0 0
|
||||||
|
homelab:/srv/storage/ /home/thomas/mnt/homelab fuse.sshfs noauto,allow_other,user,uid=1000,gid=1000,default_permissions 0 0
|
||||||
|
dehaeze@rnice:/tmp_14_days/ /home/thomas/mnt/tmp_14_days fuse.sshfs noauto,allow_other,user,uid=1000,gid=1000,default_permissions 0 0
|
||||||
|
dehaeze@rnice:/home/esrf/dehaeze/ /home/thomas/mnt/unix_home fuse.sshfs noauto,allow_other,user,uid=1000,gid=1000,default_permissions 0 0
|
||||||
|
dehaeze@rnice:/data/monochromators/ /home/thomas/mnt/monochromators fuse.sshfs noauto,allow_other,user,uid=1000,gid=1000,default_permissions 0 0
|
||||||
|
dehaeze@rnice:/gpfs/jazzy/data/id21/inhouse /home/thomas/mnt/data_id21 fuse.sshfs noauto,allow_other,user,uid=1000,gid=1000,default_permissions 0 0
|
||||||
|
blissadm@lmellab:/data/id00/inhouse/DCM /home/thomas/mnt/data_id24 fuse.sshfs noauto,allow_other,user,uid=1000,gid=1000,default_permissions 0 0
|
||||||
|
blissadm@lmellab:/data/id00/inhouse/MEL /home/thomas/mnt/data_mel fuse.sshfs noauto,allow_other,user,uid=1000,gid=1000,default_permissions 0 0
|
||||||
|
blissadm@lmellab:/users/blissadm/local /home/thomas/mnt/bliss fuse.sshfs noauto,allow_other,user,uid=1000,gid=1000,default_permissions 0 0
|
||||||
|
blissadm@lmellab:/data/visitor /home/thomas/mnt/data_bl fuse.sshfs noauto,allow_other,user,uid=1000,gid=1000,default_permissions 0 0
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src bash :tangle no
|
||||||
if [ $# -eq 0 ]; then
|
if [ $# -eq 0 ]; then
|
||||||
drive=$(echo -e 'monochromators\ntmp_14_days\nhomelab\ngroupshare\nunix_home\ndata_id21' | rofi -dmenu -no-custom -p 'Drive:' -l 20);
|
drive=$(echo -e 'bliss_mel\nbliss_id21\ndata_bl\ndata_id21\ndata_id24\ndata_mel\ndata_visitor\ndrive\nhomelab\nmonochromators\ntmp_14_days\nunix_home' | rofi -dmenu -no-custom -p 'Drive:' -l 20);
|
||||||
if [[ -z "$drive" ]]; then
|
if [[ -z "$drive" ]]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
@@ -142,23 +140,110 @@ fi
|
|||||||
|
|
||||||
if grep -qs "/home/thomas/mnt/$drive" /proc/mounts; then
|
if grep -qs "/home/thomas/mnt/$drive" /proc/mounts; then
|
||||||
umount "/home/thomas/mnt/$drive" && \
|
umount "/home/thomas/mnt/$drive" && \
|
||||||
notify-send "$drive " 'Successfully unmounted' || \
|
dunstify --replace=58249 "$drive " 'Successfully unmounted' || \
|
||||||
notify-send --urgency=critical "$drive " 'Error while unmounted'
|
dunstify --replace=58249 --urgency=critical "$drive " 'Error while unmounted'
|
||||||
else
|
else
|
||||||
echo "It's not mounted."
|
echo "It's not mounted."
|
||||||
mount "/home/thomas/mnt/$drive" && \
|
mount "/home/thomas/mnt/$drive" && \
|
||||||
notify-send "$drive " 'Successfully mounted' || \
|
dunstify --replace=58249 "$drive " 'Successfully mounted' || \
|
||||||
notify-send --urgency=critical "$drive " 'Error while mounted'
|
dunstify --replace=58249 --urgency=critical "$drive " 'Error while mounted'
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src bash :tangle ~/.local/bin/mount-dir
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
drive=$(find ~/mnt/* -maxdepth 0 -type d -empty -printf '%f\n' | rofi -i -dmenu -no-custom -p 'Drive:' -l 20);
|
||||||
|
if [[ -z "$drive" ]]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
proxy_arg=""
|
||||||
|
ping -c 1 proxy.esrf.fr &> /dev/null
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
# Outside the ESRF network
|
||||||
|
proxy_arg=".esrf.fr"
|
||||||
|
fi
|
||||||
|
|
||||||
|
remote_loc=""
|
||||||
|
passname=""
|
||||||
|
case "$drive" in
|
||||||
|
"homelab")
|
||||||
|
remote_loc="thomas@homelab:/srv/storage/" ;;
|
||||||
|
"tmp_14_days")
|
||||||
|
remote_loc="dehaeze@rnice$proxy_arg:/tmp_14_days/"
|
||||||
|
passname="esrf/dehaeze" ;;
|
||||||
|
"unix_home")
|
||||||
|
remote_loc="dehaeze@rnice$proxy_arg:/home/esrf/dehaeze/"
|
||||||
|
passname="esrf/dehaeze" ;;
|
||||||
|
"monochromators")
|
||||||
|
remote_loc="dehaeze@rnice$proxy_arg:/data/monochromators/"
|
||||||
|
passname="esrf/dehaeze" ;;
|
||||||
|
"data_mel")
|
||||||
|
remote_loc="opid00@lmellab$proxy_arg:/data/id00/inhouse/MEL/"
|
||||||
|
passname="esrf/opid00" ;;
|
||||||
|
"data_jazzy")
|
||||||
|
remote_loc="dehaeze@rnice$proxy_arg:/gpfs/jazzy/data/"
|
||||||
|
passname="esrf/dehaeze" ;;
|
||||||
|
"data_easy")
|
||||||
|
remote_loc="dehaeze@rnice$proxy_arg:/gpfs/easy/data/"
|
||||||
|
passname="esrf/dehaeze" ;;
|
||||||
|
"data_id31")
|
||||||
|
remote_loc="opid31@id31$proxy_arg:/data/id31/inhouse/"
|
||||||
|
passname="esrf/opid31" ;;
|
||||||
|
"bliss_mel")
|
||||||
|
remote_loc="blissadm@lmellab$proxy_arg:/users/blissadm/local/"
|
||||||
|
passname="esrf/blissadm" ;;
|
||||||
|
"bliss_id21")
|
||||||
|
remote_loc="blissadm@lid21nano$proxy_arg:/users/blissadm/local/"
|
||||||
|
passname="esrf/blissadm" ;;
|
||||||
|
"bliss_id24")
|
||||||
|
remote_loc="blissadm@foucault$proxy_arg:/users/blissadm/local/"
|
||||||
|
passname="esrf/blissadm" ;;
|
||||||
|
"groupshare")
|
||||||
|
mount ~/mnt/groupshare && \
|
||||||
|
exit ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [-z $remote_loc ]
|
||||||
|
then
|
||||||
|
exit
|
||||||
|
else
|
||||||
|
if [-z $passname ]
|
||||||
|
then
|
||||||
|
sshfs -o allow_other,user,uid=1000,gid=1000,default_permissions $remote_loc /home/thomas/mnt/$drive
|
||||||
|
else
|
||||||
|
pass "$passname" | sshfs -o allow_other,user,uid=1000,gid=1000,default_permissions,password_stdin $remote_loc /home/thomas/mnt/$drive
|
||||||
|
fi
|
||||||
|
|
||||||
|
fi
|
||||||
|
|
||||||
|
# sshfs -o allow_other,user,uid=1000,gid=1000,default_permissions $remote_loc /home/thomas/mnt/$drive
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
#+begin_src bash :tangle ~/.local/bin/umount-dir
|
||||||
|
if [ $# -eq 0 ]; then
|
||||||
|
# drive=$(find ~/mnt/* -maxdepth 0 -type d -not -empty -printf '%f\n' | rofi -dmenu -no-custom -p 'Drive:' -l 20);
|
||||||
|
drive=$(ls ~/mnt/ | rofi -dmenu -no-custom -p 'Drive:' -l 20);
|
||||||
|
if [[ -z "$drive" ]]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
umount /home/thomas/mnt/$drive
|
||||||
|
#+end_src
|
||||||
|
|
||||||
* =screen-select= - Xrandr pre-defined scripts
|
* =screen-select= - Xrandr pre-defined scripts
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: screen-select
|
:CUSTOM_ID: screen-select
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/screen-select
|
#+begin_src bash :tangle ~/.local/bin/screen-select
|
||||||
option=$(echo -e "Work\nLaptop\nHome" | rofi -dmenu -no-custom -p 'Screen:' -l 20)
|
option=$(echo -e "Work\nLaptop\nHome" | rofi -i -dmenu -no-custom -p 'Screen:' -l 20)
|
||||||
|
|
||||||
if [[ -z "$option" ]]; then
|
if [[ -z "$option" ]]; then
|
||||||
exit 1
|
exit 1
|
||||||
@@ -188,7 +273,7 @@ case "$option" in
|
|||||||
after_screen_change
|
after_screen_change
|
||||||
;;
|
;;
|
||||||
"Home")
|
"Home")
|
||||||
xrandr --output eDP-1 --off --output DP-3-2 --primary --mode 2560x1440 --pos 0x0 --rotate normal && \
|
xrandr --output eDP-1 --off --output DP-1-2 --primary --mode 2560x1440 --pos 0x0 --rotate normal && \
|
||||||
after_screen_change
|
after_screen_change
|
||||||
;;
|
;;
|
||||||
,*)
|
,*)
|
||||||
@@ -210,11 +295,12 @@ sides=$(echo -e 'one-sided\ntwo-sided-long-edge\ntwo-sided-short-edge' | rofi -d
|
|||||||
media=$(echo -e 'A4\nA3' | rofi -dmenu -no-custom -p 'Size:' -l 20);
|
media=$(echo -e 'A4\nA3' | rofi -dmenu -no-custom -p 'Size:' -l 20);
|
||||||
printer=$(echo -e 'ctb127c1u\nctb110c1u' | rofi -dmenu -no-custom -p 'Size:' -l 20);
|
printer=$(echo -e 'ctb127c1u\nctb110c1u' | rofi -dmenu -no-custom -p 'Size:' -l 20);
|
||||||
|
|
||||||
if [[ -z "$nbpage" || -z "$side" || -z "$media" || -z "$printer" ]]; then
|
if [[ -z "$nbpage" || -z "$sides" || -z "$media" || -z "$printer" ]]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
lpr -o media=$media -o sides=$sides -o number-up=$nbpage -P $printer "$1";
|
rsync -zaP "$1" dehaeze@rnice:/home/esrf/dehaeze/Downloads/to-be-printed.pdf && \
|
||||||
|
ssh rnice "lpr -o media=$media -o sides=$sides -o number-up=$nbpage -P $printer /home/esrf/dehaeze/Downloads/to-be-printed.pdf";
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* =readbib= - Open Bibliography File
|
* =readbib= - Open Bibliography File
|
||||||
|
|||||||
468
binaries.org
468
binaries.org
@@ -5,123 +5,6 @@
|
|||||||
#+PROPERTY: header-args:bash+ :shebang "#!/usr/bin/env bash"
|
#+PROPERTY: header-args:bash+ :shebang "#!/usr/bin/env bash"
|
||||||
#+PROPERTY: header-args:bash+ :tangle-mode (identity #o555)
|
#+PROPERTY: header-args:bash+ :tangle-mode (identity #o555)
|
||||||
|
|
||||||
* =dmenumount= - Mount USB and Android
|
|
||||||
:PROPERTIES:
|
|
||||||
:CUSTOM_ID: dmenumount
|
|
||||||
:END:
|
|
||||||
|
|
||||||
Script taken from Luke Smith.
|
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/dmenumount
|
|
||||||
getmount() { \
|
|
||||||
[ -z "$chosen" ] && exit 1
|
|
||||||
# shellcheck disable=SC2086
|
|
||||||
mp="$(find $1 2>/dev/null | dmenu -i -p "Type in mount point.")" || exit 1
|
|
||||||
[ "$mp" = "" ] && exit 1
|
|
||||||
if [ ! -d "$mp" ]; then
|
|
||||||
mkdiryn=$(printf "No\\nYes" | dmenu -i -p "$mp does not exist. Create it?") || exit 1
|
|
||||||
[ "$mkdiryn" = "Yes" ] && (mkdir -p "$mp" || sudo -A mkdir -p "$mp")
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
mountusb() { \
|
|
||||||
chosen="$(echo "$usbdrives" | dmenu -i -p "Mount which drive?")" || exit 1
|
|
||||||
chosen="$(echo "$chosen" | awk '{print $1}')"
|
|
||||||
sudo -A mount "$chosen" 2>/dev/null && notify-send "💻 USB mounting" "$chosen mounted." && exit 0
|
|
||||||
alreadymounted=$(lsblk -nrpo "name,type,mountpoint" | awk '$3!~/\/boot|\/home$|SWAP/&&length($3)>1{printf "-not ( -path *%s -prune ) ",$3}')
|
|
||||||
getmount "/mnt /media /mount /home -maxdepth 5 -type d $alreadymounted"
|
|
||||||
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" "$mp";;
|
|
||||||
esac
|
|
||||||
notify-send "💻 USB mounting" "$chosen mounted to $mp."
|
|
||||||
}
|
|
||||||
|
|
||||||
mountandroid() { \
|
|
||||||
chosen="$(echo "$anddrives" | dmenu -i -p "Which Android device?")" || exit 1
|
|
||||||
chosen="$(echo "$chosen" | cut -d : -f 1)"
|
|
||||||
getmount "$HOME -maxdepth 3 -type d"
|
|
||||||
simple-mtpfs --device "$chosen" "$mp"
|
|
||||||
echo "OK" | dmenu -i -p "Tap Allow on your phone if it asks for permission and then press enter" || exit 1
|
|
||||||
simple-mtpfs --device "$chosen" "$mp"
|
|
||||||
notify-send "🤖 Android Mounting" "Android device mounted to $mp."
|
|
||||||
}
|
|
||||||
|
|
||||||
asktype() { \
|
|
||||||
choice="$(printf "USB\\nAndroid" | dmenu -i -p "Mount a USB drive or Android device?")" || exit 1
|
|
||||||
case $choice in
|
|
||||||
USB) mountusb ;;
|
|
||||||
Android) mountandroid ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
anddrives=$(simple-mtpfs -l 2>/dev/null)
|
|
||||||
usbdrives="$(lsblk -rpo "name,type,size,mountpoint" | awk '$4==""{printf "%s (%s)\n",$1,$3}')"
|
|
||||||
|
|
||||||
if [ -z "$usbdrives" ]; then
|
|
||||||
[ -z "$anddrives" ] && echo "No USB drive or Android device detected" && exit
|
|
||||||
echo "Android device(s) detected."
|
|
||||||
mountandroid
|
|
||||||
else
|
|
||||||
if [ -z "$anddrives" ]; then
|
|
||||||
echo "USB drive(s) detected."
|
|
||||||
mountusb
|
|
||||||
else
|
|
||||||
echo "Mountable USB drive(s) and Android device(s) detected."
|
|
||||||
asktype
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* =dmenuumount= - Unmount USB and Android devices
|
|
||||||
:PROPERTIES:
|
|
||||||
:CUSTOM_ID: dmenuumount
|
|
||||||
:END:
|
|
||||||
|
|
||||||
Script taken from Luke Smith.
|
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/dmenuumount
|
|
||||||
unmountusb() {
|
|
||||||
[ -z "$drives" ] && exit
|
|
||||||
chosen="$(echo "$drives" | dmenu -i -p "Unmount which drive?")" || exit 1
|
|
||||||
chosen="$(echo "$chosen" | awk '{print $1}')"
|
|
||||||
[ -z "$chosen" ] && exit
|
|
||||||
sudo -A umount "$chosen" && notify-send "💻 USB unmounting" "$chosen unmounted."
|
|
||||||
}
|
|
||||||
|
|
||||||
unmountandroid() { \
|
|
||||||
chosen="$(awk '/simple-mtpfs/ {print $2}' /etc/mtab | dmenu -i -p "Unmount which device?")" || exit 1
|
|
||||||
[ -z "$chosen" ] && exit
|
|
||||||
sudo -A umount -l "$chosen" && notify-send "🤖 Android unmounting" "$chosen unmounted."
|
|
||||||
}
|
|
||||||
|
|
||||||
asktype() { \
|
|
||||||
choice="$(printf "USB\\nAndroid" | dmenu -i -p "Unmount a USB drive or Android device?")" || exit 1
|
|
||||||
case "$choice" in
|
|
||||||
USB) unmountusb ;;
|
|
||||||
Android) unmountandroid ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
drives=$(lsblk -nrpo "name,type,size,mountpoint" | awk '$4!~/\/boot|\/home$|SWAP/&&length($4)>1{printf "%s (%s)\n",$4,$3}')
|
|
||||||
|
|
||||||
if ! grep simple-mtpfs /etc/mtab; then
|
|
||||||
[ -z "$drives" ] && echo "No drives to unmount." && exit
|
|
||||||
echo "Unmountable USB drive detected."
|
|
||||||
unmountusb
|
|
||||||
else
|
|
||||||
if [ -z "$drives" ]
|
|
||||||
then
|
|
||||||
echo "Unmountable Android device detected."
|
|
||||||
unmountandroid
|
|
||||||
else
|
|
||||||
echo "Unmountable USB drive(s) and Android device(s) detected."
|
|
||||||
asktype
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* =dmenukill= - Kill program using Dmenu
|
* =dmenukill= - Kill program using Dmenu
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: dmenukill
|
:CUSTOM_ID: dmenukill
|
||||||
@@ -135,7 +18,7 @@ if [ ! -z "$ps_line" ]; then
|
|||||||
name=$(echo $ps_line | awk '{print $4}')
|
name=$(echo $ps_line | awk '{print $4}')
|
||||||
|
|
||||||
kill -15 $pid && \
|
kill -15 $pid && \
|
||||||
notify-send "Kill" "$name (PID $pid)" &
|
dunstify "Kill" "$name (PID $pid)" &
|
||||||
fi
|
fi
|
||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
@@ -147,19 +30,21 @@ fi
|
|||||||
|
|
||||||
To use this this, =nordvpn= must be installed: =yay -S nordvpn-bin=.
|
To use this this, =nordvpn= must be installed: =yay -S nordvpn-bin=.
|
||||||
|
|
||||||
|
In order to populate the country list, =nordvpn countries | tr '\t' '\n' | sed -r '/^\s*$/d' > ~/.local/data/nordvpn_countries.txt=.
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/nordvpn-toggle
|
#+begin_src bash :tangle ~/.local/bin/nordvpn-toggle
|
||||||
tmpfile="/tmp/vpnstatus";
|
tmpfile="/tmp/vpnstatus";
|
||||||
|
|
||||||
if [[ $(nordvpn status) == *"Connected"* ]]; then
|
if [[ $(nordvpn status) == *"Connected"* ]]; then
|
||||||
nordvpn disconnect && \
|
nordvpn disconnect && \
|
||||||
notify-send "VPN" "Disconnected" && \
|
dunstify --replace=23198 "VPN" "Disconnected" && \
|
||||||
echo "off" > $tmpfile;
|
echo "off" > $tmpfile;
|
||||||
else
|
else
|
||||||
# Select Country to connect to
|
# Select Country to connect to
|
||||||
country=`cat ~/.local/data/nordvpn_countries.txt | rofi -i -dmenu | sed 's/\s/_/g'`;
|
country=`cat ~/.local/data/nordvpn_countries.txt | rofi -i -dmenu | sed 's/\s/_/g'`;
|
||||||
notify-send "VPN" "Connecting to $country...";
|
dunstify --replace=23198 "VPN" "Connecting to $country...";
|
||||||
nordvpn connect $country && \
|
nordvpn connect $country && \
|
||||||
notify-send "VPN" "Connected to $country" && \
|
dunstify --replace=23198 "VPN" "Connected to $country" && \
|
||||||
echo "on" > $tmpfile;
|
echo "on" > $tmpfile;
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
@@ -254,7 +139,7 @@ if [[ $status != "Copy" ]]; then
|
|||||||
if [ -z "$name" ]; then
|
if [ -z "$name" ]; then
|
||||||
exit;
|
exit;
|
||||||
fi
|
fi
|
||||||
filename=~/Pictures/$name.png
|
filename=~/Cloud/pictures/screenshots/$name.png
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case "$status" in
|
case "$status" in
|
||||||
@@ -322,10 +207,10 @@ ffmpeg -v warning -i $1 -i $palette -lavfi "$filters [x]; [x][1:v] paletteuse" -
|
|||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/yt-audio
|
#+begin_src bash :tangle ~/.local/bin/yt-audio
|
||||||
if [ $TMUX ]; then
|
if [ $TMUX ]; then
|
||||||
tmux split -v -l 5 "cd ~/Downloads/ && youtube-dl --add-metadata -xic -f bestaudio/best $1" && tmux select-pane -U
|
tmux split -v -l 5 "cd ~/Downloads/ && yt-dlp --add-metadata -xic --audio-format best $1" && tmux select-pane -U
|
||||||
else
|
else
|
||||||
cd ~/Downloads/;
|
cd ~/Downloads/;
|
||||||
setsid nohup youtube-dl --add-metadata -xic -f bestaudio/best $1 &> /dev/null &
|
setsid nohup yt-dlp --add-metadata -xic --audio-format flac $1 &> /dev/null &
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -336,12 +221,13 @@ fi
|
|||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/yt-video
|
#+begin_src bash :tangle ~/.local/bin/yt-video
|
||||||
if [ $TMUX ]; then
|
if [ $TMUX ]; then
|
||||||
tmux split -v -l 5 "cd ~/Downloads/ && youtube-dl --add-metadata -ic $1" && tmux select-pane -U
|
tmux split -v -l 5 "cd ~/Downloads/ && yt-dlp --add-metadata -ic $1" && tmux select-pane -U
|
||||||
else
|
else
|
||||||
cd ~/Downloads/;
|
cd ~/Downloads/;
|
||||||
setsid nohup youtube-dl --add-metadata -ic $1 &> /dev/null &
|
setsid nohup yt-dlp --add-metadata -ic $1 &> /dev/null &
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* =setbg= - Set Background
|
* =setbg= - Set Background
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: setbg
|
:CUSTOM_ID: setbg
|
||||||
@@ -384,7 +270,7 @@ if [ -n "$1" ]; then
|
|||||||
xdotool key Shift+Insert
|
xdotool key Shift+Insert
|
||||||
else
|
else
|
||||||
echo "$chosen" | tr -d '\n' | xsel -ib
|
echo "$chosen" | tr -d '\n' | xsel -ib
|
||||||
notify-send "'$chosen' copied to clipboard." &
|
dunstify "'$chosen' copied to clipboard." &
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -408,7 +294,7 @@ if [ -n "$1" ]; then
|
|||||||
xdotool key Shift+Insert
|
xdotool key Shift+Insert
|
||||||
else
|
else
|
||||||
echo "$chosen" | tr -d '\n' | xsel -ib
|
echo "$chosen" | tr -d '\n' | xsel -ib
|
||||||
notify-send "'$chosen' copied to clipboard." &
|
dunstify "'$chosen' copied to clipboard." &
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -432,6 +318,8 @@ case "$1" in
|
|||||||
curl -sL "$1" > "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" && zathura "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
|
curl -sL "$1" > "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" && zathura "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
|
||||||
,*svg)
|
,*svg)
|
||||||
curl -sL "$1" > "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" && inkview "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
|
curl -sL "$1" > "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" && inkview "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
|
||||||
|
,*torrent)
|
||||||
|
stig add "$1" >/dev/null 2>&1 & ;;
|
||||||
,*mp3|*flac|*opus|*mp3?source*)
|
,*mp3|*flac|*opus|*mp3?source*)
|
||||||
setsid curl -LO "$1" >/dev/null 2>&1 & ;;
|
setsid curl -LO "$1" >/dev/null 2>&1 & ;;
|
||||||
,*)
|
,*)
|
||||||
@@ -519,8 +407,8 @@ if [ $TMUX ]; then
|
|||||||
tmux split -v -l 1 "curl --progress-bar -F\"file=@$1\" https://0x0.st | xsel -ib;" && tmux select-pane -U
|
tmux split -v -l 1 "curl --progress-bar -F\"file=@$1\" https://0x0.st | xsel -ib;" && tmux select-pane -U
|
||||||
else
|
else
|
||||||
curl --progress-bar -F"file=@$1" https://0x0.st | xsel -ib && \
|
curl --progress-bar -F"file=@$1" https://0x0.st | xsel -ib && \
|
||||||
notify-send 'Upload' 'Successful' || \
|
dunstify 'Upload' 'Successful' || \
|
||||||
notify-send --urgency=critical 'Upload' 'Failed'
|
dunstify --urgency=critical 'Upload' 'Failed'
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -553,54 +441,7 @@ else
|
|||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* =pdf2bib= - Extract bibtex entry from PDF file
|
* =convert-file= - Convert any file to another filetype
|
||||||
:PROPERTIES:
|
|
||||||
:CUSTOM_ID: pdf2bib
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/pdf2bib
|
|
||||||
pdf2doi () {
|
|
||||||
pdfinfo "$1" | grep -io "doi:.*" | grep -Poi "10.\d+/[^\s]+" || \
|
|
||||||
pdftotext "$1" 2>/dev/null - | grep -io "doi:.*" -m 1 | grep -Poi "10.\d+/[^\s]+" || \
|
|
||||||
pdftotext "$1" 2>/dev/null - | grep -Poi "10.\d+/[^\s]+"
|
|
||||||
}
|
|
||||||
|
|
||||||
doi2bib () {
|
|
||||||
# curl -LHs "Accept: application/x-bibtex" http://dx.doi.org/$1 -w "\\n"
|
|
||||||
curl -s "http://api.crossref.org/works/$1/transform/application/x-bibtex" -w "\\n"
|
|
||||||
}
|
|
||||||
|
|
||||||
# If a file is specified, try to extract DOI from the file
|
|
||||||
if [ -f "$1" ]; then
|
|
||||||
doi=$(pdf2doi "$1")
|
|
||||||
fi
|
|
||||||
|
|
||||||
if hash rofi 2>/dev/null; then
|
|
||||||
doi=$(echo "$doi" | rofi -i -dmenu -p "DOI")
|
|
||||||
else
|
|
||||||
doi=$(echo "$doi" | dmenu -i -p "DOI")
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [ -n "$1" ]; then
|
|
||||||
doi2bib $doi | xsel -ib && \
|
|
||||||
notify-send 'BibTeX' 'Copied to Clipboard' || \
|
|
||||||
notify-send --urgency=critical 'BibTeX' 'Failed'
|
|
||||||
fi
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* =pdf2png= - Convert a PDF to PNG
|
|
||||||
:PROPERTIES:
|
|
||||||
:CUSTOM_ID: pdf2png
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/pdf2png
|
|
||||||
# Check if the input argumetn is a PDF file
|
|
||||||
if [[ -f "$1" && "$1" == *.pdf ]]; then
|
|
||||||
pdftoppm -png "$1" > "$(echo "$1" | cut -f 1 -d '.' | sed 's/$/.png/')"
|
|
||||||
fi
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* TODO =convert-file= - Convert any file to another filetype
|
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: convert-file
|
:CUSTOM_ID: convert-file
|
||||||
:header-args: :tangle ~/.local/bin/convert-file
|
:header-args: :tangle ~/.local/bin/convert-file
|
||||||
@@ -612,6 +453,8 @@ fi
|
|||||||
filename_with_extension=$(basename -- "$1")
|
filename_with_extension=$(basename -- "$1")
|
||||||
# Extract extension of the file
|
# Extract extension of the file
|
||||||
in_ext="${filename_with_extension##*.}"
|
in_ext="${filename_with_extension##*.}"
|
||||||
|
# To lowercase
|
||||||
|
in_ext="${in_ext,,}"
|
||||||
# filename without extension
|
# filename without extension
|
||||||
filename_without_extension=${filename_with_extension%.*}
|
filename_without_extension=${filename_with_extension%.*}
|
||||||
#+end_src
|
#+end_src
|
||||||
@@ -624,7 +467,7 @@ List of useful programs:
|
|||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
svg2png_function() { \
|
svg2png_function() { \
|
||||||
if command -v inkscape &> /dev/null; then
|
if command -v inkscape &> /dev/null; then
|
||||||
inkscape --export-type="$out_ext" --export-dpi=200 --export-area-drawing "$filename_with_extension"
|
inkscape --export-type="png" --export-filename="$filename_without_extension.png" --export-dpi=500 --export-area-drawing "$filename_with_extension"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
@@ -633,7 +476,7 @@ svg2png_function() { \
|
|||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
svg2pdf_function() { \
|
svg2pdf_function() { \
|
||||||
if command -v inkscape &> /dev/null; then
|
if command -v inkscape &> /dev/null; then
|
||||||
inkscape --export-type="$out_ext" "$filename_with_extension"
|
inkscape --export-type="pdf" --export-filename="$filename_without_extension.pdf" "$filename_with_extension"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
@@ -890,11 +733,22 @@ gif2png_function() { \
|
|||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
*** GIF to mp4
|
||||||
|
#+begin_src bash
|
||||||
|
gif2mp4_function() { \
|
||||||
|
if command -v ffmpeg &> /dev/null; then
|
||||||
|
loop_num=$(rofi -dmenu -p "Number of loops")
|
||||||
|
|
||||||
|
ffmpeg -stream_loop $loop_num -i $filename_with_extension -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" "$filename_without_extension.mp4"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
*** Main function
|
*** Main function
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
# Convert GIF Files
|
# Convert GIF Files
|
||||||
gif2() { \
|
gif2() { \
|
||||||
out_ext=$(echo -e "png" | rofi -i -dmenu -p "Convert GIF to")
|
out_ext=$(echo -e "png\nmp4" | rofi -i -dmenu -p "Convert GIF to")
|
||||||
|
|
||||||
if [ -z "$out_ext" ]; then
|
if [ -z "$out_ext" ]; then
|
||||||
exit;
|
exit;
|
||||||
@@ -904,6 +758,9 @@ gif2() { \
|
|||||||
"png")
|
"png")
|
||||||
gif2png_function
|
gif2png_function
|
||||||
;;
|
;;
|
||||||
|
"mp4")
|
||||||
|
gif2mp4_function
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
@@ -952,11 +809,20 @@ pngresize_function() { \
|
|||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
*** PNG Crop
|
||||||
|
#+begin_src bash
|
||||||
|
pngcrop_function() { \
|
||||||
|
if command -v cropgui &> /dev/null; then
|
||||||
|
cropgui "$filename_with_extension"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
*** Main function
|
*** Main function
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
# Convert PNG Files
|
# Convert PNG Files
|
||||||
png2() { \
|
png2() { \
|
||||||
out_ext=$(echo -e "pdf\njpg\ntrim\nresize" | rofi -i -dmenu -p "Convert PNG to")
|
out_ext=$(echo -e "pdf\njpg\ntrim\nresize\ncrop" | rofi -i -dmenu -p "Convert PNG to")
|
||||||
|
|
||||||
if [ -z "$out_ext" ]; then
|
if [ -z "$out_ext" ]; then
|
||||||
exit;
|
exit;
|
||||||
@@ -969,6 +835,9 @@ png2() { \
|
|||||||
"jpg")
|
"jpg")
|
||||||
png2jpg_function
|
png2jpg_function
|
||||||
;;
|
;;
|
||||||
|
"crop")
|
||||||
|
pngcrop_function
|
||||||
|
;;
|
||||||
"trim")
|
"trim")
|
||||||
pngtrim_function
|
pngtrim_function
|
||||||
;;
|
;;
|
||||||
@@ -989,6 +858,15 @@ jpg2pdf_function() { \
|
|||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
*** JPG to PNG
|
||||||
|
#+begin_src bash
|
||||||
|
jpg2png_function() { \
|
||||||
|
if command -v convert &> /dev/null; then
|
||||||
|
convert "$filename_with_extension" "$filename_without_extension.png"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
*** JPG Resize
|
*** JPG Resize
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
jpgresize_function() { \
|
jpgresize_function() { \
|
||||||
@@ -1005,11 +883,39 @@ jpgresize_function() { \
|
|||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
*** JPG Rotate
|
||||||
|
#+begin_src bash
|
||||||
|
jpgrotate_function() { \
|
||||||
|
if command -v convert &> /dev/null; then
|
||||||
|
# convert "$filename_with_extension" -rotate 90 /tmp/output.jpg && mv /tmp/output.jpg "$filename_with_extension"
|
||||||
|
convert "$filename_with_extension" -rotate 90 "$filename_with_extension"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** JPG Trim
|
||||||
|
#+begin_src bash
|
||||||
|
jpgtrim_function() { \
|
||||||
|
if command -v convert &> /dev/null; then
|
||||||
|
convert -trim "$filename_with_extension" "$filename_with_extension"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** JPG Crop
|
||||||
|
#+begin_src bash
|
||||||
|
jpgcrop_function() { \
|
||||||
|
if command -v cropgui &> /dev/null; then
|
||||||
|
cropgui "$filename_with_extension"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
*** Main function
|
*** Main function
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
# Convert JPG Files
|
# Convert JPG Files
|
||||||
jpg2() { \
|
jpg2() { \
|
||||||
out_ext=$(echo -e "pdf\nresize" | rofi -i -dmenu -p "Convert JPG to")
|
out_ext=$(echo -e "pdf\npng\nresize\ncrop\ntrim\nrotate" | rofi -i -dmenu -p "Convert JPG to")
|
||||||
|
|
||||||
if [ -z "$out_ext" ]; then
|
if [ -z "$out_ext" ]; then
|
||||||
exit;
|
exit;
|
||||||
@@ -1019,9 +925,49 @@ jpg2() { \
|
|||||||
"pdf")
|
"pdf")
|
||||||
jpg2pdf_function
|
jpg2pdf_function
|
||||||
;;
|
;;
|
||||||
|
"png")
|
||||||
|
jpg2png_function
|
||||||
|
;;
|
||||||
"resize")
|
"resize")
|
||||||
jpgresize_function
|
jpgresize_function
|
||||||
;;
|
;;
|
||||||
|
"crop")
|
||||||
|
jpgcrop_function
|
||||||
|
;;
|
||||||
|
"trim")
|
||||||
|
jpgtrim_function
|
||||||
|
;;
|
||||||
|
"rotate")
|
||||||
|
jpgrotate_function
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** XOPP files
|
||||||
|
*** XOPP to PDF
|
||||||
|
#+begin_src bash
|
||||||
|
xopp2pdf_function() { \
|
||||||
|
if command -v xournalpp &> /dev/null; then
|
||||||
|
xournalpp -p "$filename_without_extension.pdf" "$filename_with_extension"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Main function
|
||||||
|
#+begin_src bash
|
||||||
|
# Convert XOPP Files
|
||||||
|
xopp2() { \
|
||||||
|
out_ext=$(echo -e "pdf" | rofi -i -dmenu -p "Convert XOPP to")
|
||||||
|
|
||||||
|
if [ -z "$out_ext" ]; then
|
||||||
|
exit;
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$out_ext" in
|
||||||
|
"pdf")
|
||||||
|
xopp2pdf_function
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
@@ -1048,11 +994,20 @@ mp42gif_function() { \
|
|||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
*** MP4 remove sound
|
||||||
|
#+begin_src bash
|
||||||
|
mp4nosound_function() { \
|
||||||
|
if command -v ffmpeg &> /dev/null; then
|
||||||
|
ffmpeg -i "$filename_with_extension" -c copy -an "$filename_without_extension-nosound.mp4"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
#+end_src
|
||||||
|
|
||||||
*** Main function
|
*** Main function
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
# Convert MP4 Files
|
# Convert MP4 Files
|
||||||
mp42() { \
|
mp42() { \
|
||||||
out_ext=$(echo -e "gif" | rofi -i -dmenu -p "Convert MP4 to")
|
out_ext=$(echo -e "gif\nremove sound" | rofi -i -dmenu -p "Convert MP4 to")
|
||||||
|
|
||||||
if [ -z "$out_ext" ]; then
|
if [ -z "$out_ext" ]; then
|
||||||
exit;
|
exit;
|
||||||
@@ -1062,6 +1017,9 @@ mp42() { \
|
|||||||
"gif")
|
"gif")
|
||||||
mp42gif_function
|
mp42gif_function
|
||||||
;;
|
;;
|
||||||
|
"remove sound")
|
||||||
|
mp4nosound_function
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
@@ -1096,9 +1054,12 @@ case "$in_ext" in
|
|||||||
"docx")
|
"docx")
|
||||||
docx2
|
docx2
|
||||||
;;
|
;;
|
||||||
"pttx")
|
"pptx")
|
||||||
docx2
|
docx2
|
||||||
;;
|
;;
|
||||||
|
"xopp")
|
||||||
|
xopp2
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -1107,6 +1068,7 @@ esac
|
|||||||
:CUSTOM_ID: preview-file
|
:CUSTOM_ID: preview-file
|
||||||
:header-args: :tangle ~/.local/bin/preview-file
|
:header-args: :tangle ~/.local/bin/preview-file
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
** Get basic information about the file
|
** Get basic information about the file
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
# Get filename
|
# Get filename
|
||||||
@@ -1175,129 +1137,6 @@ case "$in_ext" in
|
|||||||
esac
|
esac
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* =pdf-shrink= - Pdf Shrink
|
|
||||||
:PROPERTIES:
|
|
||||||
:CUSTOM_ID: pdf-shrink
|
|
||||||
:END:
|
|
||||||
|
|
||||||
Simply reduces the size of a given pdf file.
|
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/pdf-shrink
|
|
||||||
shrink ()
|
|
||||||
{
|
|
||||||
gs \
|
|
||||||
-q -dNOPAUSE -dBATCH -dSAFER \
|
|
||||||
-sDEVICE=pdfwrite \
|
|
||||||
-dCompatibilityLevel=1.3 \
|
|
||||||
-dPDFSETTINGS=/screen \
|
|
||||||
-dEmbedAllFonts=true \
|
|
||||||
-dSubsetFonts=true \
|
|
||||||
-dAutoRotatePages=/None \
|
|
||||||
-dColorImageDownsampleType=/Bicubic \
|
|
||||||
-dColorImageResolution=$3 \
|
|
||||||
-dGrayImageDownsampleType=/Bicubic \
|
|
||||||
-dGrayImageResolution=$3 \
|
|
||||||
-dMonoImageDownsampleType=/Subsample \
|
|
||||||
-dMonoImageResolution=$3 \
|
|
||||||
-sOutputFile="$2" \
|
|
||||||
"$1"
|
|
||||||
}
|
|
||||||
|
|
||||||
check_smaller ()
|
|
||||||
{
|
|
||||||
# If $1 and $2 are regular files, we can compare file sizes to
|
|
||||||
# see if we succeeded in shrinking. If not, we copy $1 over $2:
|
|
||||||
if [ ! -f "$1" -o ! -f "$2" ]; then
|
|
||||||
return 0;
|
|
||||||
fi
|
|
||||||
ISIZE="$(echo $(wc -c "$1") | cut -f1 -d\ )"
|
|
||||||
OSIZE="$(echo $(wc -c "$2") | cut -f1 -d\ )"
|
|
||||||
if [ "$ISIZE" -lt "$OSIZE" ]; then
|
|
||||||
echo "Input smaller than output, doing straight copy" >&2
|
|
||||||
cp "$1" "$2"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
usage ()
|
|
||||||
{
|
|
||||||
echo "Reduces PDF filesize by lossy recompressing with Ghostscript."
|
|
||||||
echo "Not guaranteed to succeed, but usually works."
|
|
||||||
echo " Usage: $1 infile [outfile] [resolution_in_dpi]"
|
|
||||||
}
|
|
||||||
|
|
||||||
IFILE="$1"
|
|
||||||
|
|
||||||
# Need an input file:
|
|
||||||
if [ -z "$IFILE" ]; then
|
|
||||||
usage "$0"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Output filename defaults to "-" (stdout) unless given:
|
|
||||||
if [ ! -z "$2" ]; then
|
|
||||||
OFILE="$2"
|
|
||||||
else
|
|
||||||
OFILE="-"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Output resolution defaults to 90 unless given:
|
|
||||||
if [ ! -z "$3" ]; then
|
|
||||||
res="$3"
|
|
||||||
else
|
|
||||||
res="90"
|
|
||||||
fi
|
|
||||||
|
|
||||||
shrink "$IFILE" "$OFILE" "$res" || exit $?
|
|
||||||
|
|
||||||
check_smaller "$IFILE" "$OFILE"
|
|
||||||
#+end_src
|
|
||||||
* =pdf-delete-annotations= - Delete Annotations from PDFs
|
|
||||||
:PROPERTIES:
|
|
||||||
:CUSTOM_ID: pdf-delete-annotations
|
|
||||||
:END:
|
|
||||||
|
|
||||||
Taken from this [[https://gist.github.com/stefanschmidt/5248592][gist]].
|
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/pdf-delete-annotations
|
|
||||||
# Check if the input argumetn is a PDF file
|
|
||||||
if [[ -f "$1" && "$1" == *.pdf ]]; then
|
|
||||||
pdftk $1 output /tmp/uncompressed.pdf uncompress
|
|
||||||
LANG=C sed -n '/^\/Annots/!p' /tmp/uncompressed.pdf > /tmp/stripped.pdf
|
|
||||||
pdftk /tmp/stripped.pdf output $1 compress
|
|
||||||
fi
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* =pdf-delete-first-page= - Delete first page of PDF
|
|
||||||
:PROPERTIES:
|
|
||||||
:CUSTOM_ID: pdf-delete-first-page
|
|
||||||
:END:
|
|
||||||
|
|
||||||
The requirement is to have =pdftk= or =stapler= installed.
|
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/pdf-delete-first-page
|
|
||||||
# Check if the input argumetn is a PDF file
|
|
||||||
if [[ -f $1 && $1 == *.pdf ]]; then
|
|
||||||
if type stapler > /dev/null 2>&1; then
|
|
||||||
stapler del "$1" 1 /tmp/pdftk_out.pdf && mv /tmp/pdftk_out.pdf "$1"
|
|
||||||
elif type pdftk > /dev/null 2>&1; then
|
|
||||||
pdftk "$1" cat 2-end output /tmp/pdftk_out.pdf && mv /tmp/pdftk_out.pdf "$1"
|
|
||||||
else
|
|
||||||
echo "Neither pdftk nor stapler are installed"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* =rofi-calc= - Simple Calculation using Rofi
|
|
||||||
:PROPERTIES:
|
|
||||||
:CUSTOM_ID: rofi-calc
|
|
||||||
:END:
|
|
||||||
|
|
||||||
Run some simple calculations with =rofi=.
|
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/rofi-calc
|
|
||||||
rofi -show calc -mode calc -no-show-match -no-sort
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* =pass-gen= - Generate Random Alphanumeric Password
|
* =pass-gen= - Generate Random Alphanumeric Password
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:CUSTOM_ID: pass-gen
|
:CUSTOM_ID: pass-gen
|
||||||
@@ -1317,7 +1156,7 @@ fi
|
|||||||
|
|
||||||
# Send the password to the clipboard
|
# Send the password to the clipboard
|
||||||
printf "$pass" | xclip -sel clip && \
|
printf "$pass" | xclip -sel clip && \
|
||||||
notify-send 'Password' 'Generated'
|
dunstify 'Password' 'Generated'
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* =sxhkd-help= - List of keybindings using Rofi
|
* =sxhkd-help= - List of keybindings using Rofi
|
||||||
@@ -1332,11 +1171,10 @@ awk '/^[a-z]/ && last {print "<small>",$0,"\t",last,"</small>"} {last=""} /^#/{l
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* =qrdecode= - Decode QRcode by taking screenshot
|
* =qrdecode= - Decode QRcode by taking screenshot
|
||||||
|
To install:
|
||||||
- =zbar-tools=
|
#+begin_src bash :tangle no
|
||||||
- =main=
|
paru -S zbar maim xclip dunstify
|
||||||
- =xclip=
|
#+end_src
|
||||||
- =notify-send=
|
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.local/bin/qrdecode
|
#+begin_src bash :tangle ~/.local/bin/qrdecode
|
||||||
image_file="/tmp/ocr.png"
|
image_file="/tmp/ocr.png"
|
||||||
@@ -1366,7 +1204,7 @@ fi
|
|||||||
printf %b "$decoded_text" | xclip -selection clip
|
printf %b "$decoded_text" | xclip -selection clip
|
||||||
|
|
||||||
# Let us know that something was decoded
|
# Let us know that something was decoded
|
||||||
notify-send "qrshot" "$decoded_text"
|
dunstify "qrshot" "$decoded_text"
|
||||||
|
|
||||||
# Cleaning up the trash that was left behind
|
# Cleaning up the trash that was left behind
|
||||||
rm $image_file
|
rm $image_file
|
||||||
|
|||||||
53
bspwm.org
53
bspwm.org
@@ -1,53 +0,0 @@
|
|||||||
#+TITLE: BSPWM
|
|
||||||
#+SETUPFILE: ./setup/org-setup-file.org
|
|
||||||
|
|
||||||
#+PROPERTY: header-args:bash :comments both
|
|
||||||
#+PROPERTY: header-args:bash+ :mkdirp yes
|
|
||||||
#+PROPERTY: header-args:bash+ :shebang "#!/bin/sh"
|
|
||||||
#+PROPERTY: header-args:bash+ :tangle ~/.config/bspwm/bspwmrc
|
|
||||||
|
|
||||||
* List Desktops
|
|
||||||
#+begin_src bash
|
|
||||||
bspc monitor -d code web mail misc figs
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Basic Config
|
|
||||||
#+begin_src bash
|
|
||||||
bspc config border_width 1
|
|
||||||
bspc config window_gap 8
|
|
||||||
bspc config top_padding 27 # top_padding I set equal to polybar's height
|
|
||||||
|
|
||||||
bspc config split_ratio 0.52
|
|
||||||
bspc config borderless_monocle true
|
|
||||||
bspc config gapless_monocle true
|
|
||||||
|
|
||||||
bspc config focus_follows_pointer true
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Colors
|
|
||||||
#+begin_src bash
|
|
||||||
bspc config normal_border_color \#32302f
|
|
||||||
bspc config focused_border_color \#bdae93
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Rules
|
|
||||||
Use =xprop= to obtain information about the window.
|
|
||||||
|
|
||||||
#+begin_src bash
|
|
||||||
# If refreshing bspwm, remove all previous rules to prevent doubling up.
|
|
||||||
bspc rule -r "*"
|
|
||||||
|
|
||||||
bspc rule --add qutebrowser desktop='web' follow=on state=tiled
|
|
||||||
bspc rule --add Emacs desktop='code' follow=on state=tiled
|
|
||||||
|
|
||||||
bspc rule --add Zathura state=tiled
|
|
||||||
|
|
||||||
bspc rule --add Pavucontrol state=floating
|
|
||||||
bspc rule --add Blueman-manager state=floating
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Run Polybar and SXHKD
|
|
||||||
#+begin_src bash
|
|
||||||
polybar top >>/tmp/polybar.log 2>&1 &
|
|
||||||
sxhkd -m 1 -c ~/.config/sxhkd/sxhkdrc.bspwm &
|
|
||||||
#+end_src
|
|
||||||
@@ -14,18 +14,18 @@ status_path = "~/.config/vdirsyncer/status/"
|
|||||||
[pair radicale_calendar]
|
[pair radicale_calendar]
|
||||||
a = "radicale_calendar_remote"
|
a = "radicale_calendar_remote"
|
||||||
b = "radicale_calendar_local"
|
b = "radicale_calendar_local"
|
||||||
collections = ["76bfc802-3186-e3af-f688-7e165115b4f8", "f78f1649-b54e-7bfe-488d-6a7005a5aa2f"]
|
collections = ["76bfc802-3186-e3af-f688-7e165115b4f8", "f78f1649-b54e-7bfe-488d-6a7005a5aa2f", "627e2bee-7d6a-49dc-128e-fc7a8aed1e8b"]
|
||||||
conflict_resolution = "a wins"
|
conflict_resolution = "a wins"
|
||||||
|
|
||||||
[storage radicale_calendar_remote]
|
[storage radicale_calendar_remote]
|
||||||
type = "caldav"
|
type = "caldav"
|
||||||
url = "https://radicale.tdehaeze.xyz/tdehaeze/"
|
url = "https://radicale.tdehaeze.xyz/tdehaeze/"
|
||||||
username = "tdehaeze"
|
username = "tdehaeze"
|
||||||
password.fetch = ["command", "get-pass", "radicale.tdehaeze.xyz/tdehaeze"]
|
password.fetch = ["command", "~/.local/bin/get-pass", "radicale.tdehaeze.xyz/tdehaeze"]
|
||||||
|
|
||||||
[storage radicale_calendar_local]
|
[storage radicale_calendar_local]
|
||||||
type = "filesystem"
|
type = "filesystem"
|
||||||
path = "~/.calendars/radicale/"
|
path = "~/.local/share/calendars/radicale/"
|
||||||
fileext = ".ics"
|
fileext = ".ics"
|
||||||
|
|
||||||
[pair esrf_calendar]
|
[pair esrf_calendar]
|
||||||
@@ -38,11 +38,11 @@ conflict_resolution = "a wins"
|
|||||||
type = "caldav"
|
type = "caldav"
|
||||||
url = "https://calendar.esrf.fr/egroupware/groupdav.php/calendar"
|
url = "https://calendar.esrf.fr/egroupware/groupdav.php/calendar"
|
||||||
username = "dehaeze"
|
username = "dehaeze"
|
||||||
password.fetch = ["command", "get-pass", "esrf.fr/dehaeze"]
|
password.fetch = ["command", "~/.local/bin/get-pass", "esrf.fr/dehaeze"]
|
||||||
|
|
||||||
[storage esrf_calendar_local]
|
[storage esrf_calendar_local]
|
||||||
type = "filesystem"
|
type = "filesystem"
|
||||||
path = "~/.calendars/esrf/"
|
path = "~/.local/share/calendars/esrf/"
|
||||||
fileext = ".ics"
|
fileext = ".ics"
|
||||||
|
|
||||||
[pair radicale_contacts]
|
[pair radicale_contacts]
|
||||||
@@ -53,14 +53,14 @@ conflict_resolution = "a wins"
|
|||||||
|
|
||||||
[storage radicale_contacts_local]
|
[storage radicale_contacts_local]
|
||||||
type = "filesystem"
|
type = "filesystem"
|
||||||
path = "~/.contacts/"
|
path = "~/.local/share/contacts/"
|
||||||
fileext = ".vcf"
|
fileext = ".vcf"
|
||||||
|
|
||||||
[storage radicale_contacts_remote]
|
[storage radicale_contacts_remote]
|
||||||
type = "carddav"
|
type = "carddav"
|
||||||
url = "https://radicale.tdehaeze.xyz/tdehaeze/"
|
url = "https://radicale.tdehaeze.xyz/tdehaeze/"
|
||||||
username = "tdehaeze"
|
username = "tdehaeze"
|
||||||
password.fetch = ["command", "get-pass", "radicale.tdehaeze.xyz/tdehaeze"]
|
password.fetch = ["command", "~/.local/bin/get-pass", "radicale.tdehaeze.xyz/tdehaeze"]
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
* =khal= - CLI calendar application
|
* =khal= - CLI calendar application
|
||||||
@@ -73,19 +73,23 @@ password.fetch = ["command", "get-pass", "radicale.tdehaeze.xyz/tdehaeze"]
|
|||||||
[calendars]
|
[calendars]
|
||||||
|
|
||||||
[[Home]]
|
[[Home]]
|
||||||
path = ~/.calendars/radicale/76bfc802-3186-e3af-f688-7e165115b4f8/
|
path = ~/.local/share/calendars/radicale/76bfc802-3186-e3af-f688-7e165115b4f8/
|
||||||
color = "#B8BB26" # Green
|
color = "#B8BB26" # Green
|
||||||
|
|
||||||
|
[[Orgmode]]
|
||||||
|
path = ~/.local/share/calendars/radicale/627e2bee-7d6a-49dc-128e-fc7a8aed1e8b/
|
||||||
|
color = "#D3869B" # aqua
|
||||||
|
|
||||||
[[Thesis]]
|
[[Thesis]]
|
||||||
path = ~/.calendars/radicale/f78f1649-b54e-7bfe-488d-6a7005a5aa2f/
|
path = ~/.local/share/calendars/radicale/f78f1649-b54e-7bfe-488d-6a7005a5aa2f/
|
||||||
color = "#FB4934" # Red
|
color = "#FB4934" # Red
|
||||||
|
|
||||||
[[ESRF]]
|
[[ESRF]]
|
||||||
path = ~/.calendars/esrf/calendar/
|
path = ~/.local/share/calendars/esrf/calendar/
|
||||||
color = "#83A598" # Blue
|
color = "#83A598" # Blue
|
||||||
|
|
||||||
[[Birthdays]]
|
[[Birthdays]]
|
||||||
path = ~/.contacts/98ee5e2c-afcf-70e0-c4a2-9fb9de2e97b7/
|
path = ~/.local/share/contacts/98ee5e2c-afcf-70e0-c4a2-9fb9de2e97b7/
|
||||||
color = "#D3869B" # aqua
|
color = "#D3869B" # aqua
|
||||||
type = birthdays
|
type = birthdays
|
||||||
|
|
||||||
@@ -98,6 +102,7 @@ highlight_event_days = True
|
|||||||
[locale]
|
[locale]
|
||||||
local_timezone= Europe/Berlin
|
local_timezone= Europe/Berlin
|
||||||
default_timezone= Europe/Berlin
|
default_timezone= Europe/Berlin
|
||||||
|
weeknumbers= left
|
||||||
timeformat= %H:%M
|
timeformat= %H:%M
|
||||||
dateformat= %d.%m.
|
dateformat= %d.%m.
|
||||||
longdateformat= %d.%m.%Y
|
longdateformat= %d.%m.%Y
|
||||||
@@ -119,7 +124,7 @@ new = c
|
|||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
[addressbooks]
|
[addressbooks]
|
||||||
[[contacts]]
|
[[contacts]]
|
||||||
path = ~/.contacts/98ee5e2c-afcf-70e0-c4a2-9fb9de2e97b7/
|
path = ~/.local/share/contacts//98ee5e2c-afcf-70e0-c4a2-9fb9de2e97b7/
|
||||||
|
|
||||||
[general]
|
[general]
|
||||||
debug = no
|
debug = no
|
||||||
@@ -188,7 +193,7 @@ if [[ -f $1 ]]; then
|
|||||||
exit;
|
exit;
|
||||||
fi
|
fi
|
||||||
khal import -a "$calendar" --batch "$1" && \
|
khal import -a "$calendar" --batch "$1" && \
|
||||||
notify-send --hint=string:x-dunst-stack-tag:fJeNG8gc "Calendar" "Even added";
|
dunstify "Calendar" "Even added";
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ shadow-exclude = [
|
|||||||
"window_type = 'dnd'",
|
"window_type = 'dnd'",
|
||||||
"class_g = 'VirtualBox'",
|
"class_g = 'VirtualBox'",
|
||||||
"class_g ?= 'Notify-osd'",
|
"class_g ?= 'Notify-osd'",
|
||||||
"name = 'cpt_frame_window'", # For zoom problem when sharing screen
|
"name = 'cpt_frame_xcb_window'", # For zoom problem when sharing screen
|
||||||
"class_g = 'stalonetray'"
|
"class_g = 'stalonetray'"
|
||||||
];
|
];
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|||||||
88
config.org
88
config.org
@@ -9,12 +9,26 @@ Host *
|
|||||||
ControlMaster auto
|
ControlMaster auto
|
||||||
ControlPath ~/.ssh/master-%r@%h:%p.socket
|
ControlPath ~/.ssh/master-%r@%h:%p.socket
|
||||||
|
|
||||||
|
# Host backup
|
||||||
|
# hostname <<get-password(passname="ip/homelab")>>
|
||||||
|
# Port 2022
|
||||||
|
# user thomas
|
||||||
|
# IdentityFile ~/.ssh/id_rsa
|
||||||
|
|
||||||
Host homelab
|
Host homelab
|
||||||
hostname <<get-password(passname="ip/homelab")>>
|
hostname <<get-password(passname="ip/homelab")>>
|
||||||
Port 22
|
Port 22
|
||||||
user thomas
|
user thomas
|
||||||
IdentityFile ~/.ssh/id_rsa
|
IdentityFile ~/.ssh/id_rsa
|
||||||
|
|
||||||
|
Host router
|
||||||
|
hostname 192.168.1.1
|
||||||
|
Port 22
|
||||||
|
user root
|
||||||
|
IdentityFile ~/.ssh/id_rsa
|
||||||
|
PubkeyAcceptedAlgorithms +ssh-rsa
|
||||||
|
HostkeyAlgorithms +ssh-rsa
|
||||||
|
|
||||||
Host *.esrf.fr
|
Host *.esrf.fr
|
||||||
User dehaeze
|
User dehaeze
|
||||||
IdentityFile ~/.ssh/id_rsa
|
IdentityFile ~/.ssh/id_rsa
|
||||||
@@ -26,7 +40,6 @@ Host firewall.esrf.fr
|
|||||||
Match host *.esrf.fr !host firewall.esrf.fr !exec "~/.ssh/esrf-test"
|
Match host *.esrf.fr !host firewall.esrf.fr !exec "~/.ssh/esrf-test"
|
||||||
ProxyJump firewall.esrf.fr
|
ProxyJump firewall.esrf.fr
|
||||||
|
|
||||||
|
|
||||||
Host rnice
|
Host rnice
|
||||||
Port 22
|
Port 22
|
||||||
user dehaeze
|
user dehaeze
|
||||||
@@ -34,7 +47,7 @@ Host rnice
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src bash :tangle ~/.ssh/esrf-test :comments none :mkdirp yes :shebang "#!/usr/bin/env bash" :tangle-mode (identity #o555)
|
#+begin_src bash :tangle ~/.ssh/esrf-test :comments none :mkdirp yes :shebang "#!/usr/bin/env bash" :tangle-mode (identity #o555)
|
||||||
test -n "$(timeout 1s dig +short proxy.esrf.fr.)"
|
test -n "$(ping -c1 -W1 -q proxy.esrf.fr. &> /dev/null )"
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Font
|
* Font
|
||||||
@@ -70,7 +83,7 @@ test -n "$(timeout 1s dig +short proxy.esrf.fr.)"
|
|||||||
|
|
||||||
* GnuPG
|
* GnuPG
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args: :tangle ~/.gnupg/gpg-agent.conf
|
:header-args: :tangle ~/.config/gnupg/gpg-agent.conf
|
||||||
:header-args+: :comments both :mkdirp yes
|
:header-args+: :comments both :mkdirp yes
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
@@ -104,35 +117,6 @@ lat=45.1
|
|||||||
lon=5.7
|
lon=5.7
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* dmenu
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.dmenurc
|
|
||||||
:header-args+: :comments both :mkdirp yes
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+BEGIN_SRC conf
|
|
||||||
# define the font for dmenu to be used
|
|
||||||
DMENU_FN="Hack Nerd Font 12"
|
|
||||||
|
|
||||||
# background colour for unselected menu-items
|
|
||||||
DMENU_NB="#222D31"
|
|
||||||
|
|
||||||
# textcolour for unselected menu-items
|
|
||||||
DMENU_NF="#F9FAF9"
|
|
||||||
|
|
||||||
# background colour for selected menu-items
|
|
||||||
DMENU_SB="#16A085"
|
|
||||||
|
|
||||||
# textcolour for selected menu-items
|
|
||||||
DMENU_SF="#F9FAF9"
|
|
||||||
|
|
||||||
# command for the terminal application to be used:
|
|
||||||
TERMINAL_CMD="terminal -e"
|
|
||||||
|
|
||||||
# export our variables
|
|
||||||
DMENU_OPTIONS="-fn $DMENU_FN -nb $DMENU_NB -nf $DMENU_NF -sf $DMENU_SF -sb $DMENU_SB"
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
* Locale
|
* Locale
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args: :tangle ~/.config/locale.conf
|
:header-args: :tangle ~/.config/locale.conf
|
||||||
@@ -727,4 +711,44 @@ It is very important that =~/.netrc= as =600= permissions.
|
|||||||
machine torrent.tdehaeze.xyz
|
machine torrent.tdehaeze.xyz
|
||||||
login tdehaeze
|
login tdehaeze
|
||||||
password <<get-password(passname="nas/transmission")>>
|
password <<get-password(passname="nas/transmission")>>
|
||||||
|
|
||||||
|
machine prowlarr.tdehaeze.xyz
|
||||||
|
login tdehaeze
|
||||||
|
password <<get-password(passname="prowlarr.tdehaeze.xyz/tdehaeze")>>
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* Gotify Dunst
|
||||||
|
#+begin_src conf :comments none :mkdirp yes :noweb yes :tangle ~/.config/gotify-dunst/gotify-dunst.conf
|
||||||
|
[server]
|
||||||
|
ssl=true
|
||||||
|
domain=gotify.tdehaeze.xyz
|
||||||
|
token=<<get-password(passname="nas/gotify_laptop")>>
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* SMBCredentials
|
||||||
|
#+begin_src conf :comments none :mkdirp yes :noweb yes :tangle ~/.smbcredentials :tangle-mode (identity #o600)
|
||||||
|
user=dehaeze
|
||||||
|
password=<<get-password(passname="esrf.fr/dehaeze")>>
|
||||||
|
domain=esrf
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Keyboard repetition rate
|
||||||
|
Install [[https://github.com/SFTtech/xautocfg][xautocfg]] with =paru -S xautocfg=.
|
||||||
|
Then create =~/.config/xautocfg.cfg= with:
|
||||||
|
|
||||||
|
#+begin_src conf :tangle ~/.config/xautocfg.cfg
|
||||||
|
# xautocfg config
|
||||||
|
|
||||||
|
[keyboard]
|
||||||
|
# set keyboard repeat rate for every keyboard automatically
|
||||||
|
# equivalent one-time invocation:
|
||||||
|
# xset r rate 220 45
|
||||||
|
|
||||||
|
# when to start repeating
|
||||||
|
delay = 200
|
||||||
|
|
||||||
|
# rate in hz for repetitions
|
||||||
|
rate = 40
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
And then enable the service with: =systemctl --user enable xautocfg.service=
|
||||||
|
|||||||
26
git.org
26
git.org
@@ -1,9 +1,9 @@
|
|||||||
#+TITLE: Git Configuration
|
#+TITLE: Git Configuration
|
||||||
#+SETUPFILE: ./setup/org-setup-file.org
|
#+SETUPFILE: ./setup/org-setup-file.org
|
||||||
|
|
||||||
* =~/.gitconfig=
|
* =gitconfig=
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args:conf: :tangle ~/.gitconfig
|
:header-args:conf: :tangle ~/.config/git/config
|
||||||
:header-args:conf+: :comments both :mkdirp yes
|
:header-args:conf+: :comments both :mkdirp yes
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
@@ -157,12 +157,10 @@
|
|||||||
# http://michael-kuehnel.de/git/2014/11/21/git-mac-osx-and-german-umlaute.html
|
# http://michael-kuehnel.de/git/2014/11/21/git-mac-osx-and-german-umlaute.html
|
||||||
precomposeunicode = false
|
precomposeunicode = false
|
||||||
|
|
||||||
pager = diff-so-fancy | less --tabs=4 -RFX
|
|
||||||
|
|
||||||
autocrlf = input
|
autocrlf = input
|
||||||
|
|
||||||
# Open vim, start Goyo and enter insert mode on the first line
|
# Open vim, start Goyo and enter insert mode on the first line
|
||||||
editor = "nvim -c ':Goyo' -c 'goto 1' -c 'startinsert'"
|
# editor = "nvim -c ':Goyo' -c 'goto 1' -c 'startinsert'"
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Credentials using pass
|
** Credentials using pass
|
||||||
@@ -180,24 +178,6 @@
|
|||||||
username = dehaeze
|
username = dehaeze
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Diff-so-fancy
|
|
||||||
#+begin_src conf
|
|
||||||
[diff-so-fancy]
|
|
||||||
markEmptyLines = false
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* =~/.gitignore_global= - Global Git Ignore
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args:conf: :tangle ~/.gitignore_global
|
|
||||||
:header-args:conf+: :comments both :mkdirp yes
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+BEGIN_SRC conf
|
|
||||||
*~
|
|
||||||
.DS_Store
|
|
||||||
Session.vim
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
* =pass-git-helper= - Use =pass= for git passwords
|
* =pass-git-helper= - Use =pass= for git passwords
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args: :tangle ~/.config/pass-git-helper/git-pass-mapping.ini
|
:header-args: :tangle ~/.config/pass-git-helper/git-pass-mapping.ini
|
||||||
|
|||||||
2
gtk.org
2
gtk.org
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
* GTK-2.0
|
* GTK-2.0
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args: :tangle ~/.gtkrc-2.0.mine
|
:header-args: :tangle ~/.config/gtkrc-2.0
|
||||||
:header-args+: :comments both :mkdirp yes
|
:header-args+: :comments both :mkdirp yes
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
|
|||||||
1168
homelab.org
1168
homelab.org
File diff suppressed because it is too large
Load Diff
16
i3.org
16
i3.org
@@ -16,9 +16,9 @@ set $mod Mod4
|
|||||||
|
|
||||||
* Border Style
|
* Border Style
|
||||||
#+begin_src conf
|
#+begin_src conf
|
||||||
# Use custom colors for black
|
default_border pixel 2
|
||||||
new_window pixel 1
|
default_floating_border pixel 2
|
||||||
new_float normal
|
for_window [class="^.*"] border pixel 2
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Hide borders
|
Hide borders
|
||||||
@@ -72,11 +72,6 @@ workspace_layout default
|
|||||||
focus_follows_mouse no
|
focus_follows_mouse no
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Border
|
|
||||||
#+begin_src conf
|
|
||||||
default_border pixel 2
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Settings for i3-gaps
|
* Settings for i3-gaps
|
||||||
#+begin_src conf
|
#+begin_src conf
|
||||||
gaps inner 10
|
gaps inner 10
|
||||||
@@ -133,12 +128,17 @@ for_window [title="Simulink Library Browser"] floating enable
|
|||||||
for_window [class="Floating"] floating enable, resize set 800 600, move position 1100 460
|
for_window [class="Floating"] floating enable, resize set 800 600, move position 1100 460
|
||||||
for_window [class="mpv"] floating enable # Size/Position is defined in mpv.conf
|
for_window [class="mpv"] floating enable # Size/Position is defined in mpv.conf
|
||||||
for_window [class="Sxiv"] floating enable, resize set 800 600, move position center
|
for_window [class="Sxiv"] floating enable, resize set 800 600, move position center
|
||||||
|
for_window [class="Cropgui"] floating enable, resize set 800 600, move position center
|
||||||
for_window [title="khal"] floating enable, resize set 600 600, move position center
|
for_window [title="khal"] floating enable, resize set 600 600, move position center
|
||||||
for_window [title="ncmpcpp"] floating enable, resize set 800 400, move position center
|
for_window [title="ncmpcpp"] floating enable, resize set 800 400, move position center
|
||||||
|
for_window [title="stig"] floating enable, resize set 800 400, move position center
|
||||||
for_window [title="Sensors"] floating enable, resize set 800 400, move position center
|
for_window [title="Sensors"] floating enable, resize set 800 400, move position center
|
||||||
|
for_window [title="TexText"] floating enable, resize set 800 400, move position center
|
||||||
for_window [title="nmtui"] floating enable, resize set 800 600, move position center
|
for_window [title="nmtui"] floating enable, resize set 800 600, move position center
|
||||||
for_window [title="Xournal"] floating enable, resize set 1100 750, move position center
|
for_window [title="Xournal"] floating enable, resize set 1100 750, move position center
|
||||||
for_window [title="esrf-phonebook"] floating enable, resize set 1400 400, move position center
|
for_window [title="esrf-phonebook"] floating enable, resize set 1400 400, move position center
|
||||||
|
for_window [title="zoom "] floating enable
|
||||||
|
for_window [title="F3D"] floating enable, resize set 800 600, move position center
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Scratchpad
|
* Scratchpad
|
||||||
|
|||||||
@@ -7,7 +7,7 @@
|
|||||||
The general installation procedure is described [[file:install.org][here]].
|
The general installation procedure is described [[file:install.org][here]].
|
||||||
|
|
||||||
There are Specific configuration files for:
|
There are Specific configuration files for:
|
||||||
- *Windows Manager*: [[file:bspwm.org][BSPWM]] and [[file:i3.org][I3]]
|
- *Windows Manager*: [[file:i3.org][I3]]
|
||||||
- *Hotkey Manager*: [[file:sxhkd.org][SXHKD]]
|
- *Hotkey Manager*: [[file:sxhkd.org][SXHKD]]
|
||||||
- *Status Bar*: [[file:polybar.org][Polybar]]
|
- *Status Bar*: [[file:polybar.org][Polybar]]
|
||||||
- *Launcher*: [[file:rofi.org][Rofi]]
|
- *Launcher*: [[file:rofi.org][Rofi]]
|
||||||
@@ -24,7 +24,6 @@ There are Specific configuration files for:
|
|||||||
- *Video Setup*: [[file:video.org][Mpv]]
|
- *Video Setup*: [[file:video.org][Mpv]]
|
||||||
- *Web Browser*: [[file:qutebrowser.org][Qutebrowser]]
|
- *Web Browser*: [[file:qutebrowser.org][Qutebrowser]]
|
||||||
- *PDF Reader*: [[file:zathura.org][Zathura]]
|
- *PDF Reader*: [[file:zathura.org][Zathura]]
|
||||||
- *GUI File Manager*: [[file:pcmanfm.org][PCManFM]]
|
|
||||||
- *Terminal File Manager*: [[file:ranger.org][Ranger]]
|
- *Terminal File Manager*: [[file:ranger.org][Ranger]]
|
||||||
- *Calendar and Contacts*: [[file:calendar-contact.org][Vdirsyncer, Khal and Khard]]
|
- *Calendar and Contacts*: [[file:calendar-contact.org][Vdirsyncer, Khal and Khard]]
|
||||||
- *Mails*: [[file:mail.org][Mbsync, Msmtp, Mu and Neomutt]]
|
- *Mails*: [[file:mail.org][Mbsync, Msmtp, Mu and Neomutt]]
|
||||||
|
|||||||
23
inkscape.org
23
inkscape.org
@@ -4,6 +4,29 @@
|
|||||||
#+PROPERTY: header-args :comments no
|
#+PROPERTY: header-args :comments no
|
||||||
#+PROPERTY: header-args+ :mkdirp yes
|
#+PROPERTY: header-args+ :mkdirp yes
|
||||||
|
|
||||||
|
#+begin_src conf :tangle /home/thomas/.config/inkscape/palettes/reasonable_colors.gpl
|
||||||
|
GIMP Palette
|
||||||
|
Name: Matlab Colors
|
||||||
|
#
|
||||||
|
# Last update: 26.04.2022
|
||||||
|
#
|
||||||
|
# Original palette by Matthew Howell
|
||||||
|
# reasonable.work/colors
|
||||||
|
#
|
||||||
|
# GPL palette coded by Rob Mocci (with permission)
|
||||||
|
# patreon.com/rmocci
|
||||||
|
#
|
||||||
|
0 114 189
|
||||||
|
217 83 25
|
||||||
|
237 177 32
|
||||||
|
126 47 142
|
||||||
|
119 172 48
|
||||||
|
77 190 238
|
||||||
|
162 20 47
|
||||||
|
0 0 0
|
||||||
|
255 255 255
|
||||||
|
#+end_src
|
||||||
|
|
||||||
* Save Selection to SVG extension
|
* Save Selection to SVG extension
|
||||||
** =ink= file
|
** =ink= file
|
||||||
|
|
||||||
|
|||||||
709
install.org
709
install.org
File diff suppressed because it is too large
Load Diff
88
mail.org
88
mail.org
@@ -3,12 +3,12 @@
|
|||||||
|
|
||||||
Installation:
|
Installation:
|
||||||
#+begin_src bash :tangle no
|
#+begin_src bash :tangle no
|
||||||
sudo apt install mbsync msmtp maildir-utils neomutt lynx
|
paru -S mbsync msmtp neomutt lynx urlview
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* =mbsync= - Synchronize Mailboxes
|
* =mbsync= - Synchronize Mailboxes
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args:conf: :tangle ~/.mbsyncrc
|
:header-args:conf: :tangle ~/.config/isync/mbsyncrc
|
||||||
:header-args:conf+: :comments both :mkdirp yes
|
:header-args:conf+: :comments both :mkdirp yes
|
||||||
:CUSTOM_ID: mbsync
|
:CUSTOM_ID: mbsync
|
||||||
:END:
|
:END:
|
||||||
@@ -40,8 +40,8 @@ IMAPStore gmail-remote
|
|||||||
Account gmail
|
Account gmail
|
||||||
|
|
||||||
MaildirStore gmail-local
|
MaildirStore gmail-local
|
||||||
Path ~/.mail/gmail/
|
Path ~/.local/share/mails/gmail/
|
||||||
Inbox ~/.mail/gmail/Inbox
|
Inbox ~/.local/share/mails/gmail/Inbox
|
||||||
|
|
||||||
Channel gmail-Home
|
Channel gmail-Home
|
||||||
Far :gmail-remote:INBOX
|
Far :gmail-remote:INBOX
|
||||||
@@ -106,8 +106,8 @@ IMAPStore esrf-remote
|
|||||||
Account esrf
|
Account esrf
|
||||||
|
|
||||||
MaildirStore esrf-local
|
MaildirStore esrf-local
|
||||||
Path ~/.mail/esrf/
|
Path ~/.local/share/mails/esrf/
|
||||||
Inbox ~/.mail/esrf/Inbox
|
Inbox ~/.local/share/mails/esrf/Inbox
|
||||||
|
|
||||||
Channel esrf-Home
|
Channel esrf-Home
|
||||||
Far :esrf-remote:INBOX
|
Far :esrf-remote:INBOX
|
||||||
@@ -171,8 +171,8 @@ protocol smtp
|
|||||||
from dehaeze.thomas@gmail.com
|
from dehaeze.thomas@gmail.com
|
||||||
user dehaeze.thomas@gmail.com
|
user dehaeze.thomas@gmail.com
|
||||||
passwordeval "pass email/dehaeze.thomas@gmail.com"
|
passwordeval "pass email/dehaeze.thomas@gmail.com"
|
||||||
proxy_host localhost
|
# proxy_host localhost
|
||||||
proxy_port 8080
|
# proxy_port 8080
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** ESRF Account
|
** ESRF Account
|
||||||
@@ -589,7 +589,6 @@ Write/Reply/Forward mail
|
|||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
bind index,pager p recall-message
|
bind index,pager p recall-message
|
||||||
bind index,pager m mail
|
bind index,pager m mail
|
||||||
bind index,pager M resend-message
|
|
||||||
bind index,pager r reply
|
bind index,pager r reply
|
||||||
bind index,pager R group-reply
|
bind index,pager R group-reply
|
||||||
bind index,pager b bounce-message
|
bind index,pager b bounce-message
|
||||||
@@ -603,6 +602,7 @@ bind index,pager s sync-mailbox
|
|||||||
|
|
||||||
Sync email
|
Sync email
|
||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
|
macro index,pager e "<shell-escape>$HOME/.config/neomutt/bin/get_new_esrf_mail.sh<enter>"
|
||||||
macro index,pager o "<shell-escape>$HOME/.config/neomutt/bin/get_new_mail.sh<enter>"
|
macro index,pager o "<shell-escape>$HOME/.config/neomutt/bin/get_new_mail.sh<enter>"
|
||||||
macro index,pager O "<shell-escape>$HOME/.config/neomutt/bin/get_new_mail.sh -a<enter>"
|
macro index,pager O "<shell-escape>$HOME/.config/neomutt/bin/get_new_mail.sh -a<enter>"
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
@@ -646,7 +646,7 @@ bind attach q exit
|
|||||||
|
|
||||||
bind attach <return> view-mailcap
|
bind attach <return> view-mailcap
|
||||||
|
|
||||||
macro attach W <save-entry><kill-line>~/Downloads/<enter>y "Save entry"
|
macro attach W <save-entry><kill-line>$HOME/Downloads/<enter>y "Save entry"
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Compose
|
*** Compose
|
||||||
@@ -684,7 +684,7 @@ tmpfile=/tmp/rangerpick
|
|||||||
if [ -z "$1" ]; then
|
if [ -z "$1" ]; then
|
||||||
ranger --choosefiles $tmpfile && sed -i 's/\s/\\ /g' $tmpfile && echo "$(awk 'BEGIN {printf "%s", "push "} {printf "%s", "<attach-file>"$0"<enter>"}' $tmpfile)" > $tmpfile
|
ranger --choosefiles $tmpfile && sed -i 's/\s/\\ /g' $tmpfile && echo "$(awk 'BEGIN {printf "%s", "push "} {printf "%s", "<attach-file>"$0"<enter>"}' $tmpfile)" > $tmpfile
|
||||||
elif [ $1 == "dragon" ]; then
|
elif [ $1 == "dragon" ]; then
|
||||||
dragon --target --print-path --keep > $tmpfile && sed -i 's/\s/\\ /g' $tmpfile && echo "$(awk 'BEGIN {printf "%s", "push "} {printf "%s", "<attach-file>"$0"<enter>"}' $tmpfile)" > $tmpfile
|
dragon-drop --target --print-path --keep > $tmpfile && sed -i 's/\s/\\ /g' $tmpfile && echo "$(awk 'BEGIN {printf "%s", "push "} {printf "%s", "<attach-file>"$0"<enter>"}' $tmpfile)" > $tmpfile
|
||||||
elif [ $1 == "clean" ]; then
|
elif [ $1 == "clean" ]; then
|
||||||
ls $tmpfile
|
ls $tmpfile
|
||||||
fi
|
fi
|
||||||
@@ -721,7 +721,7 @@ bind index,pager \Ch sidebar-toggle-visible
|
|||||||
|
|
||||||
*** Reload Configuration
|
*** Reload Configuration
|
||||||
#+begin_src conf
|
#+begin_src conf
|
||||||
macro generic,index,pager,editor ,<Space> ":source ~/.config/neomutt/neomuttrc\n" "Reload mutt's configuration file"
|
macro generic,index,pager,editor ,<Space> ":source $HOME/.config/neomutt/neomuttrc\n" "Reload mutt's configuration file"
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** urlview - Open URL in emails
|
*** urlview - Open URL in emails
|
||||||
@@ -738,11 +738,11 @@ macro attach,compose,index,pager \cw "\
|
|||||||
|
|
||||||
*** Searching using Mu
|
*** Searching using Mu
|
||||||
#+begin_src conf
|
#+begin_src conf
|
||||||
macro index,pager \Cf "<shell-escape>$HOME/.config/neomutt/bin/search_mail.sh<enter><change-folder-readonly>~/.mail/search<enter>" \
|
macro index,pager \Cf "<shell-escape>$HOME/.config/neomutt/bin/search_mail.sh<enter><change-folder-readonly>$HOME/.local/share/mails/search<enter>" \
|
||||||
"test"
|
"test"
|
||||||
# macro index,pager \Cf "<shell-escape>mu find --clearlinks --format=links --linksdir=~/.mail/search " \
|
# macro index,pager \Cf "<shell-escape>mu find --clearlinks --format=links --linksdir=$HOME/.local/share/mails/search " \
|
||||||
# "mu find"
|
# "mu find"
|
||||||
macro index,pager gf "<change-folder-readonly>~/.mail/search<enter>" \
|
macro index,pager gf "<change-folder-readonly>$HOME/.local/share/mails/search<enter>" \
|
||||||
"mu find results"
|
"mu find results"
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -782,7 +782,7 @@ message_to = message['to']
|
|||||||
# Ask emacsclient to save a link to the message
|
# Ask emacsclient to save a link to the message
|
||||||
subprocess.Popen([
|
subprocess.Popen([
|
||||||
'emacsclient',
|
'emacsclient',
|
||||||
f'org-protocol://capture?template=ps&url={message_id}&title={subject}&body={message_to}'
|
f'org-protocol://capture?template=pm&url={message_id}&title={subject}&body={message_to}'
|
||||||
])
|
])
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -853,13 +853,13 @@ bind editor <Tab> complete-query
|
|||||||
|
|
||||||
** Paths
|
** Paths
|
||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
set folder = ~/.mail # mail location
|
set folder = $HOME/.local/share/mails # mail location
|
||||||
set alias_file = ~/.config/neomutt/alias # where to store aliases
|
set alias_file = $HOME/.config/neomutt/alias # where to store aliases
|
||||||
set header_cache = ~/.config/neomutt/cache/headers # where to store headers
|
set header_cache = $HOME/.config/neomutt/cache/headers # where to store headers
|
||||||
set message_cachedir = ~/.config/neomutt/cache/bodies # where to store bodies
|
set message_cachedir = $HOME/.config/neomutt/cache/bodies # where to store bodies
|
||||||
set certificate_file = ~/.config/neomutt/certificates # where to store certs
|
set certificate_file = $HOME/.config/neomutt/certificates # where to store certs
|
||||||
set mailcap_path = ~/.config/neomutt/mailcap # entries for filetypes
|
set mailcap_path = $HOME/.config/neomutt/mailcap # entries for filetypes
|
||||||
set tmpdir = ~/.config/neomutt/temp # where to keep temp files
|
set tmpdir = $HOME/.config/neomutt/temp # where to keep temp files
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Print
|
** Print
|
||||||
@@ -875,8 +875,8 @@ set spoolfile = "+esrf/Inbox" # Default inbox
|
|||||||
set realname = "Dehaeze Thomas"
|
set realname = "Dehaeze Thomas"
|
||||||
set from = "thomas.dehaeze@esrf.fr"
|
set from = "thomas.dehaeze@esrf.fr"
|
||||||
|
|
||||||
folder-hook gmail/* source ~/.config/neomutt/accounts/gmail
|
folder-hook gmail/* source $HOME/.config/neomutt/accounts/gmail
|
||||||
folder-hook esrf/* source ~/.config/neomutt/accounts/esrf
|
folder-hook esrf/* source $HOME/.config/neomutt/accounts/esrf
|
||||||
|
|
||||||
macro index,pager ge "<change-folder>+esrf/Inbox<enter>" "go to inbox"
|
macro index,pager ge "<change-folder>+esrf/Inbox<enter>" "go to inbox"
|
||||||
macro index,pager gm "<change-folder>+gmail/Inbox<enter>" "go to inbox"
|
macro index,pager gm "<change-folder>+gmail/Inbox<enter>" "go to inbox"
|
||||||
@@ -886,7 +886,7 @@ macro index,pager gm "<change-folder>+gmail/Inbox<enter>" "go to inbox"
|
|||||||
**** Configuration
|
**** Configuration
|
||||||
#+begin_src conf :tangle ~/.config/neomutt/accounts/gmail :comments none
|
#+begin_src conf :tangle ~/.config/neomutt/accounts/gmail :comments none
|
||||||
set from = "dehaeze.thomas@gmail.com"
|
set from = "dehaeze.thomas@gmail.com"
|
||||||
set sendmail = "~/.config/neomutt/bin/send_mail.sh gmail"
|
set sendmail = "$HOME/.config/neomutt/bin/send_mail.sh gmail"
|
||||||
|
|
||||||
# Other special folders.
|
# Other special folders.
|
||||||
set mbox = "+gmail/Archive" # Archive Box
|
set mbox = "+gmail/Archive" # Archive Box
|
||||||
@@ -894,7 +894,7 @@ set postponed = "+gmail/Drafts"
|
|||||||
|
|
||||||
unset record # Don't copy send message to Sent folder: Gmail does that for us
|
unset record # Don't copy send message to Sent folder: Gmail does that for us
|
||||||
|
|
||||||
set signature = "~/.config/neomutt/accounts/gmail.signature"
|
set signature = "$HOME/.config/neomutt/accounts/gmail.signature"
|
||||||
|
|
||||||
macro index,pager d \
|
macro index,pager d \
|
||||||
"<save-message>+gmail/Archive<enter>" \
|
"<save-message>+gmail/Archive<enter>" \
|
||||||
@@ -917,14 +917,14 @@ This empty code block is used to add a new line after signature
|
|||||||
**** Configuration
|
**** Configuration
|
||||||
#+begin_src conf :tangle ~/.config/neomutt/accounts/esrf :comments none
|
#+begin_src conf :tangle ~/.config/neomutt/accounts/esrf :comments none
|
||||||
set from = "thomas.dehaeze@esrf.fr"
|
set from = "thomas.dehaeze@esrf.fr"
|
||||||
set sendmail = "~/.config/neomutt/bin/send_mail.sh esrf"
|
set sendmail = "$HOME/.config/neomutt/bin/send_mail.sh esrf"
|
||||||
|
|
||||||
# Other special folders.
|
# Other special folders.
|
||||||
set mbox = "+esrf/Archive"
|
set mbox = "+esrf/Archive"
|
||||||
set record = "+esrf/Sent"
|
set record = "+esrf/Sent"
|
||||||
set postponed = "+esrf/Drafts"
|
set postponed = "+esrf/Drafts"
|
||||||
|
|
||||||
set signature = "~/.config/neomutt/accounts/esrf.signature"
|
set signature = "$HOME/.config/neomutt/accounts/esrf.signature"
|
||||||
|
|
||||||
macro index,pager d \
|
macro index,pager d \
|
||||||
"<save-message>+esrf/Archive<enter>" \
|
"<save-message>+esrf/Archive<enter>" \
|
||||||
@@ -1091,22 +1091,23 @@ set sidebar_format = '%D %* %?N?[%N]?'
|
|||||||
# path - mailbox path
|
# path - mailbox path
|
||||||
# unsorted - do not sort the mailboxes
|
# unsorted - do not sort the mailboxes
|
||||||
set sidebar_sort_method = 'unsorted'
|
set sidebar_sort_method = 'unsorted'
|
||||||
|
set sort_browser = 'unsorted'
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
*** Mailboxes to show in the sidebar.
|
*** Mailboxes to show in the sidebar.
|
||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
named-mailboxes " Search" =search
|
named-mailboxes " Search" =search
|
||||||
named-mailboxes " GMAIL" =empty/gmail
|
named-mailboxes " GMAIL" =empty/gmail
|
||||||
named-mailboxes " Inbox" =gmail/Inbox
|
named-mailboxes " Inbox" =gmail/Inbox
|
||||||
named-mailboxes " Sent" =gmail/Sent
|
named-mailboxes " Sent" =gmail/Sent
|
||||||
named-mailboxes " Drafts" =gmail/Drafts
|
named-mailboxes " Drafts" =gmail/Drafts
|
||||||
named-mailboxes " ﮊ Archive" =gmail/Archive
|
named-mailboxes " Archive" =gmail/Archive
|
||||||
named-mailboxes " Trash" =gmail/Trash
|
named-mailboxes " Trash" =gmail/Trash
|
||||||
named-mailboxes " ESRF" =empty/esrf
|
named-mailboxes " ESRF" =empty/esrf
|
||||||
named-mailboxes " Inbox" =esrf/Inbox
|
named-mailboxes " Inbox" =esrf/Inbox
|
||||||
named-mailboxes " Sent" =esrf/Sent
|
named-mailboxes " Sent" =esrf/Sent
|
||||||
named-mailboxes " Drafts" =esrf/Drafts
|
named-mailboxes " Drafts" =esrf/Drafts
|
||||||
named-mailboxes " ﮊ Archive" =esrf/Archive
|
named-mailboxes " Archive" =esrf/Archive
|
||||||
named-mailboxes " Trash" =esrf/Trash
|
named-mailboxes " Trash" =esrf/Trash
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
@@ -1145,16 +1146,16 @@ set abort_noattach_regex = "\\<(attach(|ed|ments?)|(attaché|attachés|attache|a
|
|||||||
|
|
||||||
*** Search Mail
|
*** Search Mail
|
||||||
#+begin_src bash :tangle ~/.config/neomutt/bin/search_mail.sh
|
#+begin_src bash :tangle ~/.config/neomutt/bin/search_mail.sh
|
||||||
arg_subject=$(rofi -p "Search" -dmenu)
|
arg_subject=$(rofi -p "Contains" -dmenu)
|
||||||
|
|
||||||
arg_from=$(rofi -p "From" -dmenu)
|
arg_from=$(rofi -p "From" -dmenu)
|
||||||
if [ ! -z "$arg_from" ]; then
|
if [ ! -z "$arg_from" ]; then
|
||||||
arg_from="from:${arg_from}"
|
arg_from="from:/.*${arg_from}.*/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
arg_to=$(rofi -p "To" -dmenu)
|
arg_to=$(rofi -p "To" -dmenu)
|
||||||
if [ ! -z "$arg_to" ]; then
|
if [ ! -z "$arg_to" ]; then
|
||||||
arg_to="to:${arg_to}"
|
arg_to="to:/.*${arg_to}.*/"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
arg_mime=$(echo -e "\napplication/pdf\nimage/*\nvideo/*" | rofi -i -p "Mime" -dmenu)
|
arg_mime=$(echo -e "\napplication/pdf\nimage/*\nvideo/*" | rofi -i -p "Mime" -dmenu)
|
||||||
@@ -1162,16 +1163,16 @@ if [ ! -z "$arg_mime" ]; then
|
|||||||
arg_mime="mime:${arg_mime}"
|
arg_mime="mime:${arg_mime}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
mu find --clearlinks --format=links --linksdir=~/.mail/search "${arg_from} ${arg_to} ${arg_mime} ${arg_subject}"
|
mu find --clearlinks --format=links --linksdir=$HOME/.local/share/mails/search "${arg_from} ${arg_to} ${arg_mime} ${arg_subject}"
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
*** Send Mail Script
|
*** Sync "Send Mail" Script
|
||||||
#+begin_src bash :tangle ~/.config/neomutt/bin/send_mail.sh
|
#+begin_src bash :tangle ~/.config/neomutt/bin/send_mail.sh
|
||||||
msmtp -a $1 ${@:2} && \
|
msmtp -a $1 ${@:2} && \
|
||||||
if [ $TMUX ]; then
|
if [ $TMUX ]; then
|
||||||
tmux split -v -l 1 mbsync $1-Sent && tmux select-pane -U
|
tmux split -v -l 1 mbsync -c $XDG_CONFIG_HOME/isync/mbsyncrc $1-Sent && tmux select-pane -U
|
||||||
else
|
else
|
||||||
mbsync $1-Sent
|
mbsync -c $XDG_CONFIG_HOME/isync/mbsyncrc $1-Sent
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -1184,6 +1185,15 @@ else
|
|||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
*** Sync ESRF Mail Script
|
||||||
|
#+begin_src bash :tangle ~/.config/neomutt/bin/get_new_esrf_mail.sh
|
||||||
|
if [ $TMUX ]; then
|
||||||
|
tmux split -v -l 1 mbsync -c $XDG_CONFIG_HOME/isync/mbsyncrc esrf && tmux select-pane -U
|
||||||
|
else
|
||||||
|
mbsync -c $XDG_CONFIG_HOME/isync/mbsyncrc esrf
|
||||||
|
fi
|
||||||
|
#+end_src
|
||||||
|
|
||||||
*** Openfile Scripts
|
*** Openfile Scripts
|
||||||
#+begin_src bash :tangle ~/.config/neomutt/bin/openfile.sh
|
#+begin_src bash :tangle ~/.config/neomutt/bin/openfile.sh
|
||||||
base=$(basename "$1")
|
base=$(basename "$1")
|
||||||
|
|||||||
14
matlab.org
14
matlab.org
@@ -7,7 +7,7 @@
|
|||||||
|
|
||||||
* Startup
|
* Startup
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:HEADER-ARGS:matlab+: :tangle ~/Documents/MATLAB/startup.m
|
:HEADER-ARGS:matlab+: :tangle ~/.config/matlab/startup.m
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
** Setup LaTeX as a default interpreter
|
** Setup LaTeX as a default interpreter
|
||||||
@@ -16,7 +16,6 @@ set(groot, 'DefaultTextInterpreter', 'LaTeX');
|
|||||||
set(groot, 'DefaultAxesTickLabelInterpreter', 'LaTeX');
|
set(groot, 'DefaultAxesTickLabelInterpreter', 'LaTeX');
|
||||||
set(groot, 'DefaultAxesFontName', 'LaTeX');
|
set(groot, 'DefaultAxesFontName', 'LaTeX');
|
||||||
set(groot, 'DefaultLegendInterpreter', 'LaTeX');
|
set(groot, 'DefaultLegendInterpreter', 'LaTeX');
|
||||||
set(groot, 'DefaultConstantLineInterpreter', 'LaTeX');
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Default Line Width
|
** Default Line Width
|
||||||
@@ -39,14 +38,12 @@ set(groot, 'DefaultTextFontSize', 10);
|
|||||||
set(groot, 'DefaultAxesFontUnits', 'points');
|
set(groot, 'DefaultAxesFontUnits', 'points');
|
||||||
set(groot, 'DefaultAxesFontSize', 10);
|
set(groot, 'DefaultAxesFontSize', 10);
|
||||||
set(groot, 'DefaultUicontrolFontSize', 10);
|
set(groot, 'DefaultUicontrolFontSize', 10);
|
||||||
set(groot, 'DefaultConstantLineFontSize', 10);
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Default Fonts
|
** Default Fonts
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
set(groot, 'DefaultAxesFontName', 'Helvetica');
|
set(groot, 'DefaultAxesFontName', 'Helvetica');
|
||||||
set(groot, 'DefaultTextFontName', 'Helvetica');
|
set(groot, 'DefaultTextFontName', 'Helvetica');
|
||||||
set(groot, 'DefaultConstantLineFontName', 'Helvetica');
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Make figures into a Box
|
** Make figures into a Box
|
||||||
@@ -88,6 +85,13 @@ format compact;
|
|||||||
format long g;
|
format long g;
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
** Change TMPDIR to deal with Archlinux issue
|
||||||
|
See https://fr.mathworks.com/matlabcentral/answers/1798895-invalid-cross-device-link-18-when-saving-a-file-on-arch-linux?s_tid=srchtitle
|
||||||
|
|
||||||
|
#+begin_src matlab
|
||||||
|
setenv('TMPDIR', '/home/thomas/.cache')
|
||||||
|
#+end_src
|
||||||
|
|
||||||
** Home Path
|
** Home Path
|
||||||
#+begin_src matlab
|
#+begin_src matlab
|
||||||
toolboxes_path = '~/Cloud/programming/matlab/';
|
toolboxes_path = '~/Cloud/programming/matlab/';
|
||||||
@@ -161,7 +165,7 @@ clear;
|
|||||||
|
|
||||||
* Setup
|
* Setup
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:HEADER-ARGS:matlab+: :tangle ~/Documents/MATLAB/setup.m
|
:HEADER-ARGS:matlab+: :tangle ~/.config/matlab/setup.m
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
This script should be run once after Matlab is installed.
|
This script should be run once after Matlab is installed.
|
||||||
|
|||||||
60
music.org
60
music.org
@@ -33,7 +33,7 @@ hostname = 127.0.0.1
|
|||||||
port = 6600
|
port = 6600
|
||||||
password =
|
password =
|
||||||
max_connections = 20
|
max_connections = 20
|
||||||
connection_timeout = 60
|
connection_timeout = 30
|
||||||
zeroconf = Mopidy MPD server on $hostname
|
zeroconf = Mopidy MPD server on $hostname
|
||||||
command_blacklist = listall,listallinfo
|
command_blacklist = listall,listallinfo
|
||||||
default_playlist_scheme = m3u
|
default_playlist_scheme = m3u
|
||||||
@@ -48,7 +48,7 @@ album_format = {ProductionYear} - {Name}
|
|||||||
max_bitrate = 10000
|
max_bitrate = 10000
|
||||||
|
|
||||||
[file]
|
[file]
|
||||||
enabled = true
|
enabled = false
|
||||||
media_dirs = /home/thomas/Music
|
media_dirs = /home/thomas/Music
|
||||||
excluded_file_extensions =
|
excluded_file_extensions =
|
||||||
.db
|
.db
|
||||||
@@ -81,6 +81,7 @@ Cheatsheet: https://pkgbuild.com/~jelle/ncmpcpp/
|
|||||||
Configuration directory.
|
Configuration directory.
|
||||||
#+begin_src conf
|
#+begin_src conf
|
||||||
ncmpcpp_directory = ~/.config/ncmpcpp
|
ncmpcpp_directory = ~/.config/ncmpcpp
|
||||||
|
lyrics_directory = ~/.local/share/lyrics
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
MPD Configuration.
|
MPD Configuration.
|
||||||
@@ -92,7 +93,7 @@ mpd_music_dir = ~/Music
|
|||||||
|
|
||||||
Notification of song change.
|
Notification of song change.
|
||||||
#+begin_src conf
|
#+begin_src conf
|
||||||
execute_on_song_change = notify-send --hint=string:x-dunst-stack-tag:Z7uCd3ZP "Now Playing ♫" "$(mpc current)"
|
execute_on_song_change = dunstify --replace=19845 "Now Playing ♫" "$(mpc current)"
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Better user interface
|
Better user interface
|
||||||
@@ -104,6 +105,11 @@ browser_display_mode = "columns"
|
|||||||
playlist_display_mode = "columns"
|
playlist_display_mode = "columns"
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
Lyrics
|
||||||
|
#+begin_src conf
|
||||||
|
lyrics_fetchers = musixmatch, sing365, metrolyrics, justsomelyrics, jahlyrics, plyrics, tekstowo, zeneszoveg, internet
|
||||||
|
#+end_src
|
||||||
|
|
||||||
Sorting by tracking number and then title
|
Sorting by tracking number and then title
|
||||||
#+begin_src conf
|
#+begin_src conf
|
||||||
browser_sort_mode = "format"
|
browser_sort_mode = "format"
|
||||||
@@ -160,51 +166,3 @@ def_key "-"
|
|||||||
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* =beets= - Media library management
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args:conf: :tangle ~/.config/beets/config.yaml
|
|
||||||
:header-args:conf+: :comments both :mkdirp yes
|
|
||||||
:CUSTOM_ID: beets
|
|
||||||
:END:
|
|
||||||
http://beets.io/
|
|
||||||
|
|
||||||
#+begin_src conf
|
|
||||||
directory: ~/Music
|
|
||||||
library: ~/Music/musiclibrary.db
|
|
||||||
art_filename: cover
|
|
||||||
|
|
||||||
import:
|
|
||||||
move: yes
|
|
||||||
|
|
||||||
plugins: fromfilename discogs
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* =curseradio= - Radio with curseradio
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args:conf: :tangle ~/.config/curseradio/curseradio.cfg
|
|
||||||
:header-args:conf+: :comments none :mkdirp yes
|
|
||||||
:CUSTOM_ID: curseradio
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+begin_src conf
|
|
||||||
[opml]
|
|
||||||
root = http://opml.radiotime.com/
|
|
||||||
|
|
||||||
[playback]
|
|
||||||
command = /usr/bin/mpv
|
|
||||||
|
|
||||||
[interface]
|
|
||||||
keymap = vi
|
|
||||||
|
|
||||||
[keymap.vi]
|
|
||||||
up = k
|
|
||||||
down = j
|
|
||||||
start = 0
|
|
||||||
end = $
|
|
||||||
pageup = u
|
|
||||||
pagedown = d
|
|
||||||
enter = l
|
|
||||||
stop = p
|
|
||||||
exit = q
|
|
||||||
favourite = f
|
|
||||||
#+end_src
|
|
||||||
|
|||||||
498
newsboat.org
498
newsboat.org
@@ -1,498 +0,0 @@
|
|||||||
#+TITLE: Newsboat Configuration
|
|
||||||
#+SETUPFILE: ./setup/org-setup-file.org
|
|
||||||
|
|
||||||
https://wiki.archlinux.org/index.php/Newsboat
|
|
||||||
https://newsboat.org/releases/2.12/docs/newsboat.html
|
|
||||||
|
|
||||||
* Config
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.config/newsboat/config
|
|
||||||
:header-args+: :comments both :mkdirp yes
|
|
||||||
:END:
|
|
||||||
|
|
||||||
** Reload configuration
|
|
||||||
#+BEGIN_SRC conf
|
|
||||||
# All feeds will be automatically reloaded after a certain time has passed
|
|
||||||
auto-reload yes
|
|
||||||
|
|
||||||
# The number of minutes between automatic reloads.
|
|
||||||
reload-time 120
|
|
||||||
|
|
||||||
# The number of parallel reload threads that shall be started when all feeds are reloaded.
|
|
||||||
reload-threads 3
|
|
||||||
|
|
||||||
# If set to yes, then the first automatic reload will be suppressed if auto-reload is set to yes.
|
|
||||||
suppress-first-reload yes
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Basic configuration
|
|
||||||
#+BEGIN_SRC conf
|
|
||||||
confirm-exit no
|
|
||||||
|
|
||||||
external-url-viewer "urlscan -dc -r 'linkhandler {}'"
|
|
||||||
|
|
||||||
goto-first-unread no
|
|
||||||
goto-next-feed no
|
|
||||||
|
|
||||||
save-path "~/Documents/newsboat/saved"
|
|
||||||
download-path "~/Documents/newsboat/downloaded"
|
|
||||||
|
|
||||||
# If set to no, then the keymap hints on the bottom of screen will not be displayed.
|
|
||||||
show-keymap-hint no
|
|
||||||
|
|
||||||
player "mpv"
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Queries
|
|
||||||
#+begin_src conf
|
|
||||||
prepopulate-query-feeds yes
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Filters
|
|
||||||
#+begin_src conf :tangle no
|
|
||||||
define-filter "Unread Articles" "unread = \"yes\""
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Notifications
|
|
||||||
#+BEGIN_SRC conf
|
|
||||||
notify-format "%n unread articles"
|
|
||||||
notify-program ~/.config/newsboat/scripts/newsboat-notify.sh
|
|
||||||
notify-always no
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
*** Notification Script
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.config/newsboat/scripts/newsboat-notify.sh
|
|
||||||
:header-args+: :comments both :mkdirp yes
|
|
||||||
:header-args+: :shebang "#!/usr/bin/env bash"
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+begin_src bash
|
|
||||||
notify-send "Newsboat " "$1"
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Bindings
|
|
||||||
#+BEGIN_SRC conf
|
|
||||||
bind-key j down
|
|
||||||
bind-key k up
|
|
||||||
bind-key j next articlelist
|
|
||||||
bind-key k prev articlelist
|
|
||||||
bind-key J next-feed articlelist
|
|
||||||
bind-key K prev-feed articlelist
|
|
||||||
bind-key G end
|
|
||||||
bind-key g home
|
|
||||||
bind-key ^D pagedown
|
|
||||||
bind-key ^U pageup
|
|
||||||
|
|
||||||
bind-key q toggle-show-read-feeds
|
|
||||||
bind-key Q quit
|
|
||||||
|
|
||||||
bind-key l open
|
|
||||||
bind-key h quit
|
|
||||||
|
|
||||||
bind-key a toggle-article-read
|
|
||||||
|
|
||||||
bind-key n next-unread
|
|
||||||
bind-key N prev-unread
|
|
||||||
|
|
||||||
bind-key D pb-download
|
|
||||||
|
|
||||||
bind-key U show-urls
|
|
||||||
|
|
||||||
bind-key t set-tag
|
|
||||||
bind-key T clear-tag
|
|
||||||
|
|
||||||
bind-key r reload # Reload the currently selected feed
|
|
||||||
bind-key R reload-all # Reload all feeds
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Bookmarking
|
|
||||||
#+begin_src conf
|
|
||||||
bookmark-autopilot no
|
|
||||||
bookmark-cmd "~/.config/newsboat/scripts/buku-add.sh"
|
|
||||||
bookmark-interactive no
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Buku Scripts
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.config/newsboat/scripts/buku-add.sh
|
|
||||||
:header-args+: :comments both :mkdirp yes
|
|
||||||
:header-args+: :shebang "#!/usr/bin/env bash"
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+begin_src bash
|
|
||||||
buku --add "$1" --title "$2" --comment "$3" && \
|
|
||||||
notify-send "Buku" "Bookmark Added" && \
|
|
||||||
exit 0
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Macros - Starts with , key
|
|
||||||
#+BEGIN_SRC conf
|
|
||||||
# Default Browser
|
|
||||||
browser linkhandler
|
|
||||||
|
|
||||||
# Open in Browser
|
|
||||||
macro , open-in-browser
|
|
||||||
|
|
||||||
# Download Video with Youtube-DL
|
|
||||||
macro v set browser "cd ~/Documents/to-watch && ~/.local/bin/yt-video %u" ; open-in-browser ; set browser linkhandler
|
|
||||||
|
|
||||||
# Download Audio with Youtube-DL
|
|
||||||
macro a set browser "cd ~/Documents/to-watch && ~/.local/bin/yt-audio %u" ; open-in-browser ; set browser linkhandler
|
|
||||||
|
|
||||||
# Open Video with MPV
|
|
||||||
macro m set browser "setsid nohup mpv %u &> /dev/null &" ; open-in-browser ; set browser linkhandler
|
|
||||||
|
|
||||||
# Open With W3M
|
|
||||||
macro w set browser "w3m %u" ; open-in-browser ; set browser linkhandler
|
|
||||||
|
|
||||||
# Copy Address to clipboard
|
|
||||||
macro c set browser "xsel -b <<<" ; open-in-browser ; set browser linkhandler
|
|
||||||
|
|
||||||
# Quit
|
|
||||||
macro q set browser "tmux detach" ; open-in-browser ; set browser linkhandler
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** hide articles matching
|
|
||||||
#+BEGIN_SRC conf :tangle no
|
|
||||||
ignore-article "*" "title =~ \"Sponsor\""
|
|
||||||
ignore-article "*" "title =~ \"Advertisement\""
|
|
||||||
ignore-mode "display"
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Feedlist and Article Format
|
|
||||||
#+BEGIN_SRC conf
|
|
||||||
feedlist-format "%4i %n %11u %t"
|
|
||||||
feedlist-title-format "N %V - Your feeds (%u unread, %t total)%?T? - tag `%T'&?"
|
|
||||||
|
|
||||||
articlelist-format "%3i %f %D %?T?|%-17T| ?%t"
|
|
||||||
articlelist-title-format "%N %V - Articles in feed '%T' (%u unread, %t total) - %U"
|
|
||||||
|
|
||||||
itemview-title-format "Article '%T'"
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Color Scheme
|
|
||||||
#+BEGIN_SRC conf
|
|
||||||
include "~/.config/newsboat/colors"
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
* Colors
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.config/newsboat/colors
|
|
||||||
:header-args+: :comments both :mkdirp yes
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+BEGIN_SRC conf
|
|
||||||
color background default default
|
|
||||||
color listnormal default default
|
|
||||||
color listnormal_unread default default
|
|
||||||
color listfocus black yellow
|
|
||||||
color listfocus_unread black yellow
|
|
||||||
color info default black
|
|
||||||
color article default default
|
|
||||||
|
|
||||||
# highlights
|
|
||||||
highlight article "^(Title):.*$" blue default
|
|
||||||
highlight article "https?://[^ ]+" red default
|
|
||||||
highlight article "\\[image\\ [0-9]+\\]" green default
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
* URLS
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.config/newsboat/urls
|
|
||||||
:header-args+: :comments both :mkdirp yes
|
|
||||||
:END:
|
|
||||||
|
|
||||||
** Queries
|
|
||||||
#+begin_src conf :tangle no
|
|
||||||
"query:Unread:unread = \"yes\""
|
|
||||||
"query:Unwatch - Youtube:unread = \"yes\" and tags # \"youtube\""
|
|
||||||
"query:Unread - Linux:unread = \"yes\" and tags # \"linux\""
|
|
||||||
"query:Unread - Emacs:unread = \"yes\" and tags # \"emacs\""
|
|
||||||
"query:Unread - Sciences:unread = \"yes\" and tags # \"science\""
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Newsfeeds
|
|
||||||
*** Matlab and Control
|
|
||||||
#+begin_src conf
|
|
||||||
https://undocumentedmatlab.com/feed/ "~RSS undocumentedmatlab" matlab
|
|
||||||
http://blogs.mathworks.com/seth/feed/ "~RSS Guy on Simulink" matlab control
|
|
||||||
http://blogs.mathworks.com/loren/?feed=rss2 "~RSS Loren on the Art of MATLAB" matlab
|
|
||||||
http://blogs.mathworks.com/pick/feed/ "~RSS File Exchange Pick of the Week" matlab
|
|
||||||
https://enriquedelsol.com/feed/ "~RSS Enrique del Sol" control
|
|
||||||
http://brettbeauregard.com/blog/feed/ "~RSS Project Blog" control
|
|
||||||
https://mburkeonmbd.com/feed/ "~RSS Model-Based Design" control matlab
|
|
||||||
https://medium.com/feed/@mithi "~RSS Medium - Mithi" control
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Audio and Electronics
|
|
||||||
#+begin_src conf
|
|
||||||
http://jipihorn.wordpress.com/feed/ "~RSS Jipihorn's Blog" electronics audio
|
|
||||||
https://quantasylum.com/blogs/news.atom "~RSS QuantAsylum" audio
|
|
||||||
https://www.scrample.xyz/index.xml "~RSS Scrample" electronics
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Science
|
|
||||||
#+begin_src conf
|
|
||||||
http://sciencetonnante.wordpress.com/feed/ "~RSS Science étonnante" science
|
|
||||||
https://brushingupscience.com/feed/ "~RSS Brushing Up Science" science
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Linux, Emacs and Computer Science
|
|
||||||
#+begin_src conf
|
|
||||||
https://yiufung.net/index.xml "~RSS yiufung" emacs
|
|
||||||
https://bzg.fr/index.xml "~RSS bzg" emacs
|
|
||||||
https://thomashartmann.dev/rss.xml "~RSS thomashartmann.dev" emacs linux
|
|
||||||
http://cachestocaches.com/feed/ "~RSS CachesToCaches" emacs
|
|
||||||
http://frederic.bezies.free.fr/blog/?feed=rss2 "~RSS Le Weblog de Frederic Bezies" linux
|
|
||||||
https://la-bibliotex.fr/feed/ "~RSS La biblioTeX" latex
|
|
||||||
https://so.nwalsh.com/feed/ "~RSS so..." emacs
|
|
||||||
http://karl-voit.at/feeds/lazyblorg-all.atom_1.0.links-and-content.xml "~RSS Public Voit" emacs
|
|
||||||
https://people.umass.edu/weikaichen/index.xml "~RSS Weikai Chen" emacs
|
|
||||||
https://babbagefiles.xyz/index.xml "~RSS The Neo-Babbage Files" linux emacs
|
|
||||||
https://write.as/dani/feed/ "~RSS Dani" emacs
|
|
||||||
https://lepisma.xyz/atom.xml "~RSS Lepisma" emacs
|
|
||||||
http://kitchingroup.cheme.cmu.edu/blog/feed "~RSS The Kitchin Research Group" emacs
|
|
||||||
http://lukesmith.xyz/rss.xml "~RSS The Latest from Luke" linux
|
|
||||||
http://manuel-uberti.github.io/feed.xml "~RSS Manuel Uberti" emacs
|
|
||||||
https://lord.re/index.xml "~RSS /home/lord" linux
|
|
||||||
https://beepb00p.xyz/rss.xml "~RSS beepb00p" linux emacs
|
|
||||||
http://pragmaticemacs.com/feed/ "~RSS Pragmatic Emacs" emacs
|
|
||||||
https://jonathanabennett.github.io/rss.xml "~RSS Jonathan Bennett's Blog" emacs
|
|
||||||
https://joshrollinswrites.com/index.xml "~RSS The Art of Not Asking Why" emacs linux
|
|
||||||
http://endlessparentheses.com/atom.xml "~RSS Endless Parentheses" emacs
|
|
||||||
https://www.gonsie.com/blorg/feed.xml "~RSS Elsa Gonsiorowski" emacs
|
|
||||||
http://tiagoweber.github.io/blog.xml "~RSS Tiago Oliveira Weber" matlab emacs science
|
|
||||||
https://shreyas.ragavan.co/index.xml "~RSS Shreyas Ragavan" emacs
|
|
||||||
https://pinecast.com/feed/emacscast "~RSS EmacsCast" emacs
|
|
||||||
http://amitp.blogspot.com/feeds/posts/default "~RSS Amit's Thoughts" emacs
|
|
||||||
http://sachachua.com/wp/category/emacs/feed/ "~RSS Sacha Chua" emacs
|
|
||||||
https://cestlaz.github.io/rss.xml "~RSS C'est la Z" emacs
|
|
||||||
https://www-public.imtbs-tsp.eu/~berger_o/weblog/tag/org-mode/feed/ "~RSS WebLog Pro Olivier Berger" emacs
|
|
||||||
https://scripter.co/index.xml "~RSS A Scripter's Notes" linux emacs
|
|
||||||
https://assortedarray.com/index.xml "~RSS Assorted Array" emacs
|
|
||||||
https://www.with-emacs.com/rss.xml "~RSS with-emacs" emacs
|
|
||||||
https://linktohack.com/index.xml "~RSS QL's blog" emacs
|
|
||||||
https://itsfoss.com/feed "~RSS It's FOSS" linux
|
|
||||||
https://llazarek.com/feeds/all.rss.xml "~RSS llazarek" emacs
|
|
||||||
https://200ok.ch/rss.xml "~RSS 200ok" emacs
|
|
||||||
http://irreal.org/blog/?feed=rss2 "~RSS Irreal" emacs
|
|
||||||
https://emacs.cafe/feed.xml "~RSS Emacs café" emacs
|
|
||||||
http://vxlabs.com/feed/ "~RSS vxlabs" emacs linux
|
|
||||||
https://www.rousette.org.uk/index.xml "~RSS But she's a Girl..." emacs
|
|
||||||
https://www.anand-iyer.com/feed.xml "~RSS Anand Iyer" emacs
|
|
||||||
https://addy-dclxvi.github.io/index.xml "~RSS Addy's Blog" linux
|
|
||||||
https://ekaschalk.github.io/index.xml "~RSS Modern Emacs" emacs
|
|
||||||
http://howardism.org/index.xml "~RSS Howardism" emacs
|
|
||||||
http://xkcd.com/rss.xml "~RSS XKCD" random
|
|
||||||
https://blog.jethro.dev/index.xml "~RSS Jethro Kuan" emacs
|
|
||||||
https://lord.re/posts/index.xml "~RSS Lord~" linux
|
|
||||||
https://rgoswami.me/posts/index.xml "~RSS Rohit Goswami~" linux emacs
|
|
||||||
https://translucentink.gitlab.io/rss.xml "~RSS Translucent Ink" emacs
|
|
||||||
https://jherrlin.github.io/index.xml "~RSS Jherrlin" emacs linux
|
|
||||||
https://camsaul.com/feed.xml "~RSS Camsaul" emacs
|
|
||||||
https://ag91.github.io/rss.xml "~RSS Were Parallels Cross" emacs
|
|
||||||
# https://jonathanh.co.uk/
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Youtube
|
|
||||||
*** Matlab and Control
|
|
||||||
#+begin_src conf
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCm5mt-A4w61lknZ9lCsZtBw "~YT Steve Brunton" youtube control science
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCoUOaSVYkTV6W4uLvxvgiFA "~YT Nathan Kutz" youtube science control
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCSlhlkPaq3RL1CP0Tv1xWBQ "~YT MIT Institute for Data, Systems, and Society" youtube science control
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCmkP178NasnhR3TWQyyP4Gw "~YT How To Mechatronics" youtube science control
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCGNxF654kRelnM0nKxM6QDQ "~YT Tom Oomen" youtube science control
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCRCdl2SXma02BG384RuZPqg "~YT katkimshow" youtube science control
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCq0imsn84ShAe9PBOFnoIrg "~YT Brian Douglas" youtube control
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC7vVhkEfw4nOGp8TyDk7RcQ "~YT BostonDynamics" youtube control engineering
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCPUuVY7w8brL0r__P8UBgyQ "~YT Christopher Lum" youtube matlab control
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCNm2TzhsV5wGlFIAcpCx9hQ "~YT Jousef Murad" youtube engineering matlab
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCMBXZxd-j6VqrynykO1dURw "~YT John Rossiter" youtube control
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Audio and Electronics
|
|
||||||
#+begin_src conf
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCI-FgEdZQxBASsm3HNcWKxQ "~YT Red Robbo's Workshop" youtube linux audio
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCtpB66XKjAtFZfZyzmC-_Cg "~YT HexiBase" youtube audio
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCGIr92yrDW4cRLD-QaZmS6w "~YT Ethan Winer" youtube audio
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCslWMxX93gcaiXwxMv4asHA "~YT Jean Maurer Swiss Audio Manufacture SA" youtube audio
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC6mzA8J7n0ylf0RnDpj-vrg "~YT PS Audio" youtube audio
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCy0tKL1T7wFoYcxCe0xjN6Q "~YT Technology Connections" youtube audio engineering
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCSqyMHDUsc1gs6wz4sUy91w "~YT jipihorn" youtube electronics audio
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCOuow_HIYmeaIqi42zVs3qg "~YT Kirby Meets Audio" youtube audio
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCWOhWAOydPUqillkpt5UlaA "~YT Dakoustics" youtube audio
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCm2rchKqdoSKdB448TTVEnQ "~YT Impulse Audio" youtube audio
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC5QPFDZ3Y4ylkkGJc6Y1OOA "~YT Philippe Demerliac" youtube electronics
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCVqx3vXNghSqUcVg2nmegYA "~YT U꞊RI" youtube electronics diy
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCUJQSGHlYC9Xyz-uNfSpSsA "~YT ElectronikHeart" youtube electronics
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC74xmXx1NfeIIa44J1IU84w "~YT Audio Fest" youtube audio
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCP_yR0wxxyLa46rRgsmje3Q "~YT DIY Speaker Building" youtube audio
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCVryWqJ4cSlbTSETBHpBUWw "~YT Phil S" youtube electronics control
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Linux, Emacs and Computer Science
|
|
||||||
#+begin_src conf
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCNqFXwI5gNcyxt2c1zTQAKw "~YT Yisrael Dov L" youtube emacs
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC2eYFnH61tmytImy1mTYvhA "~YT Luke Smith" youtube linux
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCkf4VIqu3Acnfzuk3kRIFwA "~YT gotbletu" youtube linux
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCVHICXXtKG7rZgtC5xonNdQ "~YT Howard Abrams" youtube emacs
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCEfFUaIkjbI06PhALdcXNVA "~YT EmacsCast" youtube emacs
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCzgkOWKcwy0uhYilE6bd1Lg "~YT Zaiste Programming" youtube emacs
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC5dAH2txWtKSsgmRglRB88A "~YT kyptin" youtube emacs
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCld68syR8Wi-GY_n4CaoJGA "~YT Brodie Robertson" youtube linux
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCXPHFM88IlFn68OmLwtPmZA "~YT Greg Hurrell" youtube linux
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCxjDcP3Su59bg5VDnlwyt5A "~YT Bailey Ling" youtube emacs
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCi8XrDg1bK_MJ0goOnbpTMQ "~YT budlabs" youtube linux
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCfbGTpcJyEOMwKP-eYz3_fg "~YT Rainer König" youtube emacs
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCsnGwSIHyoYN0kiINAGUKxg "~YT Wolfgang's Channel" youtube linux
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCQp2VLAOlvq142YN3JO3y8w "~YT John Kitchin" youtube emacs
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCFk8kgNu_bqsRZewxMGqkzQ "~YT Emacs SF" youtube emacs
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCIFJHWyIlN0XFrW2vMKG6QA "~YT Alain M. Lafon" youtube emacs
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCvA_wgsX6eFAOXI8Rbg_WiQ "~YT tutoriaLinux" youtube linux
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCUF4bHszxd8T4ulrvLejumA "~YT Alexander Fu" youtube emacs
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCbW6-rTEn6nPj56K_9dLozQ "~YT Gilles Castel" youtube linux
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCUR1pFG_3XoZn3JNKjulqZg "~YT thoughtbot" youtube linux emacs
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCVls1GmFKf6WlTraIb_IaJg "~YT DistroTube" youtube linux
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCDEtZ7AKmwS0_GNJog01D2g "~YT Uncle Dave" youtube emacs
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCYnrHo7CDgKobmoJ3Borrnw "~YT Niklas Carlsson" youtube emacs
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCljOhRB2a3sQgLCdK9CHQvQ "~YT Leafshade Software" youtube linux
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCwRXb5dUK4cvsHbx-rGzSgw "~YT Derek Banas" youtube linux
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCP2bshADPrVMoNrdJvZEQzw "~YT KeepItTechie" youtube linux
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCVRJ6D343dX-x730MRP8tNw "~YT cocadmin" youtube linux
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCxkMDXQ5qzYOgXPRnOBrp1w "~YT Mike Zamansky" youtube emacs
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCgREucssIfY9e0Iy3yhse8w "~YT Conner McDaniel" youtube linux
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCkRmQ_G_NbdbCQMpALg6UPg "~YT emacsrocks" youtube emacs
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC0uTPqBCFIpZxlz_Lv1tk_g "~YT Protesilaos Stavrou" youtube emacs
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCsJXkw_Ssp-1myJFm4_SMJA "~YT Seorenn" youtube emacs
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCvrQyT2xhsxq2a4Xopf2JTA "~YT Zaeph" youtube emacs
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCYnl1cugi7Lv1h8j6JNqNEg "~YT Dima Gerasimov" youtube emacs
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCDKPGD9T00eS_l--D_DRTUQ "~YT Linuxtricks" youtube linux
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCcCeYbIBGQPB1G12psAPMKw "~YT Spudlyo" youtube emacs
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCS97tchJDq17Qms3cux8wcA "~YT Chrisatmachine" youtube linux
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCwFpzG5MK5Shg_ncAhrgr9g "~YT Awesome Open Source" youtube linux
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC7YOGHUfC1Tb6E4pudI9STA "~YT Mental Outlaw" youtube linux
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** 3D-Printing and DIY
|
|
||||||
#+begin_src conf
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCGEBcDJ7QIY1LuEddDM9x9Q "~YT Oldies" youtube 3d-printing
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCqdRx3JV3xRchi4_xwFJUTA "~YT 8FabLab" youtube diy
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCCsdIja21VT7AKkbVI5y8bQ "~YT Alain Vaillancourt" youtube diy
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCyi6pFP-lmaDD3Eb4dqsvdg "~YT ioduremetallique" youtube diy
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCYI8olK-jH9Ubc2FaA2LgPw "~YT Egalistel" youtube 3d-printing
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCSULDz1yaHLVQWHpm4g_GHA "~YT monsieur bidouille" youtube diy
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC2UT8pPDlUvRbQXTVOf5Ocw "~YT Henri Hihacks" youtube diy
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCLecVrux63S6aYiErxdiy4w "~YT BRUH Automation" youtube diy
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCQfMyugsjrVUWU0v_ZxQs2Q "~YT Machine Tech Video Blog" youtube diy engineering
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCjED9uS41ioeFuPfbR-OBlw "~YT Les Freres Poulain" youtube diy
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCVSHXNNBitaPd5lYz48--yg "~YT Tech Ingredients" youtube diy
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCPFChjpOgkUqckj3378jt5w "~YT Heliox" youtube 3d-printing
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC9_nxvBohH1G2yR77XTdA2g "~YT Tommy Desrochers" youtube 3d-printing diy
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC6mIxFTvXkWQVEHPsEdflzQ "~YT GreatScott" youtube diy
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Interesting - General
|
|
||||||
#+begin_src conf
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC5eOLQO5VUEFJukNg9cl5jg "~YT Histoire Brève" youtube interesting
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCMFcMhePnH4onVHt2-ItPZw "~YT Hygiène Mentale" youtube interesting
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC9BnGZLT4iPaJtDOXYwQuHQ "~YT Primum Non Nocere" youtube interesting
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCP46_MXP_WG_auH88FnfS1A "~YT Nota Bene" youtube interesting
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCUR03ZSZlEvCO6EWwv4jU2w "~YT Absol Vidéos" youtube interesting
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCWty1tzwZW_ZNSp5GVGteaA "~YT La statistique expliquée à mon chat" youtube interesting
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCLbgxBMMEo6mAYe87esxGmg "~YT horror humanum est" youtube interesting
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCOuIgj0CYCXCvjWywjDbauw "~YT Chat Sceptique" youtube interesting
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Science
|
|
||||||
#+begin_src conf
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCwgqYNmYaij2_8hq_tOFyZw "~YT Aurelien Barrau" youtube science
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCeR8BYZS7IHYjk_9Mh5JgkA "~YT Scilabus" youtube science
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC1Ue7TuX3iH4y8-Qrjj-hyg "~YT J'm'énerve pas, j'explique" youtube science
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCjsHDXUU3BjBCG7OaCbNDyQ "~YT Le Sense Of Wonder" youtube science
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC4PasDd25MXqlXBogBw9CAg "~YT Mickaël Launay" youtube science
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCsz9DiwPtgDvxJ-njWnieZw "~YT Passe-Science" youtube science
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC_GlthPB9gzdxfkTTEIVxMA "~YT Incroyables Expériences" youtube science engineering
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCxqAWLTk1CmBvZFPzeZMd9A "~YT Domain of Science" youtube science
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCaNlbnghtwlsGF-KzAFThqA "~YT ScienceEtonnante" youtube science
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCeQEKFH31vvD-InkTGSvCrA "~YT brusspup" youtube science
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCHnyfMqiRRG1u-2MsSQLbXA "~YT Veritasium" youtube science
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCH6ppHEvV3_WIXEwmhv9HEg "~YT Deus Ex Silicium" youtube engineering science
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC2LZO6swZ9SLUEOks3WnsfA "~YT 2veritasium" youtube science
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCvGag7MyHR8H9oRm9iL9Ifw "~YT Experimentboy" youtube science
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC6107grRI4m0o2-emgoDnAA "~YT SmarterEveryDay" youtube science
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCtqICqGbPSbTN09K1_7VZ3Q "~YT DirtyBiology" youtube science
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC_ZChHhr5nDrUymz7qsRqRw "~YT Confér'ENS" youtube science
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCNmLe68qKzdjuEpT_YTDFuA "~YT Etonnarium" youtube science
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCCSN5zJTKjl6UKvPcLzLuiw "~YT Macroscopie" youtube science
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC7DdEm33SyaTDtWYGO2CwdA "~YT Physics Girl" youtube science
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Keyboard
|
|
||||||
#+begin_src conf
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC5ClFK9Ko4ACRgXjRZc_GfA "~YT Rhinofeed" youtube keyboards
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC2yitP8oH86YBRVU4anycoA "~YT Quentin Lebastard" youtube keyboards
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Music
|
|
||||||
#+begin_src conf
|
|
||||||
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC3gZqwD45zGCsduBn-Q2lew "~YT Gabrielle Grau" youtube music
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCZHPwKyeypWwU8SNJSzQhCw "~YT Révisons nos Classiques" youtube music
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCPpNtkHeCnwN7Tl5oLq4AAg "~YT Une chanson, l'addition" youtube music
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC_17P1ruDpCVujf7C_SxhOA "~YT Metalliquoi" youtube music
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCzabZYC0MYRR2MFkq62d6yQ "~YT Florent Garcia" youtube music
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Space
|
|
||||||
#+begin_src conf
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCdL3UpiseRlvxXuORJjmqZw "~YT Stardust" youtube space
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC5X4e8ScZI2AFd_vkjSoyoQ "~YT AstronoGeek" youtube space
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Engineering
|
|
||||||
#+begin_src conf
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCotwjyJnb-4KW7bmsOoLfkg "~YT Art of the Problem" youtube engineering
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCR1IuLEqb6UEA_zQ81kwXfg "~YT Real Engineering" youtube engineering
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCfsznjef2zGJnrCRQBXqo6Q "~YT Machine Thinking" youtube engineering
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC2bkHVIDjXS7sgrgjFtzOXQ "~YT engineerguy" youtube engineering
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCivA7_KLKWo43tFcCkFvydw "~YT Applied Science" youtube science engineering
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCk0fGHsCEzGig-rSzkfCjMw "~YT The Engineering Mindset" youtube engineering
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC5_Y-BKzq1uW_2rexWkUzlA "~YT New Mind" youtube engineering
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
*** Random - Fun - Others
|
|
||||||
#+begin_src conf
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCJM10Rp7G0h9j5S92QszJ5Q "~YT Tales From The Click" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCCMxHHciWRBBouzk-PGzmtQ "~YT Bazar du Grenier" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCTt2AnK--mnRmICnf-CCcrw "~YT Le Rire Jaune" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCJRljQ8OcyfzHBYpS_bDbow "~YT La Mezzanine" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCVTAmJvZOxuj9Kto8Ty9L8Q "~YT Rapha Gaming" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCTafEJoRl5myC8A50plIrng "~YT FabienOlicard" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCZeyUZmGAyRLDfM2ir3q-OQ "~YT Captain Popcorn" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCwzxu1j19ICnfW5zrBvUw-w "~YT Une bière et Jivay" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCPF7JOWMDWZmnP_cQfyAezg "~YT Scinéma" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCUK0HBIBWgM2c4vsPhkYY4w "~YT The Slow Mo Guys" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCxeA1l2E5AYrtpkqUbBEg3A "~YT Pierre Lecourt" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCYD22MFqaNqXp-ogTMosW_A "~YT Le Show Jaune" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC4HANn7TBY-xcION-eL3rLA "~YT Daniil le Russe" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCf0mOxfawezlHIVuHd3L2VA "~YT Didi Chandouidoui" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCw3tZ7g_FljNjzGprCuptpA "~YT Taupe10" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCfXXAQ-mp1uUcvSpvMcAAtw "~YT LinksTheSun" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCWeg2Pkate69NFdBeuRFTAw "~YT Squeezie" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCtI6_1vGanPlH5lgVIDjJGQ "~YT MrAntoineDaniel" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCm3C3OSgcyzaTBXrNRupB3Q "~YT Le Woop" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCuBzVunAVbcwzMfQaJVacuw "~YT LE ROI DES RATS" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCyWqModMQlbIo8274Wh_ZsQ "~YT Cyprien" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCAFQjCZo5okIPkHUQlBZM-g "~YT Bonjour Tristesse" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCoZoRz4-y6r87ptDp4Jk74g "~YT Palmashow" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCww2zZWg4Cf5xcRKG-ThmXQ "~YT NORMAN FAIT DES VIDÉOS" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCkEa1AfdeB93-he4VziKGFg "~YT JIGMÉ" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCND0gjuG9ltEWDvh82VJITg "~YT Jeannot Nymouce" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCP5tjEmvPItGyLhmjdwP7Ww "~YT RealLifeLore" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCwbV8cTR4yBgFdfa_BXV2OA "~YT Le Fossoyeur de Films" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCGgvKW19IWVvUUblrr8EgHA "~YT Experimentboy 2" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCJZ94qp4dtCw0Q5UQqAkg7w "~YT larsandersen23" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UCDPK_MTu3uTUFJXRVcTJcEw "~YT Mcfly et Carlito" youtube random
|
|
||||||
https://www.youtube.com/feeds/videos.xml?channel_id=UC2_OG1L8DLTzQ7UrZVOk7OA "~YT Axolot" youtube random
|
|
||||||
#+end_src
|
|
||||||
42
pcmanfm.org
42
pcmanfm.org
@@ -1,42 +0,0 @@
|
|||||||
#+TITLE: PCManFM
|
|
||||||
#+SETUPFILE: ./setup/org-setup-file.org
|
|
||||||
#+PROPERTY: header-args:bash :comments both
|
|
||||||
#+PROPERTY: header-args:bash+ :mkdirp yes
|
|
||||||
#+PROPERTY: header-args:bash+ :shebang "#!/bin/sh"
|
|
||||||
#+PROPERTY: header-args:bash+ :tangle ~/.config/pcmanfm/default/pcmanfm.conf
|
|
||||||
|
|
||||||
* Config
|
|
||||||
#+BEGIN_SRC conf
|
|
||||||
[config]
|
|
||||||
bm_open_method=0
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
* Volume
|
|
||||||
#+BEGIN_SRC conf
|
|
||||||
[volume]
|
|
||||||
mount_on_startup=0
|
|
||||||
mount_removable=0
|
|
||||||
autorun=0
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
* UI
|
|
||||||
#+BEGIN_SRC conf
|
|
||||||
[ui]
|
|
||||||
always_show_tabs=0
|
|
||||||
max_tab_chars=32
|
|
||||||
win_width=1263
|
|
||||||
win_height=690
|
|
||||||
splitter_pos=150
|
|
||||||
media_in_new_tab=0
|
|
||||||
desktop_folder_new_win=0
|
|
||||||
change_tab_on_drop=1
|
|
||||||
close_on_unmount=1
|
|
||||||
focus_previous=0
|
|
||||||
side_pane_mode=places
|
|
||||||
view_mode=icon
|
|
||||||
show_hidden=0
|
|
||||||
sort=mtime;descending;
|
|
||||||
toolbar=newtab;navigation;home;
|
|
||||||
show_statusbar=1
|
|
||||||
pathbar_mode_buttons=0
|
|
||||||
#+END_SRC
|
|
||||||
480
polybar.org
480
polybar.org
@@ -52,7 +52,7 @@ line-size = 2
|
|||||||
border-size = 0
|
border-size = 0
|
||||||
|
|
||||||
padding-left = 2
|
padding-left = 2
|
||||||
padding-right = 12
|
padding-right = 16
|
||||||
|
|
||||||
module-margin-left = 1
|
module-margin-left = 1
|
||||||
module-margin-right = 1
|
module-margin-right = 1
|
||||||
@@ -62,7 +62,7 @@ font-1 = unifont:fontformat=truetype:size=8:antialias=false;0
|
|||||||
|
|
||||||
modules-left = i3 xwindow
|
modules-left = i3 xwindow
|
||||||
modules-center =
|
modules-center =
|
||||||
modules-right = pulseaudio drive_monochromator drive_tmp drive_homelab drive_groupshare drive_data_id21 drive_unix_home dunst cursor unread_mail calendar battery date
|
modules-right = mpd pulseaudio tunnel_homelab tunnel_esrf dunst cursor unread_mail calendar timer battery date
|
||||||
|
|
||||||
# wm-restack = i3
|
# wm-restack = i3
|
||||||
|
|
||||||
@@ -128,7 +128,7 @@ label-urgent-padding = 1
|
|||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
[module/mpd]
|
[module/mpd]
|
||||||
type = internal/mpd
|
type = internal/mpd
|
||||||
format-online = <icon-prev> <toggle> <icon-next> %{A1:$TERMINAL -e ncmpcpp &:}<label-song>%{A}
|
format-online = <toggle> %{A1:$TERMINAL -e tmux new-session -A -s ncmpcpp ncmpcpp:}<label-song>%{A}
|
||||||
|
|
||||||
format-online-spacing = 0
|
format-online-spacing = 0
|
||||||
format-online-padding = 0
|
format-online-padding = 0
|
||||||
@@ -141,13 +141,13 @@ label-song = %artist% - %title%
|
|||||||
label-song-maxlen = 30
|
label-song-maxlen = 30
|
||||||
label-song-ellipsis = true
|
label-song-ellipsis = true
|
||||||
|
|
||||||
icon-prev = 寧
|
icon-prev =
|
||||||
icon-stop = 栗
|
icon-stop =
|
||||||
icon-play = 契
|
icon-play =
|
||||||
icon-pause =
|
icon-pause =
|
||||||
icon-next = 嶺
|
icon-next =
|
||||||
icon-random = 咽
|
icon-random =
|
||||||
icon-repeat = 凌
|
icon-repeat =
|
||||||
|
|
||||||
# Used to display the state of random/repeat/repeatone/single
|
# Used to display the state of random/repeat/repeatone/single
|
||||||
# Only applies if <icon-[random|repeat|repeatone|single]> is used
|
# Only applies if <icon-[random|repeat|repeatone|single]> is used
|
||||||
@@ -189,7 +189,7 @@ interval = 2
|
|||||||
format-prefix-foreground = ${colors.fg}
|
format-prefix-foreground = ${colors.fg}
|
||||||
format-underline = ${colors.bg}
|
format-underline = ${colors.bg}
|
||||||
|
|
||||||
label = %{A1:$TERMINAL -e htop &:} %percentage:2%%%{A}
|
label = %{A1:$TERMINAL -e htop &:} %percentage:2%%%{A}
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
* Date
|
* Date
|
||||||
@@ -221,7 +221,7 @@ format-volume =%{A1:pavucontrol &:}<label-volume> <bar-volume>%{A}
|
|||||||
label-volume = %percentage%%
|
label-volume = %percentage%%
|
||||||
label-volume-foreground = ${root.foreground}
|
label-volume-foreground = ${root.foreground}
|
||||||
|
|
||||||
label-muted = ﱝ muted
|
label-muted = muted
|
||||||
|
|
||||||
bar-volume-width = 10
|
bar-volume-width = 10
|
||||||
bar-volume-foreground-0 = ${colors.green}
|
bar-volume-foreground-0 = ${colors.green}
|
||||||
@@ -291,6 +291,7 @@ ramp-foreground = ${colors.fg}
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Unread Mails
|
* Unread Mails
|
||||||
|
** Module
|
||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
[module/unread_mail]
|
[module/unread_mail]
|
||||||
type = custom/script
|
type = custom/script
|
||||||
@@ -310,12 +311,12 @@ interval = 2
|
|||||||
:header-args+: :shebang "#!/usr/bin/env bash"
|
:header-args+: :shebang "#!/usr/bin/env bash"
|
||||||
:END:
|
:END:
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
mail_nb=`du -a ~/.mail/*/Inbox/new/* 2>/dev/null | wc -l`
|
mail_nb=`du -a ~/.local/share/mails/*/Inbox/new/* 2>/dev/null | wc -l`
|
||||||
|
|
||||||
if [ "$mail_nb" -eq "0" ]; then
|
if [ "$mail_nb" -eq "0" ]; then
|
||||||
echo "";
|
echo "";
|
||||||
else
|
else
|
||||||
echo "%{F#859900} $mail_nb%{F-}";
|
echo "%{F#859900} $mail_nb%{F-}";
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -326,11 +327,11 @@ fi
|
|||||||
:header-args+: :shebang "#!/usr/bin/env bash"
|
:header-args+: :shebang "#!/usr/bin/env bash"
|
||||||
:END:
|
:END:
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
notify-send --hint=string:x-dunst-stack-tag:YpqAgorv "Mails " "Syncing...";
|
dunstify --replace=98465 "Mails " "Syncing...";
|
||||||
checkmail -q && \
|
checkmail -q && \
|
||||||
mail_nb=`du -a ~/.mail/*/Inbox/new/* 2>/dev/null | wc -l` && \
|
mail_nb=`du -a ~/.local/share/mails/*/Inbox/new/* 2>/dev/null | wc -l` && \
|
||||||
if [ "$mail_nb" -eq "0" ]; then
|
if [ "$mail_nb" -eq "0" ]; then
|
||||||
notify-send --hint=string:x-dunst-stack-tag:YpqAgorv "Mails " "No new mail";
|
dunstify --replace=98465 "Mails " "No new mail";
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -344,65 +345,8 @@ checkmail -q && \
|
|||||||
$TERMINAL -e tmux new-session -A -s neomutt neomutt
|
$TERMINAL -e tmux new-session -A -s neomutt neomutt
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Unread News
|
|
||||||
#+BEGIN_SRC conf
|
|
||||||
[module/unread_news]
|
|
||||||
type = custom/script
|
|
||||||
|
|
||||||
format-underline = ${colors.bg}
|
|
||||||
click-left = ~/.config/polybar/scripts/news-open.sh >/dev/null 2>%1 &
|
|
||||||
click-right = ~/.config/polybar/scripts/news-refresh.sh >/dev/null 2>%1 &
|
|
||||||
format = <label>
|
|
||||||
exec = ~/.config/polybar/scripts/news-status.sh
|
|
||||||
interval = 60
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Unread News Scripts
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.config/polybar/scripts/news-status.sh
|
|
||||||
:header-args+: :comments both :mkdirp yes
|
|
||||||
:header-args+: :shebang "#!/usr/bin/env bash"
|
|
||||||
:END:
|
|
||||||
#+begin_src bash
|
|
||||||
news_nb=`newsboat -x print-unread 2>/dev/null | cut -d " " -f1`
|
|
||||||
|
|
||||||
if [ -z "$news_nb" ] || [ "$news_nb" -eq "0" ]; then
|
|
||||||
echo "";
|
|
||||||
else
|
|
||||||
echo "%{F#859900} $news_nb%{F-}";
|
|
||||||
fi
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Refresh News Scripts
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.config/polybar/scripts/news-refresh.sh
|
|
||||||
:header-args+: :comments both :mkdirp yes
|
|
||||||
:header-args+: :shebang "#!/usr/bin/env bash"
|
|
||||||
:END:
|
|
||||||
#+begin_src bash
|
|
||||||
notify-send --hint=string:x-dunst-stack-tag:4z5CvV6G "Newsboat " "Reloading...";
|
|
||||||
|
|
||||||
if pgrep -x "newsboat" >/dev/null; then
|
|
||||||
# If newsboat is already running, try to refresh in the tmux session
|
|
||||||
tmux send-keys -t newsboat R
|
|
||||||
else
|
|
||||||
newsboat -x reload && /
|
|
||||||
news_nb=`newsboat -x print-unread | cut -d " " -f1` && \
|
|
||||||
notify-send --hint=string:x-dunst-stack-tag:4z5CvV6G "Newsboat " "$news_nb Unread News";
|
|
||||||
fi
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Open Newsboat
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.config/polybar/scripts/news-open.sh
|
|
||||||
:header-args+: :comments both :mkdirp yes
|
|
||||||
:header-args+: :shebang "#!/usr/bin/env bash"
|
|
||||||
:END:
|
|
||||||
#+begin_src bash
|
|
||||||
$TERMINAL -e tmux new-session -A -s newsboat newsboat
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* Calendar
|
* Calendar
|
||||||
|
** Module
|
||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
[module/calendar]
|
[module/calendar]
|
||||||
type = custom/script
|
type = custom/script
|
||||||
@@ -458,6 +402,7 @@ $TERMINAL --title=khal -e ikhal
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Redshift
|
* Redshift
|
||||||
|
** Module
|
||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
[module/redshift]
|
[module/redshift]
|
||||||
type = custom/script
|
type = custom/script
|
||||||
@@ -477,9 +422,9 @@ interval = 2
|
|||||||
:END:
|
:END:
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
if pgrep -x "redshift" >/dev/null; then
|
if pgrep -x "redshift" >/dev/null; then
|
||||||
echo "望";
|
echo "";
|
||||||
else
|
else
|
||||||
echo "盛";
|
echo "";
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -492,76 +437,15 @@ fi
|
|||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
if pgrep -x "redshift" >/dev/null; then
|
if pgrep -x "redshift" >/dev/null; then
|
||||||
killall redshift && \
|
killall redshift && \
|
||||||
notify-send --hint=string:x-dunst-stack-tag:EKFLpst1 "Redshift 望" "Turned off";
|
dunstify --replace=36492 "Redshift " "Turned off";
|
||||||
else
|
else
|
||||||
nohup redshift > /dev/null 2>&1 &
|
nohup redshift > /dev/null 2>&1 &
|
||||||
notify-send --hint=string:x-dunst-stack-tag:EKFLpst1 "Redshift 望" "Starting...";
|
dunstify --replace=36492 "Redshift " "Starting...";
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Packages
|
|
||||||
#+BEGIN_SRC conf
|
|
||||||
[module/packages]
|
|
||||||
type = custom/script
|
|
||||||
|
|
||||||
format-underline = ${colors.bg}
|
|
||||||
click-left = ~/.config/polybar/scripts/packages-update.sh >/dev/null 2>%1 &
|
|
||||||
click-right = ~/.config/polybar/scripts/packages-refresh.sh >/dev/null 2>%1 &
|
|
||||||
format = <label>
|
|
||||||
exec = ~/.config/polybar/scripts/packages-status.sh
|
|
||||||
interval = 600
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Packages Status script
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.config/polybar/scripts/packages-status.sh
|
|
||||||
:header-args+: :comments both :mkdirp yes
|
|
||||||
:header-args+: :shebang "#!/usr/bin/env bash"
|
|
||||||
:END:
|
|
||||||
#+BEGIN_SRC bash
|
|
||||||
paru -Sy > /dev/null 2>&1 && \
|
|
||||||
package_nb=`paru -Qu 2> /dev/null | wc -l` || \
|
|
||||||
package_nb=0
|
|
||||||
|
|
||||||
|
|
||||||
if [ "$package_nb" -eq "0" ]; then
|
|
||||||
echo "";
|
|
||||||
else
|
|
||||||
echo "%{F#859900} $package_nb%{F-}";
|
|
||||||
fi
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Refresh New Packages script
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.config/polybar/scripts/packages-refresh.sh
|
|
||||||
:header-args+: :comments both :mkdirp yes
|
|
||||||
:header-args+: :shebang "#!/usr/bin/env bash"
|
|
||||||
:END:
|
|
||||||
#+BEGIN_SRC bash
|
|
||||||
notify-send --hint=string:x-dunst-stack-tag:SE5nDEVA 'Packages ' "Refreshing..."
|
|
||||||
|
|
||||||
paru -Sy > /dev/null 2>&1 && \
|
|
||||||
package_nb=$(paru -Qu 2> /dev/null | wc -l) || \
|
|
||||||
package_nb=0
|
|
||||||
|
|
||||||
if [ "$package_nb" -eq "0" ]; then
|
|
||||||
notify-send --hint=string:x-dunst-stack-tag:SE5nDEVA 'Packages ' "No upgrade available"
|
|
||||||
else
|
|
||||||
notify-send --hint=string:x-dunst-stack-tag:SE5nDEVA 'Packages ' "$package_nb upgrade(s) available"
|
|
||||||
fi
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
** Packages Update
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.config/polybar/scripts/packages-update.sh
|
|
||||||
:header-args+: :comments both :mkdirp yes
|
|
||||||
:header-args+: :shebang "#!/usr/bin/env bash"
|
|
||||||
:END:
|
|
||||||
#+BEGIN_SRC bash
|
|
||||||
$TERMINAL -e paru
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
* Dunst
|
* Dunst
|
||||||
|
** Module
|
||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
[module/dunst]
|
[module/dunst]
|
||||||
type = custom/script
|
type = custom/script
|
||||||
@@ -605,9 +489,9 @@ tmpfile="/tmp/dunststatus";
|
|||||||
if [ -f $tmpfile ] && grep -q "off" $tmpfile ; then
|
if [ -f $tmpfile ] && grep -q "off" $tmpfile ; then
|
||||||
killall -SIGUSR2 dunst && \
|
killall -SIGUSR2 dunst && \
|
||||||
echo "on" > $tmpfile;
|
echo "on" > $tmpfile;
|
||||||
notify-send --hint=string:x-dunst-stack-tag:KLJ63nVo "Notifications " "Activated";
|
dunstify --replace=16549 "Notifications " "Activated";
|
||||||
else
|
else
|
||||||
notify-send --hint=string:x-dunst-stack-tag:KLJ63nVo "Notifications " "Deactivated";
|
dunstify --replace=16549 "Notifications " "Deactivated";
|
||||||
sleep 1 && \
|
sleep 1 && \
|
||||||
killall -SIGUSR1 dunst && \
|
killall -SIGUSR1 dunst && \
|
||||||
echo "off" > $tmpfile;
|
echo "off" > $tmpfile;
|
||||||
@@ -615,6 +499,7 @@ fi
|
|||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
* Lock Screen
|
* Lock Screen
|
||||||
|
** Module
|
||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
[module/lockscreen]
|
[module/lockscreen]
|
||||||
type = custom/script
|
type = custom/script
|
||||||
@@ -653,14 +538,15 @@ fi
|
|||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
if pgrep -x "xautolock" >/dev/null ; then
|
if pgrep -x "xautolock" >/dev/null ; then
|
||||||
pkill xautolock && \
|
pkill xautolock && \
|
||||||
notify-send --hint=string:x-dunst-stack-tag:tH6bxvvv 'Lock Screen ' 'Desactivated'
|
dunstify --replace=13602 'Lock Screen ' 'Desactivated'
|
||||||
else
|
else
|
||||||
xautolock -locker "~/.local/bin/lockscreen" -detectsleep -time 30 -notify 60 -notifier "notify-send -u --hint=string:x-dunst-stack-tag:tH6bxvvv critical -t 10000 -- 'Locking Screen' '60 seconds'" &
|
xautolock -locker "~/.local/bin/lockscreen" -detectsleep -time 30 -notify 60 -notifier "dunstify --replace=31846 -u critical -t 10000 -- 'Locking Screen' '60 seconds'" &
|
||||||
notify-send --hint=string:x-dunst-stack-tag:tH6bxvvv 'Lock Screen ' 'Activated'
|
dunstify --replace=13602 'Lock Screen ' 'Activated'
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Network
|
* Network
|
||||||
|
** Modules
|
||||||
#+begin_src conf
|
#+begin_src conf
|
||||||
[module/wired-network]
|
[module/wired-network]
|
||||||
type = internal/network
|
type = internal/network
|
||||||
@@ -717,17 +603,18 @@ isdevicedown=$(nmcli device status | grep ^$1 | grep disconnected)
|
|||||||
|
|
||||||
if [ -z "$isdevicedown" ]
|
if [ -z "$isdevicedown" ]
|
||||||
then
|
then
|
||||||
notify-send --hint=string:x-dunst-stack-tag:EfjAHGgu "$1" "Disconnecting..." && \
|
dunstify --replace=84847 "$1" "Disconnecting..." && \
|
||||||
nmcli device disconnect $1 && \
|
nmcli device disconnect $1 && \
|
||||||
notify-send --hint=string:x-dunst-stack-tag:EfjAHGgu "$1" "Disconnected"
|
dunstify --replace=84847 "$1" "Disconnected"
|
||||||
else
|
else
|
||||||
notify-send --hint=string:x-dunst-stack-tag:EfjAHGgu "$1" "Connection..." && \
|
dunstify --replace=84847 "$1" "Connection..." && \
|
||||||
nmcli device connect $1 && \
|
nmcli device connect $1 && \
|
||||||
notify-send --hint=string:x-dunst-stack-tag:EfjAHGgu "$1" "Connected"
|
dunstify --replace=84847 "$1" "Connected"
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Bluetooth
|
* Bluetooth
|
||||||
|
** Module
|
||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
[module/bluetooth]
|
[module/bluetooth]
|
||||||
type = custom/script
|
type = custom/script
|
||||||
@@ -766,7 +653,7 @@ isconnected=$(bluetoothctl show $controllerid | grep Powered | grep yes)
|
|||||||
|
|
||||||
if [ -z "$isconnected" ]
|
if [ -z "$isconnected" ]
|
||||||
then
|
then
|
||||||
echo ""
|
echo ""
|
||||||
else
|
else
|
||||||
echo "%{F#859900}%{F-}"
|
echo "%{F#859900}%{F-}"
|
||||||
fi
|
fi
|
||||||
@@ -787,14 +674,15 @@ isconnected=$(bluetoothctl show $controllerid | grep Powered | grep yes)
|
|||||||
if [ -z "$isconnected" ]
|
if [ -z "$isconnected" ]
|
||||||
then
|
then
|
||||||
bluetoothctl power on && \
|
bluetoothctl power on && \
|
||||||
notify-send --hint=string:x-dunst-stack-tag:kidF4g53 "Bluetooth" "Power ON"
|
dunstify --replace=88498 "Bluetooth" "Power ON"
|
||||||
else
|
else
|
||||||
bluetoothctl power off && \
|
bluetoothctl power off && \
|
||||||
notify-send --hint=string:x-dunst-stack-tag:kidF4g53 "Bluetooth" "Power OFF"
|
dunstify --replace=88498 "Bluetooth" "Power OFF"
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* NordVPN
|
* NordVPN
|
||||||
|
** Module
|
||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
[module/nordvpn]
|
[module/nordvpn]
|
||||||
type = custom/script
|
type = custom/script
|
||||||
@@ -817,9 +705,9 @@ interval = 2
|
|||||||
tmpfile="/tmp/vpnstatus";
|
tmpfile="/tmp/vpnstatus";
|
||||||
|
|
||||||
if [ -f $tmpfile ] && grep -q "on" $tmpfile; then
|
if [ -f $tmpfile ] && grep -q "on" $tmpfile; then
|
||||||
echo "%{F#859900}%{F-}";
|
echo "%{F#859900}%{F-}";
|
||||||
else
|
else
|
||||||
echo "";
|
echo "";
|
||||||
fi
|
fi
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
@@ -827,9 +715,62 @@ fi
|
|||||||
|
|
||||||
The script is accessible [[file:binaries.org::#nordvpn-toggle][here]].
|
The script is accessible [[file:binaries.org::#nordvpn-toggle][here]].
|
||||||
|
|
||||||
* High cursor
|
* Wireguard
|
||||||
This is using this program: module/
|
** Module
|
||||||
|
#+BEGIN_SRC conf
|
||||||
|
[module/wireguard]
|
||||||
|
type = custom/script
|
||||||
|
|
||||||
|
format-underline = ${colors.bg}
|
||||||
|
click-left = ~/.config/polybar/scripts/wireguard-toggle.sh >/dev/null 2>%1 &
|
||||||
|
format = <label>
|
||||||
|
exec = ~/.config/polybar/scripts/wireguard-status.sh
|
||||||
|
|
||||||
|
interval = 2
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
** Wireguard Connection Status
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args: :tangle ~/.config/polybar/scripts/wireguard-status.sh
|
||||||
|
:header-args+: :comments both :mkdirp yes
|
||||||
|
:header-args+: :shebang "#!/usr/bin/env bash"
|
||||||
|
:END:
|
||||||
|
|
||||||
|
#+begin_src bash
|
||||||
|
config="homelab"
|
||||||
|
|
||||||
|
connection=$(sudo wg show "$config" 2>/dev/null | head -n 1 | awk '{print $NF }')
|
||||||
|
|
||||||
|
if [ "$connection" = "$config" ]; then
|
||||||
|
echo "%{F#859900}%{F-}"
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Toggle Wireguard Connection
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args: :tangle ~/.config/polybar/scripts/wireguard-toggle.sh
|
||||||
|
:header-args+: :comments both :mkdirp yes
|
||||||
|
:header-args+: :shebang "#!/usr/bin/env bash"
|
||||||
|
:END:
|
||||||
|
|
||||||
|
#+begin_src bash
|
||||||
|
config="homelab"
|
||||||
|
|
||||||
|
connection=$(sudo wg show "$config" 2>/dev/null | head -n 1 | awk '{print $NF }')
|
||||||
|
|
||||||
|
if [ "$connection" = "$config" ]; then
|
||||||
|
sudo wg-quick down "$config" && \
|
||||||
|
dunstify --replace=83244 "Wireguard" "Disconnected from $config"
|
||||||
|
else
|
||||||
|
sudo wg-quick up "$config" && \
|
||||||
|
dunstify --replace=83244 "Wireguard" "Connected to $config"
|
||||||
|
fi
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Highlight cursor
|
||||||
|
** Module
|
||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
[module/cursor]
|
[module/cursor]
|
||||||
type = custom/script
|
type = custom/script
|
||||||
@@ -850,9 +791,9 @@ interval = 2
|
|||||||
:END:
|
:END:
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
if pgrep -x "highlight-point" >/dev/null; then
|
if pgrep -x "highlight-point" >/dev/null; then
|
||||||
echo "%{F#859900}%{F-}";
|
echo "%{F#859900}%{F-}";
|
||||||
else
|
else
|
||||||
echo "";
|
echo "";
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -864,16 +805,16 @@ fi
|
|||||||
:END:
|
:END:
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
if pgrep -x "highlight-point" >/dev/null; then
|
if pgrep -x "highlight-point" >/dev/null; then
|
||||||
killall highlight-point && \
|
killall highlight-pointer && \
|
||||||
notify-send --hint=string:x-dunst-stack-tag:kidF4g53 "Cursor" "Turned off";
|
dunstify --replace=22111 --hint=string:x-dunst-stack-tag:kidF4g53 "Cursor" "Turned off";
|
||||||
else
|
else
|
||||||
nohup highlight-pointer -r 10 > /dev/null 2>&1 &
|
nohup highlight-pointer -r 10 > /dev/null 2>&1 &
|
||||||
notify-send --hint=string:x-dunst-stack-tag:kidF4g53 "Cursor" "Highlight...";
|
dunstify --replace=22111 --hint=string:x-dunst-stack-tag:kidF4g53 "Cursor" "Highlight...";
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Mounted Drives
|
* Mounted Drives
|
||||||
|
** Modules
|
||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
[module/drive_tmp]
|
[module/drive_tmp]
|
||||||
type = custom/script
|
type = custom/script
|
||||||
@@ -954,18 +895,223 @@ interval = 5
|
|||||||
:END:
|
:END:
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
if mountpoint -q ~/mnt/$1; then
|
if mountpoint -q ~/mnt/$1; then
|
||||||
echo "%{F#859900}$2 歷%{F-}";
|
echo "%{F#859900}$2 %{F-}";
|
||||||
else
|
else
|
||||||
echo "$2 轢";
|
echo "$2 ";
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* Tunnel Status
|
||||||
|
** Module
|
||||||
|
#+BEGIN_SRC conf
|
||||||
|
[module/tunnel_esrf]
|
||||||
|
type = custom/script
|
||||||
|
|
||||||
|
format-underline = ${colors.bg}
|
||||||
|
click-left = ~/.config/polybar/scripts/systemd-service-toggle.sh esrf-tunnel E >/dev/null 2>%1 &
|
||||||
|
format = <label>
|
||||||
|
exec = ~/.config/polybar/scripts/systemd-service-status.sh esrf-tunnel E
|
||||||
|
|
||||||
|
interval = 2
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
#+BEGIN_SRC conf
|
||||||
|
[module/tunnel_homelab]
|
||||||
|
type = custom/script
|
||||||
|
|
||||||
|
format-underline = ${colors.bg}
|
||||||
|
click-left = ~/.config/polybar/scripts/systemd-service-toggle.sh homelab-tunnel H >/dev/null 2>%1 &
|
||||||
|
format = <label>
|
||||||
|
exec = ~/.config/polybar/scripts/systemd-service-status.sh homelab-tunnel H
|
||||||
|
|
||||||
|
interval = 2
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
** Tunnel - Status
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args: :tangle ~/.config/polybar/scripts/systemd-service-status.sh
|
||||||
|
:header-args+: :comments both :mkdirp yes
|
||||||
|
:header-args+: :shebang "#!/usr/bin/env bash"
|
||||||
|
:END:
|
||||||
|
#+begin_src bash
|
||||||
|
SERVICE_NAME="$1"
|
||||||
|
|
||||||
|
if [ "$(systemctl --user is-active "$SERVICE_NAME")" != "active" ]
|
||||||
|
then
|
||||||
|
echo "$2 ";
|
||||||
|
else
|
||||||
|
echo "%{F#859900}$2 %{F-}";
|
||||||
|
fi
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Tunnel - Toggle
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args: :tangle ~/.config/polybar/scripts/systemd-service-toggle.sh
|
||||||
|
:header-args+: :comments both :mkdirp yes
|
||||||
|
:header-args+: :shebang "#!/usr/bin/env bash"
|
||||||
|
:END:
|
||||||
|
#+begin_src bash
|
||||||
|
SERVICE_NAME="$1"
|
||||||
|
|
||||||
|
if [ "$(systemctl --user is-active $SERVICE_NAME)" != "active" ]
|
||||||
|
then
|
||||||
|
systemctl --user start $SERVICE_NAME
|
||||||
|
else
|
||||||
|
systemctl --user stop $SERVICE_NAME
|
||||||
|
fi
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
* Timer
|
||||||
|
** Module
|
||||||
|
#+BEGIN_SRC conf
|
||||||
|
[module/timer]
|
||||||
|
type = custom/script
|
||||||
|
|
||||||
|
format = <label>
|
||||||
|
exec = ~/.config/polybar/scripts/timer.sh tail 'TIMER' 5
|
||||||
|
tail = true
|
||||||
|
|
||||||
|
click-left = ~/.config/polybar/scripts/timer.sh new 25 'Pomo session' 'Paused' 'notify-send "Session finished"' ; ~/.config/polybar/scripts/timer.sh update %pid%
|
||||||
|
click-middle = ~/.config/polybar/scripts/timer.sh cancel ; ~/.config/polybar/scripts/timer.sh update %pid%
|
||||||
|
click-right = ~/.config/polybar/scripts/timer.sh togglepause ; ~/.config/polybar/scripts/timer.sh update %pid%
|
||||||
|
scroll-up = ~/.config/polybar/scripts/timer.sh increase 60 || ~/.config/polybar/scripts/timer.sh new 1 'TIMER' 'PAUSED' 'notify-send -u critical "Timer expired."' ; ~/.config/polybar/scripts/timer.sh update %pid%
|
||||||
|
scroll-down = ~/.config/polybar/scripts/timer.sh increase -60 ; ~/.config/polybar/scripts/timer.sh update %pid%
|
||||||
|
|
||||||
|
interval = 2
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
** Timer
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args: :tangle ~/.config/polybar/scripts/timer.sh
|
||||||
|
:header-args+: :comments both :mkdirp yes
|
||||||
|
:header-args+: :shebang "#!/usr/bin/env bash"
|
||||||
|
:END:
|
||||||
|
#+begin_src bash
|
||||||
|
### AUTHOR: Johann Birnick (github: jbirnick)
|
||||||
|
### PROJECT REPO: https://github.com/jbirnick/polybar-timer
|
||||||
|
|
||||||
|
## FUNCTIONS
|
||||||
|
|
||||||
|
now () { date --utc +%s; }
|
||||||
|
|
||||||
|
killTimer () { rm -rf /tmp/polybar-timer ; }
|
||||||
|
timerSet () { [ -e /tmp/polybar-timer/ ] ; }
|
||||||
|
timerPaused () { [ -f /tmp/polybar-timer/paused ] ; }
|
||||||
|
|
||||||
|
timerExpiry () { cat /tmp/polybar-timer/expiry ; }
|
||||||
|
timerLabelRunning () { cat /tmp/polybar-timer/label_running ; }
|
||||||
|
timerLabelPaused () { cat /tmp/polybar-timer/label_paused ; }
|
||||||
|
timerAction () { cat /tmp/polybar-timer/action ; }
|
||||||
|
|
||||||
|
secondsLeftWhenPaused () { cat /tmp/polybar-timer/paused ; }
|
||||||
|
minutesLeftWhenPaused () { echo $(( ( $(secondsLeftWhenPaused) + 59 ) / 60 )) ; }
|
||||||
|
secondsLeft () { echo $(( $(timerExpiry) - $(now) )) ; }
|
||||||
|
minutesLeft () { echo $(( ( $(secondsLeft) + 59 ) / 60 )) ; }
|
||||||
|
|
||||||
|
printExpiryTime () { dunstify -u low -r -12345 "Timer expires at $( date -d "$(secondsLeft) sec" +%H:%M)" ;}
|
||||||
|
printPaused () { dunstify -u low -r -12345 "Timer paused" ; }
|
||||||
|
removePrinting () { dunstify -C -12345 ; }
|
||||||
|
|
||||||
|
updateTail () {
|
||||||
|
# check whether timer is expired
|
||||||
|
if timerSet
|
||||||
|
then
|
||||||
|
if { timerPaused && [ $(minutesLeftWhenPaused) -le 0 ] ; } || { ! timerPaused && [ $(minutesLeft) -le 0 ] ; }
|
||||||
|
then
|
||||||
|
eval $(timerAction)
|
||||||
|
killTimer
|
||||||
|
removePrinting
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# update output
|
||||||
|
if timerSet
|
||||||
|
then
|
||||||
|
if timerPaused
|
||||||
|
then
|
||||||
|
echo "$(timerLabelPaused) $(minutesLeftWhenPaused)"
|
||||||
|
else
|
||||||
|
echo "$(timerLabelRunning) $(minutesLeft)"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "${STANDBY_LABEL}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
## MAIN CODE
|
||||||
|
|
||||||
|
case $1 in
|
||||||
|
tail)
|
||||||
|
STANDBY_LABEL=$2
|
||||||
|
|
||||||
|
trap updateTail USR1
|
||||||
|
|
||||||
|
while true
|
||||||
|
do
|
||||||
|
updateTail
|
||||||
|
sleep ${3} &
|
||||||
|
wait
|
||||||
|
done
|
||||||
|
;;
|
||||||
|
update)
|
||||||
|
kill -USR1 $(pgrep --oldest --parent ${2})
|
||||||
|
;;
|
||||||
|
new)
|
||||||
|
killTimer
|
||||||
|
mkdir /tmp/polybar-timer
|
||||||
|
echo "$(( $(now) + 60*${2} ))" > /tmp/polybar-timer/expiry
|
||||||
|
echo "${3}" > /tmp/polybar-timer/label_running
|
||||||
|
echo "${4}" > /tmp/polybar-timer/label_paused
|
||||||
|
echo "${5}" > /tmp/polybar-timer/action
|
||||||
|
printExpiryTime
|
||||||
|
;;
|
||||||
|
increase)
|
||||||
|
if timerSet
|
||||||
|
then
|
||||||
|
if timerPaused
|
||||||
|
then
|
||||||
|
echo "$(( $(secondsLeftWhenPaused) + ${2} ))" > /tmp/polybar-timer/paused
|
||||||
|
else
|
||||||
|
echo "$(( $(timerExpiry) + ${2} ))" > /tmp/polybar-timer/expiry
|
||||||
|
printExpiryTime
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
cancel)
|
||||||
|
killTimer
|
||||||
|
removePrinting
|
||||||
|
;;
|
||||||
|
togglepause)
|
||||||
|
if timerSet
|
||||||
|
then
|
||||||
|
if timerPaused
|
||||||
|
then
|
||||||
|
echo "$(( $(now) + $(secondsLeftWhenPaused) ))" > /tmp/polybar-timer/expiry
|
||||||
|
rm -f /tmp/polybar-timer/paused
|
||||||
|
printExpiryTime
|
||||||
|
else
|
||||||
|
secondsLeft > /tmp/polybar-timer/paused
|
||||||
|
rm -f /tmp/polybar-timer/expiry
|
||||||
|
printPaused
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Please read the manual at https://github.com/jbirnick/polybar-timer ."
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
#+end_src
|
||||||
|
|
||||||
* Screenshot
|
* Screenshot
|
||||||
|
|
||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
[module/screenshot]
|
[module/screenshot]
|
||||||
type = custom/text
|
type = custom/text
|
||||||
content = ""
|
content = ""
|
||||||
click-left = ~/.local/bin/screenshot >/dev/null 2>%1 &
|
click-left = ~/.local/bin/screenshot >/dev/null 2>%1 &
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ config.load_autoconfig(True)
|
|||||||
c.aliases = {'w': 'session-save', 'q': 'quit', 'wq': 'quit --save'}
|
c.aliases = {'w': 'session-save', 'q': 'quit', 'wq': 'quit --save'}
|
||||||
c.auto_save.session = False
|
c.auto_save.session = False
|
||||||
c.backend = 'webengine'
|
c.backend = 'webengine'
|
||||||
c.confirm_quit = ['downloads']
|
c.confirm_quit = ['downloads', 'multiple-tabs']
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
#+begin_src python
|
#+begin_src python
|
||||||
@@ -42,7 +42,6 @@ c.content.autoplay = False
|
|||||||
c.content.notifications.enabled = False
|
c.content.notifications.enabled = False
|
||||||
c.content.geolocation = 'ask'
|
c.content.geolocation = 'ask'
|
||||||
c.content.javascript.alert = True
|
c.content.javascript.alert = True
|
||||||
c.content.javascript.can_access_clipboard = True
|
|
||||||
c.content.pdfjs = False
|
c.content.pdfjs = False
|
||||||
c.content.proxy = 'system'
|
c.content.proxy = 'system'
|
||||||
c.content.blocking.method = 'both'
|
c.content.blocking.method = 'both'
|
||||||
@@ -180,8 +179,8 @@ c.url.searchengines = {
|
|||||||
'sm': 'https://www.openstreetmap.org/search?query={}',
|
'sm': 'https://www.openstreetmap.org/search?query={}',
|
||||||
'am': 'https://www.amazon.fr/s?k={}',
|
'am': 'https://www.amazon.fr/s?k={}',
|
||||||
'md': 'https://fr.mathworks.com/help/search.html?qdoc={}&submitsearch=',
|
'md': 'https://fr.mathworks.com/help/search.html?qdoc={}&submitsearch=',
|
||||||
'tf': 'https://translate.google.com/#view=home&op=translate&sl=en&tl=fr&text={}',
|
'tf': 'https://www.deepl.com/en/translator#en/fr/{}',
|
||||||
'te': 'https://translate.google.com/#view=home&op=translate&sl=fr&tl=en&text={}',
|
'te': 'https://www.deepl.com/en/translator#fr/en/{}',
|
||||||
'lb': 'https://www.leboncoin.fr/recherche?text={}',
|
'lb': 'https://www.leboncoin.fr/recherche?text={}',
|
||||||
}
|
}
|
||||||
#+end_src
|
#+end_src
|
||||||
@@ -234,8 +233,8 @@ config.bind('m', 'quickmark-save')
|
|||||||
|
|
||||||
Open New Pages/Tabs
|
Open New Pages/Tabs
|
||||||
#+begin_src python
|
#+begin_src python
|
||||||
config.bind('o', 'set-cmd-text -s :open')
|
config.bind('o', 'cmd-set-text -s :open')
|
||||||
config.bind('O', 'set-cmd-text -s :open -t')
|
config.bind('O', 'cmd-set-text -s :open -t')
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Open new page/tab with clipboard content
|
Open new page/tab with clipboard content
|
||||||
@@ -370,12 +369,6 @@ c.aliases['Download_AES'] = 'spawn --userscript aes-download.sh'
|
|||||||
config.bind(',E', 'Download_AES')
|
config.bind(',E', 'Download_AES')
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Download a torrent
|
|
||||||
#+begin_src python
|
|
||||||
c.aliases['Download_Torrent_Homelab'] = 'hint links spawn torrent-add {hint-url}'
|
|
||||||
config.bind(',t', 'Download_Torrent_Homelab')
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
See Amazon price history using CamelCamelCamel
|
See Amazon price history using CamelCamelCamel
|
||||||
#+begin_src python
|
#+begin_src python
|
||||||
c.aliases['CamelCamelCamel'] = 'open -t https://fr.camelcamelcamel.com/search?sq={url}'
|
c.aliases['CamelCamelCamel'] = 'open -t https://fr.camelcamelcamel.com/search?sq={url}'
|
||||||
@@ -406,17 +399,17 @@ config.bind(',q', 'QRcode')
|
|||||||
|
|
||||||
** Create a new password
|
** Create a new password
|
||||||
#+begin_src bash :tangle ~/.config/qutebrowser/userscripts/add-passowrd.sh
|
#+begin_src bash :tangle ~/.config/qutebrowser/userscripts/add-passowrd.sh
|
||||||
url=$(echo "$QUTE_URL" | awk -F[/:] '{print $4}' | rofi -p "URL" -dmenu -lines 1)
|
url=$(echo "$QUTE_URL" | awk -F[/:] '{print $4}' | rofi -i -p "URL" -dmenu -lines 1)
|
||||||
username=$(echo -e "dehaeze.thomas@gmail.com\nthomas.dehaeze@esrf.fr\ntdehaeze" | rofi -p "Username" -dmenu -lines 5)
|
username=$(echo -e "dehaeze.thomas@gmail.com\nthomas.dehaeze@esrf.fr\ntdehaeze" | rofi -p "Username" -dmenu -lines 5)
|
||||||
password=$(rofi -p "Password" -dmenu -password -lines 1)
|
password=$(rofi -p "Password" -dmenu -password -lines 1)
|
||||||
|
|
||||||
if [ -z "$url" ] || [ -z "$username" ] || [ -z "$password" ]; then
|
if [ -z "$url" ] || [ -z "$username" ] || [ -z "$password" ]; then
|
||||||
notify-send --hint=string:x-dunst-stack-tag:0vRM5AMP --urgency=critical "Pass" "Failed to Add Password"
|
dunstify --urgency=critical "Pass" "Failed to Add Password"
|
||||||
else
|
else
|
||||||
echo -e "$password\nlogin: $username\nurl: $QUTE_URL" > /tmp/add-password.txt
|
echo -e "$password\nlogin: $username\nurl: $QUTE_URL" > /tmp/add-password.txt
|
||||||
pass insert --multiline "$url/$username" < /tmp/add-password.txt;
|
pass insert --multiline "$url/$username" < /tmp/add-password.txt;
|
||||||
rm /tmp/add-password.txt
|
rm /tmp/add-password.txt
|
||||||
notify-send --hint=string:x-dunst-stack-tag:0vRM5AMP "Pass " "Password Added"
|
dunstify "Pass " "Password Added"
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -429,15 +422,15 @@ if [[ "$1" == *"list"* ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -n "$choice" ] && [ "$choice" = "Playlist" ]; then
|
if [ -n "$choice" ] && [ "$choice" = "Playlist" ]; then
|
||||||
notify-send --hint=string:x-dunst-stack-tag:iOGRwrDG "Youtube " "Downloading Playlist...";
|
dunstify --replace=19243 "Youtube " "Downloading Playlist...";
|
||||||
youtube-dl -i -f 'bestvideo[height<=720]+bestaudio/best[height<=720]' "$1" -o "%(playlist_title)s/%(playlist_index)s-%(title)s.%(ext)s" && \
|
youtube-dl -i -f 'bestvideo[height<=720]+bestaudio/best[height<=720]' "$1" -o "%(playlist_title)s/%(playlist_index)s-%(title)s.%(ext)s" && \
|
||||||
notify-send --hint=string:x-dunst-stack-tag:iOGRwrDG "Youtube " "Downloaded" || \
|
dunstify --replace=19243 "Youtube " "Downloaded" || \
|
||||||
notify-send --hint=string:x-dunst-stack-tag:iOGRwrDG --urgency=critical "Youtube " "Failed to download"
|
dunstify --replace=19243 --urgency=critical "Youtube " "Failed to download"
|
||||||
else
|
else
|
||||||
notify-send --hint=string:x-dunst-stack-tag:iOGRwrDG "Youtube " "Downloading Video...";
|
dunstify --replace=19243 "Youtube " "Downloading Video...";
|
||||||
youtube-dl --no-playlist -f 'bestvideo[height<=720]+bestaudio/best[height<=720]' "$1" && \
|
youtube-dl --no-playlist -f 'bestvideo[height<=720]+bestaudio/best[height<=720]' "$1" && \
|
||||||
notify-send --hint=string:x-dunst-stack-tag:iOGRwrDG "Youtube " "Downloaded" || \
|
dunstify --replace=19243 "Youtube " "Downloaded" || \
|
||||||
notify-send --hint=string:x-dunst-stack-tag:iOGRwrDG --urgency=critical "Youtube " "Failed to download"
|
dunstify --replace=19243 --urgency=critical "Youtube " "Failed to download"
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -620,7 +613,7 @@ if [[ -z "${LINKDING_TOKEN}" ]]; then
|
|||||||
LINKDING_TOKEN=$(pass nas/linkding_token)
|
LINKDING_TOKEN=$(pass nas/linkding_token)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
curl -H "Authorization: Token ${LINKDING_TOKEN}" ${LINKDING_URL}/api/bookmarks/ | jq '.results[] | "\(.title) - \(.url) - [#\((.tag_names | join(", #")))]"' -r | rofi -dmenu -no-custom | grep -Eo 'https?://[^ ]+' | head -1 | xargs -I {} echo "open -t {}" >> "$QUTE_FIFO"
|
curl -H "Authorization: Token ${LINKDING_TOKEN}" ${LINKDING_URL}/api/bookmarks/ | jq '.results[] | "\(.title) - \(.url) - [#\((.tag_names | join(", #")))]"' -r | rofi -dmenu -i -no-custom | grep -Eo 'https?://[^ ]+' | head -1 | xargs -I {} echo "open -t {}" >> "$QUTE_FIFO"
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Add Url to Linkding
|
** Add Url to Linkding
|
||||||
@@ -641,8 +634,8 @@ new_tags=$(rofi -p "New tags" -dmenu)
|
|||||||
formated_tags=$(echo $existing_tags $new_tags | sed -E 's/(\w+)/"\1"/g;s/\s/,/g')
|
formated_tags=$(echo $existing_tags $new_tags | sed -E 's/(\w+)/"\1"/g;s/\s/,/g')
|
||||||
|
|
||||||
curl -H "Authorization: Token ${LINKDING_TOKEN}" -H "Content-Type: application/json" -d "{\"url\": \"$QUTE_URL\", \"title\": \"$title\", \"tag_names\": [$formated_tags]}" ${LINKDING_URL}/api/bookmarks/ && \
|
curl -H "Authorization: Token ${LINKDING_TOKEN}" -H "Content-Type: application/json" -d "{\"url\": \"$QUTE_URL\", \"title\": \"$title\", \"tag_names\": [$formated_tags]}" ${LINKDING_URL}/api/bookmarks/ && \
|
||||||
notify-send --hint=string:x-dunst-stack-tag:l3gV75RD "Linkding" " Bookmark Added" || \
|
dunstify "Linkding" " Bookmark Added" || \
|
||||||
notify-send --hint=string:x-dunst-stack-tag:l3gV75RD --urgency=critical "Linkding" "Failed"
|
dunstify --urgency=critical "Linkding" "Failed"
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Add Url to Buku using Rofi
|
** Add Url to Buku using Rofi
|
||||||
@@ -651,28 +644,28 @@ title=$(echo "$QUTE_TITLE" | rofi -p "Title" -dmenu -lines 1)
|
|||||||
tags=$(buku -t --nc --np | sed -e 's/\s*[[:digit:]]*\.\s*\(.*\)\s*([[:digit:]]*)\s*/\1/' -e '/^\s*$/d' | sort | uniq | rofi -multi-select -p "Tags" -dmenu | tr "\n" "," | sed 's/\s*,\s*$//')
|
tags=$(buku -t --nc --np | sed -e 's/\s*[[:digit:]]*\.\s*\(.*\)\s*([[:digit:]]*)\s*/\1/' -e '/^\s*$/d' | sort | uniq | rofi -multi-select -p "Tags" -dmenu | tr "\n" "," | sed 's/\s*,\s*$//')
|
||||||
|
|
||||||
buku --add "$QUTE_URL" --tag "$tags" --title "$title" && \
|
buku --add "$QUTE_URL" --tag "$tags" --title "$title" && \
|
||||||
notify-send --hint=string:x-dunst-stack-tag:E3TueNZ0 "Buku" "Bookmark Added" || \
|
dunstify "Buku" "Bookmark Added" || \
|
||||||
notify-send --hint=string:x-dunst-stack-tag:E3TueNZ0 --urgency=critical "Buku" " Bookmark Added"
|
dunstify --urgency=critical "Buku" " Bookmark Added"
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Add Url to Buku without asking for information
|
** Add Url to Buku without asking for information
|
||||||
#+begin_src bash :tangle ~/.config/qutebrowser/userscripts/buku-add.sh
|
#+begin_src bash :tangle ~/.config/qutebrowser/userscripts/buku-add.sh
|
||||||
buku --add $QUTE_URL --title "$QUTE_TITLE" && \
|
buku --add $QUTE_URL --title "$QUTE_TITLE" && \
|
||||||
notify-send "Buku" "📑 Bookmark Added"
|
dunstify "Buku" "📑 Bookmark Added"
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Download with aria2c
|
** Download with aria2c
|
||||||
#+begin_src bash :tangle ~/.config/qutebrowser/userscripts/aria2c-add.sh
|
#+begin_src bash :tangle ~/.config/qutebrowser/userscripts/aria2c-add.sh
|
||||||
aria2p add "$1" && \
|
aria2p add "$1" && \
|
||||||
notify-send --hint=string:x-dunst-stack-tag:2SGClDoI "Aria2" "Download Started" || \
|
dunstify "Aria2" "Download Started" || \
|
||||||
notify-send --hint=string:x-dunst-stack-tag:2SGClDoI "Aria2" "Error"
|
dunstify "Aria2" "Error"
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Download with aria2c on the Homelab
|
** Download with aria2c on the Homelab
|
||||||
#+begin_src bash :tangle ~/.config/qutebrowser/userscripts/aria2c-add-homelab.sh
|
#+begin_src bash :tangle ~/.config/qutebrowser/userscripts/aria2c-add-homelab.sh
|
||||||
dl-add $(echo "$1" | sed 's/\&af=.*$//g') && \
|
dl-add $(echo "$1" | sed 's/\&af=.*$//g') && \
|
||||||
notify-send --hint=string:x-dunst-stack-tag:2SGClDoI "Aria2" "Download Started" || \
|
dunstify "Aria2" "Download Started" || \
|
||||||
notify-send --hint=string:x-dunst-stack-tag:2SGClDoI "Aria2" "Error"
|
dunstify "Aria2" "Error"
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Save to PNG
|
** Save to PNG
|
||||||
@@ -680,19 +673,19 @@ dl-add $(echo "$1" | sed 's/\&af=.*$//g') && \
|
|||||||
filename=$(rofi -p "filename" -dmenu -lines 1)
|
filename=$(rofi -p "filename" -dmenu -lines 1)
|
||||||
|
|
||||||
if [ -n "filename" ]; then
|
if [ -n "filename" ]; then
|
||||||
cd ~/Pictures/ && \
|
cd ~/Cloud/pictures/screenshots/ && \
|
||||||
firefox -P default -headless --screenshot "$filename.png" "$QUTE_URL" && \
|
firefox-developer-edition -P default -headless --screenshot "$filename.png" "$QUTE_URL" && \
|
||||||
notify-send "Screenshot" "Taken successfully"
|
dunstify "Screenshot" "Taken successfully"
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Get OTP number
|
** Get OTP number
|
||||||
#+begin_src bash :tangle ~/.config/qutebrowser/userscripts/get-otp.sh
|
#+begin_src bash :tangle ~/.config/qutebrowser/userscripts/get-otp.sh
|
||||||
passname=$(ls ~/.password-store/totp-* | xargs -n 1 basename | sed -e 's/\..*$//' | rofi -p "TOPT" -dmenu)
|
passname=$(ls ~/.local/share/pass/totp-* | xargs -n 1 basename | sed -e 's/\..*$//' | rofi -p "TOPT" -dmenu)
|
||||||
|
|
||||||
if [ -n "$passname" ]; then
|
if [ -n "$passname" ]; then
|
||||||
pass otp $passname | xsel -ib && \
|
pass otp $passname | xsel -ib && \
|
||||||
notify-send 'OTP' 'copied to clipboard.' &
|
dunstify 'OTP' 'copied to clipboard.' &
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -701,12 +694,12 @@ fi
|
|||||||
m3u8_path=`curl -L -s "$QUTE_URL" | pcregrep -o1 "file = \"\/(.*aes.*mp4)\""`
|
m3u8_path=`curl -L -s "$QUTE_URL" | pcregrep -o1 "file = \"\/(.*aes.*mp4)\""`
|
||||||
|
|
||||||
if [ -z "$m3u8_path" ]; then
|
if [ -z "$m3u8_path" ]; then
|
||||||
notify-send --hint=string:x-dunst-stack-tag:ng4iXDxP --urgency=critical "Qutebrowser" "No m3u8 playlist found"
|
dunstify --urgency=critical "Qutebrowser" "No m3u8 playlist found"
|
||||||
else
|
else
|
||||||
notify-send --hint=string:x-dunst-stack-tag:ng4iXDxP "Qutebrowser" "Downloads..." && \
|
dunstify "Qutebrowser" "Downloads..." && \
|
||||||
cd ~/Downloads/ && \
|
cd ~/Downloads/ && \
|
||||||
ffmpeg -user_agent "Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0" -referer "$QUTE_URL" -i "https://cdn2.digitellinc.com/play/_definst_/mp4:$m3u8_path/playlist.m3u8" -c copy "$QUTE_TITLE.mp4" && \
|
ffmpeg -user_agent "Mozilla/5.0 (X11; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0" -referer "$QUTE_URL" -i "https://cdn2.digitellinc.com/play/_definst_/mp4:$m3u8_path/playlist.m3u8" -c copy "$QUTE_TITLE.mp4" && \
|
||||||
notify-send --hint=string:x-dunst-stack-tag:ng4iXDxP "Qutebrowser" "$QUTE_TITLE Downloaded"
|
dunstify "Qutebrowser" "$QUTE_TITLE Downloaded"
|
||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -714,3 +707,27 @@ fi
|
|||||||
#+begin_src bash :tangle ~/.config/qutebrowser/userscripts/url-to-qrcode.sh
|
#+begin_src bash :tangle ~/.config/qutebrowser/userscripts/url-to-qrcode.sh
|
||||||
qrencode -o /tmp/qrcode.png "$1" && sxiv /tmp/qrcode.png
|
qrencode -o /tmp/qrcode.png "$1" && sxiv /tmp/qrcode.png
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* Greasemonkey Scripts
|
||||||
|
** Skip Youtube ads
|
||||||
|
https://github.com/qutebrowser/qutebrowser/issues/6480
|
||||||
|
#+begin_src javascript :tangle ~/.local/share/qutebrowser/greasemonkey/youtube-adblock.user.js
|
||||||
|
// ==UserScript==
|
||||||
|
// @name Auto Skip YouTube Ads
|
||||||
|
// @version 1.0.0
|
||||||
|
// @description Speed up and skip YouTube ads automatically
|
||||||
|
// @author jso8910
|
||||||
|
// @match *://*.youtube.com/*
|
||||||
|
// @exclude *://*.youtube.com/subscribe_embed?*
|
||||||
|
// ==/UserScript==
|
||||||
|
setInterval(() => {
|
||||||
|
const btn = document.querySelector('.videoAdUiSkipButton,.ytp-ad-skip-button')
|
||||||
|
if (btn) {
|
||||||
|
btn.click()
|
||||||
|
}
|
||||||
|
const ad = [...document.querySelectorAll('.ad-showing')][0];
|
||||||
|
if (ad) {
|
||||||
|
document.querySelector('video').playbackRate = 10;
|
||||||
|
}
|
||||||
|
}, 50)
|
||||||
|
#+end_src
|
||||||
|
|||||||
87
ranger.org
87
ranger.org
@@ -18,6 +18,16 @@ ranger --copy-config=scope
|
|||||||
|
|
||||||
To add =scope.sh=.
|
To add =scope.sh=.
|
||||||
|
|
||||||
|
The following has been added to preview =xournalpp= file:
|
||||||
|
#+begin_src bash
|
||||||
|
case "${FILE_EXTENSION_LOWER}" in
|
||||||
|
## xournall file
|
||||||
|
xopp)
|
||||||
|
xournalpp-thumbnailer "${FILE_PATH}" "${IMAGE_CACHE_PATH}" && exit 6
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
#+end_src
|
||||||
|
|
||||||
To have image preview:
|
To have image preview:
|
||||||
#+begin_src bash :tangle no
|
#+begin_src bash :tangle no
|
||||||
sudo pip3 install ueberzug
|
sudo pip3 install ueberzug
|
||||||
@@ -41,7 +51,7 @@ set viewmode miller
|
|||||||
set column_ratios 1,1
|
set column_ratios 1,1
|
||||||
|
|
||||||
# Which files should be hidden? (regular expression)
|
# Which files should be hidden? (regular expression)
|
||||||
set hidden_filter ^\.|\.(?:pyc|vrb|pyo|lof|bak|swp|aux|log|nav|out|snm|toc|bcf|run\.xml|synctex\.gz|blg|bbl)$|^lost\+found$|^__(py)?cache__$
|
set hidden_filter ^\.|\.(?:pyc|vrb|pyo|lof|bak|swp|aux|log|nav|out|snm|toc|bcf|run\.xml|synctex\.gz|blg|bbl|xopp~)$|^lost\+found$|^__(py)?cache__$
|
||||||
|
|
||||||
# Show hidden files? You can toggle this by typing 'zh'
|
# Show hidden files? You can toggle this by typing 'zh'
|
||||||
set show_hidden false
|
set show_hidden false
|
||||||
@@ -202,16 +212,16 @@ Compress:
|
|||||||
map ,z shell ~/.config/ranger/scripts/compress.sh %f
|
map ,z shell ~/.config/ranger/scripts/compress.sh %f
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
Get Bibtex from PDF:
|
|
||||||
#+BEGIN_SRC conf
|
|
||||||
map ,b shell pdf2bib %f
|
|
||||||
#+END_SRC
|
|
||||||
|
|
||||||
Convert images/pdf/...:
|
Convert images/pdf/...:
|
||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
map ,c shell convert-file %f
|
map ,c shell convert-file %f
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
Extract BibTeX:
|
||||||
|
#+begin_src conf
|
||||||
|
map ,b shell ~/.config/ranger/scripts/add-reference.sh %d/%f
|
||||||
|
#+end_src
|
||||||
|
|
||||||
Open SXIV on current directory:
|
Open SXIV on current directory:
|
||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
map ,s shell nohup sxiv -t %d &
|
map ,s shell nohup sxiv -t %d &
|
||||||
@@ -242,6 +252,32 @@ map ,y shell ~/.config/ranger/scripts/copy-content.sh %s &
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Scripts
|
** Scripts
|
||||||
|
*** Extract DOI, create BibTeX and rename file
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args: :tangle ~/.config/ranger/scripts/add-reference.sh
|
||||||
|
:header-args+: :comments both :mkdirp yes
|
||||||
|
:header-args+: :shebang "#!/usr/bin/env bash"
|
||||||
|
:END:
|
||||||
|
#+begin_src bash
|
||||||
|
add_reference () {
|
||||||
|
doi=$(pdf2doi $1 | sed 's/^DOI *//' | sed 's/ \+.*//')
|
||||||
|
|
||||||
|
# If empty DOI, ask manually
|
||||||
|
if [ -z $doi ]; then
|
||||||
|
doi=$(rofi -dmenu -p "DOI")
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If DOI, add it to Emacs
|
||||||
|
if [ ! -z $doi ]; then
|
||||||
|
emacsclient --eval "(tdh-org-ref-import-pdf \"$doi\" \"$1\")" && \
|
||||||
|
dunstify --replace=49496 "BibTeX" "File copied."
|
||||||
|
else
|
||||||
|
dunstify --replace=49496 "BibTeX" "Failed to get DOI"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
add_reference "$1"
|
||||||
|
#+end_src
|
||||||
|
|
||||||
*** Extract Script
|
*** Extract Script
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args: :tangle ~/.config/ranger/scripts/extract.sh
|
:header-args: :tangle ~/.config/ranger/scripts/extract.sh
|
||||||
@@ -385,8 +421,9 @@ map cd console cd%space
|
|||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
map gh cd ~/
|
map gh cd ~/
|
||||||
map gw cd ~/Cloud/work-projects
|
map gw cd ~/Cloud/work-projects
|
||||||
map gp cd ~/Pictures
|
map gp cd ~/Cloud/personnal
|
||||||
map gP cd ~/Cloud/pictures/phone
|
map gP cd ~/Cloud/pictures/phone
|
||||||
|
map gs cd ~/Cloud/pictures/screenshots
|
||||||
map gT cd ~/.local/share/Trash/files
|
map gT cd ~/.local/share/Trash/files
|
||||||
map gd cd ~/Downloads
|
map gd cd ~/Downloads
|
||||||
map gD cd ~/Cloud/documents
|
map gD cd ~/Cloud/documents
|
||||||
@@ -415,7 +452,7 @@ map yn shell -f echo -n %f | xsel -i; xsel -o | xsel -i -b
|
|||||||
|
|
||||||
*** Drag and Drop
|
*** Drag and Drop
|
||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
map D shell dragon -a -x %p
|
map D shell dragon-drop -a -x %p
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
*** Rename files
|
*** Rename files
|
||||||
@@ -591,7 +628,27 @@ copycmap <end> <C-e>
|
|||||||
# only running the current file even if you have marked multiple files.
|
# only running the current file even if you have marked multiple files.
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
** Websites
|
||||||
|
#+BEGIN_SRC conf
|
||||||
|
ext x?html?, has qutebrowser, X, flag f = qutebrowser -- "$@"
|
||||||
|
ext x?html?, has firefox, X, flag f = firefox -- "$@"
|
||||||
|
ext x?html?, has elinks, terminal = elinks "$@"
|
||||||
|
ext x?html?, has w3m, terminal = w3m "$@"
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
** Text Files
|
** Text Files
|
||||||
|
3D files (before the rest)
|
||||||
|
#+begin_src conf
|
||||||
|
ext stp, X, flag f = f3d -- "$@"
|
||||||
|
ext step, X, flag f = f3d -- "$@"
|
||||||
|
ext stl, X, flag f = f3d -- "$@"
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Calendar files
|
||||||
|
#+begin_src conf
|
||||||
|
ext ics, X, flag f = ics-add "$@"
|
||||||
|
#+end_src
|
||||||
|
|
||||||
Define the =$EDITOR= for text files as first action:
|
Define the =$EDITOR= for text files as first action:
|
||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
mime ^text, label editor = $EDITOR -- "$@"
|
mime ^text, label editor = $EDITOR -- "$@"
|
||||||
@@ -638,6 +695,11 @@ ext djvu, has evince, X, flag f = evince -- "$@"
|
|||||||
ext djvu, has atril, X, flag f = atril -- "$@"
|
ext djvu, has atril, X, flag f = atril -- "$@"
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
|
** Xournalpp
|
||||||
|
#+begin_src conf
|
||||||
|
ext xopp, X, flag f = xournalpp "$@"
|
||||||
|
#+end_src
|
||||||
|
|
||||||
** Archives
|
** Archives
|
||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, has atool = atool -- "$@" | "$PAGER"
|
ext 7z|ace|ar|arc|bz2?|cab|cpio|cpt|deb|dgc|dmg|gz, has atool = atool -- "$@" | "$PAGER"
|
||||||
@@ -650,12 +712,9 @@ ext tar|gz, has tar = tar vvtf "$@" | "$PAGER"
|
|||||||
ext tar|gz, has tar = tar vvxf "$@"
|
ext tar|gz, has tar = tar vvxf "$@"
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Websites
|
** Torrent
|
||||||
#+BEGIN_SRC conf
|
#+BEGIN_SRC conf
|
||||||
ext x?html?, has qutebrowser, X, flag f = qutebrowser -- "$@"
|
ext torrent, X, flag f = stig add -- "$@"
|
||||||
ext x?html?, has firefox, X, flag f = firefox -- "$@"
|
|
||||||
ext x?html?, has elinks, terminal = elinks "$@"
|
|
||||||
ext x?html?, has w3m, terminal = w3m "$@"
|
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
** Word, Excel and Presentation files
|
** Word, Excel and Presentation files
|
||||||
@@ -722,7 +781,7 @@ name ^[mM]akefile$ = make
|
|||||||
!mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = ask
|
!mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = ask
|
||||||
label editor, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = $EDITOR -- "$@"
|
label editor, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = $EDITOR -- "$@"
|
||||||
label pager, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = "$PAGER" -- "$@"
|
label pager, !mime ^text, !ext xml|json|csv|tex|py|pl|rb|js|sh|php = "$PAGER" -- "$@"
|
||||||
has dragon, X, flag f = dragon -a -x "$@"
|
has dragon-drop, X, flag f = dragon-drop -a -x "$@"
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
* Ranger Commands
|
* Ranger Commands
|
||||||
|
|||||||
4
rofi.org
4
rofi.org
@@ -31,7 +31,6 @@ hide-scrollbar: true;
|
|||||||
fullscreen: false;
|
fullscreen: false;
|
||||||
dpi: -1;
|
dpi: -1;
|
||||||
show-match: true;
|
show-match: true;
|
||||||
theme: "gruvbox-dark-soft";
|
|
||||||
kb-move-front: "Control+a";
|
kb-move-front: "Control+a";
|
||||||
kb-move-end: "Control+e";
|
kb-move-end: "Control+e";
|
||||||
kb-move-word-back: "Alt+b,Control+Left";
|
kb-move-word-back: "Alt+b,Control+Left";
|
||||||
@@ -48,12 +47,13 @@ kb-accept-alt: "Shift+Return";
|
|||||||
kb-delete-entry: "Shift+Delete";
|
kb-delete-entry: "Shift+Delete";
|
||||||
kb-row-up: "Up,Control+p";
|
kb-row-up: "Up,Control+p";
|
||||||
kb-row-down: "Down,Control+n";
|
kb-row-down: "Down,Control+n";
|
||||||
kb-row-tab: "Tab";
|
|
||||||
kb-row-first: "Home,KP_Home";
|
kb-row-first: "Home,KP_Home";
|
||||||
kb-row-last: "End,KP_End";
|
kb-row-last: "End,KP_End";
|
||||||
kb-row-select: "Control+space";
|
kb-row-select: "Control+space";
|
||||||
kb-cancel: "Escape,Control+g";
|
kb-cancel: "Escape,Control+g";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@theme "gruvbox-dark-soft"
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
* Theme
|
* Theme
|
||||||
|
|||||||
58
router.org
58
router.org
@@ -1,4 +1,4 @@
|
|||||||
#+TITLE: Open-WRT Router (Netgear R7000)
|
#+TITLE: Open-WRT Router (Netgear R7800)
|
||||||
#+SETUPFILE: ./setup/org-setup-file.org
|
#+SETUPFILE: ./setup/org-setup-file.org
|
||||||
|
|
||||||
* Installation
|
* Installation
|
||||||
@@ -15,11 +15,16 @@ opkg update && opkg install luci-ssl-openssl luci-theme-material ipset curl diff
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Update
|
* Update
|
||||||
|
#+begin_src matlab
|
||||||
|
opkg update
|
||||||
|
#+end_src
|
||||||
|
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
opkg list-upgradable | cut -f 1 -d ' ' | xargs -r opkg upgrade
|
opkg list-upgradable | cut -f 1 -d ' ' | xargs -r opkg upgrade
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Configuration
|
* Configuration
|
||||||
|
** Configuration Files
|
||||||
https://openwrt.org/docs/guide-user/base-system/uci#common_principles
|
https://openwrt.org/docs/guide-user/base-system/uci#common_principles
|
||||||
|
|
||||||
Configuration files are in =/etc/config=.
|
Configuration files are in =/etc/config=.
|
||||||
@@ -32,3 +37,54 @@ Configuration files are in =/etc/config=.
|
|||||||
| =/etc/config/network= | Switch, interface and route configuration: |
|
| =/etc/config/network= | Switch, interface and route configuration: |
|
||||||
| =/etc/config/system= | Misc. system settings, NTP, RNG, Watchcat |
|
| =/etc/config/system= | Misc. system settings, NTP, RNG, Watchcat |
|
||||||
| =/etc/config/wireless= | Wireless settings and wifi network definition |
|
| =/etc/config/wireless= | Wireless settings and wifi network definition |
|
||||||
|
|
||||||
|
Nice theme:
|
||||||
|
https://github.com/jerrykuku/luci-theme-argon
|
||||||
|
|
||||||
|
** VLAN
|
||||||
|
| ID | Name | Description |
|
||||||
|
|----+-----------+-------------|
|
||||||
|
| 1 | LAN | |
|
||||||
|
| 2 | WAN | |
|
||||||
|
| 3 | GUEST | |
|
||||||
|
| 4 | IOT | |
|
||||||
|
| 5 | Unifi-LAN | |
|
||||||
|
|
||||||
|
** IP Addresses
|
||||||
|
*** LAN
|
||||||
|
| Hostname | MAC-Address | IPv4-Address | Description |
|
||||||
|
|-----------------+-------------------+---------------+-------------|
|
||||||
|
| xps13 | 94:05:BB:13:6E:55 | 192.168.1.71 | |
|
||||||
|
| desktop-w10 | 14:DA:E9:D5:9D:F4 | 192.168.1.72 | |
|
||||||
|
| smart-tv | 5C:85:7E:45:F9:82 | 192.168.1.73 | |
|
||||||
|
| unifi-u6-lite-1 | 70:A7:41:C6:BE:60 | 192.168.1.74 | |
|
||||||
|
|-----------------+-------------------+---------------+-------------|
|
||||||
|
| homelab | D4:5D:64:7C:38:3C | 192.168.1.21 | |
|
||||||
|
|-----------------+-------------------+---------------+-------------|
|
||||||
|
| oneplus8 | 5A:C7:3D:21:DE:D7 | 192.168.1.101 | |
|
||||||
|
|-----------------+-------------------+---------------+-------------|
|
||||||
|
| valetudo | 7C:25:DA:37:A5:BC | 192.168.1.110 | |
|
||||||
|
|
||||||
|
|
||||||
|
*** IOT
|
||||||
|
| Hostname | MAC-Address | IPv4-Address | Description |
|
||||||
|
|-------------------------------+-------------------+--------------+-------------|
|
||||||
|
| http://shutter-1.lan/ | C4:5B:BE:5F:C8:32 | 192.168.2.10 | Shutters |
|
||||||
|
| http://shutter-2.lan/ | C4:5B:BE:5F:3A:E2 | 192.168.2.11 | |
|
||||||
|
| http://shutter-3.lan/ | C4:5B:BE:5F:35:41 | 192.168.2.12 | |
|
||||||
|
| http://shutter-salon.lan/ | 48:3F:DA:49:24:01 | 192.168.2.13 | (ESP8266) |
|
||||||
|
|-------------------------------+-------------------+--------------+-------------|
|
||||||
|
| http://shelly1-1.lan/ | E8:68:E7:86:C1:2C | 192.168.2.20 | Light-bulbs |
|
||||||
|
| http://shelly1-2.lan/ | E8:68:E7:87:46:51 | 192.168.2.21 | |
|
||||||
|
| http://shelly1-3.lan/ | 8C:AA:B5:74:CD:16 | 192.168.2.22 | |
|
||||||
|
| http://shelly1-salon.lan/ | E8:68:E7:87:27:1D | 192.168.2.24 | |
|
||||||
|
| http://shelly25-cuisine.lan/ | 98:CD:AC:1E:11:8E | 192.168.2.25 | |
|
||||||
|
| http://shelly25-entrance.lan/ | C4:5B:BE:6B:87:39 | 192.168.2.26 | |
|
||||||
|
|-------------------------------+-------------------+--------------+-------------|
|
||||||
|
| http://xiaomi-ble.lan/ | 3C:61:05:12:A8:C4 | 192.168.2.28 | Temperature |
|
||||||
|
|-------------------------------+-------------------+--------------+-------------|
|
||||||
|
| http://shellytrv-1.lan/ | BC:33:AC:03:35:8C | 192.168.2.40 | TRV |
|
||||||
|
| http://shellytrv-2.lan/ | 60:A4:23:DC:C7:1E | 192.168.2.41 | |
|
||||||
|
| http://shellytrv-3.lan/ | 60:A4:23:DC:C8:14 | 192.168.2.42 | |
|
||||||
|
| http://shellytrv-s.lan/ | 60:A4:23:DB:2B:76 | 192.168.2.43 | |
|
||||||
|
| http://shellytrv-e.lan/ | 60:A4:23:DB:2C:8C | 192.168.2.44 | |
|
||||||
|
|||||||
@@ -71,11 +71,11 @@ XF86AudioLowerVolume
|
|||||||
#+begin_src conf
|
#+begin_src conf
|
||||||
# Increase Backlight
|
# Increase Backlight
|
||||||
XF86MonBrightnessUp
|
XF86MonBrightnessUp
|
||||||
xbacklight -inc 10
|
light -A 10
|
||||||
|
|
||||||
# Descrease Backlight
|
# Descrease Backlight
|
||||||
XF86MonBrightnessDown
|
XF86MonBrightnessDown
|
||||||
xbacklight -dec 10
|
light -U 10
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Change Tracks
|
** Change Tracks
|
||||||
@@ -166,7 +166,7 @@ super + shift + b
|
|||||||
|
|
||||||
# Calculator
|
# Calculator
|
||||||
super + shift + c
|
super + shift + c
|
||||||
rofi -show calc -modi calc -no-show-match -no-sort
|
rofi -show calc -modi calc -no-show-match -no-sort -no-persist-history
|
||||||
|
|
||||||
# Sound Manager
|
# Sound Manager
|
||||||
super + shift + s
|
super + shift + s
|
||||||
|
|||||||
379
systemd.org
379
systemd.org
@@ -15,8 +15,11 @@ https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-
|
|||||||
Description=Sync Brain Website everyday
|
Description=Sync Brain Website everyday
|
||||||
RefuseManualStart=no
|
RefuseManualStart=no
|
||||||
RefuseManualStop=yes
|
RefuseManualStop=yes
|
||||||
|
OnFailure=notify-via-gotify@%i.service
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
|
Environment="PASSWORD_STORE_DIR=/home/thomas/.local/share/pass"
|
||||||
|
Environment="GNUPGHOME=/home/thomas/.local/share/gnupg"
|
||||||
Type=oneshot
|
Type=oneshot
|
||||||
ExecStart=%h/.local/bin/brain_git_push
|
ExecStart=%h/.local/bin/brain_git_push
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
@@ -36,8 +39,9 @@ Wants=network-online.target
|
|||||||
After=network-online.target
|
After=network-online.target
|
||||||
|
|
||||||
[Timer]
|
[Timer]
|
||||||
OnCalendar=*-*-* 16:00:00
|
Persistent=false
|
||||||
Persistent=true
|
OnBootSec=30min
|
||||||
|
OnUnitActiveSec=1d
|
||||||
Unit=braingit.service
|
Unit=braingit.service
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
@@ -52,7 +56,7 @@ WantedBy=default.target
|
|||||||
:END:
|
:END:
|
||||||
|
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
cd ~/Cloud/programming/brain-website/
|
cd /home/thomas/Cloud/programming/brain-website/
|
||||||
|
|
||||||
if [[ ! -z $(git status -s content/) ]]
|
if [[ ! -z $(git status -s content/) ]]
|
||||||
then
|
then
|
||||||
@@ -63,6 +67,93 @@ then
|
|||||||
fi
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* =notify-via-gotify= - Notify
|
||||||
|
** Service
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args: :tangle ~/.config/systemd/user/notify-via-gotify@.service
|
||||||
|
:header-args+: :comments both :mkdirp yes
|
||||||
|
:END:
|
||||||
|
|
||||||
|
#+begin_src conf
|
||||||
|
[Unit]
|
||||||
|
Description=%i failure notification over gotify
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Environment="PASSWORD_STORE_DIR=/home/thomas/.local/share/pass"
|
||||||
|
Environment="GNUPGHOME=/home/thomas/.local/share/gnupg"
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=/bin/bash -c "systemctl status -n10 %i | ~/.local/bin/create-gotify-notification-for-systemd --unit %i --host %H | curl -XPOST \"https://gotify.tdehaeze.xyz/message?token=$(pass nas/gotify_notif_token | sed -n 1p)\" -H \"Content-Type: application/json\" --data-binary @-"
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Script
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args: :tangle ~/.local/bin/create-gotify-notification-for-systemd
|
||||||
|
:header-args+: :comments both :mkdirp yes
|
||||||
|
:header-args+: :shebang "#!/usr/bin/env python3"
|
||||||
|
:END:
|
||||||
|
#+begin_src python
|
||||||
|
import json
|
||||||
|
import argparse
|
||||||
|
import sys
|
||||||
|
|
||||||
|
|
||||||
|
TITLE_TEMPLATE = "Systemd unit failed"
|
||||||
|
|
||||||
|
MESSAGE_TEMPLATE = "Systemd unit {unit} failed on host {host}."
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
arguments = parse_arguments()
|
||||||
|
status = "\n".join(" " + line.rstrip() for line in sys.stdin.readlines())
|
||||||
|
message = MESSAGE_TEMPLATE.format(unit=arguments.unit, host=arguments.host, status=status)
|
||||||
|
title = TITLE_TEMPLATE.format(unit=arguments.unit, host=arguments.host)
|
||||||
|
output = create_gotify_json(title, message, arguments.priority)
|
||||||
|
print(output)
|
||||||
|
|
||||||
|
|
||||||
|
def parse_arguments():
|
||||||
|
parser = argparse.ArgumentParser(
|
||||||
|
description="Create Gotify notification for failing systemd unit",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--unit",
|
||||||
|
default="unknown",
|
||||||
|
help="the failing systemd unit name",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--host",
|
||||||
|
default="unknown",
|
||||||
|
help="the failing systemd unit host",
|
||||||
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--priority",
|
||||||
|
default="5",
|
||||||
|
type=int,
|
||||||
|
help="the notification priority",
|
||||||
|
)
|
||||||
|
|
||||||
|
return parser.parse_args()
|
||||||
|
|
||||||
|
|
||||||
|
def create_gotify_json(title, message, priority):
|
||||||
|
data = {
|
||||||
|
"title": title,
|
||||||
|
"message": message,
|
||||||
|
"priority": priority,
|
||||||
|
"extras": {
|
||||||
|
"client::display": {
|
||||||
|
"contentType": "text/markdown"
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
return json.dumps(data)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
|
#+end_src
|
||||||
|
|
||||||
* =checkmail= - Check new mails
|
* =checkmail= - Check new mails
|
||||||
** Service
|
** Service
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
@@ -75,8 +166,11 @@ fi
|
|||||||
Description=Check new mails
|
Description=Check new mails
|
||||||
RefuseManualStart=no
|
RefuseManualStart=no
|
||||||
RefuseManualStop=yes
|
RefuseManualStop=yes
|
||||||
|
OnFailure=notify-via-gotify@%i.service
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
|
Environment="PASSWORD_STORE_DIR=/home/thomas/.local/share/pass"
|
||||||
|
Environment="GNUPGHOME=/home/thomas/.local/share/gnupg"
|
||||||
Type=oneshot
|
Type=oneshot
|
||||||
ExecStart=%h/.local/bin/checkmail -q
|
ExecStart=%h/.local/bin/checkmail -q
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
@@ -94,7 +188,6 @@ RefuseManualStart=no
|
|||||||
RefuseManualStop=no
|
RefuseManualStop=no
|
||||||
Wants=network-online.target
|
Wants=network-online.target
|
||||||
After=network-online.target
|
After=network-online.target
|
||||||
Requires=checkmail.service
|
|
||||||
|
|
||||||
[Timer]
|
[Timer]
|
||||||
Persistent=false
|
Persistent=false
|
||||||
@@ -125,45 +218,24 @@ while [ -n "$1" ]; do # while loop starts
|
|||||||
shift
|
shift
|
||||||
done
|
done
|
||||||
|
|
||||||
|
# Count number of new mails before retreiving mails
|
||||||
|
gmail_old="$(ls ~/.local/share/mails/gmail/Inbox/new | wc -l)"
|
||||||
|
esrf_old="$(ls ~/.local/share/mails/esrf/Inbox/new | wc -l)"
|
||||||
|
|
||||||
# =============================================================
|
|
||||||
# Count number of mails
|
|
||||||
gmail_old="$(ls ~/.mail/gmail/Inbox/new | wc -l)"
|
|
||||||
esrf_old="$(ls ~/.mail/esrf/Inbox/new | wc -l)"
|
|
||||||
# =============================================================
|
|
||||||
|
|
||||||
# =============================================================
|
|
||||||
# Retreive mails
|
# Retreive mails
|
||||||
mbsync $opt_all $opt_verbose gmail-Home esrf-Home 2>/tmp/mbsync.log
|
mbsync -c /home/thomas/.config/isync/mbsyncrc $opt_all $opt_verbose gmail-Home esrf-Home 2>/tmp/mbsync.log
|
||||||
# =============================================================
|
|
||||||
|
|
||||||
# =============================================================
|
# Count number of new mails after retreiving mails
|
||||||
# Count number of mails
|
gmail_new="$(ls ~/.local/share/mails/gmail/Inbox/new | wc -l)"
|
||||||
gmail_new="$(ls ~/.mail/gmail/Inbox/new | wc -l)"
|
esrf_new="$(ls ~/.local/share/mails/esrf/Inbox/new | wc -l)"
|
||||||
esrf_new="$(ls ~/.mail/esrf/Inbox/new | wc -l)"
|
|
||||||
# =============================================================
|
|
||||||
|
|
||||||
# =============================================================
|
# Notification if there are new retreive mails
|
||||||
# Total Number of new mails since last checking
|
if [ "$(($esrf_new+$gmail_new))" -gt "$(($esrf_old+$gmail_old))" ]; then
|
||||||
new="$(($esrf_new+$gmail_new))"
|
dunstify --replace=98465 'Mails ' "$(($gmail_new+$esrf_new)) new mail(s)"
|
||||||
old="$(($esrf_old+$gmail_old))"
|
|
||||||
# =============================================================
|
|
||||||
|
|
||||||
# =============================================================
|
|
||||||
# Notification
|
|
||||||
if [ "$new" -gt 0 ]; then
|
|
||||||
notify-send --hint=string:x-dunst-stack-tag:fV84ivMi 'Mails ' "$new new mail(s)"
|
|
||||||
fi
|
fi
|
||||||
# =============================================================
|
|
||||||
|
|
||||||
# =============================================================
|
|
||||||
# Indexation and Tags
|
# Indexation and Tags
|
||||||
if pgrep -f 'mu server'; then
|
mu index $opt_verbose $opt_quiet
|
||||||
emacsclient --eval '(mu4e-update-index)'
|
|
||||||
else
|
|
||||||
mu index -m ~/.mail $opt_verbose $opt_quiet
|
|
||||||
fi
|
|
||||||
# =============================================================
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* =syncmail= - Synchronize all mails
|
* =syncmail= - Synchronize all mails
|
||||||
@@ -178,8 +250,11 @@ fi
|
|||||||
Description=Sync all mails
|
Description=Sync all mails
|
||||||
RefuseManualStart=no
|
RefuseManualStart=no
|
||||||
RefuseManualStop=yes
|
RefuseManualStop=yes
|
||||||
|
OnFailure=notify-via-gotify@%i.service
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
|
Environment="PASSWORD_STORE_DIR=/home/thomas/.local/share/pass"
|
||||||
|
Environment="GNUPGHOME=/home/thomas/.local/share/gnupg"
|
||||||
Type=oneshot
|
Type=oneshot
|
||||||
ExecStart=%h/.local/bin/checkmail -a -q
|
ExecStart=%h/.local/bin/checkmail -a -q
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
@@ -197,7 +272,6 @@ RefuseManualStart=no
|
|||||||
RefuseManualStop=no
|
RefuseManualStop=no
|
||||||
Wants=network-online.target
|
Wants=network-online.target
|
||||||
After=network-online.target
|
After=network-online.target
|
||||||
Requires=syncmail.service
|
|
||||||
|
|
||||||
[Timer]
|
[Timer]
|
||||||
Persistent=false
|
Persistent=false
|
||||||
@@ -223,9 +297,12 @@ Description=Synchronize calendars and contacts
|
|||||||
Documentation=https://vdirsyncer.readthedocs.org/
|
Documentation=https://vdirsyncer.readthedocs.org/
|
||||||
Wants=network-online.target
|
Wants=network-online.target
|
||||||
After=network-online.target
|
After=network-online.target
|
||||||
|
OnFailure=notify-via-gotify@%i.service
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
ExecStart=/home/thomas/.local/bin/vdirsyncer --verbosity "ERROR" sync
|
Environment="PASSWORD_STORE_DIR=/home/thomas/.local/share/pass"
|
||||||
|
Environment="GNUPGHOME=/home/thomas/.local/share/gnupg"
|
||||||
|
ExecStart=/usr/bin/vdirsyncer --verbosity "ERROR" sync
|
||||||
Type=oneshot
|
Type=oneshot
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -248,89 +325,13 @@ AccuracySec=5m
|
|||||||
WantedBy=timers.target
|
WantedBy=timers.target
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* TODO =ssh-agent= - SSH Agent
|
* =syncthing= - Synchronize =Cloud= directory
|
||||||
** Service
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.config/systemd/user/ssh-agent.service
|
|
||||||
:header-args+: :comments both :mkdirp yes
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+begin_src conf
|
|
||||||
[Unit]
|
|
||||||
Description=SSH key agent
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
|
|
||||||
ExecStart=/usr/bin/ssh-agent -D -a $SSH_AUTH_SOCK
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=default.target
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* TODO =emacs= - Emacs
|
|
||||||
** Service
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.config/systemd/user/emacs.service
|
|
||||||
:header-args+: :comments both :mkdirp yes
|
|
||||||
:END:
|
|
||||||
#+begin_src conf
|
|
||||||
[Unit]
|
|
||||||
Description=Emacs text editor
|
|
||||||
Documentation=info:emacs man:emacs(1) https://gnu.org/software/emacs/
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
Type=simple
|
|
||||||
ExecStart=/usr/bin/emacs --fg-daemon
|
|
||||||
ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)"
|
|
||||||
Environment=SSH_AUTH_SOCK=%t/keyring/ssh
|
|
||||||
Restart=on-failure
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=default.target
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
* TODO =trash-empty= - Empty the trash for files older than 30 days
|
|
||||||
** Service
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.config/systemd/user/trash-empty.service
|
|
||||||
:header-args+: :comments both :mkdirp yes
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+begin_src conf
|
|
||||||
[Unit]
|
|
||||||
Description=Empty the trash for files older than 30 days
|
|
||||||
Documentation=https://github.com/andreafrancia/trash-cli
|
|
||||||
|
|
||||||
[Service]
|
|
||||||
ExecStart=/home/thomas/.local/bin/trash-empty 30
|
|
||||||
Type=oneshot
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Timer
|
|
||||||
:PROPERTIES:
|
|
||||||
:header-args: :tangle ~/.config/systemd/user/trash-empty.timer
|
|
||||||
:header-args+: :comments both :mkdirp yes
|
|
||||||
:END:
|
|
||||||
|
|
||||||
#+begin_src conf
|
|
||||||
[Unit]
|
|
||||||
Description=Empty trash
|
|
||||||
|
|
||||||
[Timer]
|
|
||||||
OnCalendar=*-*-* 16:00:00
|
|
||||||
Persistent=true
|
|
||||||
Unit=trash-empty
|
|
||||||
|
|
||||||
[Install]
|
|
||||||
WantedBy=timers.target
|
|
||||||
#+end_src
|
|
||||||
* =syncthing=
|
|
||||||
** Service
|
** Service
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args: :tangle ~/.config/systemd/user/syncthing.service
|
:header-args: :tangle ~/.config/systemd/user/syncthing.service
|
||||||
:header-args+: :comments both :mkdirp yes
|
:header-args+: :comments both :mkdirp yes
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
#+begin_src conf
|
#+begin_src conf
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Syncthing - Open Source Continuous File Synchronization for %I
|
Description=Syncthing - Open Source Continuous File Synchronization for %I
|
||||||
@@ -348,6 +349,150 @@ RestartForceExitStatus=3 4
|
|||||||
WantedBy=default.target
|
WantedBy=default.target
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* =restic-backup= - Backup Home Directory
|
||||||
|
** Backup
|
||||||
|
*** Service
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args: :tangle ~/.config/systemd/user/restic-backup.service
|
||||||
|
:header-args+: :comments both :mkdirp yes
|
||||||
|
:END:
|
||||||
|
|
||||||
|
#+BEGIN_SRC conf
|
||||||
|
[Unit]
|
||||||
|
Description=Backup Home Directory
|
||||||
|
RefuseManualStart=no
|
||||||
|
RefuseManualStop=no
|
||||||
|
OnFailure=notify-via-gotify@%i.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Environment="PASSWORD_STORE_DIR=/home/thomas/.local/share/pass"
|
||||||
|
Environment="GNUPGHOME=/home/thomas/.local/share/gnupg"
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=%h/.local/bin/restic-backup
|
||||||
|
ExecStartPost=/bin/sleep 30
|
||||||
|
ExecStartPost=%h/.local/bin/restic-forget
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
*** Timer
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args: :tangle ~/.config/systemd/user/restic-backup.timer
|
||||||
|
:header-args+: :comments both :mkdirp yes
|
||||||
|
:END:
|
||||||
|
|
||||||
|
#+BEGIN_SRC conf
|
||||||
|
[Unit]
|
||||||
|
Description=Backup Home Directory Everyday
|
||||||
|
RefuseManualStart=no
|
||||||
|
RefuseManualStop=no
|
||||||
|
Wants=network-online.target
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
Persistent=true
|
||||||
|
OnCalendar=daily
|
||||||
|
Unit=restic-backup.service
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
*** Script - Backup
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args: :tangle ~/.local/bin/restic-backup
|
||||||
|
:header-args+: :comments both :mkdirp yes
|
||||||
|
:header-args+: :shebang "#!/usr/bin/env bash"
|
||||||
|
:END:
|
||||||
|
|
||||||
|
#+begin_src bash
|
||||||
|
restic backup \
|
||||||
|
-r sftp:thomas@homelab:/srv/storage/Backups/esrf-laptop \
|
||||||
|
--password-command "pass show restic" \
|
||||||
|
--verbose --one-file-system --tag systemd.timer \
|
||||||
|
--exclude "/home/thomas/.cache" \
|
||||||
|
--exclude "/home/thomas/Cloud" \
|
||||||
|
--exclude "/home/thomas/mnt" \
|
||||||
|
--exclude "/home/thomas/perl5" \
|
||||||
|
--exclude "/home/thomas/.local/soft" \
|
||||||
|
/home/thomas
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
*** Script - Forget
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args: :tangle ~/.local/bin/restic-forget
|
||||||
|
:header-args+: :comments both :mkdirp yes
|
||||||
|
:header-args+: :shebang "#!/usr/bin/env bash"
|
||||||
|
:END:
|
||||||
|
|
||||||
|
#+begin_src bash
|
||||||
|
restic unlock \
|
||||||
|
-r sftp:thomas@homelab:/srv/storage/Backups/esrf-laptop \
|
||||||
|
--password-command "pass show restic" && \
|
||||||
|
restic forget \
|
||||||
|
-r sftp:thomas@homelab:/srv/storage/Backups/esrf-laptop \
|
||||||
|
--password-command "pass show restic" \
|
||||||
|
--verbose --tag systemd.timer \
|
||||||
|
--group-by "paths,tags" \
|
||||||
|
--keep-daily 7 \
|
||||||
|
--keep-weekly 4 \
|
||||||
|
--keep-monthly 1 \
|
||||||
|
--keep-yearly 1
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
** Prune
|
||||||
|
*** Service
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args: :tangle ~/.config/systemd/user/restic-prune.service
|
||||||
|
:header-args+: :comments both :mkdirp yes
|
||||||
|
:END:
|
||||||
|
|
||||||
|
#+BEGIN_SRC conf
|
||||||
|
[Unit]
|
||||||
|
Description=Prune restic backup
|
||||||
|
RefuseManualStart=no
|
||||||
|
RefuseManualStop=no
|
||||||
|
OnFailure=notify-via-gotify@%i.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Environment="PASSWORD_STORE_DIR=/home/thomas/.local/share/pass"
|
||||||
|
Environment="GNUPGHOME=/home/thomas/.local/share/gnupg"
|
||||||
|
Type=oneshot
|
||||||
|
ExecStart=%h/.local/bin/restic-prune
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
*** Timer
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args: :tangle ~/.config/systemd/user/restic-prune.timer
|
||||||
|
:header-args+: :comments both :mkdirp yes
|
||||||
|
:END:
|
||||||
|
|
||||||
|
#+BEGIN_SRC conf
|
||||||
|
[Unit]
|
||||||
|
Description=Prune Restic Backup
|
||||||
|
RefuseManualStart=no
|
||||||
|
RefuseManualStop=no
|
||||||
|
Wants=network-online.target
|
||||||
|
|
||||||
|
[Timer]
|
||||||
|
Persistent=true
|
||||||
|
OnCalendar=monthly
|
||||||
|
Unit=restic-prune.service
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=default.target
|
||||||
|
#+END_SRC
|
||||||
|
|
||||||
|
*** Script
|
||||||
|
:PROPERTIES:
|
||||||
|
:header-args: :tangle ~/.local/bin/restic-prune
|
||||||
|
:header-args+: :comments both :mkdirp yes
|
||||||
|
:header-args+: :shebang "#!/usr/bin/env bash"
|
||||||
|
:END:
|
||||||
|
|
||||||
|
#+begin_src bash
|
||||||
|
restic prune \
|
||||||
|
-r sftp:thomas@homelab:/srv/storage/Backups/esrf-laptop \
|
||||||
|
--password-command "pass show restic" \
|
||||||
|
#+end_src
|
||||||
|
|
||||||
* =homelab-tunnel= - SSH Tunnel
|
* =homelab-tunnel= - SSH Tunnel
|
||||||
Useful to bypass firewalls.
|
Useful to bypass firewalls.
|
||||||
This can we used on the browser:
|
This can we used on the browser:
|
||||||
@@ -390,7 +535,7 @@ Description=Setup a secure tunnel with ESRF
|
|||||||
After=network.target
|
After=network.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
ExecStart=/usr/bin/ssh -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -D 8081 -q -N -T rnice.esrf.fr
|
ExecStart=/usr/bin/ssh -o ServerAliveInterval=60 -o ExitOnForwardFailure=yes -D 8081 -q -N -T firewall.esrf.fr
|
||||||
|
|
||||||
# Restart every >2 seconds to avoid StartLimitInterval failure
|
# Restart every >2 seconds to avoid StartLimitInterval failure
|
||||||
RestartSec=5
|
RestartSec=5
|
||||||
|
|||||||
48
tablet.org
48
tablet.org
@@ -1,5 +1,8 @@
|
|||||||
#+TITLE: Drawing Tablet - Xournal
|
#+TITLE: Drawing Tablet - Xournal
|
||||||
#+SETUPFILE: ./setup/org-setup-file.org
|
#+SETUPFILE: ./setup/org-setup-file.org
|
||||||
|
#+PROPERTY: header-args:bash :comments both :mkdirp yes
|
||||||
|
#+PROPERTY: header-args:bash+ :shebang "#!/usr/bin/env bash"
|
||||||
|
#+PROPERTY: header-args:bash+ :tangle-mode (identity #o555)
|
||||||
|
|
||||||
* =xournalpp=
|
* =xournalpp=
|
||||||
|
|
||||||
@@ -50,3 +53,48 @@ Special lines in =settings.xml=:
|
|||||||
<property name="eagerPageCleanup" value="true"/>
|
<property name="eagerPageCleanup" value="true"/>
|
||||||
<property name="pageTemplate" value="xoj/template copyLastPageSettings=false size=600.0x400.0 backgroundType=plain backgroundColor=#ffffff "/>
|
<property name="pageTemplate" value="xoj/template copyLastPageSettings=false size=600.0x400.0 backgroundType=plain backgroundColor=#ffffff "/>
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
|
* Automatically configure tablet
|
||||||
|
See [[https://unix.stackexchange.com/questions/65788/why-doesnt-xsetwacom-work-from-udev][here]].
|
||||||
|
|
||||||
|
=sudoedit /etc/udev/rules.d/99-huion-tablet.rules=
|
||||||
|
#+begin_src conf :tangle no
|
||||||
|
SUBSYSTEM=="usb", ACTION=="add", ATTR{idVendor}=="256c", ATTRS{idProduct}=="006d", RUN="/home/thomas/.local/scripts/setup-huion-tablet.sh"
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
Then two scripts are used.
|
||||||
|
The first one is just used to call the second one in the background
|
||||||
|
#+begin_src bash :tangle ~/.local/scripts/setup-huion-tablet.sh
|
||||||
|
/home/thomas/.local/scripts/setup-huion-tablet-script.sh &
|
||||||
|
#+end_src
|
||||||
|
|
||||||
|
And this is the second one with the actual config:
|
||||||
|
#+begin_src bash :tangle ~/.local/scripts/setup-huion-tablet-script.sh
|
||||||
|
sleep 2
|
||||||
|
|
||||||
|
DISPLAY=:0
|
||||||
|
XAUTHORITY=/home/thomas/.Xauthority
|
||||||
|
export DISPLAY XAUTHORITY
|
||||||
|
|
||||||
|
# Pen Buttons
|
||||||
|
xsetwacom set "HUION Huion Tablet_H320M Pen stylus" button 1 1 # Left click
|
||||||
|
xsetwacom set "HUION Huion Tablet_H320M Pen stylus" button 2 2 # Right click
|
||||||
|
xsetwacom set "HUION Huion Tablet_H320M Pen stylus" button 3 3 # Middle click
|
||||||
|
|
||||||
|
# Top Buttons
|
||||||
|
xsetwacom set "HUION Huion Tablet_H320M Pad pad" button 1 key Ctrl T # Tools
|
||||||
|
xsetwacom set "HUION Huion Tablet_H320M Pad pad" button 2 key Ctrl Shift A # Hand Tool
|
||||||
|
xsetwacom set "HUION Huion Tablet_H320M Pad pad" button 3 key Ctrl Shift D # Default Tool
|
||||||
|
|
||||||
|
# Round Buttons (Top, Bottom, Middle, Left, Right)
|
||||||
|
xsetwacom set "HUION Huion Tablet_H320M Pad pad" button 8 key Ctrl Shift + # Zoom
|
||||||
|
xsetwacom set "HUION Huion Tablet_H320M Pad pad" button 9 key Ctrl - # Unzoom
|
||||||
|
xsetwacom set "HUION Huion Tablet_H320M Pad pad" button 10 key Ctrl S # Save
|
||||||
|
xsetwacom set "HUION Huion Tablet_H320M Pad pad" button 11 key Ctrl Z # Undo
|
||||||
|
xsetwacom set "HUION Huion Tablet_H320M Pad pad" button 12 key Ctrl Y # Redo
|
||||||
|
|
||||||
|
# Bottom Buttons
|
||||||
|
xsetwacom set "HUION Huion Tablet_H320M Pad pad" button 13 key Ctrl Shift O # Select
|
||||||
|
xsetwacom set "HUION Huion Tablet_H320M Pad pad" button 14 key Ctrl Shift E # Errase
|
||||||
|
xsetwacom set "HUION Huion Tablet_H320M Pad pad" button 15 key Ctrl Q # Quit
|
||||||
|
#+end_src
|
||||||
|
|||||||
2
tmux.org
2
tmux.org
@@ -1,6 +1,6 @@
|
|||||||
#+TITLE: Tmux Configuration
|
#+TITLE: Tmux Configuration
|
||||||
#+SETUPFILE: ./setup/org-setup-file.org
|
#+SETUPFILE: ./setup/org-setup-file.org
|
||||||
#+PROPERTY: header-args :tangle ~/.tmux.conf
|
#+PROPERTY: header-args :tangle ~/.config/tmux/tmux.conf
|
||||||
#+PROPERTY: header-args+ :comments both :mkdirp yes
|
#+PROPERTY: header-args+ :comments both :mkdirp yes
|
||||||
|
|
||||||
* Line
|
* Line
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
#+TITLE: Torrent Configuration
|
#+TITLE: Torrent Configuration
|
||||||
#+SETUPFILE: ./setup/org-setup-file.org
|
#+SETUPFILE: ./setup/org-setup-file.org
|
||||||
|
|
||||||
* =stig= - TUI and CLI for Transmission
|
* =stig= - TUI and CLI for Transmission ([[https://github.com/rndusr/stig][link]])
|
||||||
https://github.com/rndusr/stig
|
|
||||||
|
|
||||||
#+begin_src conf :comments none :mkdirp yes :tangle ~/.config/stig/rc :noweb no-export
|
#+begin_src conf :comments none :mkdirp yes :tangle ~/.config/stig/rc :noweb no-export
|
||||||
# Host that runs Transmission daemon
|
# Host that runs Transmission daemon
|
||||||
set connect.host torrent.tdehaeze.xyz
|
set connect.host <<get-password(passname="ip/homelab")>>
|
||||||
set connect.port 9091
|
set connect.port 9091
|
||||||
set connect.user tdehaeze
|
set connect.user tdehaeze
|
||||||
set connect.password <<get-password(passname="nas/transmission")>>
|
set connect.password <<get-password(passname="nas/transmission")>>
|
||||||
|
|||||||
@@ -28,8 +28,6 @@ alang=en,fr
|
|||||||
|
|
||||||
# Do not close mpv at the end of video
|
# Do not close mpv at the end of video
|
||||||
keep-open=yes
|
keep-open=yes
|
||||||
|
|
||||||
script-opts=ytdl_hook-ytdl_path=/home/thomas/miniconda3/bin/yt-dlp
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* =input.conf= - MPV Key Bindings
|
* =input.conf= - MPV Key Bindings
|
||||||
|
|||||||
192
vim.org
192
vim.org
@@ -2,12 +2,12 @@
|
|||||||
#+SETUPFILE: ./setup/org-setup-file.org
|
#+SETUPFILE: ./setup/org-setup-file.org
|
||||||
#+PROPERTY: header-args :comments none
|
#+PROPERTY: header-args :comments none
|
||||||
#+PROPERTY: header-args+ :mkdirp yes
|
#+PROPERTY: header-args+ :mkdirp yes
|
||||||
#+PROPERTY: header-args+ :tangle ~/.vimrc
|
#+PROPERTY: header-args+ :tangle ~/.config/nvim/init.vim
|
||||||
|
|
||||||
* Plugins Install
|
* Plugins Install
|
||||||
** Plug start
|
** Plug start
|
||||||
#+BEGIN_SRC vimrc
|
#+BEGIN_SRC vimrc
|
||||||
call plug#begin('~/.vim/plugged')
|
call plug#begin('~/.config/nvim/plugged')
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Manage Files
|
** Manage Files
|
||||||
@@ -34,7 +34,6 @@ Plug 'jiangmiao/auto-pairs' " Vim plugin, insert or delete brackets,
|
|||||||
|
|
||||||
** Git
|
** Git
|
||||||
#+begin_src vimrc
|
#+begin_src vimrc
|
||||||
" Plug 'mhinz/vim-signify' " Show a diff using Vim its sign column
|
|
||||||
Plug 'TimUntersberger/neogit'
|
Plug 'TimUntersberger/neogit'
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
@@ -78,7 +77,7 @@ Plug 'morhetz/gruvbox' " Retro groove color scheme for Vim
|
|||||||
|
|
||||||
Other nice themes are [[https://github.com/mhartington/oceanic-next][oceanic-next]] and [[https://github.com/jacoborus/tender.vim][tender]].
|
Other nice themes are [[https://github.com/mhartington/oceanic-next][oceanic-next]] and [[https://github.com/jacoborus/tender.vim][tender]].
|
||||||
|
|
||||||
** TODO Language Server Protocol
|
** Language Server Protocol
|
||||||
#+begin_src vimrc
|
#+begin_src vimrc
|
||||||
" LSP Support
|
" LSP Support
|
||||||
Plug 'neovim/nvim-lspconfig'
|
Plug 'neovim/nvim-lspconfig'
|
||||||
@@ -103,28 +102,12 @@ Plug 'VonHeikemen/lsp-zero.nvim'
|
|||||||
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
|
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Snippnets and autocompletion
|
|
||||||
#+begin_src vimrc
|
|
||||||
" Plug 'SirVer/ultisnips' " The ultimate snippet solution for Vim
|
|
||||||
" Plug 'honza/vim-snippets' " Vim-snipmate default snippets
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Syntax Checking and Build Utils
|
|
||||||
#+begin_src vimrc
|
|
||||||
" Plug 'neomake/neomake' " Asynchronous linting and make framework for Neovim/Vim
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Tmux
|
** Tmux
|
||||||
#+begin_src vimrc
|
#+begin_src vimrc
|
||||||
Plug 'christoomey/vim-tmux-navigator' " Seamless navigation between tmux panes and vim splits
|
Plug 'christoomey/vim-tmux-navigator' " Seamless navigation between tmux panes and vim splits
|
||||||
Plug 'jpalardy/vim-slime' " Used to type text into a REPL
|
Plug 'jpalardy/vim-slime' " Used to type text into a REPL
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Syntax
|
|
||||||
#+begin_src vimrc
|
|
||||||
" Plug 'sheerun/vim-polyglot' " A solid language pack for Vim
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** LaTeX
|
** LaTeX
|
||||||
#+begin_src vimrc
|
#+begin_src vimrc
|
||||||
" Plug 'lervag/vimtex', { 'for': 'tex' } " A modern vim plugin for editing LaTeX files.
|
" Plug 'lervag/vimtex', { 'for': 'tex' } " A modern vim plugin for editing LaTeX files.
|
||||||
@@ -144,8 +127,6 @@ call plug#end()
|
|||||||
* Basic
|
* Basic
|
||||||
** General
|
** General
|
||||||
#+begin_src vimrc
|
#+begin_src vimrc
|
||||||
set runtimepath+=~/.vim
|
|
||||||
|
|
||||||
" Sets how many lines of history VIM has to remember
|
" Sets how many lines of history VIM has to remember
|
||||||
set history=500
|
set history=500
|
||||||
|
|
||||||
@@ -443,7 +424,7 @@ set guioptions-=L
|
|||||||
** Turn persistent undo on
|
** Turn persistent undo on
|
||||||
#+begin_src vimrc
|
#+begin_src vimrc
|
||||||
try
|
try
|
||||||
set undodir=~/.vim_runtime/temp_dirs/undodir
|
set undodir=~/.local/share/nvim/undodir
|
||||||
set undofile
|
set undofile
|
||||||
catch
|
catch
|
||||||
endtry
|
endtry
|
||||||
@@ -662,7 +643,7 @@ au FileType matlab nmap <buffer> <localleader>mw :SlimeSend0('workspace')<CR>
|
|||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Plugins Config
|
* Plugins Config
|
||||||
** Treesitter
|
** =nvim-treesitter=
|
||||||
#+begin_src vimrc
|
#+begin_src vimrc
|
||||||
lua <<EOF
|
lua <<EOF
|
||||||
require'nvim-treesitter.configs'.setup {
|
require'nvim-treesitter.configs'.setup {
|
||||||
@@ -674,97 +655,7 @@ require'nvim-treesitter.configs'.setup {
|
|||||||
EOF
|
EOF
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** =junegunn/fzf=
|
** =lightline=
|
||||||
#+begin_src vimrc
|
|
||||||
" " This is the default extra key bindings
|
|
||||||
" let g:fzf_action = {
|
|
||||||
" \ 'ctrl-t': 'tab split',
|
|
||||||
" \ 'ctrl-h': 'split',
|
|
||||||
" \ 'ctrl-v': 'vsplit' }
|
|
||||||
" " [[B]Commits] Customize the options used by 'git log':
|
|
||||||
" let g:fzf_commits_log_options = '--graph --color=always --format="%C(auto)%h%d %s %C(black)%C(bold)%cr"'
|
|
||||||
|
|
||||||
" let g:fzf_colors =
|
|
||||||
" \ { 'fg': ['fg', 'Normal'],
|
|
||||||
" \ 'bg': ['bg', 'Normal'],
|
|
||||||
" \ 'hl': ['fg', 'Comment'],
|
|
||||||
" \ 'fg+': ['fg', 'CursorLine', 'CursorColumn', 'Normal'],
|
|
||||||
" \ 'bg+': ['bg', 'CursorLine', 'CursorColumn'],
|
|
||||||
" \ 'hl+': ['fg', 'Statement'],
|
|
||||||
" \ 'info': ['fg', 'PreProc'],
|
|
||||||
" \ 'prompt': ['fg', 'Conditional'],
|
|
||||||
" \ 'pointer': ['fg', 'Exception'],
|
|
||||||
" \ 'marker': ['fg', 'Keyword'],
|
|
||||||
" \ 'spinner': ['fg', 'Label'],
|
|
||||||
" \ 'header': ['fg', 'Comment'] }
|
|
||||||
|
|
||||||
" function! s:fzf_statusline()
|
|
||||||
" " Override statusline as you like
|
|
||||||
" highlight fzf1 ctermfg=161 ctermbg=251
|
|
||||||
" highlight fzf2 ctermfg=23 ctermbg=251
|
|
||||||
" highlight fzf3 ctermfg=237 ctermbg=251
|
|
||||||
" setlocal statusline=%#fzf1#\ >\ %#fzf2#fz%#fzf3#f
|
|
||||||
" endfunction
|
|
||||||
|
|
||||||
" autocmd! User FzfStatusLine call <SID>fzf_statusline()
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** =autozimu/LanguageClient-neovim=
|
|
||||||
#+begin_src vimrc
|
|
||||||
" let g:LanguageClient_serverCommands = {
|
|
||||||
" \ 'matlab': ['java', ' -Djava.library.path=$MATLABROOT/bin/glnxa64 -cp $MATLABROOT/extern/engines/java/jar/engine.jar:$MATLABROOT/java/jar/jmi.jar:/home/thomas/github/matlab-langserver/build/libs/lsp-matlab-0.1.jar org.tokor.lspmatlab.Application'],
|
|
||||||
" \ }
|
|
||||||
|
|
||||||
" nnoremap <F5> :call LanguageClient_contextMenu()<CR>
|
|
||||||
" " Or map each action separately
|
|
||||||
" nnoremap <silent> K :call LanguageClient#textDocument_hover()<CR>
|
|
||||||
" nnoremap <silent> gd :call LanguageClient#textDocument_definition()<CR>
|
|
||||||
" nnoremap <silent> <F2> :call LanguageClient#textDocument_rename()<CR>
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** =JamshedVesuna/vim-markdown-preview=
|
|
||||||
#+begin_src vimrc
|
|
||||||
" let vim_markdown_preview_github=1
|
|
||||||
" let vim_markdown_preview_browser='Google Chrome'
|
|
||||||
" let vim_markdown_preview_temp_file=1
|
|
||||||
" let vim_markdown_preview_pandoc=1
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** =mhinz/vim-signify=
|
|
||||||
#+begin_src vimrc
|
|
||||||
let g:signify_vcs_list = ['git']
|
|
||||||
|
|
||||||
let g:signify_disable_by_default = 1
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** =Deoplete=
|
|
||||||
#+begin_src vimrc
|
|
||||||
" let g:deoplete#enable_at_startup = 1
|
|
||||||
|
|
||||||
" let g:deoplete#omni#functions = {}
|
|
||||||
" set completeopt=longest,menuone,preview
|
|
||||||
" let g:deoplete#sources = {}
|
|
||||||
" let g:deoplete#enable_smart_case = 1
|
|
||||||
" call deoplete#custom#set('ultisnips', 'matchers', ['matcher_fuzzy'])
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** =SirVer/ultisnips=
|
|
||||||
#+begin_src vimrc
|
|
||||||
" let g:UltiSnipsSnippetsDir = '~/.vim/UltiSnip'
|
|
||||||
|
|
||||||
" " inoremap <silent><expr><TAB> pumvisible() ? "\<C-n>" : "\<TAB>"
|
|
||||||
" let g:UltiSnipsExpandTrigger="<C-j>"
|
|
||||||
" let g:UltiSnipsJumpForwardTrigger="<tab>"
|
|
||||||
" let g:UltiSnipsJumpBackwardTrigger="<s-tab>"
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** =honza/vim-snippets=
|
|
||||||
#+begin_src vimrc
|
|
||||||
let g:snipMate = {}
|
|
||||||
let g:snipMate.scope_aliases = {}
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** =itchyny/lightline.vim=
|
|
||||||
#+begin_src vimrc
|
#+begin_src vimrc
|
||||||
" \ 'colorscheme': 'gruvbox',
|
" \ 'colorscheme': 'gruvbox',
|
||||||
let g:lightline = {
|
let g:lightline = {
|
||||||
@@ -784,7 +675,7 @@ let g:lightline = {
|
|||||||
\ }
|
\ }
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Git
|
** =neogit=
|
||||||
#+begin_src vimrc
|
#+begin_src vimrc
|
||||||
lua <<EOF
|
lua <<EOF
|
||||||
local neogit = require('neogit')
|
local neogit = require('neogit')
|
||||||
@@ -793,7 +684,7 @@ neogit.setup {}
|
|||||||
EOF
|
EOF
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** LSP
|
** =lsp-zero=
|
||||||
#+begin_src vimrc
|
#+begin_src vimrc
|
||||||
lua <<EOF
|
lua <<EOF
|
||||||
local lsp = require('lsp-zero')
|
local lsp = require('lsp-zero')
|
||||||
@@ -803,25 +694,25 @@ lsp.setup()
|
|||||||
EOF
|
EOF
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** =Autopairs=
|
** =autopairs=
|
||||||
#+begin_src vimrc
|
#+begin_src vimrc
|
||||||
" Incompatibilité entre auto-pairs et clang-complete
|
" Incompatibilité entre auto-pairs et clang-complete
|
||||||
let g:AutoPairsMapCR = 0
|
let g:AutoPairsMapCR = 0
|
||||||
imap <silent><CR> <CR><Plug>AutoPairsReturn
|
imap <silent><CR> <CR><Plug>AutoPairsReturn
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** =Yggdroot/indentLine=
|
** =indentLine=
|
||||||
#+begin_src vimrc
|
#+begin_src vimrc
|
||||||
" :IndentLinesToggle toggles lines on and off.
|
" :IndentLinesToggle toggles lines on and off.
|
||||||
let g:indentLine_color_term = 239
|
let g:indentLine_color_term = 239
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** =ryanoasis/vim-devicons=
|
** =vim-devicons=
|
||||||
#+begin_src vimrc
|
#+begin_src vimrc
|
||||||
let g:webdevicons_enable_ctrlp = 1
|
let g:webdevicons_enable_ctrlp = 1
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** =tpope/vim-surround=
|
** =vim-surround=
|
||||||
#+begin_src vimrc
|
#+begin_src vimrc
|
||||||
vmap Si S(i_<esc>f)
|
vmap Si S(i_<esc>f)
|
||||||
au FileType mako vmap Si S"i${ _(<esc>2f"a) }<esc>
|
au FileType mako vmap Si S"i${ _(<esc>2f"a) }<esc>
|
||||||
@@ -829,43 +720,14 @@ au FileType mako vmap Si S"i${ _(<esc>2f"a) }<esc>
|
|||||||
let g:surround_{char2nr('b')} = "__\r__"
|
let g:surround_{char2nr('b')} = "__\r__"
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** =Neomake=
|
** =vimtex=
|
||||||
#+begin_src vimrc
|
#+begin_src vimrc :tangle no
|
||||||
" " Latex
|
let g:tex_conceal=""
|
||||||
" autocmd! BufWritePost *.tex Neomake
|
autocmd FileType tex let b:vimtex_main = 'main.tex'
|
||||||
" let g:neomake_tex_chktex_maker = {
|
let g:vimtex_mappings_enabled=0
|
||||||
" \ 'exe': 'chktex',
|
|
||||||
" \ 'args': ['--inputfiles'],
|
|
||||||
" \ 'errorformat':
|
|
||||||
" \ '%EError %n in %f line %l: %m,' .
|
|
||||||
" \ '%WWarning %n in %f line %l: %m,' .
|
|
||||||
" \ '%WMessage %n in %f line %l: %m,' .
|
|
||||||
" \ '%Z%p^,' .
|
|
||||||
" \ '%-G%.%#'
|
|
||||||
" \ }
|
|
||||||
|
|
||||||
" let g:neomake_tex_enabled_makers = ['chktex']
|
|
||||||
|
|
||||||
" " Matlab
|
|
||||||
" autocmd! BufWritePost *.m Neomake
|
|
||||||
" let g:neomake_matlab_mlint_maker = {
|
|
||||||
" \ 'exe': 'mlint',
|
|
||||||
" \ 'mapexpr': "neomake_bufname.':'.v:val",
|
|
||||||
" \ 'errorformat':
|
|
||||||
" \ '%f:L %l (C %c): %m,' .
|
|
||||||
" \ '%f:L %l (C %c-%*[0-9]): %m,',
|
|
||||||
" \ }
|
|
||||||
" let g:neomake_matlab_enabled_makers = ['mlint']
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** =lervag/vimtex=
|
** =vim-slime=
|
||||||
#+begin_src vimrc
|
|
||||||
" let g:tex_conceal=""
|
|
||||||
" autocmd FileType tex let b:vimtex_main = 'main.tex'
|
|
||||||
" let g:vimtex_mappings_enabled=0
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** =jpalardy/vim-slime=
|
|
||||||
#+begin_src vimrc
|
#+begin_src vimrc
|
||||||
if exists('$TMUX')
|
if exists('$TMUX')
|
||||||
let g:slime_target = "tmux"
|
let g:slime_target = "tmux"
|
||||||
@@ -874,20 +736,14 @@ if exists('$TMUX')
|
|||||||
endif
|
endif
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** =mhinz/vim-grepper=
|
** =vim-grepper=
|
||||||
#+begin_src vimrc
|
#+begin_src vimrc :tangle no
|
||||||
" nnoremap <leader>G :Grepper -tool ag<cr>
|
nnoremap <leader>G :Grepper -tool ag<cr>
|
||||||
" nmap gs <plug>(GrepperOperator)
|
nmap gs <plug>(GrepperOperator)
|
||||||
" xmap gs <plug>(GrepperOperator)
|
xmap gs <plug>(GrepperOperator)
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
** Editor config
|
** =telescope=
|
||||||
#+begin_src vimrc
|
|
||||||
" To ensure that this plugin works well with Tim Pope's fugitive, use the following patterns array:
|
|
||||||
let g:EditorConfig_exclude_patterns = ['fugitive://.*']
|
|
||||||
#+end_src
|
|
||||||
|
|
||||||
** Telescope
|
|
||||||
#+begin_src vimrc
|
#+begin_src vimrc
|
||||||
lua <<EOF
|
lua <<EOF
|
||||||
require('telescope').load_extension('fzf')
|
require('telescope').load_extension('fzf')
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManage
|
|||||||
|
|
||||||
Then, install all required software using one command:
|
Then, install all required software using one command:
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
choco install -y firefox 7zip.install vlc git.install malwarebytes sumatrapdf.install steam anydesk discord f.lux cmder cura ccleaner neovim imageglass
|
choco install -y firefox 7zip.install vlc git.install malwarebytes sumatrapdf.install steam anydesk discord f.lux cmder cura ccleaner neovim imageglass mobaxterm
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* Debloat windows10
|
* Debloat windows10
|
||||||
|
|||||||
34
xconfig.org
34
xconfig.org
@@ -63,29 +63,25 @@ Xcursor.theme: Breeze
|
|||||||
Xcursor.size: 0
|
Xcursor.size: 0
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
* =~/.xinitrc=
|
* =xinitrc=
|
||||||
:PROPERTIES:
|
:PROPERTIES:
|
||||||
:header-args: :tangle ~/.xinitrc
|
:header-args: :tangle ~/.config/X11/xinitrc
|
||||||
:header-args+: :comments both :mkdirp yes
|
:header-args+: :comments both :mkdirp yes
|
||||||
:header-args+: :shebang "#!/bin/sh"
|
:header-args+: :shebang "#!/bin/sh"
|
||||||
:CUSTOM_ID: xinitrc
|
:CUSTOM_ID: xinitrc
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
|
Use the cache directory instead of the default =$HOME/.xsession-errors=.
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
dbus-update-activation-environment --systemd DISPLAY
|
ERRFILE="$XDG_CACHE_HOME/X11/xsession-errors"
|
||||||
#+end_src
|
|
||||||
|
|
||||||
Fix for Matlab.
|
|
||||||
#+begin_src bash
|
|
||||||
# export _JAVA_AWT_WM_NONREPARENTING=1
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Set =DISPLAY= for =dunst= when started with =systemd=.
|
Set =DISPLAY= for =dunst= when started with =systemd=.
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
# systemctl --user import-environment DISPLAY
|
systemctl --user import-environment DISPLAY
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Merge in defaults and keymaps
|
Merge the defaults:
|
||||||
#+BEGIN_SRC bash
|
#+BEGIN_SRC bash
|
||||||
userresources=$HOME/.Xresources
|
userresources=$HOME/.Xresources
|
||||||
usermodmap=$HOME/.Xmodmap
|
usermodmap=$HOME/.Xmodmap
|
||||||
@@ -109,10 +105,14 @@ if [ -f "$usermodmap" ]; then
|
|||||||
fi
|
fi
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
Start =gnome-keyring-daemon=.
|
Run some default scripts:
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
eval $(gnome-keyring-daemon --start --components=pkcs11,secrets,ssh)
|
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
|
||||||
export SSH_AUTH_SOCK
|
for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
|
||||||
|
[ -x "$f" ] && . "$f"
|
||||||
|
done
|
||||||
|
unset f
|
||||||
|
fi
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
@@ -133,9 +133,6 @@ exec i3
|
|||||||
|
|
||||||
Keyboard Options:
|
Keyboard Options:
|
||||||
#+begin_src bash
|
#+begin_src bash
|
||||||
# Set repetition keyboard rate
|
|
||||||
xset r rate 200 40 &
|
|
||||||
|
|
||||||
# Set International US keyboard layout
|
# Set International US keyboard layout
|
||||||
setxkbmap -layout us -variant intl -option caps:escape &
|
setxkbmap -layout us -variant intl -option caps:escape &
|
||||||
#+end_src
|
#+end_src
|
||||||
@@ -157,7 +154,7 @@ xautolock -locker "~/.local/bin/lockscreen" -detectsleep -time 30 -notify 60 -no
|
|||||||
|
|
||||||
# Redshift
|
# Redshift
|
||||||
pgrep -xu "$USER" redshift >/dev/null || \
|
pgrep -xu "$USER" redshift >/dev/null || \
|
||||||
redshift &
|
redshift -l 48.8582:2.3387 &
|
||||||
|
|
||||||
# Run Picom (compositor)
|
# Run Picom (compositor)
|
||||||
picom --daemon &
|
picom --daemon &
|
||||||
@@ -170,6 +167,9 @@ blueman-applet &
|
|||||||
|
|
||||||
# Udiskie - Automatic USB mount
|
# Udiskie - Automatic USB mount
|
||||||
udiskie --notify --automount --tray &
|
udiskie --notify --automount --tray &
|
||||||
|
|
||||||
|
# Japanese input
|
||||||
|
fcitx -d &
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
Manually start =mopidy= as it seems to not start automatically:
|
Manually start =mopidy= as it seems to not start automatically:
|
||||||
|
|||||||
@@ -42,7 +42,8 @@ map t toggle_statusbar
|
|||||||
|
|
||||||
map <Space> scroll full-down
|
map <Space> scroll full-down
|
||||||
map <BackSpace> scroll full-up
|
map <BackSpace> scroll full-up
|
||||||
map <C-s> feedkeys ":exec /home/thomas/.config/zathura/scripts/extract-pdf-page.sh $FILE<Return>"
|
map <C-s> feedkeys ":exec /home/thomas/.config/zathura/scripts/extract-pdf-page.sh $FILE $PAGE<Return>"
|
||||||
|
map P feedkeys ":exec /home/thomas/.local/bin/print-esrf $FILE<Return>"
|
||||||
#+END_SRC
|
#+END_SRC
|
||||||
|
|
||||||
* Colors
|
* Colors
|
||||||
@@ -96,9 +97,9 @@ tmpfile=/tmp/pdf_page.pdf
|
|||||||
|
|
||||||
# Ask for page number
|
# Ask for page number
|
||||||
# Ideally would get the page from Zathura...
|
# Ideally would get the page from Zathura...
|
||||||
pagenum=$(rofi -dmenu -p "Page Number")
|
# pagenum=$(rofi -dmenu -p "Page Number")
|
||||||
|
|
||||||
pdftk "$1" cat $pagenum output "$tmpfile.pdf" && \
|
pdftk "$1" cat $2 output "$tmpfile.pdf" && \
|
||||||
pdf2svg "$tmpfile.pdf" "$tmpfile.svg" && \
|
pdf2svg "$tmpfile.pdf" "$tmpfile.svg" && \
|
||||||
inkscape "$tmpfile.svg"
|
inkscape "$tmpfile.svg"
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|||||||
Reference in New Issue
Block a user