Browse Source

Add shell / x11 / pdf modules

main
parent
commit
7050f80840
  1. 78
      README.org
  2. 233
      config/shell/README.org
  3. 81
      config/shell/bashrc
  4. 22
      config/shell/profile
  5. 1
      config/x11/xinitrc
  6. 60
      init.el

78
README.org

@ -714,6 +714,84 @@ Configure the default capture template for daily entries.
:head "#+TITLE: %<%Y-%m-%d>\n")))
#+end_src
** Notes
#+begin_src emacs-lisp
(defvar dotfiles/bib "~/.local/source/brain/resources.bib")
(defvar dotfiles/notes "~/.local/source/brain/notes/")
#+end_src
#+begin_src emacs-lisp
(use-package org-noter
:after org
:config
(setq org-noter-always-create-frame nil
org-noter-notes-search-path dotfiles/notes))
#+end_src
#+begin_src emacs-lisp
(use-package org-pdftools
:hook (org-mode . org-pdftools-setup-link))
#+end_src
#+begin_src emacs-lisp
(use-package org-noter-pdftools
:after org-noter
:config
(with-eval-after-load 'pdf-annot
(add-hook 'pdf-annot-active-handler-functions #'org-noter-pdftools-jump-to-note)))
#+end_src
#+begin_src emacs-lisp
(setq bibtex-completion-notes-path dotfiles/notes
bibtex-completion-bibliography dotfiles/bib
bibtex-completion-pdf-field "file"
bibtex-completion-notes-template-multiple-files
(concat
"#+TITLE: ${title}\n"
"#+ROAM_KEY: cite:${=key=}\n"
"#* TODO Notes\n"
":PROPERTIES:\n"
":CUSTOM_ID: ${=key}\n"
":NOTER_DOCUMENT: %(orb-process-file-field \"${=key=}\")\n"
":AUTHOR: ${author-abbrev}\n"
":JOURNAL: ${journaltitle}\n"
":DATE: ${date}\n"
":YEAR: ${year}\n"
":DOI: ${doi}\n"
":URL: ${url}\n"
":END:\n\n"))
#+end_src
#+begin_src emacs-lisp
(use-package org-ref
:config
(setq org-ref-completion-library 'org-ref-helm-cite
org-ref-get-pdf-filename-function 'org-refg-get-pdf-filename-helm-bibtex
org-ref-default-bibliography dotfiles/bib
org-ref-bibliography-notes dotfiles/notes
org-ref-notes-directory dotfiles/notes
org-ref-notes-function 'orb-edit-notes
org-ref-note-title-format "* TODO %y - %t\n:PROPERTIES:\n:CUSTOM_ID: %k\n:NOTER_DOCUMENT: %F\n:ROAM_KEY: cite:%k\n:AUTHOR: %9a\n:JOURNAL: %j\n:YEAR: %y\n:VOLUME: %v\n:PAGES: %p\n:DOI: %D\n:URL: %U\n:END:\n\n"))
#+end_src
#+begin_src emacs-lisp
(use-package org-roam-bibtex
:after (org-roam)
:hook (org-roam-mode . org-roam-bibtex-mode)
:config
(setq orb-preformat-keywords
'("=key=" "title" "url" "file" "author-or-editor" "keywords")))
#+end_src
#+begin_src emacs-lisp
(add-to-list 'org-roam-capture-templates
'("n" "Notes" plain (function org-roam-capture--get-point)
""
:file-name "notes/${slug}"
:head "#+TITLE: ${=key=}: ${title}\n#+ROAM_KEY:${ref}\n\n* ${title} :PROPERTIES:\n:CUSTOM_ID: ${=key=}\n:URL: ${url}\n:AUTHOR: ${author-or-editor}\n:NOTER_DOCUMENT:%(orb-process-file-field \"${=key=}\")\n:NOTER_PAGE:\n:END:\n\n"))
#+end_src
** Agenda
Configure agenda sources.

233
config/shell/README.org

@ -0,0 +1,233 @@
#+TITLE: Shell
#+AUTHOR: Christopher James Hayward
#+EMAIL: chris@chrishayward.xyz
#+begin_src shell
ln -s ~/.local/source/dotfiles/config/shell/bashrc ~/.bashrc
ln -s ~/.local/source/dotfiles/config/shell/profile ~/.profile
#+end_src
* Bash
:PROPERTIES:
:header-args: :tangle ~/.local/source/dotfiles/config/shell/bashrc :results silent
:END:
Executed by bash for non-login shells. See ~/usr/share/doc/bash/examples/startup-files~ (in the package =bash-doc=) for examples.
If not running interactively, don't do anything.
#+begin_src shell
case $- in
*i*) ;;
*) return;;
esac
#+end_src
Don't put duplicate lines or lines starting with space in the history.
#+begin_src shell
HISTCONTROL=ignoreboth
#+end_src
Append to the history file, don't overwrite it.
#+begin_src shell
shopt -s histappend
#+end_src
For setting history length see ~HISTSIZE~ and ~HISTFILESIZE~.
#+begin_src shell
HISTSIZE=1000
HISTFILESIZE=2000
#+end_src
Check the window size after each command and, if necessary, update the values of ~LINES~ and ~COLUMNS~.
#+begin_src shell
shopt -s checkwinsize
#+end_src
If set, the pattern ="**"= used in a pathname expansion context will match all files and zero or more directories and subdirectories.
#+begin_src shell
#shopt -s globstar
#+end_src
Make less more friendly for non-text input files.
#+begin_src shell
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
#+end_src
Set variable identifying the chroot you work in (used in the prompt below).
#+begin_src shell
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
#+end_src
Set a fancy prompt (non-color, unless we know we "want" color).
#+begin_src shell
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
#+end_src
Uncomment for a colored prompt, if the terminal has the capability; turned off by default to not distract the user: the focus in a terminal window should be on the output of commands, not on the prompt.
#+begin_src shell
#force_color_prompt=yes
#+end_src
If we have color support; assume it's compliant with =Ecma-48 (ISO/IEC-6429)=.
#+begin_src shell
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
color_prompt=yes
else
color_prompt=
fi
fi
#+end_src
Lack of such support is extremely rare, and such a case would tend to support ~setf~ rather than ~setaf~.
#+begin_src shell
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
#+end_src
If this is an xterm set the title to ~user@host:dir~.
#+begin_src shell
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
#+end_src
Enable color support of ~ls~ and also add handy aliases.
#+begin_src shell
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
#+end_src
Colored =GCC= warnings and errors.
#+begin_src shell
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
#+end_src
Some more ~ls~ aliases.
#+begin_src shell
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
#+end_src
Add an ~alert~ alias for long running commands.
#+begin_src shell
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
#+end_src
Use like so:
#+begin_example
sleep 10; alert
#+end_example
You may want to put all your additions into a separate file like ~~/.bash_aliases~, instead of adding them here directly. See ~/usr/share/doc/bash-doc/examples~ in the =bash-doc= package.
#+begin_src shell
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
#+end_src
Enable programmable completion features. You don't need to enable this, if it's already enabled in ~/etc/bash.bashrc~ and ~/etc/profile~ sources ~/etc/bash.bashrc~.
#+begin_src shell
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi
#+end_src
* Profile
:PROPERTIES:
:header-args: :tangle ~/.local/source/dotfiles/config/shell/profile :results silent
:END:
Executed by the command interpreter for login shells.
This file is *not* read by bash, if ~~/.bash_profile~ or ~~/.bash_login~ exists. See =/usr/share/doc/bash/examples/startup-files= for examples. The files are located in the bash-doc package.
The default umask is set in ~/etc/profile~. For =SSH= logins, install and configure the =libpam-umask= package.
#+begin_src shell
#umask 022
#+end_src
If we're running =bash= make sure to include ~~/.bashrc~ if it exists.
#+begin_src shell
if [ -n "$BASH_VERSION" ]; then
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
#+end_src
Add private bin directories to the ~$PATH~ (if they exist).
+ ~$HOME/bin~
+ ~$HOME/.local/bin~
#+begin_src shell
if [ -d "$HOME/bin" ]; then
PATH="$HOME/bin:$PATH"
fi
if [ -d "$HOME/.local/bin" ]; then
PATH="$HOME/.local/bin:$PATH"
fi
#+end_src
Add ~$HOME/go/bin~ to the ~$PATH~ if it exists.
#+begin_src shell
if [ -d "$HOME/go/bin" ]; then
PATH="$HOME/go/bin:$PATH"
fi
#+end_src
Auto run =startx= on login if there's no display server running.
#+begin_src shell
if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
exec startx
fi
#+end_src

81
config/shell/bashrc

@ -0,0 +1,81 @@
case $- in
*i*) ;;
*) return;;
esac
HISTCONTROL=ignoreboth
shopt -s histappend
HISTSIZE=1000
HISTFILESIZE=2000
shopt -s checkwinsize
#shopt -s globstar
[ -x /usr/bin/lesspipe ] && eval "$(SHELL=/bin/sh lesspipe)"
if [ -z "${debian_chroot:-}" ] && [ -r /etc/debian_chroot ]; then
debian_chroot=$(cat /etc/debian_chroot)
fi
case "$TERM" in
xterm-color|*-256color) color_prompt=yes;;
esac
#force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
color_prompt=yes
else
color_prompt=
fi
fi
if [ "$color_prompt" = yes ]; then
PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ '
else
PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
fi
unset color_prompt force_color_prompt
case "$TERM" in
xterm*|rxvt*)
PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
;;
*)
;;
esac
if [ -x /usr/bin/dircolors ]; then
test -r ~/.dircolors && eval "$(dircolors -b ~/.dircolors)" || eval "$(dircolors -b)"
alias ls='ls --color=auto'
#alias dir='dir --color=auto'
#alias vdir='vdir --color=auto'
alias grep='grep --color=auto'
alias fgrep='fgrep --color=auto'
alias egrep='egrep --color=auto'
fi
#export GCC_COLORS='error=01;31:warning=01;35:note=01;36:caret=01;32:locus=01:quote=01'
alias ll='ls -alF'
alias la='ls -A'
alias l='ls -CF'
alias alert='notify-send --urgency=low -i "$([ $? = 0 ] && echo terminal || echo error)" "$(history|tail -n1|sed -e '\''s/^\s*[0-9]\+\s*//;s/[;&|]\s*alert$//'\'')"'
if [ -f ~/.bash_aliases ]; then
. ~/.bash_aliases
fi
if ! shopt -oq posix; then
if [ -f /usr/share/bash-completion/bash_completion ]; then
. /usr/share/bash-completion/bash_completion
elif [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
fi

22
config/shell/profile

@ -0,0 +1,22 @@
#umask 022
if [ -n "$BASH_VERSION" ]; then
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
if [ -d "$HOME/bin" ]; then
PATH="$HOME/bin:$PATH"
fi
if [ -d "$HOME/.local/bin" ]; then
PATH="$HOME/.local/bin:$PATH"
fi
if [ -d "$HOME/go/bin" ]; then
PATH="$HOME/go/bin:$PATH"
fi
if [ -z "${DISPLAY}" ] && [ "${XDG_VTNR}" -eq 1 ]; then
exec startx
fi

1
config/x11/xinitrc

@ -0,0 +1 @@
exec dbus-launch --exit-with-session emacs -mm --debug-init

60
init.el

@ -317,6 +317,66 @@
:file-name "daily/%<%Y-%m-%d>"
:head "#+TITLE: %<%Y-%m-%d>\n")))
(defvar dotfiles/bib "~/.local/source/brain/resources.bib")
(defvar dotfiles/notes "~/.local/source/brain/notes/")
(use-package org-noter
:after org
:config
(setq org-noter-always-create-frame nil
org-noter-notes-search-path dotfiles/notes))
(use-package org-pdftools
:hook (org-mode . org-pdftools-setup-link))
(use-package org-noter-pdftools
:after org-noter
:config
(with-eval-after-load 'pdf-annot
(add-hook 'pdf-annot-active-handler-functions #'org-noter-pdftools-jump-to-note)))
(setq bibtex-completion-notes-path dotfiles/notes
bibtex-completion-bibliography dotfiles/bib
bibtex-completion-pdf-field "file"
bibtex-completion-notes-template-multiple-files
(concat
"#+TITLE: ${title}\n"
"#+ROAM_KEY: cite:${=key=}\n"
"#* TODO Notes\n"
":PROPERTIES:\n"
":CUSTOM_ID: ${=key}\n"
":NOTER_DOCUMENT: %(orb-process-file-field \"${=key=}\")\n"
":AUTHOR: ${author-abbrev}\n"
":JOURNAL: ${journaltitle}\n"
":DATE: ${date}\n"
":YEAR: ${year}\n"
":DOI: ${doi}\n"
":URL: ${url}\n"
":END:\n\n"))
(use-package org-ref
:config
(setq org-ref-completion-library 'org-ref-helm-cite
org-ref-get-pdf-filename-function 'org-refg-get-pdf-filename-helm-bibtex
org-ref-default-bibliography dotfiles/bib
org-ref-bibliography-notes dotfiles/notes
org-ref-notes-directory dotfiles/notes
org-ref-notes-function 'orb-edit-notes
org-ref-note-title-format "* TODO %y - %t\n:PROPERTIES:\n:CUSTOM_ID: %k\n:NOTER_DOCUMENT: %F\n:ROAM_KEY: cite:%k\n:AUTHOR: %9a\n:JOURNAL: %j\n:YEAR: %y\n:VOLUME: %v\n:PAGES: %p\n:DOI: %D\n:URL: %U\n:END:\n\n"))
(use-package org-roam-bibtex
:after (org-roam)
:hook (org-roam-mode . org-roam-bibtex-mode)
:config
(setq orb-preformat-keywords
'("=key=" "title" "url" "file" "author-or-editor" "keywords")))
(add-to-list 'org-roam-capture-templates
'("n" "Notes" plain (function org-roam-capture--get-point)
""
:file-name "notes/${slug}"
:head "#+TITLE: ${=key=}: ${title}\n#+ROAM_KEY:${ref}\n\n* ${title} :PROPERTIES:\n:CUSTOM_ID: ${=key=}\n:URL: ${url}\n:AUTHOR: ${author-or-editor}\n:NOTER_DOCUMENT:%(orb-process-file-field \"${=key=}\")\n:NOTER_PAGE:\n:END:\n\n"))
(setq org-agenda-files '("~/.local/source/brain/daily/"
"~/.local/source/secrets/org/"))

Loading…
Cancel
Save