~tardypad/dotfiles

3fb8dae338f989b75e078f6492b922455db44630 — Damien Tardy-Panis 2 years ago f2745ef
move all actual "dotfiles" into a files folder

this makes the repo root folders hierarchy a bit clearer
not to confuse folders used only by the repo itself and setup from the
folders containing packages config files and such
442 files changed, 3626 insertions(+), 3626 deletions(-)

M Makefile
D data/applications/chat_client.desktop
D data/applications/chromium_web_browser.desktop
D data/applications/document_viewer.desktop
D data/applications/firefox_web_browser.desktop
D data/applications/mail_client.desktop
D data/applications/music_player.desktop
D data/applications/news_reader.desktop
D data/applications/qutebrowser_web_browser.desktop
D data/applications/raster_graphics_editor.desktop
D data/applications/system_monitor.desktop
D data/applications/terminal.desktop
D data/applications/vector_graphics_editor.desktop
D data/applications/video_player.desktop
D data/env/Makefile
D data/env/tmux/projects/arch_packages.sh
D data/env/tmux/projects/dotfiles.sh
D data/env/tmux/projects/tardypad_me.sh
D data/images/lock.svg
D docs/Makefile
D docs/git/git-reauthor.scd
D docs/git/git-run-command.scd
D docs/git/git-url.scd
D docs/shell/do-not-disturb.scd
D docs/shell/help.scd
D docs/shell/http-env.scd
D docs/shell/i3blocks-mode.scd
D docs/shell/influx-env.scd
D docs/shell/loop.scd
D docs/shell/mysql-env.scd
D docs/shell/notify.scd
D docs/shell/pomodoro.scd
D docs/shell/project-path.scd
D docs/shell/query-hosts-tags.scd
D docs/shell/redis-env.scd
D docs/shell/tmux-env.scd
D docs/shell/weechat-fifo.scd
D docs/sway/sway-command-input-exec.scd
R configs/aria2/Makefile => files/configs/aria2/Makefile
R configs/aria2/aria2.conf => files/configs/aria2/aria2.conf
R configs/coreutils/Makefile => files/configs/coreutils/Makefile
R configs/coreutils/dircolors => files/configs/coreutils/dircolors
R configs/fontconfig/Makefile => files/configs/fontconfig/Makefile
R configs/fontconfig/fonts.conf => files/configs/fontconfig/fonts.conf
R configs/git/Makefile => files/configs/git/Makefile
R configs/git/config => files/configs/git/config
R configs/git/config.d/aliases => files/configs/git/config.d/aliases
R configs/git/config.d/general => files/configs/git/config.d/general
R configs/git/config.d/style => files/configs/git/config.d/style
R configs/git/ignore => files/configs/git/ignore
R configs/git/template/info/exclude => files/configs/git/template/info/exclude
R configs/gnupg/Makefile => files/configs/gnupg/Makefile
R configs/gnupg/gpg-agent.conf => files/configs/gnupg/gpg-agent.conf
R configs/gnupg/gpg.conf => files/configs/gnupg/gpg.conf
R configs/htop/Makefile => files/configs/htop/Makefile
R configs/htop/htoprc => files/configs/htop/htoprc
R configs/httpie/Makefile => files/configs/httpie/Makefile
R configs/httpie/config.json => files/configs/httpie/config.json
R configs/i3blocks/Makefile => files/configs/i3blocks/Makefile
R configs/i3blocks/config => files/configs/i3blocks/config
R configs/less/Makefile => files/configs/less/Makefile
R configs/less/lesskey => files/configs/less/lesskey
R configs/libqalculate/Makefile => files/configs/libqalculate/Makefile
R configs/libqalculate/qalc.cfg => files/configs/libqalculate/qalc.cfg
R configs/mako/Makefile => files/configs/mako/Makefile
R configs/mako/config => files/configs/mako/config
R configs/mopidy/Makefile => files/configs/mopidy/Makefile
R configs/mopidy/README.md => files/configs/mopidy/README.md
R configs/mopidy/mopidy.conf => files/configs/mopidy/mopidy.conf
R configs/ncmpcpp/Makefile => files/configs/ncmpcpp/Makefile
R configs/ncmpcpp/bindings => files/configs/ncmpcpp/bindings
R configs/ncmpcpp/config => files/configs/ncmpcpp/config
R configs/neomutt/Makefile => files/configs/neomutt/Makefile
R configs/neomutt/config.d/accounts/gmail.mutt => files/configs/neomutt/config.d/accounts/gmail.mutt
R configs/neomutt/config.d/accounts/migadu.mutt => files/configs/neomutt/config.d/accounts/migadu.mutt
R configs/neomutt/config.d/accounts/work.mutt => files/configs/neomutt/config.d/accounts/work.mutt
R configs/neomutt/config.d/bindings.mutt => files/configs/neomutt/config.d/bindings.mutt
R configs/neomutt/config.d/clean-bindings.mutt => files/configs/neomutt/config.d/clean-bindings.mutt
R configs/neomutt/config.d/colors.mutt => files/configs/neomutt/config.d/colors.mutt
R configs/neomutt/config.d/general.mutt => files/configs/neomutt/config.d/general.mutt
R configs/neomutt/config.d/mailcap => files/configs/neomutt/config.d/mailcap
R configs/neomutt/config.d/signatures/simple => files/configs/neomutt/config.d/signatures/simple
R configs/neomutt/config.d/signatures/work => files/configs/neomutt/config.d/signatures/work
R configs/neomutt/config.d/style.mutt => files/configs/neomutt/config.d/style.mutt
R configs/neomutt/neomuttrc => files/configs/neomutt/neomuttrc
R configs/newsboat/Makefile => files/configs/newsboat/Makefile
R configs/newsboat/config => files/configs/newsboat/config
R configs/newsboat/config.d/bindings => files/configs/newsboat/config.d/bindings
R configs/newsboat/config.d/general => files/configs/newsboat/config.d/general
R configs/newsboat/config.d/style => files/configs/newsboat/config.d/style
R configs/newsboat/urls => files/configs/newsboat/urls
R configs/openssh/Makefile => files/configs/openssh/Makefile
R configs/openssh/config => files/configs/openssh/config
R configs/qutebrowser/Makefile => files/configs/qutebrowser/Makefile
R configs/qutebrowser/config.d/bindings.py => files/configs/qutebrowser/config.d/bindings.py
R configs/qutebrowser/config.d/general.py => files/configs/qutebrowser/config.d/general.py
R configs/qutebrowser/config.d/style.py => files/configs/qutebrowser/config.d/style.py
R configs/qutebrowser/config.py => files/configs/qutebrowser/config.py
R configs/rbtools/Makefile => files/configs/rbtools/Makefile
R configs/rbtools/reviewboardrc => files/configs/rbtools/reviewboardrc
R configs/sway/Makefile => files/configs/sway/Makefile
R configs/sway/config => files/configs/sway/config
R configs/sway/config.d/bar => files/configs/sway/config.d/bar
R configs/sway/config.d/bindings => files/configs/sway/config.d/bindings
R configs/sway/config.d/general => files/configs/sway/config.d/general
R configs/sway/config.d/inputs => files/configs/sway/config.d/inputs
R configs/sway/config.d/outputs => files/configs/sway/config.d/outputs
R configs/sway/config.d/rules => files/configs/sway/config.d/rules
R configs/sway/config.d/style => files/configs/sway/config.d/style
R configs/sway/swaynag/config => files/configs/sway/swaynag/config
R configs/swaylock/Makefile => files/configs/swaylock/Makefile
R configs/swaylock/config => files/configs/swaylock/config
R configs/systemd/Makefile => files/configs/systemd/Makefile
R configs/systemd/user/backup_bookmarks.path => files/configs/systemd/user/backup_bookmarks.path
R configs/systemd/user/backup_bookmarks.service => files/configs/systemd/user/backup_bookmarks.service
R configs/systemd/user/backup_notes.path => files/configs/systemd/user/backup_notes.path
R configs/systemd/user/backup_notes.service => files/configs/systemd/user/backup_notes.service
R configs/systemd/user/mopidy.service => files/configs/systemd/user/mopidy.service
R configs/systemd/user/notify_low_battery.service => files/configs/systemd/user/notify_low_battery.service
R configs/systemd/user/notify_low_battery.timer => files/configs/systemd/user/notify_low_battery.timer
R configs/systemd/user/notify_package_updates.service => files/configs/systemd/user/notify_package_updates.service
R configs/systemd/user/notify_package_updates.timer => files/configs/systemd/user/notify_package_updates.timer
R configs/systemd/user/qutebrowser_update_adblock.service => files/configs/systemd/user/qutebrowser_update_adblock.service
R configs/systemd/user/qutebrowser_update_adblock.timer => files/configs/systemd/user/qutebrowser_update_adblock.timer
R configs/termite/Makefile => files/configs/termite/Makefile
R configs/termite/config => files/configs/termite/config
R configs/termite/config_command_input => files/configs/termite/config_command_input
R configs/termite/config_launcher => files/configs/termite/config_launcher
R configs/tmux/Makefile => files/configs/tmux/Makefile
R configs/tmux/config.d/bindings.tmux => files/configs/tmux/config.d/bindings.tmux
R configs/tmux/config.d/general.tmux => files/configs/tmux/config.d/general.tmux
R configs/tmux/config.d/style.tmux => files/configs/tmux/config.d/style.tmux
R configs/tmux/tmux.conf => files/configs/tmux/tmux.conf
R configs/translate-shell/Makefile => files/configs/translate-shell/Makefile
R configs/translate-shell/init.trans => files/configs/translate-shell/init.trans
R configs/universal-ctags/Makefile => files/configs/universal-ctags/Makefile
R configs/universal-ctags/main.ctags => files/configs/universal-ctags/main.ctags
R configs/util-linux/Makefile => files/configs/util-linux/Makefile
R configs/vim/Makefile => files/configs/vim/Makefile
R configs/vim/README.md => files/configs/vim/README.md
R configs/vim/colors/tardypad.vim => files/configs/vim/colors/tardypad.vim
R configs/vim/config.d/bindings.vim => files/configs/vim/config.d/bindings.vim
R configs/vim/config.d/general.vim => files/configs/vim/config.d/general.vim
R configs/vim/config.d/plugins.vim => files/configs/vim/config.d/plugins.vim
R configs/vim/ftdetect/dircolors.vim => files/configs/vim/ftdetect/dircolors.vim
R configs/vim/ftdetect/gitconfig.vim => files/configs/vim/ftdetect/gitconfig.vim
R configs/vim/ftdetect/icinga2.vim => files/configs/vim/ftdetect/icinga2.vim
R configs/vim/ftdetect/mail.vim => files/configs/vim/ftdetect/mail.vim
R configs/vim/ftdetect/markdown.vim => files/configs/vim/ftdetect/markdown.vim
R configs/vim/ftdetect/neomuttrc.vim => files/configs/vim/ftdetect/neomuttrc.vim
R configs/vim/ftdetect/nginx.vim => files/configs/vim/ftdetect/nginx.vim
R configs/vim/ftdetect/sh.vim => files/configs/vim/ftdetect/sh.vim
R configs/vim/ftdetect/sshconfig.vim => files/configs/vim/ftdetect/sshconfig.vim
R configs/vim/ftdetect/sway.vim => files/configs/vim/ftdetect/sway.vim
R configs/vim/ftdetect/tmux.vim => files/configs/vim/ftdetect/tmux.vim
R configs/vim/ftdetect/xml.vim => files/configs/vim/ftdetect/xml.vim
R configs/vim/ftdetect/zsh.vim => files/configs/vim/ftdetect/zsh.vim
R configs/vim/ftplugin/gitcommit.vim => files/configs/vim/ftplugin/gitcommit.vim
R configs/vim/ftplugin/help.vim => files/configs/vim/ftplugin/help.vim
R configs/vim/ftplugin/mail.vim => files/configs/vim/ftplugin/mail.vim
R configs/vim/ftplugin/markdown.vim => files/configs/vim/ftplugin/markdown.vim
R configs/vim/indent/sh.vim => files/configs/vim/indent/sh.vim
R configs/vim/plugin/align.vim => files/configs/vim/plugin/align.vim
R configs/vim/plugin/alternate_tab.vim => files/configs/vim/plugin/alternate_tab.vim
R configs/vim/plugin/highlight_long_lines.vim => files/configs/vim/plugin/highlight_long_lines.vim
R configs/vim/plugin/linter_counts.vim => files/configs/vim/plugin/linter_counts.vim
R configs/vim/plugin/manage_sessions.vim => files/configs/vim/plugin/manage_sessions.vim
R configs/vim/plugin/remove_trailing_spaces.vim => files/configs/vim/plugin/remove_trailing_spaces.vim
R configs/vim/plugin/scroll_search.vim => files/configs/vim/plugin/scroll_search.vim
R configs/vim/plugin/zoom_window.vim => files/configs/vim/plugin/zoom_window.vim
R configs/vim/snips/all.snippets => files/configs/vim/snips/all.snippets
R configs/vim/snips/php.snippets => files/configs/vim/snips/php.snippets
R configs/vim/snips/php_phpunit.snippets => files/configs/vim/snips/php_phpunit.snippets
R configs/vim/snips/sh.snippets => files/configs/vim/snips/sh.snippets
R configs/vim/snips/zsh.snippets => files/configs/vim/snips/zsh.snippets
R configs/vim/spell/en.utf-8.add => files/configs/vim/spell/en.utf-8.add
R configs/vim/vimrc => files/configs/vim/vimrc
R configs/weechat/Makefile => files/configs/weechat/Makefile
R configs/weechat/README.md => files/configs/weechat/README.md
R configs/weechat/config.d/alias.conf => files/configs/weechat/config.d/alias.conf
R configs/weechat/config.d/buflist.conf => files/configs/weechat/config.d/buflist.conf
R configs/weechat/config.d/charset.conf => files/configs/weechat/config.d/charset.conf
R configs/weechat/config.d/colorize_nicks.conf => files/configs/weechat/config.d/colorize_nicks.conf
R configs/weechat/config.d/exec.conf => files/configs/weechat/config.d/exec.conf
R configs/weechat/config.d/fifo.conf => files/configs/weechat/config.d/fifo.conf
R configs/weechat/config.d/fset.conf => files/configs/weechat/config.d/fset.conf
R configs/weechat/config.d/irc.conf => files/configs/weechat/config.d/irc.conf
R configs/weechat/config.d/logger.conf => files/configs/weechat/config.d/logger.conf
R configs/weechat/config.d/plugins.conf => files/configs/weechat/config.d/plugins.conf
R configs/weechat/config.d/python.conf => files/configs/weechat/config.d/python.conf
R configs/weechat/config.d/relay.conf => files/configs/weechat/config.d/relay.conf
R configs/weechat/config.d/script.conf => files/configs/weechat/config.d/script.conf
R configs/weechat/config.d/spell.conf => files/configs/weechat/config.d/spell.conf
R configs/weechat/config.d/trigger.conf => files/configs/weechat/config.d/trigger.conf
R configs/weechat/config.d/weechat.conf => files/configs/weechat/config.d/weechat.conf
R configs/weechat/config.d/xfer.conf => files/configs/weechat/config.d/xfer.conf
R configs/weechat/plugins/edit_vim_tmux.py => files/configs/weechat/plugins/edit_vim_tmux.py
R configs/weechat/plugins/export_important_buffers_count.py => files/configs/weechat/plugins/export_important_buffers_count.py
R configs/weechat/plugins/go_fzf_tmux.py => files/configs/weechat/plugins/go_fzf_tmux.py
R configs/xdg-user-dirs/Makefile => files/configs/xdg-user-dirs/Makefile
R configs/xdg-user-dirs/user-dirs.conf => files/configs/xdg-user-dirs/user-dirs.conf
R configs/xdg-user-dirs/user-dirs.dirs => files/configs/xdg-user-dirs/user-dirs.dirs
R configs/xdg-user-dirs/user-dirs.locale => files/configs/xdg-user-dirs/user-dirs.locale
R configs/xdg-utils/Makefile => files/configs/xdg-utils/Makefile
R configs/xdg-utils/mimeapps.list => files/configs/xdg-utils/mimeapps.list
R configs/zathura/Makefile => files/configs/zathura/Makefile
R configs/zathura/config.d/bindings => files/configs/zathura/config.d/bindings
R configs/zathura/config.d/clean-bindings => files/configs/zathura/config.d/clean-bindings
R configs/zathura/config.d/general => files/configs/zathura/config.d/general
R configs/zathura/config.d/style => files/configs/zathura/config.d/style
R configs/zathura/zathurarc => files/configs/zathura/zathurarc
R configs/zsh/Makefile => files/configs/zsh/Makefile
R configs/zsh/README.md => files/configs/zsh/README.md
R configs/zsh/completions/_do-not-disturb => files/configs/zsh/completions/_do-not-disturb
R configs/zsh/completions/_help => files/configs/zsh/completions/_help
R configs/zsh/completions/_http-env => files/configs/zsh/completions/_http-env
R configs/zsh/completions/_influx-env => files/configs/zsh/completions/_influx-env
R configs/zsh/completions/_loop => files/configs/zsh/completions/_loop
R configs/zsh/completions/_mysql-env => files/configs/zsh/completions/_mysql-env
R configs/zsh/completions/_notify => files/configs/zsh/completions/_notify
R configs/zsh/completions/_pacman-pkgdiff => files/configs/zsh/completions/_pacman-pkgdiff
R configs/zsh/completions/_pomodoro => files/configs/zsh/completions/_pomodoro
R configs/zsh/completions/_project-path => files/configs/zsh/completions/_project-path
R configs/zsh/completions/_query-hosts-tags => files/configs/zsh/completions/_query-hosts-tags
R configs/zsh/completions/_rbt => files/configs/zsh/completions/_rbt
R configs/zsh/completions/_redis-env => files/configs/zsh/completions/_redis-env
R configs/zsh/completions/_ssh-tags => files/configs/zsh/completions/_ssh-tags
R configs/zsh/completions/_tmux-env => files/configs/zsh/completions/_tmux-env
R configs/zsh/completions/git/_git-argument => files/configs/zsh/completions/git/_git-argument
R configs/zsh/completions/git/_git-hist => files/configs/zsh/completions/git/_git-hist
R configs/zsh/completions/git/_git-mgrbma => files/configs/zsh/completions/git/_git-mgrbma
R configs/zsh/completions/git/_git-push-current-branch => files/configs/zsh/completions/git/_git-push-current-branch
R configs/zsh/completions/git/_git-reauthor => files/configs/zsh/completions/git/_git-reauthor
R configs/zsh/completions/git/_git-run-command => files/configs/zsh/completions/git/_git-run-command
R configs/zsh/completions/git/_git-sed => files/configs/zsh/completions/git/_git-sed
R configs/zsh/completions/git/_git-stamp => files/configs/zsh/completions/git/_git-stamp
R configs/zsh/completions/git/_git-url => files/configs/zsh/completions/git/_git-url
R configs/zsh/config.d/aliases.zsh => files/configs/zsh/config.d/aliases.zsh
R configs/zsh/config.d/bindings.zsh => files/configs/zsh/config.d/bindings.zsh
R configs/zsh/config.d/completion.zsh => files/configs/zsh/config.d/completion.zsh
R configs/zsh/config.d/general.zsh => files/configs/zsh/config.d/general.zsh
R configs/zsh/config.d/history.zsh => files/configs/zsh/config.d/history.zsh
R configs/zsh/config.d/plugins.zsh => files/configs/zsh/config.d/plugins.zsh
R configs/zsh/config.d/prompt.zsh => files/configs/zsh/config.d/prompt.zsh
R configs/zsh/config.d/variables.zsh => files/configs/zsh/config.d/variables.zsh
R configs/zsh/functions/goto-project => files/configs/zsh/functions/goto-project
R configs/zsh/zlogin => files/configs/zsh/zlogin
R configs/zsh/zprofile => files/configs/zsh/zprofile
R configs/zsh/zshenv => files/configs/zsh/zshenv
R configs/zsh/zshrc => files/configs/zsh/zshrc
R data/applications/Makefile => files/data/applications/Makefile
A files/data/applications/chat_client.desktop
A files/data/applications/chromium_web_browser.desktop
A files/data/applications/document_viewer.desktop
A files/data/applications/firefox_web_browser.desktop
A files/data/applications/mail_client.desktop
A files/data/applications/music_player.desktop
A files/data/applications/news_reader.desktop
A files/data/applications/qutebrowser_web_browser.desktop
A files/data/applications/raster_graphics_editor.desktop
A files/data/applications/system_monitor.desktop
A files/data/applications/terminal.desktop
A files/data/applications/vector_graphics_editor.desktop
A files/data/applications/video_player.desktop
A files/data/env/Makefile
A files/data/env/tmux/projects/arch_packages.sh
A files/data/env/tmux/projects/dotfiles.sh
A files/data/env/tmux/projects/tardypad_me.sh
R data/images/Makefile => files/data/images/Makefile
A files/data/images/lock.svg
R data/sounds/Makefile => files/data/sounds/Makefile
R data/sounds/end_pomodoro.wav => files/data/sounds/end_pomodoro.wav
R data/sounds/low_battery.wav => files/data/sounds/low_battery.wav
A files/docs/Makefile
A files/docs/git/git-reauthor.scd
A files/docs/git/git-run-command.scd
R docs/git/git-sed.scd => files/docs/git/git-sed.scd
R docs/git/git-stamp.scd => files/docs/git/git-stamp.scd
A files/docs/git/git-url.scd
A files/docs/shell/do-not-disturb.scd
A files/docs/shell/help.scd
A files/docs/shell/http-env.scd
A files/docs/shell/i3blocks-mode.scd
A files/docs/shell/influx-env.scd
A files/docs/shell/loop.scd
A files/docs/shell/mysql-env.scd
A files/docs/shell/notify.scd
R docs/shell/pacman-pkgdiff.scd => files/docs/shell/pacman-pkgdiff.scd
R docs/shell/plot.scd => files/docs/shell/plot.scd
A files/docs/shell/pomodoro.scd
A files/docs/shell/project-path.scd
A files/docs/shell/query-hosts-tags.scd
A files/docs/shell/redis-env.scd
A files/docs/shell/tmux-env.scd
A files/docs/shell/weechat-fifo.scd
A files/docs/sway/sway-command-input-exec.scd
R scripts/Makefile => files/scripts/Makefile
A files/scripts/git/git-init-todo
R scripts/git/git-reauthor => files/scripts/git/git-reauthor
A files/scripts/git/git-run-command
A files/scripts/git/git-sed
A files/scripts/git/git-stamp
A files/scripts/git/git-url
A files/scripts/i3blocks/i3blocks-bluetooth
A files/scripts/i3blocks/i3blocks-chat
A files/scripts/i3blocks/i3blocks-datetime
A files/scripts/i3blocks/i3blocks-do-not-disturb
A files/scripts/i3blocks/i3blocks-music
A files/scripts/i3blocks/i3blocks-network
A files/scripts/i3blocks/i3blocks-pomodoro
A files/scripts/i3blocks/i3blocks-power
A files/scripts/i3blocks/i3blocks-volume
A files/scripts/shell/backup-bookmarks
A files/scripts/shell/backup-notes
A files/scripts/shell/battery-status
A files/scripts/shell/check-notify-low-battery
A files/scripts/shell/check-notify-package-updates
A files/scripts/shell/color-picker
A files/scripts/shell/do-not-disturb
A files/scripts/shell/exec-desktop-entry
R scripts/shell/help => files/scripts/shell/help
A files/scripts/shell/http-env
A files/scripts/shell/i3blocks-mode
A files/scripts/shell/influx-env
A files/scripts/shell/loop
A files/scripts/shell/man
A files/scripts/shell/mysql-env
A files/scripts/shell/notify
A files/scripts/shell/notify-end-pomodoro
A files/scripts/shell/notify-tmux-alert
A files/scripts/shell/pacman-pkgdiff
A files/scripts/shell/plot
A files/scripts/shell/pomodoro
A files/scripts/shell/project-path
A files/scripts/shell/query-hosts-tags
A files/scripts/shell/redis-env
A files/scripts/shell/screenshot
A files/scripts/shell/ssh-tags
A files/scripts/shell/status
A files/scripts/shell/tmux-env
A files/scripts/shell/weechat-fifo
A files/scripts/sway/sway-app-chat
A files/scripts/sway/sway-app-mail
A files/scripts/sway/sway-app-monitor
A files/scripts/sway/sway-app-music
A files/scripts/sway/sway-app-news
A files/scripts/sway/sway-app-tmux-env
A files/scripts/sway/sway-command-input
A files/scripts/sway/sway-command-input-exec
A files/scripts/sway/sway-create-workspace
A files/scripts/sway/sway-focus-window-title
A files/scripts/sway/sway-fzf-launcher
A files/scripts/sway/sway-launch-app
A files/scripts/sway/sway-launch-command
A files/scripts/sway/sway-launch-note
A files/scripts/sway/sway-launch-password
A files/scripts/sway/sway-launch-system
A files/scripts/sway/sway-launch-tmux-env
A files/scripts/sway/sway-launcher
A files/scripts/sway/sway-move-window-new-workspace
A files/scripts/sway/sway-rename-workspace
A files/scripts/sway/sway-run-command
A files/scripts/tmux/tmux-extract-tokens
A files/scripts/tmux/tmux-move-pane-window-index
A files/scripts/tmux/tmux-move-window-index
A files/scripts/tmux/tmux-notify-alert
A files/scripts/tmux/tmux-select-pane-vim
A files/scripts/tmux/tmux-toggle-monitor-activity
A files/scripts/tmux/tmux-toggle-monitor-silence
A files/scripts/tmux/tmux-toggle-no-distraction
D scripts/git/git-init-todo
D scripts/git/git-run-command
D scripts/git/git-sed
D scripts/git/git-stamp
D scripts/git/git-url
D scripts/i3blocks/i3blocks-bluetooth
D scripts/i3blocks/i3blocks-chat
D scripts/i3blocks/i3blocks-datetime
D scripts/i3blocks/i3blocks-do-not-disturb
D scripts/i3blocks/i3blocks-music
D scripts/i3blocks/i3blocks-network
D scripts/i3blocks/i3blocks-pomodoro
D scripts/i3blocks/i3blocks-power
D scripts/i3blocks/i3blocks-volume
D scripts/shell/backup-bookmarks
D scripts/shell/backup-notes
D scripts/shell/battery-status
D scripts/shell/check-notify-low-battery
D scripts/shell/check-notify-package-updates
D scripts/shell/color-picker
D scripts/shell/do-not-disturb
D scripts/shell/exec-desktop-entry
D scripts/shell/http-env
D scripts/shell/i3blocks-mode
D scripts/shell/influx-env
D scripts/shell/loop
D scripts/shell/man
D scripts/shell/mysql-env
D scripts/shell/notify
D scripts/shell/notify-end-pomodoro
D scripts/shell/notify-tmux-alert
D scripts/shell/pacman-pkgdiff
D scripts/shell/plot
D scripts/shell/pomodoro
D scripts/shell/project-path
D scripts/shell/query-hosts-tags
D scripts/shell/redis-env
D scripts/shell/screenshot
D scripts/shell/ssh-tags
D scripts/shell/status
D scripts/shell/tmux-env
D scripts/shell/weechat-fifo
D scripts/sway/sway-app-chat
D scripts/sway/sway-app-mail
D scripts/sway/sway-app-monitor
D scripts/sway/sway-app-music
D scripts/sway/sway-app-news
D scripts/sway/sway-app-tmux-env
D scripts/sway/sway-command-input
D scripts/sway/sway-command-input-exec
D scripts/sway/sway-create-workspace
D scripts/sway/sway-focus-window-title
D scripts/sway/sway-fzf-launcher
D scripts/sway/sway-launch-app
D scripts/sway/sway-launch-command
D scripts/sway/sway-launch-note
D scripts/sway/sway-launch-password
D scripts/sway/sway-launch-system
D scripts/sway/sway-launch-tmux-env
D scripts/sway/sway-launcher
D scripts/sway/sway-move-window-new-workspace
D scripts/sway/sway-rename-workspace
D scripts/sway/sway-run-command
D scripts/tmux/tmux-extract-tokens
D scripts/tmux/tmux-move-pane-window-index
D scripts/tmux/tmux-move-window-index
D scripts/tmux/tmux-notify-alert
D scripts/tmux/tmux-select-pane-vim
D scripts/tmux/tmux-toggle-monitor-activity
D scripts/tmux/tmux-toggle-monitor-silence
D scripts/tmux/tmux-toggle-no-distraction
M utilities/report-versions
M Makefile => Makefile +40 -40
@@ 11,46 11,46 @@ DATA_DIR   = $(HOME)/.local/share

start_setup = printf "setup $@\n"

setup_configs_file = { setup/substitute_colors $(THEME) | setup/substitute_dirs; } < configs/$@
setup_scripts_file = { setup/substitute_colors $(THEME) | setup/substitute_dirs; } < scripts
setup_configs_file = { setup/substitute_colors $(THEME) | setup/substitute_dirs; } < files/configs/$@
setup_scripts_file = { setup/substitute_colors $(THEME) | setup/substitute_dirs; } < files/scripts

include configs/aria2/Makefile
include configs/coreutils/Makefile
include configs/fontconfig/Makefile
include configs/git/Makefile
include configs/gnupg/Makefile
include configs/htop/Makefile
include configs/httpie/Makefile
include configs/i3blocks/Makefile
include configs/less/Makefile
include configs/libqalculate/Makefile
include configs/mako/Makefile
include configs/mopidy/Makefile
include configs/ncmpcpp/Makefile
include configs/neomutt/Makefile
include configs/newsboat/Makefile
include configs/openssh/Makefile
include configs/qutebrowser/Makefile
include configs/rbtools/Makefile
include configs/tmux/Makefile
include configs/sway/Makefile
include configs/swaylock/Makefile
include configs/systemd/Makefile
include configs/termite/Makefile
include configs/translate-shell/Makefile
include configs/universal-ctags/Makefile
include configs/util-linux/Makefile
include configs/vim/Makefile
include configs/weechat/Makefile
include configs/xdg-user-dirs/Makefile
include configs/xdg-utils/Makefile
include configs/zathura/Makefile
include configs/zsh/Makefile
include files/configs/aria2/Makefile
include files/configs/coreutils/Makefile
include files/configs/fontconfig/Makefile
include files/configs/git/Makefile
include files/configs/gnupg/Makefile
include files/configs/htop/Makefile
include files/configs/httpie/Makefile
include files/configs/i3blocks/Makefile
include files/configs/less/Makefile
include files/configs/libqalculate/Makefile
include files/configs/mako/Makefile
include files/configs/mopidy/Makefile
include files/configs/ncmpcpp/Makefile
include files/configs/neomutt/Makefile
include files/configs/newsboat/Makefile
include files/configs/openssh/Makefile
include files/configs/qutebrowser/Makefile
include files/configs/rbtools/Makefile
include files/configs/tmux/Makefile
include files/configs/sway/Makefile
include files/configs/swaylock/Makefile
include files/configs/systemd/Makefile
include files/configs/termite/Makefile
include files/configs/translate-shell/Makefile
include files/configs/universal-ctags/Makefile
include files/configs/util-linux/Makefile
include files/configs/vim/Makefile
include files/configs/weechat/Makefile
include files/configs/xdg-user-dirs/Makefile
include files/configs/xdg-utils/Makefile
include files/configs/zathura/Makefile
include files/configs/zsh/Makefile

include data/applications/Makefile
include data/env/Makefile
include data/images/Makefile
include data/sounds/Makefile
include files/data/applications/Makefile
include files/data/env/Makefile
include files/data/images/Makefile
include files/data/sounds/Makefile

include docs/Makefile
include scripts/Makefile
include files/docs/Makefile
include files/scripts/Makefile

D data/applications/chat_client.desktop => data/applications/chat_client.desktop +0 -6
@@ 1,6 0,0 @@
[Desktop Entry]
Exec=sway-app-chat
Name=weechat
GenericName=Chat client
Icon=
Type=Application

D data/applications/chromium_web_browser.desktop => data/applications/chromium_web_browser.desktop +0 -6
@@ 1,6 0,0 @@
[Desktop Entry]
Exec=chromium %U
Name=chromium
GenericName=Web browser
Icon=
Type=Application

D data/applications/document_viewer.desktop => data/applications/document_viewer.desktop +0 -6
@@ 1,6 0,0 @@
[Desktop Entry]
Exec=zathura %U
Name=zathura
GenericName=Document viewer
Icon=
Type=Application

D data/applications/firefox_web_browser.desktop => data/applications/firefox_web_browser.desktop +0 -6
@@ 1,6 0,0 @@
[Desktop Entry]
Exec=firefox %u
Name=firefox
GenericName=Web browser
Icon=
Type=Application

D data/applications/mail_client.desktop => data/applications/mail_client.desktop +0 -6
@@ 1,6 0,0 @@
[Desktop Entry]
Exec=sway-app-mail
Name=neomutt
GenericName=Mail client
Icon=
Type=Application

D data/applications/music_player.desktop => data/applications/music_player.desktop +0 -6
@@ 1,6 0,0 @@
[Desktop Entry]
Exec=sway-app-music
Name=ncmpcpp
GenericName=Music player
Icon=
Type=Application

D data/applications/news_reader.desktop => data/applications/news_reader.desktop +0 -6
@@ 1,6 0,0 @@
[Desktop Entry]
Exec=sway-app-news
Name=newsboat
GenericName=News reader
Icon=
Type=Application

D data/applications/qutebrowser_web_browser.desktop => data/applications/qutebrowser_web_browser.desktop +0 -6
@@ 1,6 0,0 @@
[Desktop Entry]
Exec=qutebrowser -l warning %u
Name=qutebrowser
GenericName=Web browser
Icon=
Type=Application

D data/applications/raster_graphics_editor.desktop => data/applications/raster_graphics_editor.desktop +0 -6
@@ 1,6 0,0 @@
[Desktop Entry]
Exec=gimp %U
Name=gimp
GenericName=Raster graphics editor
Icon=
Type=Application

D data/applications/system_monitor.desktop => data/applications/system_monitor.desktop +0 -6
@@ 1,6 0,0 @@
[Desktop Entry]
Exec=sway-app-monitor
Name=htop
GenericName=System monitor
Icon=
Type=Application

D data/applications/terminal.desktop => data/applications/terminal.desktop +0 -6
@@ 1,6 0,0 @@
[Desktop Entry]
Exec=termite -e 'tmux new-session'
Name=termite
GenericName=Terminal
Icon=
Type=Application

D data/applications/vector_graphics_editor.desktop => data/applications/vector_graphics_editor.desktop +0 -6
@@ 1,6 0,0 @@
[Desktop Entry]
Exec=inkscape %F
Name=inkscape
GenericName=Vector graphics editor
Icon=
Type=Application

D data/applications/video_player.desktop => data/applications/video_player.desktop +0 -6
@@ 1,6 0,0 @@
[Desktop Entry]
Exec=vlc --started-from-file %U
Name=vlc
GenericName=Video player
Icon=
Type=Application

D data/env/Makefile => data/env/Makefile +0 -12
@@ 1,12 0,0 @@
all: env

env:
	$(start_setup)

	mkdir -p $(DESTDIR)$(DATA_DIR)/env/tmux/projects

	cp data/env/tmux/projects/arch_packages.sh $(DESTDIR)$(DATA_DIR)/env/tmux/projects/arch_packages.sh
	cp data/env/tmux/projects/dotfiles.sh      $(DESTDIR)$(DATA_DIR)/env/tmux/projects/dotfiles.sh
	cp data/env/tmux/projects/tardypad_me.sh   $(DESTDIR)$(DATA_DIR)/env/tmux/projects/tardypad_me.sh

	chmod +x $(DESTDIR)$(DATA_DIR)/env/tmux/projects/*

D data/env/tmux/projects/arch_packages.sh => data/env/tmux/projects/arch_packages.sh +0 -25
@@ 1,25 0,0 @@
#!/bin/sh

SOCKET="$1"
SESSION_NAME="$2"

ARCH_PACKAGES_PATH=$( project-path repo arch-packages )

tmux -L "${SOCKET}" \
  new-session -d \
  -s "${SESSION_NAME}" \
  -n 'terminal' \
  -c "${ARCH_PACKAGES_PATH}"

tmux -L "${SOCKET}" \
  new-window \
  -n 'code' \
  -c "${ARCH_PACKAGES_PATH}" \
  "vim \
    -c 'TabooRename TODO' \
    -c 'tabnew' \
    -- TODO.md"

tmux -L "${SOCKET}" \
  select-window \
  -t ':terminal'

D data/env/tmux/projects/dotfiles.sh => data/env/tmux/projects/dotfiles.sh +0 -25
@@ 1,25 0,0 @@
#!/bin/sh

SOCKET="$1"
SESSION_NAME="$2"

DOTFILES_PATH=$( project-path repo dotfiles )

tmux -L "${SOCKET}" \
  new-session -d \
  -s "${SESSION_NAME}" \
  -n 'terminal' \
  -c "${DOTFILES_PATH}"

tmux -L "${SOCKET}" \
  new-window \
  -n 'code' \
  -c "${DOTFILES_PATH}" \
  "vim \
    -c 'TabooRename TODO' \
    -c 'tabnew' \
    -- TODO.md"

tmux -L "${SOCKET}" \
  select-window \
  -t ':terminal'

D data/env/tmux/projects/tardypad_me.sh => data/env/tmux/projects/tardypad_me.sh +0 -25
@@ 1,25 0,0 @@
#!/bin/sh

SOCKET="$1"
SESSION_NAME="$2"

TARDYPAD_ME_PATH=$( project-path repo tardypad.me )

tmux -L "${SOCKET}" \
  new-session -d \
  -s "${SESSION_NAME}" \
  -n 'terminal' \
  -c "${TARDYPAD_ME_PATH}"

tmux -L "${SOCKET}" \
  new-window \
  -n 'code' \
  -c "${TARDYPAD_ME_PATH}" \
  "vim \
    -c 'TabooRename TODO' \
    -c 'tabnew' \
    -- TODO.md"

tmux -L "${SOCKET}" \
  select-window \
  -t ':terminal'

D data/images/lock.svg => data/images/lock.svg +0 -5
@@ 1,5 0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -256 1792 1792" height="300px">
    <path
        d="M1022.915 834.17q0-53-37.5-90.5t-90.5-37.5q-53 0-90.5 37.5t-37.5 90.5q0 37 19 67t51 47l-69 229q-5 15 5 28t26 13h192q16 0 26-13t5-28l-69-229q32-17 51-47t19-67zm-384-256h512v-192q0-106-75-181t-181-75q-106 0-181 75t-75 181zm832 96v576q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-576q0-40 28-68t68-28h32v-192q0-184 132-316t316-132q184 0 316 132t132 316v192h32q40 0 68 28t28 68z"
        fill="#{color/foreground/hex}"/>
</svg>

D docs/Makefile => docs/Makefile +0 -31
@@ 1,31 0,0 @@
all: doc

doc:
	$(start_setup)

	mkdir -p $(DESTDIR)$(DATA_DIR)/man/man1

	scdoc < docs/shell/do-not-disturb.scd   > $(DESTDIR)$(DATA_DIR)/man/man1/do-not-disturb.1
	scdoc < docs/shell/help.scd             > $(DESTDIR)$(DATA_DIR)/man/man1/help.1
	scdoc < docs/shell/http-env.scd         > $(DESTDIR)$(DATA_DIR)/man/man1/http-env.1
	scdoc < docs/shell/i3blocks-mode.scd    > $(DESTDIR)$(DATA_DIR)/man/man1/i3blocks-mode.1
	scdoc < docs/shell/influx-env.scd       > $(DESTDIR)$(DATA_DIR)/man/man1/influx-env.1
	scdoc < docs/shell/loop.scd             > $(DESTDIR)$(DATA_DIR)/man/man1/loop.1
	scdoc < docs/shell/mysql-env.scd        > $(DESTDIR)$(DATA_DIR)/man/man1/mysql-env.1
	scdoc < docs/shell/notify.scd           > $(DESTDIR)$(DATA_DIR)/man/man1/notify.1
	scdoc < docs/shell/pacman-pkgdiff.scd   > $(DESTDIR)$(DATA_DIR)/man/man1/pacman-pkgdiff.1
	scdoc < docs/shell/plot.scd             > $(DESTDIR)$(DATA_DIR)/man/man1/plot.1
	scdoc < docs/shell/pomodoro.scd         > $(DESTDIR)$(DATA_DIR)/man/man1/pomodoro.1
	scdoc < docs/shell/project-path.scd     > $(DESTDIR)$(DATA_DIR)/man/man1/project-path.1
	scdoc < docs/shell/query-hosts-tags.scd > $(DESTDIR)$(DATA_DIR)/man/man1/query-hosts-tags.1
	scdoc < docs/shell/redis-env.scd        > $(DESTDIR)$(DATA_DIR)/man/man1/redis-env.1
	scdoc < docs/shell/tmux-env.scd         > $(DESTDIR)$(DATA_DIR)/man/man1/tmux-env.1
	scdoc < docs/shell/weechat-fifo.scd     > $(DESTDIR)$(DATA_DIR)/man/man1/weechat-fifo.1

	scdoc < docs/git/git-reauthor.scd       > $(DESTDIR)$(DATA_DIR)/man/man1/git-reauthor.1
	scdoc < docs/git/git-run-command.scd    > $(DESTDIR)$(DATA_DIR)/man/man1/git-run-command.1
	scdoc < docs/git/git-sed.scd            > $(DESTDIR)$(DATA_DIR)/man/man1/git-sed.1
	scdoc < docs/git/git-stamp.scd          > $(DESTDIR)$(DATA_DIR)/man/man1/git-stamp.1
	scdoc < docs/git/git-url.scd            > $(DESTDIR)$(DATA_DIR)/man/man1/git-url.1

	scdoc < docs/sway/sway-command-input-exec.scd > $(DESTDIR)$(DATA_DIR)/man/man1/sway-command-input-exec.1

D docs/git/git-reauthor.scd => docs/git/git-reauthor.scd +0 -34
@@ 1,34 0,0 @@
git-reauthor(1)

# NAME

git-reauthor - Rewrite history to change authors identities

# SYNOPSIS

git reauthor -a [-c] [-e _email_] [-n _name_] [-t _type_]

git reauthor -o _email_ [-c] [-e _email_] [-n _name_] [-t _type_]

# OPTIONS

*-a*
	rewrite all identities

*-c*
	correct values from user Git config

*-e* _email_
	define the correct email to set++
takes precedence over values coming from -c

*-n* _name_
	define the correct name to set++
takes precedence over values coming from -c

*-o* _email_
	rewrite identities matching old email

*-t* _id_
	define the type of identities affected by the rewrite++
valid ids: author, committer, both (default)

D docs/git/git-run-command.scd => docs/git/git-run-command.scd +0 -22
@@ 1,22 0,0 @@
git-run-command(1)

# NAME

git-run-command - Execute a command over a range of git revisions

# SYNOPSIS

git run-command [-q] _rev_range_ _command_

# OPTIONS

*-q*
	only show command outputs

# OPERANDS

_rev_range_
	revisions range, see *gitrevisions*(7)

_command_
	command to execute on each revision of the range

D docs/git/git-url.scd => docs/git/git-url.scd +0 -29
@@ 1,29 0,0 @@
git-url(1)

# NAME

git-url - Display an URL related to the repo or a commit++
          Based on remote config using an URL alias and "browse" config

# SYNOPSIS

git url [-c _commit_] [-r _remote_] [-t _type_]

# OPTIONS

*-c* _commit_
	commit to select information++
default: HEAD

*-r* _remote_
	remote to use++
default: origin

*-t* _type_
	URL type++
default: repo++
valid types:
	- repo: general URL of the repo
	- commit: URL of the selected commit
	- issue: URL of the issue related to selected commit
	- review: URL of the review related to selected commit

D docs/shell/do-not-disturb.scd => docs/shell/do-not-disturb.scd +0 -24
@@ 1,24 0,0 @@
do-not-disturb(1)

# NAME

do-not-disturb - Manage "Do not disturb" mode

# SYNOPSIS

do-not-disturb [ _disable_ | _enable_ | _status_ | _toggle_ ]

# OPERANDS

_disable_
	Disable mode

_enable_
	Enable mode

_status_
	Display current mode++
This is the default action if none is specified

_toggle_
	Toggle mode

D docs/shell/help.scd => docs/shell/help.scd +0 -18
@@ 1,18 0,0 @@
help(1)

# NAME

help - Get help about a topic

# SYNOPSIS

help [_topic_] [_section_]

# OPERANDS

_topic_
	Topic to get help about++
If this is not specified, an interactive selection will be done

_section_
	Select which *man*(1) section of the _topic_ to display

D docs/shell/http-env.scd => docs/shell/http-env.scd +0 -29
@@ 1,29 0,0 @@
http-env(1)

# NAME

http-env - Run a HTTP request to a project environment

# SYNOPSIS

http-env _project_ _env_ _method_ _path_ [_item_...] [-- _option_...]

# OPERANDS

_project_
	Project used

_env_
	Environment to send the request to

_method_
	HTTP method

_path_
	Request path

_item_
	Request items

_option_
	*http* option

D docs/shell/i3blocks-mode.scd => docs/shell/i3blocks-mode.scd +0 -25
@@ 1,25 0,0 @@
i3blocks-mode(1)

# NAME

i3blocks-mode - Manage the bar status mode++
                Light mode is the default

# SYNOPSIS

i3blocks-mode [ _full_ | _light_ | _show_ | _toggle_ ]

# OPERANDS

_full_
	Enable full mode

_light_
	Enable light mode

_show_
	Display current mode++
This is the default action if none is specified

_toggle_
	Toggle mode

D docs/shell/influx-env.scd => docs/shell/influx-env.scd +0 -20
@@ 1,20 0,0 @@
influx-env(1)

# NAME

influx-env - Start InfluxDB or run a query within a project environment

# SYNOPSIS

influx-env _project_ [_query_] [-- _option_...]

# OPERANDS

_project_
	Project used

_query_
	Query to run

_option_
	*influx* option

D docs/shell/loop.scd => docs/shell/loop.scd +0 -25
@@ 1,25 0,0 @@
loop(1)

# NAME

loop - Execute a command in a loop

# SYNOPSIS

loop [-c _count_] [-i _interval_] [-t _time_] _command_

# OPTIONS

*-c* _count_
	stops after _count_ runs of the command

*-i* _interval_
	wait _interval_ seconds between each command run

*-t* _time_
	stops command runs after a _time_ seconds period

# OPERANDS

_command_
	Command to execute

D docs/shell/mysql-env.scd => docs/shell/mysql-env.scd +0 -20
@@ 1,20 0,0 @@
mysql-env(1)

# NAME

mysql-env - Start MySQL or run a query within a project environment

# SYNOPSIS

mysql-env _project_ [_query_] [-- _option_...]

# OPERANDS

_project_
	Project used

_query_
	Query to run

_option_
	*mysql* option

D docs/shell/notify.scd => docs/shell/notify.scd +0 -29
@@ 1,29 0,0 @@
notify(1)

# NAME

notify - Send a notification

# SYNOPSIS

notify [-c _category_] [-i _id_] [-t _time_] _summary_ [_body_]

# OPTIONS

*-c* _category_
	Notification category

*-i* _id_
	Notification identifier++
replace similar notification if any

*-t* _time_
	timeout in seconds

# OPERANDS

_summary_
	Notification summary

_body_
	Notification body

D docs/shell/pomodoro.scd => docs/shell/pomodoro.scd +0 -24
@@ 1,24 0,0 @@
pomodoro(1)

# NAME

pomodoro - Manage a Pomodoro session

# SYNOPSIS

pomodoro [ _cancel_ | _start_ | _status_ | _toggle_ ]

# OPERANDS

_cancel_
	Cancel session

_start_
	Start session

_status_
	Display time remaining if session active++
This is the default action if none is specified

_toggle_
	Start session if not active, cancel it otherwise

D docs/shell/project-path.scd => docs/shell/project-path.scd +0 -23
@@ 1,23 0,0 @@
project-path(1)

# NAME

project-path - Display a path related to a project

# SYNOPSIS

project-path _type_ [_project_]

# OPERANDS

_type_
	Type of path++
valid types:
	- main: main directory
	- repo: repository directory
	- docs: documentation directory
	- logs: logging directory

_project_
	Project to use++
If none specified, the general path for _type_ is displayed

D docs/shell/query-hosts-tags.scd => docs/shell/query-hosts-tags.scd +0 -27
@@ 1,27 0,0 @@
query-hosts-tags(1)

# NAME

query-hosts-tags - Query the hosts tags file

# DESCRIPTION

A "tags" query displays the tags from the host argument++
A "hosts" query displays the hosts matching the tags arguments++
Without any argument, it displays all the hosts

# SYNOPSIS

query-hosts-tags

query-hosts-tags hosts [_tag_=_value_...]

query-hosts-tags tags _host_

# OPERANDS

_host_
	Host to display tags of

_tag_=_value_
	Couple _tag_/_value_ to filter the hosts to display

D docs/shell/redis-env.scd => docs/shell/redis-env.scd +0 -20
@@ 1,20 0,0 @@
redis-env(1)

# NAME

redis-env - Start Redis or run a query within a project environment

# SYNOPSIS

redis-env _project_ [_query_] [-- _option_...]

# OPERANDS

_project_
	Project used

_query_
	Query to run

_option_
	*redis-cli* option

D docs/shell/tmux-env.scd => docs/shell/tmux-env.scd +0 -23
@@ 1,23 0,0 @@
tmux-env(1)

# NAME

tmux-env - Start tmux environment session

# SYNOPSIS

tmux-env [-b] _target_ [_session_]

# OPTIONS

*-b*
	launch in background, no attach

# OPERANDS

_target_
	Environment target

_session_
	_target_' session to start++
If none specified, a new empty one is created

D docs/shell/weechat-fifo.scd => docs/shell/weechat-fifo.scd +0 -16
@@ 1,16 0,0 @@
weechat-fifo(1)

# NAME

weechat-fifo - Remote control of weechat via FIFO pipe++
               Text or command is read from stdin

# SYNOPSIS

weechat-fifo [_buffer_]

# OPERANDS

_buffer_
	Buffer to use++
Default: current one

D docs/sway/sway-command-input-exec.scd => docs/sway/sway-command-input-exec.scd +0 -19
@@ 1,19 0,0 @@
sway-command-input-exec(1)

# NAME

sway-command-input-exec - Sway command input execution

# SYNOPSIS

sway-command-input-exec [-F _format_] [-P _prompt_]

# OPTIONS

*-F* _format_
	Sway command to be executed++
%s occurences are replaced by user input++
default: %s

*-P* _prompt_
	Display before user input

R configs/aria2/Makefile => files/configs/aria2/Makefile +0 -0
R configs/aria2/aria2.conf => files/configs/aria2/aria2.conf +0 -0
R configs/coreutils/Makefile => files/configs/coreutils/Makefile +0 -0
R configs/coreutils/dircolors => files/configs/coreutils/dircolors +0 -0
R configs/fontconfig/Makefile => files/configs/fontconfig/Makefile +0 -0
R configs/fontconfig/fonts.conf => files/configs/fontconfig/fonts.conf +0 -0
R configs/git/Makefile => files/configs/git/Makefile +0 -0
R configs/git/config => files/configs/git/config +0 -0
R configs/git/config.d/aliases => files/configs/git/config.d/aliases +0 -0
R configs/git/config.d/general => files/configs/git/config.d/general +0 -0
R configs/git/config.d/style => files/configs/git/config.d/style +0 -0
R configs/git/ignore => files/configs/git/ignore +0 -0
R configs/git/template/info/exclude => files/configs/git/template/info/exclude +0 -0
R configs/gnupg/Makefile => files/configs/gnupg/Makefile +0 -0
R configs/gnupg/gpg-agent.conf => files/configs/gnupg/gpg-agent.conf +0 -0
R configs/gnupg/gpg.conf => files/configs/gnupg/gpg.conf +0 -0
R configs/htop/Makefile => files/configs/htop/Makefile +0 -0
R configs/htop/htoprc => files/configs/htop/htoprc +0 -0
R configs/httpie/Makefile => files/configs/httpie/Makefile +0 -0
R configs/httpie/config.json => files/configs/httpie/config.json +0 -0
R configs/i3blocks/Makefile => files/configs/i3blocks/Makefile +0 -0
R configs/i3blocks/config => files/configs/i3blocks/config +0 -0
R configs/less/Makefile => files/configs/less/Makefile +0 -0
R configs/less/lesskey => files/configs/less/lesskey +0 -0
R configs/libqalculate/Makefile => files/configs/libqalculate/Makefile +0 -0
R configs/libqalculate/qalc.cfg => files/configs/libqalculate/qalc.cfg +0 -0
R configs/mako/Makefile => files/configs/mako/Makefile +0 -0
R configs/mako/config => files/configs/mako/config +0 -0
R configs/mopidy/Makefile => files/configs/mopidy/Makefile +0 -0
R configs/mopidy/README.md => files/configs/mopidy/README.md +0 -0
R configs/mopidy/mopidy.conf => files/configs/mopidy/mopidy.conf +0 -0
R configs/ncmpcpp/Makefile => files/configs/ncmpcpp/Makefile +0 -0
R configs/ncmpcpp/bindings => files/configs/ncmpcpp/bindings +0 -0
R configs/ncmpcpp/config => files/configs/ncmpcpp/config +0 -0
R configs/neomutt/Makefile => files/configs/neomutt/Makefile +0 -0
R configs/neomutt/config.d/accounts/gmail.mutt => files/configs/neomutt/config.d/accounts/gmail.mutt +0 -0
R configs/neomutt/config.d/accounts/migadu.mutt => files/configs/neomutt/config.d/accounts/migadu.mutt +0 -0
R configs/neomutt/config.d/accounts/work.mutt => files/configs/neomutt/config.d/accounts/work.mutt +0 -0
R configs/neomutt/config.d/bindings.mutt => files/configs/neomutt/config.d/bindings.mutt +0 -0
R configs/neomutt/config.d/clean-bindings.mutt => files/configs/neomutt/config.d/clean-bindings.mutt +0 -0
R configs/neomutt/config.d/colors.mutt => files/configs/neomutt/config.d/colors.mutt +0 -0
R configs/neomutt/config.d/general.mutt => files/configs/neomutt/config.d/general.mutt +0 -0
R configs/neomutt/config.d/mailcap => files/configs/neomutt/config.d/mailcap +0 -0
R configs/neomutt/config.d/signatures/simple => files/configs/neomutt/config.d/signatures/simple +0 -0
R configs/neomutt/config.d/signatures/work => files/configs/neomutt/config.d/signatures/work +0 -0
R configs/neomutt/config.d/style.mutt => files/configs/neomutt/config.d/style.mutt +0 -0
R configs/neomutt/neomuttrc => files/configs/neomutt/neomuttrc +0 -0
R configs/newsboat/Makefile => files/configs/newsboat/Makefile +0 -0
R configs/newsboat/config => files/configs/newsboat/config +0 -0
R configs/newsboat/config.d/bindings => files/configs/newsboat/config.d/bindings +0 -0
R configs/newsboat/config.d/general => files/configs/newsboat/config.d/general +0 -0
R configs/newsboat/config.d/style => files/configs/newsboat/config.d/style +0 -0
R configs/newsboat/urls => files/configs/newsboat/urls +0 -0
R configs/openssh/Makefile => files/configs/openssh/Makefile +0 -0
R configs/openssh/config => files/configs/openssh/config +0 -0
R configs/qutebrowser/Makefile => files/configs/qutebrowser/Makefile +0 -0
R configs/qutebrowser/config.d/bindings.py => files/configs/qutebrowser/config.d/bindings.py +0 -0
R configs/qutebrowser/config.d/general.py => files/configs/qutebrowser/config.d/general.py +0 -0
R configs/qutebrowser/config.d/style.py => files/configs/qutebrowser/config.d/style.py +0 -0
R configs/qutebrowser/config.py => files/configs/qutebrowser/config.py +0 -0
R configs/rbtools/Makefile => files/configs/rbtools/Makefile +0 -0
R configs/rbtools/reviewboardrc => files/configs/rbtools/reviewboardrc +0 -0
R configs/sway/Makefile => files/configs/sway/Makefile +0 -0
R configs/sway/config => files/configs/sway/config +0 -0
R configs/sway/config.d/bar => files/configs/sway/config.d/bar +0 -0
R configs/sway/config.d/bindings => files/configs/sway/config.d/bindings +0 -0
R configs/sway/config.d/general => files/configs/sway/config.d/general +0 -0
R configs/sway/config.d/inputs => files/configs/sway/config.d/inputs +0 -0
R configs/sway/config.d/outputs => files/configs/sway/config.d/outputs +0 -0
R configs/sway/config.d/rules => files/configs/sway/config.d/rules +0 -0
R configs/sway/config.d/style => files/configs/sway/config.d/style +0 -0
R configs/sway/swaynag/config => files/configs/sway/swaynag/config +0 -0
R configs/swaylock/Makefile => files/configs/swaylock/Makefile +0 -0
R configs/swaylock/config => files/configs/swaylock/config +0 -0
R configs/systemd/Makefile => files/configs/systemd/Makefile +0 -0
R configs/systemd/user/backup_bookmarks.path => files/configs/systemd/user/backup_bookmarks.path +0 -0
R configs/systemd/user/backup_bookmarks.service => files/configs/systemd/user/backup_bookmarks.service +0 -0
R configs/systemd/user/backup_notes.path => files/configs/systemd/user/backup_notes.path +0 -0
R configs/systemd/user/backup_notes.service => files/configs/systemd/user/backup_notes.service +0 -0
R configs/systemd/user/mopidy.service => files/configs/systemd/user/mopidy.service +0 -0
R configs/systemd/user/notify_low_battery.service => files/configs/systemd/user/notify_low_battery.service +0 -0
R configs/systemd/user/notify_low_battery.timer => files/configs/systemd/user/notify_low_battery.timer +0 -0
R configs/systemd/user/notify_package_updates.service => files/configs/systemd/user/notify_package_updates.service +0 -0
R configs/systemd/user/notify_package_updates.timer => files/configs/systemd/user/notify_package_updates.timer +0 -0
R configs/systemd/user/qutebrowser_update_adblock.service => files/configs/systemd/user/qutebrowser_update_adblock.service +0 -0
R configs/systemd/user/qutebrowser_update_adblock.timer => files/configs/systemd/user/qutebrowser_update_adblock.timer +0 -0
R configs/termite/Makefile => files/configs/termite/Makefile +0 -0
R configs/termite/config => files/configs/termite/config +0 -0
R configs/termite/config_command_input => files/configs/termite/config_command_input +0 -0
R configs/termite/config_launcher => files/configs/termite/config_launcher +0 -0
R configs/tmux/Makefile => files/configs/tmux/Makefile +0 -0
R configs/tmux/config.d/bindings.tmux => files/configs/tmux/config.d/bindings.tmux +0 -0
R configs/tmux/config.d/general.tmux => files/configs/tmux/config.d/general.tmux +0 -0
R configs/tmux/config.d/style.tmux => files/configs/tmux/config.d/style.tmux +0 -0
R configs/tmux/tmux.conf => files/configs/tmux/tmux.conf +0 -0
R configs/translate-shell/Makefile => files/configs/translate-shell/Makefile +0 -0
R configs/translate-shell/init.trans => files/configs/translate-shell/init.trans +0 -0
R configs/universal-ctags/Makefile => files/configs/universal-ctags/Makefile +0 -0
R configs/universal-ctags/main.ctags => files/configs/universal-ctags/main.ctags +0 -0
R configs/util-linux/Makefile => files/configs/util-linux/Makefile +0 -0
R configs/vim/Makefile => files/configs/vim/Makefile +0 -0
R configs/vim/README.md => files/configs/vim/README.md +0 -0
R configs/vim/colors/tardypad.vim => files/configs/vim/colors/tardypad.vim +0 -0
R configs/vim/config.d/bindings.vim => files/configs/vim/config.d/bindings.vim +0 -0
R configs/vim/config.d/general.vim => files/configs/vim/config.d/general.vim +0 -0
R configs/vim/config.d/plugins.vim => files/configs/vim/config.d/plugins.vim +0 -0
R configs/vim/ftdetect/dircolors.vim => files/configs/vim/ftdetect/dircolors.vim +0 -0
R configs/vim/ftdetect/gitconfig.vim => files/configs/vim/ftdetect/gitconfig.vim +0 -0
R configs/vim/ftdetect/icinga2.vim => files/configs/vim/ftdetect/icinga2.vim +0 -0
R configs/vim/ftdetect/mail.vim => files/configs/vim/ftdetect/mail.vim +0 -0
R configs/vim/ftdetect/markdown.vim => files/configs/vim/ftdetect/markdown.vim +0 -0
R configs/vim/ftdetect/neomuttrc.vim => files/configs/vim/ftdetect/neomuttrc.vim +0 -0
R configs/vim/ftdetect/nginx.vim => files/configs/vim/ftdetect/nginx.vim +0 -0
R configs/vim/ftdetect/sh.vim => files/configs/vim/ftdetect/sh.vim +0 -0
R configs/vim/ftdetect/sshconfig.vim => files/configs/vim/ftdetect/sshconfig.vim +0 -0
R configs/vim/ftdetect/sway.vim => files/configs/vim/ftdetect/sway.vim +0 -0
R configs/vim/ftdetect/tmux.vim => files/configs/vim/ftdetect/tmux.vim +0 -0
R configs/vim/ftdetect/xml.vim => files/configs/vim/ftdetect/xml.vim +0 -0
R configs/vim/ftdetect/zsh.vim => files/configs/vim/ftdetect/zsh.vim +0 -0
R configs/vim/ftplugin/gitcommit.vim => files/configs/vim/ftplugin/gitcommit.vim +0 -0
R configs/vim/ftplugin/help.vim => files/configs/vim/ftplugin/help.vim +0 -0
R configs/vim/ftplugin/mail.vim => files/configs/vim/ftplugin/mail.vim +0 -0
R configs/vim/ftplugin/markdown.vim => files/configs/vim/ftplugin/markdown.vim +0 -0
R configs/vim/indent/sh.vim => files/configs/vim/indent/sh.vim +0 -0
R configs/vim/plugin/align.vim => files/configs/vim/plugin/align.vim +0 -0
R configs/vim/plugin/alternate_tab.vim => files/configs/vim/plugin/alternate_tab.vim +0 -0
R configs/vim/plugin/highlight_long_lines.vim => files/configs/vim/plugin/highlight_long_lines.vim +0 -0
R configs/vim/plugin/linter_counts.vim => files/configs/vim/plugin/linter_counts.vim +0 -0
R configs/vim/plugin/manage_sessions.vim => files/configs/vim/plugin/manage_sessions.vim +0 -0
R configs/vim/plugin/remove_trailing_spaces.vim => files/configs/vim/plugin/remove_trailing_spaces.vim +0 -0
R configs/vim/plugin/scroll_search.vim => files/configs/vim/plugin/scroll_search.vim +0 -0
R configs/vim/plugin/zoom_window.vim => files/configs/vim/plugin/zoom_window.vim +0 -0
R configs/vim/snips/all.snippets => files/configs/vim/snips/all.snippets +0 -0
R configs/vim/snips/php.snippets => files/configs/vim/snips/php.snippets +0 -0
R configs/vim/snips/php_phpunit.snippets => files/configs/vim/snips/php_phpunit.snippets +0 -0
R configs/vim/snips/sh.snippets => files/configs/vim/snips/sh.snippets +0 -0
R configs/vim/snips/zsh.snippets => files/configs/vim/snips/zsh.snippets +0 -0
R configs/vim/spell/en.utf-8.add => files/configs/vim/spell/en.utf-8.add +0 -0
R configs/vim/vimrc => files/configs/vim/vimrc +0 -0
R configs/weechat/Makefile => files/configs/weechat/Makefile +0 -0
R configs/weechat/README.md => files/configs/weechat/README.md +0 -0
R configs/weechat/config.d/alias.conf => files/configs/weechat/config.d/alias.conf +0 -0
R configs/weechat/config.d/buflist.conf => files/configs/weechat/config.d/buflist.conf +0 -0
R configs/weechat/config.d/charset.conf => files/configs/weechat/config.d/charset.conf +0 -0
R configs/weechat/config.d/colorize_nicks.conf => files/configs/weechat/config.d/colorize_nicks.conf +0 -0
R configs/weechat/config.d/exec.conf => files/configs/weechat/config.d/exec.conf +0 -0
R configs/weechat/config.d/fifo.conf => files/configs/weechat/config.d/fifo.conf +0 -0
R configs/weechat/config.d/fset.conf => files/configs/weechat/config.d/fset.conf +0 -0
R configs/weechat/config.d/irc.conf => files/configs/weechat/config.d/irc.conf +0 -0
R configs/weechat/config.d/logger.conf => files/configs/weechat/config.d/logger.conf +0 -0
R configs/weechat/config.d/plugins.conf => files/configs/weechat/config.d/plugins.conf +0 -0
R configs/weechat/config.d/python.conf => files/configs/weechat/config.d/python.conf +0 -0
R configs/weechat/config.d/relay.conf => files/configs/weechat/config.d/relay.conf +0 -0
R configs/weechat/config.d/script.conf => files/configs/weechat/config.d/script.conf +0 -0
R configs/weechat/config.d/spell.conf => files/configs/weechat/config.d/spell.conf +0 -0
R configs/weechat/config.d/trigger.conf => files/configs/weechat/config.d/trigger.conf +0 -0
R configs/weechat/config.d/weechat.conf => files/configs/weechat/config.d/weechat.conf +0 -0
R configs/weechat/config.d/xfer.conf => files/configs/weechat/config.d/xfer.conf +0 -0
R configs/weechat/plugins/edit_vim_tmux.py => files/configs/weechat/plugins/edit_vim_tmux.py +0 -0
R configs/weechat/plugins/export_important_buffers_count.py => files/configs/weechat/plugins/export_important_buffers_count.py +0 -0
R configs/weechat/plugins/go_fzf_tmux.py => files/configs/weechat/plugins/go_fzf_tmux.py +0 -0
R configs/xdg-user-dirs/Makefile => files/configs/xdg-user-dirs/Makefile +0 -0
R configs/xdg-user-dirs/user-dirs.conf => files/configs/xdg-user-dirs/user-dirs.conf +0 -0
R configs/xdg-user-dirs/user-dirs.dirs => files/configs/xdg-user-dirs/user-dirs.dirs +0 -0
R configs/xdg-user-dirs/user-dirs.locale => files/configs/xdg-user-dirs/user-dirs.locale +0 -0
R configs/xdg-utils/Makefile => files/configs/xdg-utils/Makefile +0 -0
R configs/xdg-utils/mimeapps.list => files/configs/xdg-utils/mimeapps.list +0 -0
R configs/zathura/Makefile => files/configs/zathura/Makefile +0 -0
R configs/zathura/config.d/bindings => files/configs/zathura/config.d/bindings +0 -0
R configs/zathura/config.d/clean-bindings => files/configs/zathura/config.d/clean-bindings +0 -0
R configs/zathura/config.d/general => files/configs/zathura/config.d/general +0 -0
R configs/zathura/config.d/style => files/configs/zathura/config.d/style +0 -0
R configs/zathura/zathurarc => files/configs/zathura/zathurarc +0 -0
R configs/zsh/Makefile => files/configs/zsh/Makefile +0 -0
R configs/zsh/README.md => files/configs/zsh/README.md +0 -0
R configs/zsh/completions/_do-not-disturb => files/configs/zsh/completions/_do-not-disturb +0 -0
R configs/zsh/completions/_help => files/configs/zsh/completions/_help +0 -0
R configs/zsh/completions/_http-env => files/configs/zsh/completions/_http-env +0 -0
R configs/zsh/completions/_influx-env => files/configs/zsh/completions/_influx-env +0 -0
R configs/zsh/completions/_loop => files/configs/zsh/completions/_loop +0 -0
R configs/zsh/completions/_mysql-env => files/configs/zsh/completions/_mysql-env +0 -0
R configs/zsh/completions/_notify => files/configs/zsh/completions/_notify +0 -0
R configs/zsh/completions/_pacman-pkgdiff => files/configs/zsh/completions/_pacman-pkgdiff +0 -0
R configs/zsh/completions/_pomodoro => files/configs/zsh/completions/_pomodoro +0 -0
R configs/zsh/completions/_project-path => files/configs/zsh/completions/_project-path +0 -0
R configs/zsh/completions/_query-hosts-tags => files/configs/zsh/completions/_query-hosts-tags +0 -0
R configs/zsh/completions/_rbt => files/configs/zsh/completions/_rbt +0 -0
R configs/zsh/completions/_redis-env => files/configs/zsh/completions/_redis-env +0 -0
R configs/zsh/completions/_ssh-tags => files/configs/zsh/completions/_ssh-tags +0 -0
R configs/zsh/completions/_tmux-env => files/configs/zsh/completions/_tmux-env +0 -0
R configs/zsh/completions/git/_git-argument => files/configs/zsh/completions/git/_git-argument +0 -0
R configs/zsh/completions/git/_git-hist => files/configs/zsh/completions/git/_git-hist +0 -0
R configs/zsh/completions/git/_git-mgrbma => files/configs/zsh/completions/git/_git-mgrbma +0 -0
R configs/zsh/completions/git/_git-push-current-branch => files/configs/zsh/completions/git/_git-push-current-branch +0 -0
R configs/zsh/completions/git/_git-reauthor => files/configs/zsh/completions/git/_git-reauthor +0 -0
R configs/zsh/completions/git/_git-run-command => files/configs/zsh/completions/git/_git-run-command +0 -0
R configs/zsh/completions/git/_git-sed => files/configs/zsh/completions/git/_git-sed +0 -0
R configs/zsh/completions/git/_git-stamp => files/configs/zsh/completions/git/_git-stamp +0 -0
R configs/zsh/completions/git/_git-url => files/configs/zsh/completions/git/_git-url +0 -0
R configs/zsh/config.d/aliases.zsh => files/configs/zsh/config.d/aliases.zsh +0 -0
R configs/zsh/config.d/bindings.zsh => files/configs/zsh/config.d/bindings.zsh +0 -0
R configs/zsh/config.d/completion.zsh => files/configs/zsh/config.d/completion.zsh +0 -0
R configs/zsh/config.d/general.zsh => files/configs/zsh/config.d/general.zsh +0 -0
R configs/zsh/config.d/history.zsh => files/configs/zsh/config.d/history.zsh +0 -0
R configs/zsh/config.d/plugins.zsh => files/configs/zsh/config.d/plugins.zsh +0 -0
R configs/zsh/config.d/prompt.zsh => files/configs/zsh/config.d/prompt.zsh +0 -0
R configs/zsh/config.d/variables.zsh => files/configs/zsh/config.d/variables.zsh +0 -0
R configs/zsh/functions/goto-project => files/configs/zsh/functions/goto-project +0 -0
R configs/zsh/zlogin => files/configs/zsh/zlogin +0 -0
R configs/zsh/zprofile => files/configs/zsh/zprofile +0 -0
R configs/zsh/zshenv => files/configs/zsh/zshenv +0 -0
R configs/zsh/zshrc => files/configs/zsh/zshrc +0 -0
R data/applications/Makefile => files/data/applications/Makefile +0 -0
A files/data/applications/chat_client.desktop => files/data/applications/chat_client.desktop +6 -0
@@ 0,0 1,6 @@
[Desktop Entry]
Exec=sway-app-chat
Name=weechat
GenericName=Chat client
Icon=
Type=Application

A files/data/applications/chromium_web_browser.desktop => files/data/applications/chromium_web_browser.desktop +6 -0
@@ 0,0 1,6 @@
[Desktop Entry]
Exec=chromium %U
Name=chromium
GenericName=Web browser
Icon=
Type=Application

A files/data/applications/document_viewer.desktop => files/data/applications/document_viewer.desktop +6 -0
@@ 0,0 1,6 @@
[Desktop Entry]
Exec=zathura %U
Name=zathura
GenericName=Document viewer
Icon=
Type=Application

A files/data/applications/firefox_web_browser.desktop => files/data/applications/firefox_web_browser.desktop +6 -0
@@ 0,0 1,6 @@
[Desktop Entry]
Exec=firefox %u
Name=firefox
GenericName=Web browser
Icon=
Type=Application

A files/data/applications/mail_client.desktop => files/data/applications/mail_client.desktop +6 -0
@@ 0,0 1,6 @@
[Desktop Entry]
Exec=sway-app-mail
Name=neomutt
GenericName=Mail client
Icon=
Type=Application

A files/data/applications/music_player.desktop => files/data/applications/music_player.desktop +6 -0
@@ 0,0 1,6 @@
[Desktop Entry]
Exec=sway-app-music
Name=ncmpcpp
GenericName=Music player
Icon=
Type=Application

A files/data/applications/news_reader.desktop => files/data/applications/news_reader.desktop +6 -0
@@ 0,0 1,6 @@
[Desktop Entry]
Exec=sway-app-news
Name=newsboat
GenericName=News reader
Icon=
Type=Application

A files/data/applications/qutebrowser_web_browser.desktop => files/data/applications/qutebrowser_web_browser.desktop +6 -0
@@ 0,0 1,6 @@
[Desktop Entry]
Exec=qutebrowser -l warning %u
Name=qutebrowser
GenericName=Web browser
Icon=
Type=Application

A files/data/applications/raster_graphics_editor.desktop => files/data/applications/raster_graphics_editor.desktop +6 -0
@@ 0,0 1,6 @@
[Desktop Entry]
Exec=gimp %U
Name=gimp
GenericName=Raster graphics editor
Icon=
Type=Application

A files/data/applications/system_monitor.desktop => files/data/applications/system_monitor.desktop +6 -0
@@ 0,0 1,6 @@
[Desktop Entry]
Exec=sway-app-monitor
Name=htop
GenericName=System monitor
Icon=
Type=Application

A files/data/applications/terminal.desktop => files/data/applications/terminal.desktop +6 -0
@@ 0,0 1,6 @@
[Desktop Entry]
Exec=termite -e 'tmux new-session'
Name=termite
GenericName=Terminal
Icon=
Type=Application

A files/data/applications/vector_graphics_editor.desktop => files/data/applications/vector_graphics_editor.desktop +6 -0
@@ 0,0 1,6 @@
[Desktop Entry]
Exec=inkscape %F
Name=inkscape
GenericName=Vector graphics editor
Icon=
Type=Application

A files/data/applications/video_player.desktop => files/data/applications/video_player.desktop +6 -0
@@ 0,0 1,6 @@
[Desktop Entry]
Exec=vlc --started-from-file %U
Name=vlc
GenericName=Video player
Icon=
Type=Application

A files/data/env/Makefile => files/data/env/Makefile +12 -0
@@ 0,0 1,12 @@
all: env

env:
	$(start_setup)

	mkdir -p $(DESTDIR)$(DATA_DIR)/env/tmux/projects

	cp data/env/tmux/projects/arch_packages.sh $(DESTDIR)$(DATA_DIR)/env/tmux/projects/arch_packages.sh
	cp data/env/tmux/projects/dotfiles.sh      $(DESTDIR)$(DATA_DIR)/env/tmux/projects/dotfiles.sh
	cp data/env/tmux/projects/tardypad_me.sh   $(DESTDIR)$(DATA_DIR)/env/tmux/projects/tardypad_me.sh

	chmod +x $(DESTDIR)$(DATA_DIR)/env/tmux/projects/*

A files/data/env/tmux/projects/arch_packages.sh => files/data/env/tmux/projects/arch_packages.sh +25 -0
@@ 0,0 1,25 @@
#!/bin/sh

SOCKET="$1"
SESSION_NAME="$2"

ARCH_PACKAGES_PATH=$( project-path repo arch-packages )

tmux -L "${SOCKET}" \
  new-session -d \
  -s "${SESSION_NAME}" \
  -n 'terminal' \
  -c "${ARCH_PACKAGES_PATH}"

tmux -L "${SOCKET}" \
  new-window \
  -n 'code' \
  -c "${ARCH_PACKAGES_PATH}" \
  "vim \
    -c 'TabooRename TODO' \
    -c 'tabnew' \
    -- TODO.md"

tmux -L "${SOCKET}" \
  select-window \
  -t ':terminal'

A files/data/env/tmux/projects/dotfiles.sh => files/data/env/tmux/projects/dotfiles.sh +25 -0
@@ 0,0 1,25 @@
#!/bin/sh

SOCKET="$1"
SESSION_NAME="$2"

DOTFILES_PATH=$( project-path repo dotfiles )

tmux -L "${SOCKET}" \
  new-session -d \
  -s "${SESSION_NAME}" \
  -n 'terminal' \
  -c "${DOTFILES_PATH}"

tmux -L "${SOCKET}" \
  new-window \
  -n 'code' \
  -c "${DOTFILES_PATH}" \
  "vim \
    -c 'TabooRename TODO' \
    -c 'tabnew' \
    -- TODO.md"

tmux -L "${SOCKET}" \
  select-window \
  -t ':terminal'

A files/data/env/tmux/projects/tardypad_me.sh => files/data/env/tmux/projects/tardypad_me.sh +25 -0
@@ 0,0 1,25 @@
#!/bin/sh

SOCKET="$1"
SESSION_NAME="$2"

TARDYPAD_ME_PATH=$( project-path repo tardypad.me )

tmux -L "${SOCKET}" \
  new-session -d \
  -s "${SESSION_NAME}" \
  -n 'terminal' \
  -c "${TARDYPAD_ME_PATH}"

tmux -L "${SOCKET}" \
  new-window \
  -n 'code' \
  -c "${TARDYPAD_ME_PATH}" \
  "vim \
    -c 'TabooRename TODO' \
    -c 'tabnew' \
    -- TODO.md"

tmux -L "${SOCKET}" \
  select-window \
  -t ':terminal'

R data/images/Makefile => files/data/images/Makefile +1 -1
@@ 5,4 5,4 @@ images:

	mkdir -p $(DESTDIR)$(DATA_DIR)/images

	setup/substitute_colors $(THEME) < data/images/lock.svg > $(DESTDIR)$(DATA_DIR)/images/lock.svg
	setup/substitute_colors $(THEME) < files/data/images/lock.svg > $(DESTDIR)$(DATA_DIR)/images/lock.svg

A files/data/images/lock.svg => files/data/images/lock.svg +5 -0
@@ 0,0 1,5 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 -256 1792 1792" height="300px">
    <path
        d="M1022.915 834.17q0-53-37.5-90.5t-90.5-37.5q-53 0-90.5 37.5t-37.5 90.5q0 37 19 67t51 47l-69 229q-5 15 5 28t26 13h192q16 0 26-13t5-28l-69-229q32-17 51-47t19-67zm-384-256h512v-192q0-106-75-181t-181-75q-106 0-181 75t-75 181zm832 96v576q0 40-28 68t-68 28h-960q-40 0-68-28t-28-68v-576q0-40 28-68t68-28h32v-192q0-184 132-316t316-132q184 0 316 132t132 316v192h32q40 0 68 28t28 68z"
        fill="#{color/foreground/hex}"/>
</svg>

R data/sounds/Makefile => files/data/sounds/Makefile +0 -0
R data/sounds/end_pomodoro.wav => files/data/sounds/end_pomodoro.wav +0 -0
R data/sounds/low_battery.wav => files/data/sounds/low_battery.wav +0 -0
A files/docs/Makefile => files/docs/Makefile +31 -0
@@ 0,0 1,31 @@
all: doc

doc:
	$(start_setup)

	mkdir -p $(DESTDIR)$(DATA_DIR)/man/man1

	scdoc < files/docs/shell/do-not-disturb.scd         > $(DESTDIR)$(DATA_DIR)/man/man1/do-not-disturb.1
	scdoc < files/docs/shell/help.scd                   > $(DESTDIR)$(DATA_DIR)/man/man1/help.1
	scdoc < files/docs/shell/http-env.scd               > $(DESTDIR)$(DATA_DIR)/man/man1/http-env.1
	scdoc < files/docs/shell/i3blocks-mode.scd          > $(DESTDIR)$(DATA_DIR)/man/man1/i3blocks-mode.1
	scdoc < files/docs/shell/influx-env.scd             > $(DESTDIR)$(DATA_DIR)/man/man1/influx-env.1
	scdoc < files/docs/shell/loop.scd                   > $(DESTDIR)$(DATA_DIR)/man/man1/loop.1
	scdoc < files/docs/shell/mysql-env.scd              > $(DESTDIR)$(DATA_DIR)/man/man1/mysql-env.1
	scdoc < files/docs/shell/notify.scd                 > $(DESTDIR)$(DATA_DIR)/man/man1/notify.1
	scdoc < files/docs/shell/pacman-pkgdiff.scd         > $(DESTDIR)$(DATA_DIR)/man/man1/pacman-pkgdiff.1
	scdoc < files/docs/shell/plot.scd                   > $(DESTDIR)$(DATA_DIR)/man/man1/plot.1
	scdoc < files/docs/shell/pomodoro.scd               > $(DESTDIR)$(DATA_DIR)/man/man1/pomodoro.1
	scdoc < files/docs/shell/project-path.scd           > $(DESTDIR)$(DATA_DIR)/man/man1/project-path.1
	scdoc < files/docs/shell/query-hosts-tags.scd       > $(DESTDIR)$(DATA_DIR)/man/man1/query-hosts-tags.1
	scdoc < files/docs/shell/redis-env.scd              > $(DESTDIR)$(DATA_DIR)/man/man1/redis-env.1
	scdoc < files/docs/shell/tmux-env.scd               > $(DESTDIR)$(DATA_DIR)/man/man1/tmux-env.1
	scdoc < files/docs/shell/weechat-fifo.scd           > $(DESTDIR)$(DATA_DIR)/man/man1/weechat-fifo.1

	scdoc < files/docs/git/git-reauthor.scd             > $(DESTDIR)$(DATA_DIR)/man/man1/git-reauthor.1
	scdoc < files/docs/git/git-run-command.scd          > $(DESTDIR)$(DATA_DIR)/man/man1/git-run-command.1
	scdoc < files/docs/git/git-sed.scd                  > $(DESTDIR)$(DATA_DIR)/man/man1/git-sed.1
	scdoc < files/docs/git/git-stamp.scd                > $(DESTDIR)$(DATA_DIR)/man/man1/git-stamp.1
	scdoc < files/docs/git/git-url.scd                  > $(DESTDIR)$(DATA_DIR)/man/man1/git-url.1

	scdoc < files/docs/sway/sway-command-input-exec.scd > $(DESTDIR)$(DATA_DIR)/man/man1/sway-command-input-exec.1

A files/docs/git/git-reauthor.scd => files/docs/git/git-reauthor.scd +34 -0
@@ 0,0 1,34 @@
git-reauthor(1)

# NAME

git-reauthor - Rewrite history to change authors identities

# SYNOPSIS

git reauthor -a [-c] [-e _email_] [-n _name_] [-t _type_]

git reauthor -o _email_ [-c] [-e _email_] [-n _name_] [-t _type_]

# OPTIONS

*-a*
	rewrite all identities

*-c*
	correct values from user Git config

*-e* _email_
	define the correct email to set++
takes precedence over values coming from -c

*-n* _name_
	define the correct name to set++
takes precedence over values coming from -c

*-o* _email_
	rewrite identities matching old email

*-t* _id_
	define the type of identities affected by the rewrite++
valid ids: author, committer, both (default)

A files/docs/git/git-run-command.scd => files/docs/git/git-run-command.scd +22 -0
@@ 0,0 1,22 @@
git-run-command(1)

# NAME

git-run-command - Execute a command over a range of git revisions

# SYNOPSIS

git run-command [-q] _rev_range_ _command_

# OPTIONS

*-q*
	only show command outputs

# OPERANDS

_rev_range_
	revisions range, see *gitrevisions*(7)

_command_
	command to execute on each revision of the range

R docs/git/git-sed.scd => files/docs/git/git-sed.scd +0 -0
R docs/git/git-stamp.scd => files/docs/git/git-stamp.scd +0 -0
A files/docs/git/git-url.scd => files/docs/git/git-url.scd +29 -0
@@ 0,0 1,29 @@
git-url(1)

# NAME

git-url - Display an URL related to the repo or a commit++
          Based on remote config using an URL alias and "browse" config

# SYNOPSIS

git url [-c _commit_] [-r _remote_] [-t _type_]

# OPTIONS

*-c* _commit_
	commit to select information++
default: HEAD

*-r* _remote_
	remote to use++
default: origin

*-t* _type_
	URL type++
default: repo++
valid types:
	- repo: general URL of the repo
	- commit: URL of the selected commit
	- issue: URL of the issue related to selected commit
	- review: URL of the review related to selected commit

A files/docs/shell/do-not-disturb.scd => files/docs/shell/do-not-disturb.scd +24 -0
@@ 0,0 1,24 @@
do-not-disturb(1)

# NAME

do-not-disturb - Manage "Do not disturb" mode

# SYNOPSIS

do-not-disturb [ _disable_ | _enable_ | _status_ | _toggle_ ]

# OPERANDS

_disable_
	Disable mode

_enable_
	Enable mode

_status_
	Display current mode++
This is the default action if none is specified

_toggle_
	Toggle mode

A files/docs/shell/help.scd => files/docs/shell/help.scd +18 -0
@@ 0,0 1,18 @@
help(1)

# NAME

help - Get help about a topic

# SYNOPSIS

help [_topic_] [_section_]

# OPERANDS

_topic_
	Topic to get help about++
If this is not specified, an interactive selection will be done

_section_
	Select which *man*(1) section of the _topic_ to display

A files/docs/shell/http-env.scd => files/docs/shell/http-env.scd +29 -0
@@ 0,0 1,29 @@
http-env(1)

# NAME

http-env - Run a HTTP request to a project environment

# SYNOPSIS

http-env _project_ _env_ _method_ _path_ [_item_...] [-- _option_...]

# OPERANDS

_project_
	Project used

_env_
	Environment to send the request to

_method_
	HTTP method

_path_
	Request path

_item_
	Request items

_option_
	*http* option

A files/docs/shell/i3blocks-mode.scd => files/docs/shell/i3blocks-mode.scd +25 -0
@@ 0,0 1,25 @@
i3blocks-mode(1)

# NAME

i3blocks-mode - Manage the bar status mode++
                Light mode is the default

# SYNOPSIS

i3blocks-mode [ _full_ | _light_ | _show_ | _toggle_ ]

# OPERANDS

_full_
	Enable full mode

_light_
	Enable light mode

_show_
	Display current mode++
This is the default action if none is specified

_toggle_
	Toggle mode

A files/docs/shell/influx-env.scd => files/docs/shell/influx-env.scd +20 -0
@@ 0,0 1,20 @@
influx-env(1)

# NAME

influx-env - Start InfluxDB or run a query within a project environment

# SYNOPSIS

influx-env _project_ [_query_] [-- _option_...]

# OPERANDS

_project_
	Project used

_query_
	Query to run

_option_
	*influx* option

A files/docs/shell/loop.scd => files/docs/shell/loop.scd +25 -0
@@ 0,0 1,25 @@
loop(1)

# NAME

loop - Execute a command in a loop

# SYNOPSIS

loop [-c _count_] [-i _interval_] [-t _time_] _command_

# OPTIONS

*-c* _count_
	stops after _count_ runs of the command

*-i* _interval_
	wait _interval_ seconds between each command run

*-t* _time_
	stops command runs after a _time_ seconds period

# OPERANDS

_command_
	Command to execute

A files/docs/shell/mysql-env.scd => files/docs/shell/mysql-env.scd +20 -0
@@ 0,0 1,20 @@
mysql-env(1)

# NAME

mysql-env - Start MySQL or run a query within a project environment

# SYNOPSIS

mysql-env _project_ [_query_] [-- _option_...]

# OPERANDS

_project_
	Project used

_query_
	Query to run

_option_
	*mysql* option

A files/docs/shell/notify.scd => files/docs/shell/notify.scd +29 -0
@@ 0,0 1,29 @@
notify(1)

# NAME

notify - Send a notification

# SYNOPSIS

notify [-c _category_] [-i _id_] [-t _time_] _summary_ [_body_]

# OPTIONS

*-c* _category_
	Notification category

*-i* _id_
	Notification identifier++
replace similar notification if any

*-t* _time_
	timeout in seconds

# OPERANDS

_summary_
	Notification summary

_body_
	Notification body

R docs/shell/pacman-pkgdiff.scd => files/docs/shell/pacman-pkgdiff.scd +0 -0
R docs/shell/plot.scd => files/docs/shell/plot.scd +0 -0
A files/docs/shell/pomodoro.scd => files/docs/shell/pomodoro.scd +24 -0
@@ 0,0 1,24 @@
pomodoro(1)

# NAME

pomodoro - Manage a Pomodoro session

# SYNOPSIS

pomodoro [ _cancel_ | _start_ | _status_ | _toggle_ ]

# OPERANDS

_cancel_
	Cancel session

_start_
	Start session

_status_
	Display time remaining if session active++
This is the default action if none is specified

_toggle_
	Start session if not active, cancel it otherwise

A files/docs/shell/project-path.scd => files/docs/shell/project-path.scd +23 -0
@@ 0,0 1,23 @@
project-path(1)

# NAME

project-path - Display a path related to a project

# SYNOPSIS

project-path _type_ [_project_]

# OPERANDS

_type_
	Type of path++
valid types:
	- main: main directory
	- repo: repository directory
	- docs: documentation directory
	- logs: logging directory

_project_
	Project to use++
If none specified, the general path for _type_ is displayed

A files/docs/shell/query-hosts-tags.scd => files/docs/shell/query-hosts-tags.scd +27 -0
@@ 0,0 1,27 @@
query-hosts-tags(1)

# NAME

query-hosts-tags - Query the hosts tags file

# DESCRIPTION

A "tags" query displays the tags from the host argument++
A "hosts" query displays the hosts matching the tags arguments++
Without any argument, it displays all the hosts

# SYNOPSIS

query-hosts-tags

query-hosts-tags hosts [_tag_=_value_...]

query-hosts-tags tags _host_

# OPERANDS

_host_
	Host to display tags of

_tag_=_value_
	Couple _tag_/_value_ to filter the hosts to display

A files/docs/shell/redis-env.scd => files/docs/shell/redis-env.scd +20 -0
@@ 0,0 1,20 @@
redis-env(1)

# NAME

redis-env - Start Redis or run a query within a project environment

# SYNOPSIS

redis-env _project_ [_query_] [-- _option_...]

# OPERANDS

_project_
	Project used

_query_
	Query to run

_option_
	*redis-cli* option

A files/docs/shell/tmux-env.scd => files/docs/shell/tmux-env.scd +23 -0
@@ 0,0 1,23 @@
tmux-env(1)

# NAME

tmux-env - Start tmux environment session

# SYNOPSIS

tmux-env [-b] _target_ [_session_]

# OPTIONS

*-b*
	launch in background, no attach

# OPERANDS

_target_
	Environment target

_session_
	_target_' session to start++
If none specified, a new empty one is created

A files/docs/shell/weechat-fifo.scd => files/docs/shell/weechat-fifo.scd +16 -0
@@ 0,0 1,16 @@
weechat-fifo(1)

# NAME

weechat-fifo - Remote control of weechat via FIFO pipe++
               Text or command is read from stdin

# SYNOPSIS

weechat-fifo [_buffer_]

# OPERANDS

_buffer_
	Buffer to use++
Default: current one

A files/docs/sway/sway-command-input-exec.scd => files/docs/sway/sway-command-input-exec.scd +19 -0
@@ 0,0 1,19 @@
sway-command-input-exec(1)

# NAME

sway-command-input-exec - Sway command input execution

# SYNOPSIS

sway-command-input-exec [-F _format_] [-P _prompt_]

# OPTIONS

*-F* _format_
	Sway command to be executed++
%s occurences are replaced by user input++
default: %s

*-P* _prompt_
	Display before user input

R scripts/Makefile => files/scripts/Makefile +0 -0
A files/scripts/git/git-init-todo => files/scripts/git/git-init-todo +26 -0
@@ 0,0 1,26 @@
#!/bin/sh
# commands used:
# - git (includes own command: root)

TODO_FILE="$( git root )/TODO.md"

cat <<- EOF > "${TODO_FILE}"
	# Periodic

	# Cleaning

	# Bugs

	# Testing

	# Improvements

	# New Features

	# Research

EOF

git add "${TODO_FILE}"

git commit "${TODO_FILE}" -m 'add TODO file skeleton'

R scripts/git/git-reauthor => files/scripts/git/git-reauthor +0 -0
A files/scripts/git/git-run-command => files/scripts/git/git-run-command +94 -0
@@ 0,0 1,94 @@
#!/bin/sh
# commands used:
# - git

# "heavily inspired" by Gary Bernhardt's dotfiles script
# https://github.com/garybernhardt/dotfiles/blob/master/bin/run-command-on-git-revisions

init_variables() {
  COMMAND=${0##*/}

  INITIAL_REV=
  REV_RANGE=
  RUN_COMMAND=
  QUIET=false
}

parse_command_line() {
  while getopts q OPT; do
    case "${OPT}" in
      q) QUIET=true ;;
      ?) exit_error ;;
    esac
  done

  shift $(( OPTIND - 1 ))

  REV_RANGE="$1"
  shift 2> /dev/null
  RUN_COMMAND="$*"
}

validate_command_line() {
  if [ -z "${REV_RANGE}" ]; then
    exit_error 'no revisions range'
  fi

  if [ -z "${RUN_COMMAND}" ]; then
    exit_error 'no command to run'
  fi
}

exit_error() {
  [ -z "$1" ] || echo "${COMMAND}: $1"
  exit 1
} >&2

abort_if_dirty_repo() {
  if ! git rev-parse --git-dir > /dev/null 2>&1; then
    exit_error 'not in a git repository'
  fi

  if ! git diff-index --quiet --cached HEAD; then
    exit_error 'you have staged but not committed changes that would be lost'
  fi

  if ! git diff-files --quiet; then
    exit_error 'you have unstaged changes that would be lost'
  fi

  UNTRACKED=$( git ls-files --exclude-standard --others )
  if [ -n "${UNTRACKED}" ]; then
    exit_error 'you have untracked files that could be overwritten'
  fi
}

save_initial_rev() {
  if git symbolic-ref HEAD > /dev/null 2>&1; then
    INITIAL_REV=$( git symbolic-ref --short HEAD )
  else
    INITIAL_REV=$( git rev-parse HEAD )
  fi
}

restore_initial_rev() {
  git checkout -q "${INITIAL_REV}"
}

run_command_over_range() {
  for REVISION in $( git rev-list --reverse "${REV_RANGE}" ); do
    [ "${QUIET}" = 'false' ] && echo "Checking out: $( git log --oneline -1 "${REVISION}" )"
    git checkout -q "${REVISION}"
    eval "${RUN_COMMAND}"
    git reset --hard -q
  done
}

init_variables
parse_command_line "$@"
validate_command_line

abort_if_dirty_repo
save_initial_rev
run_command_over_range
restore_initial_rev

A files/scripts/git/git-sed => files/scripts/git/git-sed +41 -0
@@ 0,0 1,41 @@
#!/bin/sh
# commands used:
# - git

init_variables() {
  COMMAND=${0##*/}

  TMP_FILE=$( mktemp )
  trap 'rm "${TMP_FILE}"' EXIT

  SCRIPT=
}

parse_command_line() {
  SCRIPT="$*"
}

validate_command_line() {
  if [ -z "${SCRIPT}" ]; then
    exit_error "missing sed script argument"
  fi
}

exit_error() {
  [ -z "$1" ] || echo "${COMMAND}: $1"
  exit 1
} >&2

run_sed() {
  # exclude symlinks and binary files
  git grep -I -l '' \
    | xargs -I {} \
      sh -c "sed \"${SCRIPT}\" {} > \"${TMP_FILE}\" \
             && cp \"${TMP_FILE}\" {}"
}

init_variables
parse_command_line "$@"
validate_command_line

run_sed

A files/scripts/git/git-stamp => files/scripts/git/git-stamp +66 -0
@@ 0,0 1,66 @@
#!/bin/sh
# commands used:
# - git

init_variables() {
  COMMAND=${0##*/}

  REPLACE=false
  unset ID
  unset MSG
}

parse_command_line() {
  while getopts r OPT; do
    case "${OPT}" in
      r) REPLACE=true ;;
      ?) exit_error ;;
    esac
  done

  shift $(( OPTIND - 1 ))

  ID="$1"
  MSG="$2"
}

validate_command_line() {
  # ID should be set to non-empty string
  if [ -z "${ID}" ]; then
    exit_error "missing stamp identifier"
  fi
}

exit_error() {
  [ -z "$1" ] || echo "${COMMAND}: $1"
  exit 1
} >&2

stamp() {
  COMMIT_MSG=$( git log -1 --pretty=%B )
  [ -n "${MSG}" ] && STAMP_MSG="${ID} ${MSG}" || STAMP_MSG="${ID}"

  if [ "${REPLACE}" = 'true' ]; then
    # remove previous stamps with same ID from the commit message
    COMMIT_MSG=$(
      echo "${COMMIT_MSG}" \
        | grep -i -v "^${ID}" \
        | sed -e '/^$/N' -e '/^\n$/D'
    )
  fi

  # append the stamp to the commit message in a new paragraph
  git commit --amend \
    -m "${COMMIT_MSG}" \
    -m "${STAMP_MSG}" \
    > /dev/null

  # show result
  git log -1 --pretty=full
}

init_variables
parse_command_line "$@"
validate_command_line

stamp

A files/scripts/git/git-url => files/scripts/git/git-url +95 -0
@@ 0,0 1,95 @@
#!/bin/sh
# commands used:
# - git (includes own commands: commit-issue-id, commit-review-id)

init_variables() {
  COMMAND=${0##*/}

  TYPE=repo
  COMMIT=HEAD
  REMOTE=$( git config --default origin browse.remote )
}

parse_command_line() {
  while getopts c:r:t: OPT; do
    case "${OPT}" in
      c) COMMIT="${OPTARG}" ;;
      r) REMOTE="${OPTARG}" ;;
      t) TYPE="${OPTARG}" ;;
      ?) exit_error ;;
    esac
  done

  shift $(( OPTIND - 1 ))
}

validate_command_line() {
  if [ "${TYPE}" != 'repo' ] \
     && [ "${TYPE}" != 'commit' ] \
     && [ "${TYPE}" != 'issue' ] \
     && [ "${TYPE}" != 'review' ]; then
    exit_error "invalid type argument '${TYPE}'"
  fi

  if ! git rev-parse -q --verify "${COMMIT}^{commit}" > /dev/null; then
    exit_error "invalid commit '${COMMIT}'"
  fi

  if ! git remote | grep -q "${REMOTE}"; then
    exit_error "invalid remote '${REMOTE}'"
  fi
}

exit_error() {
  [ -z "$1" ] || echo "${COMMAND}: $1"
  exit 1
} >&2

display_url() {
  REMOTE_ALIAS=$(
    git config "remote.${REMOTE}.url" \
    | sed 's/:.*//'
  )

  REPO_PATH_SED=$(
    git config "browse.${REMOTE_ALIAS}.repoPathSed"
  )
  [ -z "${REPO_PATH_SED}" ] && exit_error 'remote does not use a valid URL alias for browsing'

  REPO_PATH=$(
    git config "remote.${REMOTE}.url" \
    | sed "${REPO_PATH_SED}"
  )

  URL=$(
    git config "browse.${REMOTE_ALIAS}.${TYPE}Url" \
    | sed "s|{repo_path}|${REPO_PATH}|"
  )
  [ -z "${URL}" ] && exit_error 'remote does not support this type of URL for browsing'

  case "${TYPE}" in
    repo)
      echo "${URL}"
      ;;
    commit)
      COMMIT_ID=$( git rev-parse "${COMMIT}" )
      echo "${URL}" | sed "s/{commit_id}/${COMMIT_ID}/"
      ;;
    issue)
      ISSUE_ID=$( git commit-issue-id "${COMMIT}" )
      [ -z "${ISSUE_ID}" ] && exit_error 'commit has no issue id linked to it'
      echo "${URL}" | sed "s/{issue_id}/${ISSUE_ID}/"
      ;;
    review)
      REVIEW_ID=$( git commit-review-id "${COMMIT}" )
      [ -z "${REVIEW_ID}" ] &&  exit_error 'commit has no review id linked to it'
      echo "${URL}" | sed "s/{review_id}/${REVIEW_ID}/"
      ;;
  esac
}

init_variables
parse_command_line "$@"
validate_command_line

display_url

A files/scripts/i3blocks/i3blocks-bluetooth => files/scripts/i3blocks/i3blocks-bluetooth +27 -0
@@ 0,0 1,27 @@
#!/bin/sh
# commands used:
# - bluetoothctl
# - i3blocks-mode

MODE="$( i3blocks-mode )"

CONNECTED_DEVICES=$(
  bluetoothctl paired-devices \
    | cut -d' ' -f2 \
    | xargs -I{} bluetoothctl info {} \
    | sed -n -e 's/.*Alias: \(.*\)/\1/p' -e 's/.*Connected: \(.*\)/\1/p' \
    | paste - - \
    | sed -n 's/\(.*\)\tyes$/\1/p' \
    | paste -sd,
)

# only display something if a device is connected
if [ -z "${CONNECTED_DEVICES}" ]; then
  exit 0
fi

if [ "${MODE}" = 'full' ]; then
  echo "<span foreground='#{color/base09/hex}'></span> ${CONNECTED_DEVICES}"
else
  echo "<span foreground='#{color/base09/hex}'></span>"
fi

A files/scripts/i3blocks/i3blocks-chat => files/scripts/i3blocks/i3blocks-chat +37 -0
@@ 0,0 1,37 @@
#!/bin/sh
# commands used:
# - i3blocks-mode
# - pidof

COUNT_FILE_PATH="${XDG_RUNTIME_DIR}/chat_count"

MODE="$( i3blocks-mode )"

# don't show anything if weechat is not running
pidof weechat > /dev/null || exit 0

# show 0 notification if there is no file
# just to let us know at least that weechat is running
if [ ! -f "${COUNT_FILE_PATH}" ]; then
  if [ "${MODE}" = 'full' ]; then
    echo "<span foreground='#{color/base09/hex}'></span> 0"
  else
    echo "<span foreground='#{color/base09/hex}'></span>"
  fi
fi

COUNT=$( cat "${COUNT_FILE_PATH}" )

if [ "${COUNT}" -gt 0 ]; then
  if [ "${MODE}" = 'full' ]; then
    echo "<span foreground='#{color/notice/hex}'> ${COUNT}</span>"
  else
    echo "<span foreground='#{color/notice/hex}'></span>"
  fi
else
  if [ "${MODE}" = 'full' ]; then
    echo "<span foreground='#{color/base09/hex}'></span> 0"
  else
    echo "<span foreground='#{color/base09/hex}'></span>"
  fi
fi

A files/scripts/i3blocks/i3blocks-datetime => files/scripts/i3blocks/i3blocks-datetime +3 -0
@@ 0,0 1,3 @@
#!/bin/sh

date +"%a %e %b %H:%M"

A files/scripts/i3blocks/i3blocks-do-not-disturb => files/scripts/i3blocks/i3blocks-do-not-disturb +9 -0
@@ 0,0 1,9 @@
#!/bin/sh
# commands used:
# - do-not-disturb

if [ "$( do-not-disturb status )" = 'enabled' ]; then
  echo "<span foreground='#{color/notice/hex}'></span>"
else
  echo "<span foreground='#{color/base0C/hex}'></span>"
fi

A files/scripts/i3blocks/i3blocks-music => files/scripts/i3blocks/i3blocks-music +44 -0
@@ 0,0 1,44 @@
#!/bin/sh
# commands used:
# - i3blocks-mode
# - mpc

MODE="$( i3blocks-mode )"

MUSIC_INFO=$(
  mpc status -f '[[%artist% / ]%title%]|[%file%]' 2> /dev/null
)

# only display something if the MPD is on
# and the songs queue is not empty
if [ -z "${MUSIC_INFO}" ] \
   || [ "$( mpc playlist | wc -l )" -eq 0 ]; then
  exit 0
fi

if echo "${MUSIC_INFO}" | grep -q '^\[playing\]'; then
  MUSIC_ICON=''
  MUSIC_TEXT=$(
    echo "${MUSIC_INFO}" \
      | head -n 1 \
      | cut -c -50
  )
elif echo "${MUSIC_INFO}" | grep -q '^\[paused\]'; then
  MUSIC_ICON=''
  MUSIC_TEXT='Paused'
else
  MUSIC_ICON=''
  MUSIC_TEXT='Stopped'
fi

# escape some characters for HTML display
MUSIC_TEXT=$(
  echo "${MUSIC_TEXT}" \
    | sed -e 's/&/\&amp;/g' -e 's/</\&lt;/g' -e 's/>/\&gt;/g'
)

if [ "${MODE}" = 'full' ]; then
  echo "<span foreground='#{color/base09/hex}'>${MUSIC_ICON}</span> <span style='italic'>${MUSIC_TEXT}</span>"
else
  echo "<span foreground='#{color/base09/hex}'>${MUSIC_ICON}</span>"
fi

A files/scripts/i3blocks/i3blocks-network => files/scripts/i3blocks/i3blocks-network +52 -0
@@ 0,0 1,52 @@
#!/bin/sh
# commands used:
# - i3blocks-mode
# - nmcli

MODE="$( i3blocks-mode )"

NETWORK_INFO=$(
  nmcli -f type,state,connection device status \
    | tr -s ' '
)

if echo "${NETWORK_INFO}" \
     | grep -q 'ethernet connected'; then
  IS_ETHERNET_CONNECTED=true
else
  IS_ETHERNET_CONNECTED=false
fi

if echo "${NETWORK_INFO}" \
     | grep -q 'wifi connected'; then
  IS_WIFI_CONNECTED=true
else
  IS_WIFI_CONNECTED=false
fi

WIFI_CONNECTION=$(
  echo "${NETWORK_INFO}" \
    | grep 'wifi connected' \
    | cut -d ' ' -f 3-
)

# NetworkManager automatically favors wired connections over wireless
if [ "${IS_ETHERNET_CONNECTED}" = 'true' ]; then
  if [ "${MODE}" = 'full' ]; then
    echo "<span foreground='#{color/base09/hex}'></span> Wired"
  else
    echo "<span foreground='#{color/base09/hex}'></span>"
  fi
elif [ "${IS_WIFI_CONNECTED}" = 'true' ]; then
  if [ "${MODE}" = 'full' ]; then
    echo "<span foreground='#{color/base09/hex}'></span> ${WIFI_CONNECTION}"
  else
    echo "<span foreground='#{color/base09/hex}'></span>"
  fi
else
  if [ "${MODE}" = 'full' ]; then
    echo "<span foreground='#{color/warning/hex}'> Disconnected</span>"
  else
    echo "<span foreground='#{color/warning/hex}'></span>"
  fi
fi

A files/scripts/i3blocks/i3blocks-pomodoro => files/scripts/i3blocks/i3blocks-pomodoro +23 -0
@@ 0,0 1,23 @@
#!/bin/sh
# commands used:
# - pomodoro

SESSION_STATUS=$( pomodoro status )

# only display something if a session was started
[ -n "${SESSION_STATUS}" ] || exit 0

SESSION_MINUTES_LEFT=$(
  echo "${SESSION_STATUS}" \
    | cut -f 1 -d ' '
)

if [ "${SESSION_MINUTES_LEFT}" -lt 5 ]; then
  SESSION_ICON=''
elif [ "${SESSION_MINUTES_LEFT}" -lt 20 ]; then
  SESSION_ICON=''
else
  SESSION_ICON=''
fi

echo "<span foreground='#{color/notice/hex}'>${SESSION_ICON} ${SESSION_STATUS}</span>"

A files/scripts/i3blocks/i3blocks-power => files/scripts/i3blocks/i3blocks-power +64 -0
@@ 0,0 1,64 @@
#!/bin/sh
# commands used:
# - battery-status
# - i3blocks-mode

MODE="$( i3blocks-mode )"

BATTERY_STATUS=$( battery-status )

ADAPTER_STATUS=$(
  echo "${BATTERY_STATUS}" \
    | sed -n 's/^Adapter: \(.*\)$/\1/p'
)
IS_ANY_BATTERY_CHARGING=$(
  echo "${BATTERY_STATUS}" \
    | sed -n 's/^Charging: \(.*\)$/\1/p'
)
TOTAL_ENERGY_PERCENT=$(
  echo "${BATTERY_STATUS}" \
    | sed -n 's/^Charge: \(.*\)%$/\1/p'
)

if [ "${TOTAL_ENERGY_PERCENT}" -lt 10 ]; then
  BATTERY_ICON=''
elif [ "${TOTAL_ENERGY_PERCENT}" -lt 40 ]; then
  BATTERY_ICON=''
elif [ "${TOTAL_ENERGY_PERCENT}" -lt 60 ]; then
  BATTERY_ICON=''
elif [ "${TOTAL_ENERGY_PERCENT}" -lt 90 ]; then
  BATTERY_ICON=''
else
  BATTERY_ICON=''
fi

if [ "${ADAPTER_STATUS}" = 'on' ]; then
  if [ "${IS_ANY_BATTERY_CHARGING}" = 'yes' ]; then
    if [ "${MODE}" = 'full' ]; then
      echo "<span foreground='#{color/base09/hex}'> ${BATTERY_ICON}</span> ${TOTAL_ENERGY_PERCENT}%"
    else
      echo "<span foreground='#{color/base09/hex}'> ${BATTERY_ICON}</span>"
    fi
  else
    if [ "${MODE}" = 'full' ]; then
      echo "<span foreground='#{color/base09/hex}'></span> AC"
    else
      echo "<span foreground='#{color/base09/hex}'></span>"
    fi
  fi
else
  if [ "${TOTAL_ENERGY_PERCENT}" -lt 10 ]; then
    if [ "${MODE}" = 'full' ]; then
      echo "<span foreground='#{color/alert/hex}'>${BATTERY_ICON} ${TOTAL_ENERGY_PERCENT}%</span>"
    else
      echo "<span foreground='#{color/alert/hex}'>${BATTERY_ICON}</span>"
    fi
    exit 33
  else
    if [ "${MODE}" = 'full' ]; then
      echo "<span foreground='#{color/base09/hex}'>${BATTERY_ICON}</span> ${TOTAL_ENERGY_PERCENT}%"
    else
      echo "<span foreground='#{color/base09/hex}'>${BATTERY_ICON}</span>"
    fi
  fi
fi

A files/scripts/i3blocks/i3blocks-volume => files/scripts/i3blocks/i3blocks-volume +40 -0
@@ 0,0 1,40 @@
#!/bin/sh
# commands used:
# - amixer
# - i3blocks-mode

MODE="$( i3blocks-mode )"

VOLUME_INFO=$(
  amixer get Master \
    | sed -n '/\[[0-9]\{1,3\}%\] \[.*\]/p' \
    | head -n 1
)

echo "${VOLUME_INFO}" | grep -q '\[on\]'
IS_VOLUME_MUTED=$?

VOLUME_PERCENT=$(
  echo "${VOLUME_INFO}" \
    | sed 's/.*\[\([0-9]\{1,3\}\)%\].*/\1/'
)

if [ "${VOLUME_PERCENT}" -lt 50 ]; then
  VOLUME_ICON=''
else
  VOLUME_ICON=''
fi

if [ "${IS_VOLUME_MUTED}" -eq 1 ]; then
  if [ "${MODE}" = 'full' ]; then
    echo "<span foreground='#{color/notice/hex}'> Muted</span>"
  else
    echo "<span foreground='#{color/notice/hex}'></span>"
  fi
else
  if [ "${MODE}" = 'full' ]; then
    echo "<span foreground='#{color/base09/hex}'>${VOLUME_ICON}</span> ${VOLUME_PERCENT}%"
  else
    echo "<span foreground='#{color/base09/hex}'>${VOLUME_ICON}</span>"
  fi
fi

A files/scripts/shell/backup-bookmarks => files/scripts/shell/backup-bookmarks +14 -0
@@ 0,0 1,14 @@
#!/bin/sh
# commands used:
# - rsync

LOCAL_BROWSER_FOLDER="${XDG_CONFIG_HOME:-$HOME/.config}/qutebrowser"
REMOTE_BOOKMARKS_FOLDER="$( uname -n )/bookmarks"

rsync -azb \
  "${LOCAL_BROWSER_FOLDER}/bookmarks/urls" \
  backup:"${REMOTE_BOOKMARKS_FOLDER}/urls"

rsync -azb \
  "${LOCAL_BROWSER_FOLDER}/quickmarks" \
  backup:"${REMOTE_BOOKMARKS_FOLDER}/quickmarks"

A files/scripts/shell/backup-notes => files/scripts/shell/backup-notes +11 -0
@@ 0,0 1,11 @@
#!/bin/sh
# commands used:
# - rsync
# - xdg-user-dir

LOCAL_NOTES_FOLDER="$( xdg-user-dir NOTES )"
REMOTE_NOTES_FOLDER="$( uname -n )/notes"

rsync -azb --delete --exclude=".*" \
  "${LOCAL_NOTES_FOLDER}/" \
  backup:"${REMOTE_NOTES_FOLDER}"

A files/scripts/shell/battery-status => files/scripts/shell/battery-status +33 -0
@@ 0,0 1,33 @@
#!/bin/sh

# report status of the battery

ADAPTER_STATUS=$(
  [ "$( cat /sys/class/power_supply/AC/online )" -eq 1 ] \
    && echo 'on' \
    || echo 'off'
)

IS_ANY_BATTERY_CHARGING='no'
TOTAL_ENERGY_NOW=0
TOTAL_ENERGY_FULL=0

for bat in /sys/class/power_supply/BAT*; do
  TOTAL_ENERGY_NOW=$(( TOTAL_ENERGY_NOW + $( cat "${bat}/energy_now" ) ))
  TOTAL_ENERGY_FULL=$(( TOTAL_ENERGY_FULL + $( cat "${bat}/energy_full" ) ))

  if [ "$( cat "${bat}/status" )" = 'Charging' ]; then
    IS_ANY_BATTERY_CHARGING='yes'
  fi
done

TOTAL_ENERGY_PERCENT=$(
  printf %.0f "$(
    echo "( ${TOTAL_ENERGY_NOW} / ${TOTAL_ENERGY_FULL} ) * 100" \
      | bc -l
  )"
)

printf 'Adapter: %s\n' "${ADAPTER_STATUS}"
printf 'Charging: %s\n' "${IS_ANY_BATTERY_CHARGING}"
printf 'Charge: %s%%\n' "${TOTAL_ENERGY_PERCENT}"

A files/scripts/shell/check-notify-low-battery => files/scripts/shell/check-notify-low-battery +33 -0
@@ 0,0 1,33 @@
#!/bin/sh
# commands used:
# - aplay
# - battery-status
# - notify

ALERT_THRESHOLD_PERCENT=10

BATTERY_STATUS=$( battery-status )

ADAPTER_STATUS=$(
  echo "${BATTERY_STATUS}" \
    | sed -n 's/^Adapter: \(.*\)$/\1/p'
)

[ "${ADAPTER_STATUS}" = 'on' ] && exit

TOTAL_ENERGY_PERCENT=$(
  echo "${BATTERY_STATUS}" \
    | sed -n 's/^Charge: \(.*\)%$/\1/p'
)

[ "${TOTAL_ENERGY_PERCENT}" -gt "${ALERT_THRESHOLD_PERCENT}" ] && exit

notify \
  -c 'alert' \
  -i 'low_battery' \
  'Low battery' \
  'Battery level is getting low'

aplay \
  "${XDG_DATA_HOME:-$HOME/.local/share}/sounds/low_battery.wav" \
  2> /dev/null

A files/scripts/shell/check-notify-package-updates => files/scripts/shell/check-notify-package-updates +39 -0
@@ 0,0 1,39 @@
#!/bin/sh
# commands used:
# - aur
# - checkupdates
# - notify

MESSAGE=

PACMAN_UPDATES_COUNT=$(
  checkupdates \
    | wc -l
)
if [ "${PACMAN_UPDATES_COUNT}" -gt 0 ]; then
  MESSAGE="${MESSAGE}pacman: ${PACMAN_UPDATES_COUNT}\n"
fi

AUR_UPDATES_COUNT=$(
  aur repo -d aur -S -u \
    | wc -l
)
if [ "${AUR_UPDATES_COUNT}" -gt 0 ]; then
  MESSAGE="${MESSAGE}aur: ${AUR_UPDATES_COUNT}\n"
fi

TARDYPAD_UPDATES_COUNT=$(
  aur repo -d tardypad -S -u \
    | wc -l
)
if [ "${TARDYPAD_UPDATES_COUNT}" -gt 0 ]; then
  MESSAGE="${MESSAGE}tardypad: ${TARDYPAD_UPDATES_COUNT}\n"
fi

# exit if no updates available
[ -n "${MESSAGE}" ] || exit

notify \
  -c 'info' \
  'Packages updates available' \
  "${MESSAGE}"

A files/scripts/shell/color-picker => files/scripts/shell/color-picker +13 -0
@@ 0,0 1,13 @@
#!/bin/sh
# commands used:
# - convert
# - grim
# - slurp

PIXEL_REGION=$( slurp -p 2> /dev/null )

[ -z "${PIXEL_REGION}" ] && exit 1

grim -g "${PIXEL_REGION}" -t ppm - \
  | convert - -format '%[pixel:p{0,0}]' txt:- \
  | sed -n 's/0,0.* \(#[^ ]*\) .*rgb(\(.*\))/\1\n\2/p'

A files/scripts/shell/do-not-disturb => files/scripts/shell/do-not-disturb +74 -0
@@ 0,0 1,74 @@
#!/bin/sh
# commands used:
# - ssh
# - weechat-fifo

init_variables() {
  COMMAND=${0##*/}

  FILE_PATH="${XDG_RUNTIME_DIR}/do_not_disturb"

  ACTION='status'
}

parse_command_line() {
  [ -z "$1" ] || ACTION="$1"
}

validate_command_line() {
  if [ "${ACTION}" != 'enable' ] \
     && [ "${ACTION}" != 'disable' ] \
     && [ "${ACTION}" != 'toggle' ] \
     && [ "${ACTION}" != 'status' ]; then
    exit_error "Invalid action '${ACTION}'"
  fi
}

exit_error() {
  [ -z "$1" ] || echo "${COMMAND}: $1"
  exit 1
} >&2

dnd_enable() {
  echo '/slack away' | weechat-fifo 2> /dev/null &

  ssh status busy 'Do not disturb' 2> /dev/null &

  # function return value from file creation
  touch "${FILE_PATH}"
}

dnd_disable() {
  echo '/slack back' | weechat-fifo 2> /dev/null &

  ssh status available 2> /dev/null &

  # function return value from file deletion
  rm -f "${FILE_PATH}"
}

dnd_status() {
  if is_dnd_enabled; then
    echo 'enabled'
  else
    echo 'disabled'
  fi
}

dnd_toggle() {
  if is_dnd_enabled; then
    dnd_disable
  else
    dnd_enable
  fi
}

is_dnd_enabled() {
  [ -f "${FILE_PATH}" ]
}

init_variables
parse_command_line "$@"
validate_command_line

"dnd_${ACTION}"

A files/scripts/shell/exec-desktop-entry => files/scripts/shell/exec-desktop-entry +29 -0
@@ 0,0 1,29 @@
#!/bin/sh

DESKTOP_FILE="$1"

if [ -z "${DESKTOP_FILE}" ]; then
  echo 'Missing desktop entry file' >&2
  exit 1
fi

if [ ! -f "${DESKTOP_FILE}" ]; then
  echo "'${DESKTOP_FILE}' is not a file" >&2
  exit 1
fi

# extract exec command and remove field codes
COMMAND=$(
  sed -n '/^Exec=/ {
    s/^Exec=\(.*\)/\1/
    s/%[a-zA-Z]//
    p
  }' "${DESKTOP_FILE}" \
)

if [ -z "${COMMAND}" ]; then
  echo 'No Exec command' >&2
  exit 1
fi

eval "${COMMAND}"&

R scripts/shell/help => files/scripts/shell/help +0 -0
A files/scripts/shell/http-env => files/scripts/shell/http-env +81 -0
@@ 0,0 1,81 @@
#!/bin/sh
# commands used:
# - http

init_variables() {
  COMMAND=${0##*/}

  ENV_DIR_PATH="${XDG_DATA_HOME:-$HOME/.local/share}/env/http"

  HTTP_OPTIONS=
  PROJECT=
  ENVIRONMENT=
  REQUEST_METHOD=
  REQUEST_PATH=
  REQUEST_ITEMS=

  ENV_PATH=
}

parse_command_line() {
  PROJECT="$1"
  ENVIRONMENT="$2"
  REQUEST_METHOD="$3"
  REQUEST_PATH="$4"
  shift 4 2> /dev/null

  while [ "$#" -gt 0 ] && [ "$1" != '--' ]; do
    REQUEST_ITEMS="${REQUEST_ITEMS} $1"
    shift
  done

  shift 2> /dev/null
  HTTP_OPTIONS="$*"
}

validate_command_line() {
  if [ -z "${PROJECT}" ]; then
    exit_error 'missing project'
  fi

  if [ -z "${ENVIRONMENT}" ]; then
    exit_error 'missing environment'
  fi

  if [ -z "${REQUEST_METHOD}" ]; then
    exit_error 'missing request method'
  fi

  if [ -z "${REQUEST_PATH}" ]; then
    exit_error 'missing request path'
  fi

  ENV_PATH="${ENV_DIR_PATH}/${PROJECT}/${ENVIRONMENT}"

  if [ ! -f "${ENV_PATH}" ]; then
    exit_error 'invalid project/environment'
  fi
}

exit_error() {
  [ -z "$1" ] || echo "${COMMAND}: $1"
  exit 1
} >&2

run_http() {
  URL="$( head -n 1 "${ENV_PATH}" )/${REQUEST_PATH}"

  OPTIONS=$( grep '^-' "${ENV_PATH}" | tr '\n' ' ' )
  OPTIONS="${OPTIONS} ${HTTP_OPTIONS}"

  ITEMS=$( tail -n +2 "${ENV_PATH}" | grep -v '^-' | tr '\n' ' ' )
  ITEMS="${ITEMS} ${REQUEST_ITEMS}"

  http ${OPTIONS} "${REQUEST_METHOD}" "${URL}" ${ITEMS}
}

init_variables
parse_command_line "$@"
validate_command_line

run_http

A files/scripts/shell/i3blocks-mode => files/scripts/shell/i3blocks-mode +70 -0
@@ 0,0 1,70 @@
#!/bin/sh
# commands used:
# - pkill

init_variables() {
  COMMAND=${0##*/}

  FULL_FILE_PATH="${XDG_RUNTIME_DIR}/i3blocks_mode_full"
  SIGNAL_MAX=10

  ACTION='show'
}

parse_command_line() {
  [ -z "$1" ] || ACTION="$1"
}

validate_command_line() {
  if [ "${ACTION}" != 'light' ] \
     && [ "${ACTION}" != 'full' ] \
     && [ "${ACTION}" != 'toggle' ] \
     && [ "${ACTION}" != 'show' ]; then
    exit_error "Invalid action '${ACTION}'"
  fi
}

exit_error() {
  [ -z "$1" ] || echo "${COMMAND}: $1"
  exit 1
} >&2

refresh_display() {
  # send all update signals to the bar status
  # to refresh all items display
  for i in $( seq 1 "${SIGNAL_MAX}" ); do
    pkill -RTMIN+"$i" i3blocks
  done
}

bar_status_light() {
  rm "${FULL_FILE_PATH}" -f
  refresh_display
}

bar_status_full() {
  touch "${FULL_FILE_PATH}"
  refresh_display
}

bar_status_toggle() {
  if [ "$( bar_status_show )" = 'light' ]; then
    bar_status_full
  else
    bar_status_light
  fi
}

bar_status_show() {
  if [ -f "${FULL_FILE_PATH}" ]; then
    echo 'full'
  else
    echo 'light'
  fi
}

init_variables
parse_command_line "$@"
validate_command_line

"bar_status_${ACTION}"

A files/scripts/shell/influx-env => files/scripts/shell/influx-env +59 -0
@@ 0,0 1,59 @@
#!/bin/sh
# commands used:
# - influx

init_variables() {
  COMMAND=${0##*/}

  ENV_DIR_PATH="${XDG_DATA_HOME:-$HOME/.local/share}/env/influx"

  INFLUX_OPTIONS=
  PROJECT=
  QUERY=

  ENV_PATH=
}

parse_command_line() {
  PROJECT="$1"
  shift 2> /dev/null

  while [ "$#" -gt 0 ] && [ "$1" != '--' ]; do
    QUERY="${QUERY} $1"
    shift
  done

  shift 2> /dev/null
  INFLUX_OPTIONS="$*"
}

validate_command_line() {
  if [ -z "${PROJECT}" ]; then
    exit_error 'missing project'
  fi

  ENV_PATH="${ENV_DIR_PATH}/${PROJECT}"

  if [ ! -f "${ENV_PATH}" ]; then
    exit_error 'invalid project'
  fi
}

exit_error() {
  [ -z "$1" ] || echo "${COMMAND}: $1"
  exit 1
} >&2

run_influx() {
  if [ -z "${QUERY}" ]; then
    influx $( cat "${ENV_PATH}" ) ${INFLUX_OPTIONS}
  else
    influx $( cat "${ENV_PATH}" ) ${INFLUX_OPTIONS} -execute ${QUERY}
  fi
}

init_variables
parse_command_line "$@"
validate_command_line

run_influx

A files/scripts/shell/loop => files/scripts/shell/loop +86 -0
@@ 0,0 1,86 @@
#!/bin/sh

init_variables() {
  COMMAND=${0##*/}

  RUN_COMMAND=
  COUNT=
  INTERVAL=0
  TIME=
}

parse_command_line() {
  while getopts c:i:t: OPT; do
    case "${OPT}" in
      c) COUNT="${OPTARG}" ;;
      i) INTERVAL="${OPTARG}" ;;
      t) TIME="${OPTARG}" ;;
      ?) exit_error ;;
    esac
  done

  shift $(( OPTIND - 1 ))

  RUN_COMMAND="$*"
}

validate_command_line() {
  if [ -z "${COUNT}" ] && [ -z "${TIME}" ]; then
    exit_error 'you must specify at least -c or -t options'
  fi

  case "${COUNT}" in
    *[!0-9]*) exit_error 'count must be an integer' ;;
  esac

  case "${TIME}" in
    *[!0-9]*) exit_error 'time must be an integer' ;;
  esac

  case "${INTERVAL}" in
    *[!0-9.]*) exit_error 'interval must be an number' ;;
  esac

  if [ -z "${RUN_COMMAND}" ]; then
    exit_error 'no command to run'
  fi
}

exit_error() {
  [ -z "$1" ] || echo "${COMMAND}: $1"
  exit 1
} >&2

current_time_sec() {
  # values with leading 0 are interpreted as octals
  # which leads to issue with "08" and "09"
  CUR_HOURS=$( date +%H )
  CUR_MINUTES=$( date +%M )
  CUR_SECONDS=$( date +%S )
  echo $((
    ${CUR_HOURS#0} * 3600 + ${CUR_MINUTES#0} * 60 + ${CUR_SECONDS#0}
  ))
}

loop_command() {
    [ -n "${TIME}" ] && END_TIME=$(( $( current_time_sec ) + TIME ))

    RUN_COUNT=0

    while true; do
      eval "${RUN_COMMAND}"

      RUN_COUNT=$(( RUN_COUNT + 1 ))

      [ -n "${TIME}" ] && [ "$( current_time_sec )" -ge "${END_TIME}" ] && return 0
      [ -n "${COUNT}" ] && [ "${RUN_COUNT}" -ge "${COUNT}" ] && return 0

      sleep "${INTERVAL}"
    done
}

init_variables
parse_command_line "$@"
validate_command_line

loop_command

A files/scripts/shell/man => files/scripts/shell/man +27 -0
@@ 0,0 1,27 @@
#!/bin/sh

# colored man

# mb: start blink
# md: start bold
# me: end all attributes
# so: start standout
# se: end standout
# us: start underline
# ue: end underline

BLINK_COLOR_FG={color/base0C/number}
BOLD_COLOR_FG={color/base09/number}
STANDOUT_COLOR_FG={color/base00/number}
STANDOUT_COLOR_BG={color/base09/number}
UNDERLINE_COLOR_FG={color/base0B/number}

env \
  LESS_TERMCAP_mb="$(tput setaf ${BLINK_COLOR_FG})" \
  LESS_TERMCAP_md="$(tput bold; tput setaf ${BOLD_COLOR_FG})" \
  LESS_TERMCAP_me="$(tput sgr0)" \
  LESS_TERMCAP_so="$(tput setaf ${STANDOUT_COLOR_FG}; tput setab ${STANDOUT_COLOR_BG})" \
  LESS_TERMCAP_se="$(tput sgr0)" \
  LESS_TERMCAP_us="$(tput setaf ${UNDERLINE_COLOR_FG})" \
  LESS_TERMCAP_ue="$(tput sgr0)" \
  /usr/bin/man "$@"

A files/scripts/shell/mysql-env => files/scripts/shell/mysql-env +64 -0
@@ 0,0 1,64 @@
#!/bin/sh
# commands used:
# - mysql

init_variables() {
  COMMAND=${0##*/}

  ENV_DIR_PATH="${XDG_DATA_HOME:-$HOME/.local/share}/env/mysql"

  PROJECT=
  QUERY=

  if [ -t 1 ]; then
    MYSQL_OPTIONS='--raw --column-names'
  else
    MYSQL_OPTIONS='--raw --batch --skip-column-names'
  fi

  ENV_PATH=
}

parse_command_line() {
  PROJECT="$1"
  shift 2> /dev/null

  while [ "$#" -gt 0 ] && [ "$1" != '--' ]; do
    QUERY="${QUERY} $1"
    shift
  done

  shift 2> /dev/null
  MYSQL_OPTIONS="$*"
}

validate_command_line() {
  if [ -z "${PROJECT}" ]; then
    exit_error 'missing project'
  fi

  ENV_PATH="${ENV_DIR_PATH}/${PROJECT}"

  if [ ! -f "${ENV_PATH}" ]; then
    exit_error 'invalid project'
  fi
}

exit_error() {
  [ -z "$1" ] || echo "${COMMAND}: $1"
  exit 1
} >&2

run_mysql() {
  if [ -z "${QUERY}" ]; then
    mysql $( cat "${ENV_PATH}" ) ${MYSQL_OPTIONS}
  else
    mysql $( cat "${ENV_PATH}" ) ${MYSQL_OPTIONS} -e "${QUERY}"
  fi
}

init_variables
parse_command_line "$@"
validate_command_line

run_mysql

A files/scripts/shell/notify => files/scripts/shell/notify +91 -0
@@ 0,0 1,91 @@
#!/bin/sh
# commands used:
# - gdbus

init_variables() {
  COMMAND=${0##*/}

  SUMMARY=
  BODY=
  CATEGORY=
  EXPIRE_TIME=0
  HINTS='{}'
  IDENTIFIER=

  # unused as parameters
  APP_NAME=
  REPLACE_ID=0
  ICON=
  ACTIONS='[]'
}

parse_command_line() {
  while getopts c:i:t: OPT; do
    case "${OPT}" in
      c) CATEGORY="${OPTARG}" ;;
      i) IDENTIFIER="${OPTARG}" ;;
      t) EXPIRE_TIME="${OPTARG}" ;;
      ?) exit_error ;;
    esac
  done

  shift $(( OPTIND - 1 ))

  SUMMARY="$1"
  BODY="$2"
}

validate_command_line() {
  if [ -z "${SUMMARY}" ]; then
    exit_error 'missing summary argument'
  fi

  if ! echo "${EXPIRE_TIME}" | grep -E -q '^[0-9]*$'; then
    exit_error 'expire time must be a number'
  fi
}

exit_error() {
  [ -z "$1" ] || echo "${COMMAND}: $1"
  exit 1
} >&2

send_notification() {
  if [ -n "${CATEGORY}" ]; then
    HINTS="{\"category\":<string \"${CATEGORY}\">}"
  fi

  if [ -n "${IDENTIFIER}" ]; then
    NOTIFICATION_FILE="${XDG_RUNTIME_DIR}/notification_${IDENTIFIER}"
    if [ -f "${NOTIFICATION_FILE}" ]; then
      REPLACE_ID=$( cat "${NOTIFICATION_FILE}" )
    fi
  fi

  NOTIFICATION_ID=$(
    gdbus call \
      --session \
      --dest org.freedesktop.Notifications \
      --object-path /org/freedesktop/Notifications \
      --method org.freedesktop.Notifications.Notify \
      "${APP_NAME}" \
      "${REPLACE_ID}" \
      "${ICON}" \
      "${SUMMARY}" \
      "${BODY}" \
      "${ACTIONS}" \
      "${HINTS}" \
      "int32 $(( EXPIRE_TIME * 1000 ))" \
    | sed 's/(uint32 \([0-9]*\),)/\1/'
  )

  if [ -n "${IDENTIFIER}" ]; then
    echo "${NOTIFICATION_ID}" > "${NOTIFICATION_FILE}"
  fi
}

init_variables
parse_command_line "$@"
validate_command_line

send_notification

A files/scripts/shell/notify-end-pomodoro => files/scripts/shell/notify-end-pomodoro +14 -0
@@ 0,0 1,14 @@
#!/bin/sh
# commands used:
# - aplay
# - notify

notify \
  -t 5 \
  -c 'notice' \
  'Pomodoro end' \
  'Take a break'

aplay \
  "${XDG_DATA_HOME:-$HOME/.local/share}/sounds/end_pomodoro.wav" \
  2> /dev/null

A files/scripts/shell/notify-tmux-alert => files/scripts/shell/notify-tmux-alert +28 -0
@@ 0,0 1,28 @@
#!/bin/sh
# commands used:
# - notify
# - swaymsg

TYPE="$1"
SOCKET_NAME="$2"
SESSION_ID="$3"
SESSION_NAME="$4"
WINDOW_ID="$5"
WINDOW_NAME="$6"

MESSAGE="socket: ${SOCKET_NAME}\n"
MESSAGE="${MESSAGE}session: ${SESSION_NAME}\n"
MESSAGE="${MESSAGE}window: ${WINDOW_NAME}"

MARK=_tmux_alert
MARK="${MARK}_${SOCKET_NAME}"
MARK="${MARK}_${SESSION_ID}"
MARK="${MARK}_${WINDOW_ID}"

notify \
  -c 'notice' \
  -i "${MARK}" \
  "Tmux ${TYPE} detected" \
  "${MESSAGE}"

swaymsg -q "[con_mark=\"${MARK}\"]" urgent enable

A files/scripts/shell/pacman-pkgdiff => files/scripts/shell/pacman-pkgdiff +57 -0
@@ 0,0 1,57 @@
#!/bin/sh
# commands used:
# - pacman
# - tar

init_variables() {
  COMMAND=${0##*/}

  PACKAGE_NAME=
}

parse_command_line() {
  PACKAGE_NAME="$1"
}

validate_command_line() {
  if [ -z "${PACKAGE_NAME}" ]; then
    exit_error 'missing package name'
  fi

  if ! pacman -Q "${PACKAGE_NAME}" > /dev/null 2>&1; then
    exit_error "invalid package name ${PACKAGE_NAME}"
  fi
}

exit_error() {
  [ -z "$1" ] || echo "${COMMAND}: $1"
  exit 1
} >&2

diff_package() {
  PACKAGE_VERSION=$(
    pacman -Q "${PACKAGE_NAME}" 2> /dev/null \
      | cut -f 2 -d ' '
  )

  # need double -k argument to show modified files
  pacman -Qkk "${PACKAGE_NAME}" \
   | grep '^backup file:' \
   | cut -f 4 -d ' ' \
   | uniq \
   | while read -r PACKAGE_MODIFIED_FILE; do
       echo "${PACKAGE_MODIFIED_FILE}"
       tar -xO \
         -f "/var/cache/pacman/pkg/${PACKAGE_NAME}-${PACKAGE_VERSION}"-*.pkg.tar.xz \
         "$( echo "${PACKAGE_MODIFIED_FILE}" | sed 's|/||' )" \
         2> /dev/null \
       | diff - "${PACKAGE_MODIFIED_FILE}"
       echo
     done
}

init_variables
parse_command_line "$@"
validate_command_line

diff_package

A files/scripts/shell/plot => files/scripts/shell/plot +42 -0
@@ 0,0 1,42 @@
#!/bin/sh
# commands used:
# - jp

init_variables() {
  COMMAND=${0##*/}

  DEFAULT_TYPE=line
  DEFAULT_WIDTH=80
  DEFAULT_HEIGHT=25

  JP_OPTIONS=
}

parse_command_line() {
  shift 2> /dev/null
  JP_OPTIONS="$*"
}

exit_error() {
  [ -z "$1" ] || echo "${COMMAND}: $1"
  exit 1
} >&2

plot_data() {
  awk '
    BEGIN { OFS="," }
    /^[0-9.]+$/ { print NR,$1; next; }
    { print $1,$2; }
  ' \
    | jp \
      -input csv \
      -type "${DEFAULT_TYPE}" \
      -width "${DEFAULT_WIDTH}" \
      -height "${DEFAULT_HEIGHT}" \
      ${JP_OPTIONS}
}

init_variables
parse_command_line "$@"

plot_data

A files/scripts/shell/pomodoro => files/scripts/shell/pomodoro +103 -0
@@ 0,0 1,103 @@
#!/bin/sh
# commands used:
# - notify-end-pomodoro

init_variables() {
  COMMAND=${0##*/}

  FILE_PATH="${XDG_RUNTIME_DIR}/pomodoro"
  DURATION_SECONDS=1500

  ACTION='status'
}

parse_command_line() {
  [ -z "$1" ] || ACTION="$1"
}

validate_command_line() {
  if [ "${ACTION}" != 'start' ] \
     && [ "${ACTION}" != 'cancel' ] \
     && [ "${ACTION}" != 'toggle' ] \
     && [ "${ACTION}" != 'status' ]; then
    exit_error "Invalid action '${ACTION}'"
  fi
}

exit_error() {
  [ -z "$1" ] || echo "${COMMAND}: $1"
  exit 1
} >&2

current_time_sec() {
  # values with leading 0 are interpreted as octals
  # which leads to issue with "08" and "09"
  CUR_HOURS=$( date +%H )
  CUR_MINUTES=$( date +%M )
  CUR_SECONDS=$( date +%S )
  echo $((
    ${CUR_HOURS#0} * 3600 + ${CUR_MINUTES#0} * 60 + ${CUR_SECONDS#0}
  ))
}

session_start() {
  CURRENT_TIME=$( current_time_sec )
  echo "${CURRENT_TIME}" > "${FILE_PATH}"

  ( sleep "${DURATION_SECONDS}" && session_end "${CURRENT_TIME}" )&
}

session_status() {
  if ! is_session_started; then
    echo 'No current session' >&2
    return 1
  fi

  CURRENT_TIME=$( current_time_sec )
  START_TIME=$( cat "${FILE_PATH}" )
  MINUTES_LEFT=$((
    ( DURATION_SECONDS - (CURRENT_TIME - START_TIME) ) / 60
  ))

  echo "${MINUTES_LEFT} min left"
}

session_cancel() {
  if ! is_session_started; then
    echo 'No current session' >&2
    return 1
  fi

  rm -f "${FILE_PATH}"
}

session_toggle() {
  if is_session_started; then
    session_cancel
  else
    session_start
  fi
}

session_end() {
  is_session_started || return 1

  SESSION_START_TIME="$1"
  CURRENT_START_TIME=$( cat "${FILE_PATH}" )

  # only end session if no newer one was created
  if [ "${SESSION_START_TIME}" = "${CURRENT_START_TIME}" ]; then
    rm -rf "${FILE_PATH}"
    notify-end-pomodoro
  fi
}

is_session_started() {
  [ -f "${FILE_PATH}" ]
}

init_variables
parse_command_line "$@"
validate_command_line

"session_${ACTION}"

A files/scripts/shell/project-path => files/scripts/shell/project-path +84 -0
@@ 0,0 1,84 @@
#!/bin/sh
# commands used:
# - xdg-user-dir

init_variables() {
  COMMAND=${0##*/}

  TYPE=
  PROJECT=
}

parse_command_line() {
  TYPE="$1"
  PROJECT="$2"
}

validate_command_line() {
  if [ -z "${TYPE}" ]; then
    exit_error 'Missing type argument'
  fi

  if [ "${TYPE}" != 'main' ] \
     && [ "${TYPE}" != 'repo' ] \
     && [ "${TYPE}" != 'docs' ] \
     && [ "${TYPE}" != 'logs' ]; then
    exit_error "Invalid type '${TYPE}'"
  fi
}

exit_error() {
  [ -z "$1" ] || echo "${COMMAND}: $1"
  exit 1
} >&2

get_project_path() {
  case "${TYPE}" in
    main)
      find "$( xdg-user-dir PROJECTS )"/* \
        -type d -prune -name "${PROJECT}"
      ;;
    repo)
      find "$( xdg-user-dir PROJECTS )"/*/* \
        -type d -prune -name "${PROJECT}"
      ;;
    docs)
      find "$( xdg-user-dir PROJECTS_DOCS )"/* \
        -type d -prune -name "${PROJECT}"
      ;;
    logs)
      find "$( xdg-user-dir PROJECTS_LOGS )"/* \
        -type d -prune -name "${PROJECT}"
      ;;
  esac
}

get_type_path() {
  case "${TYPE}" in
    main) xdg-user-dir PROJECTS ;;
    repo) xdg-user-dir PROJECTS ;;
    docs) xdg-user-dir PROJECTS_DOCS ;;
    logs) xdg-user-dir PROJECTS_LOGS ;;
  esac
}

display_path() {
  if [ -n "${PROJECT}" ]; then
    PROJECT_PATH="$( get_project_path )"
  else
    PROJECT_PATH="$( get_type_path )"
  fi

  if [ -z "${PROJECT_PATH}" ]; then
    echo 'No such project path' >&2
    return 1
  fi

  echo "${PROJECT_PATH}"
}

init_variables
parse_command_line "$@"
validate_command_line

display_path

A files/scripts/shell/query-hosts-tags => files/scripts/shell/query-hosts-tags +121 -0
@@ 0,0 1,121 @@
#!/bin/sh

init_variables() {
  COMMAND=${0##*/}

  # HOSTS_TAGS_FILE is expected to have a YAML structure
  # similar to the following example
  #
  # frontend.example.com:
  #   project: website
  #   environment: test
  # backend.example.com:
  #   project: website
  #   environment: test
  #   purpose: backend
  # database.example.com: [invalid data]
  #
  # there is no restriction on the tags key
  # hosts don't have to have all the same tags
  HOSTS_TAGS_FILE="${XDG_CACHE_HOME:-$HOME/.cache}/hosts_tags.yaml"

  AWK_SCRIPT=
  QUERY_TYPE=hosts
  QUERY_ARGUMENTS=
}

parse_command_line() {
  if [ -n "$1" ]; then
    QUERY_TYPE="$1"
    shift
    QUERY_ARGUMENTS=$*
  fi
}

validate_command_line() {
  if [ "${QUERY_TYPE}" != 'tags' ] && [ "${QUERY_TYPE}" != 'hosts' ]; then
    exit_error "invalid query type ${QUERY_TYPE}"
  fi

  if [ "${QUERY_TYPE}" = 'tags' ] && [ -z "${QUERY_ARGUMENTS}" ]; then
    exit_error 'missing host argument'
  fi

  if [ "${QUERY_TYPE}" = 'hosts' ]; then
    for QUERY_ARG in ${QUERY_ARGUMENTS}; do
      case "${QUERY_ARG}" in
        ?*=?*) continue ;;
        *) exit_error "invalid tag value argument '${QUERY_ARG}'";;
      esac
    done
  fi
}

exit_error() {
  [ -z "$1" ] || echo "${COMMAND}: $1"
  exit 1
} >&2

query_tags() {
  AWK_SCRIPT="\$1 == \"$1\""
  AWK_SCRIPT="${AWK_SCRIPT} { for (i=2; i<=NF; i++) print \$i }"

  TAGS_VALUES=$( process_file )

  MAX_TAG_LENGTH=$(
    echo "${TAGS_VALUES}" \
      | awk 'BEGIN { FS="=" }
             { if (length($1) > max) { max = length($1) } }
             END { print max }'
  )

  echo "${TAGS_VALUES}" \
    | sed 's/=/\t/' \
    | expand -t "$(( MAX_TAG_LENGTH + 2 ))"
}

query_hosts() {
  AWK_SCRIPT='function any_tag_field_match_string(string)
              {
                for (i=2; i<=NF; i++)
                  if ($i == string) return 1
                return 0
              }
              1'
  while [ "$#" -gt 0 ]; do
    AWK_SCRIPT="${AWK_SCRIPT} && any_tag_field_match_string(\"$1\")"
    shift
  done
  AWK_SCRIPT="${AWK_SCRIPT} { print \$1 }"

  process_file
}

process_file() {
  # transform the YAML structure into multiline records
  # before awk processing
  #
  # frontend.example.com
  # project=website
  # environment=test
  #
  # backend.example.com
  # project=website
  # environment=test
  # purpose=backend

  sed \
    -e 's/^\([^ ][^:]*\):.*$/\n\1/' \
    -e 's/^  //' \
    -e 's/: /=/' \
    "${HOSTS_TAGS_FILE}" \
    | awk \
      "BEGIN { FS=\"\n\"; RS=\"\" } ${AWK_SCRIPT}" \
    | sort
}

init_variables
parse_command_line "$@"
validate_command_line

"query_${QUERY_TYPE}" ${QUERY_ARGUMENTS}

A files/scripts/shell/redis-env => files/scripts/shell/redis-env +59 -0
@@ 0,0 1,59 @@
#!/bin/sh
# commands used:
# - redis-cli

init_variables() {
  COMMAND=${0##*/}

  ENV_DIR_PATH="${XDG_DATA_HOME:-$HOME/.local/share}/env/redis"

  REDIS_OPTIONS=
  PROJECT=
  QUERY=

  ENV_PATH=
}

parse_command_line() {
  PROJECT="$1"
  shift 2> /dev/null

  while [ "$#" -gt 0 ] && [ "$1" != '--' ]; do
    QUERY="${QUERY} $1"
    shift
  done

  shift 2> /dev/null
  REDIS_OPTIONS="$*"
}

validate_command_line() {
  if [ -z "${PROJECT}" ]; then
    exit_error 'missing project'
  fi

  ENV_PATH="${ENV_DIR_PATH}/${PROJECT}"

  if [ ! -f "${ENV_PATH}" ]; then
    exit_error 'invalid project'
  fi
}

exit_error() {
  [ -z "$1" ] || echo "${COMMAND}: $1"
  exit 1
} >&2

run_redis() {
  if [ -z "${QUERY}" ]; then
    redis-cli $( cat "${ENV_PATH}" ) ${REDIS_OPTIONS}
  else
    redis-cli $( cat "${ENV_PATH}" ) --raw ${REDIS_OPTIONS} ${QUERY}
  fi
}

init_variables
parse_command_line "$@"
validate_command_line

run_redis

A files/scripts/shell/screenshot => files/scripts/shell/screenshot +13 -0
@@ 0,0 1,13 @@
#!/bin/sh
# commands used:
# - grim
# - slurp
# - xdg-user-dir

REGION=$( slurp 2> /dev/null )

[ -z "${REGION}" ] && exit 1

FILE_PATH="$(xdg-user-dir DESKTOP)/screenshot_$(date +'%Y-%m-%d-%H:%M:%S').png"

grim -g "${REGION}" "${FILE_PATH}"

A files/scripts/shell/ssh-tags => files/scripts/shell/ssh-tags +30 -0
@@ 0,0 1,30 @@
#!/bin/sh
# commands used:
# - fzf
# - query-hosts-tags
# - ssh

TAGS=$*

IGNORE_TAGS='^ *name '
while [ "$#" -gt 0 ]; do
  IGNORE_TAG=$( echo "$1" | sed 's/\([^=]*\)=.*/\1/' )
  IGNORE_TAGS="${IGNORE_TAGS}|^ *${IGNORE_TAG} "
  shift
done

SELECTED_HOST=$(
  query-hosts-tags hosts "${TAGS}" \
    | fzf \
      --no-multi \
      --exit-0 \
      --select-1 \
      --height=10 \
      --layout=reverse \
      --preview="query-hosts-tags tags {} | grep -vE '${IGNORE_TAGS}'" \
      --preview-window=right:70%
)

[ -n "${SELECTED_HOST}" ] || exit

TERM=xterm-256color ssh "${SELECTED_HOST}"

A files/scripts/shell/status => files/scripts/shell/status +23 -0
@@ 0,0 1,23 @@
#!/bin/sh
# commands used:
# - git (includes own command: current-branch)

# display general status info about the current shell

print_item() {
  HEADER="$1"
  VALUE="$2"

  printf "%s\n" "${HEADER}"
  printf "$(tput setaf {color/base09/number} )%s$(tput sgr0)\n" "${VALUE}"
}

{
  print_item 'User' "${LOGNAME}"
  print_item 'Host' "$(cat /proc/sys/kernel/hostname )"
  print_item 'Dir' "${PWD}"

  if git rev-parse --git-dir > /dev/null 2>&1; then
    print_item 'Branch' "$( git current-branch )"
  fi
} | pr -l1 -s -2 | expand  -t 8

A files/scripts/shell/tmux-env => files/scripts/shell/tmux-env +83 -0
@@ 0,0 1,83 @@
#!/bin/sh
# commands used:
# - tmux

init_variables() {
  COMMAND=${0##*/}

  ENV_DIR_PATH="${XDG_DATA_HOME:-$HOME/.local/share}/env/tmux"

  BACKGROUND=false

  TARGET=
  SESSION=
}

parse_command_line() {
  while getopts b OPT; do
    case "${OPT}" in
      b) BACKGROUND=true ;;
      ?) exit_error ;;
    esac
  done

  shift $(( OPTIND - 1 ))

  TARGET="$1"
  SESSION="$2"
}

validate_command_line() {
  if [ -n "${TMUX}" ]; then
    exit_error "nested tmux env is not allowed"
  fi

  if [ -z "${TARGET}" ]; then
    exit_error 'missing target'
  fi

  if [ ! -d "${ENV_DIR_PATH}/${TARGET}" ]; then
    exit_error "invalid target ${TARGET}"
  fi

  if [ -n "${SESSION}" ] \
     && [ ! -f "${ENV_DIR_PATH}/${TARGET}/${SESSION}.sh" ]; then
    exit_error "invalid target's session ${SESSION}"
  fi
}

exit_error() {
  [ -z "$1" ] || echo "${COMMAND}: $1"
  exit 1
} >&2

is_session_present() {
  tmux -L "${TARGET}" list-sessions -F '#{session_name}' 2> /dev/null \
    | grep -q "^${SESSION}$"
}

start_target_tmux_env() {
  if [ -n "${SESSION}" ]; then
    if ! is_session_present; then
      SCRIPT_PATH="${ENV_DIR_PATH}/${TARGET}/${SESSION}.sh"
      TMUX_ENV=yes "${SCRIPT_PATH}" "${TARGET}" "${SESSION}"
    fi
  else
    SESSION='new'
    if ! is_session_present; then
      TMUX_ENV=yes tmux -L "${TARGET}" new-session -d -s "${SESSION}"
    fi
  fi

  if [ "${BACKGROUND}" = 'false' ]; then
    tmux -L "${TARGET}" attach-session -t "${SESSION}" > /dev/null 2>&1
  else
    tmux -L "${TARGET}" switch-client -t "${SESSION}" > /dev/null 2>&1
  fi
}

init_variables
parse_command_line "$@"
validate_command_line

start_target_tmux_env

A files/scripts/shell/weechat-fifo => files/scripts/shell/weechat-fifo +36 -0
@@ 0,0 1,36 @@
#!/bin/sh

init_variables() {
  COMMAND=${0##*/}

  FIFO_FILE=~/.weechat/weechat_fifo

  BUFFER=
}

parse_command_line() {
  BUFFER=$1
}

validate_command_line() {
  if [ ! -p "${FIFO_FILE}" ]; then
    exit_error "FIFO file not present"
  fi
}

exit_error() {
  [ -z "$1" ] || echo "${COMMAND}: $1"
  exit 1
} >&2

fifo_send() {
  while read -r LINE; do
    echo "${BUFFER} *${LINE}" > "${FIFO_FILE}"
  done
}

init_variables
parse_command_line "$@"
validate_command_line

fifo_send

A files/scripts/sway/sway-app-chat => files/scripts/sway/sway-app-chat +20 -0
@@ 0,0 1,20 @@
#!/bin/sh
# commands used:
# - sway-create-workspace
# - sway-focus-window-title
# - swaymsg
# - termite
# - tmux
# - weechat

TITLE='Chat client'

# try to focus existing window if it exists
sway-focus-window-title "${TITLE}" && exit

# launch new app otherwise in new workspace
sway-create-workspace 'chat'
swaymsg -q exec \
  "termite \
   -t \"${TITLE}\" \
   -e 'tmux new-session -A -s chat \"weechat\"'"

A files/scripts/sway/sway-app-mail => files/scripts/sway/sway-app-mail +20 -0
@@ 0,0 1,20 @@
#!/bin/sh
# commands used:
# - neomutt
# - sway-create-workspace
# - sway-focus-window-title
# - swaymsg
# - termite
# - tmux

TITLE='Mail client'

# try to focus existing window if it exists
sway-focus-window-title "${TITLE}" && exit

# launch new app otherwise in new workspace
sway-create-workspace 'mail'
swaymsg -q exec \
  "termite \
   -t \"${TITLE}\" \
   -e 'tmux new-session -A -s mail \"neomutt\"'"

A files/scripts/sway/sway-app-monitor => files/scripts/sway/sway-app-monitor +18 -0
@@ 0,0 1,18 @@
#!/bin/sh
# commands used:
# - htop
# - sway-focus-window-title
# - swaymsg
# - termite
# - tmux

TITLE='sway_monitor'

# try to focus existing window if it exists
sway-focus-window-title "${TITLE}" && exit

# launch new app otherwise
swaymsg -q exec \
  "termite \
   -t \"${TITLE}\" \
   -e 'tmux new-session -A -s monitor \"htop\"'"

A files/scripts/sway/sway-app-music => files/scripts/sway/sway-app-music +23 -0
@@ 0,0 1,23 @@
#!/bin/sh
# commands used:
# - ncmpcpp
# - sway-focus-window-title
# - swaymsg
# - systemctl
# - termite
# - tmux

TITLE='sway_music'

# try to focus existing window if it exists
sway-focus-window-title "${TITLE}" && exit

# launch music server and app otherwise
if ! systemctl --user is-active mopidy.service; then
  systemctl --user start mopidy.service
fi

swaymsg -q exec \
  "termite \
   -t \"${TITLE}\" \
   -e 'tmux new-session -A -s music \"ncmpcpp\"'"

A files/scripts/sway/sway-app-news => files/scripts/sway/sway-app-news +20 -0
@@ 0,0 1,20 @@
#!/bin/sh
# commands used:
# - newsboat
# - sway-create-workspace
# - sway-focus-window-title
# - swaymsg
# - termite
# - tmux

TITLE='News reader'

# try to focus existing window if it exists
sway-focus-window-title "${TITLE}" && exit

# launch new app otherwise in new workspace
sway-create-workspace 'news'
swaymsg -q exec \
  "termite \
   -t \"${TITLE}\" \
   -e 'tmux new-session -A -s news \"newsboat\"'"

A files/scripts/sway/sway-app-tmux-env => files/scripts/sway/sway-app-tmux-env +26 -0
@@ 0,0 1,26 @@
#!/bin/sh
# commands used:
# - sway-create-workspace
# - sway-focus-window-title
# - swaymsg
# - termite
# - tmux-env

ENV_NAME="$1"
SESSION_NAME="$2"

TITLE="${ENV_NAME} environment"

# create env in background
# will do nothing if already exists
tmux-env -b "${ENV_NAME}" "${SESSION_NAME}"

# try to focus existing window if it exists
sway-focus-window-title "${TITLE}" && exit

# launch new app otherwise in new workspace
sway-create-workspace "${ENV_NAME}"
swaymsg -q exec \
  "termite \
   -t \"${TITLE}\" \
   -e 'tmux-env ${ENV_NAME} ${SESSION_NAME}'"

A files/scripts/sway/sway-command-input => files/scripts/sway/sway-command-input +26 -0
@@ 0,0 1,26 @@
#!/bin/sh
# commands used:
# - sway-command-input-exec
# - sway-focus-window-title
# - swaymsg
# - termite

# try to focus existing window if it exists
sway-focus-window-title 'sway_command_input' && exit

# quote arguments for usage in next command
ARGUMENTS=
while [ "$#" -gt 0 ]; do
  case "$1" in
    -*) ARGUMENTS="${ARGUMENTS} $1";;
    *) ARGUMENTS="${ARGUMENTS} '$1'";;
  esac
  shift
done

# launch new command input window otherwise
swaymsg -q exec \
  "termite \
   -e \"sway-command-input-exec ${ARGUMENTS}\" \
   -c ${XDG_CONFIG_HOME:-$HOME/.config}/termite/config_command_input \
   -t sway_command_input"

A files/scripts/sway/sway-command-input-exec => files/scripts/sway/sway-command-input-exec +45 -0
@@ 0,0 1,45 @@
#!/bin/sh
# commands used:
# - swaymsg

init_variables() {
  COMMAND=${0##*/}

  PROMPT=
  FORMAT='%s'
  USER_INPUT=
}

parse_command_line() {
  while getopts F:P: OPT; do
    case "${OPT}" in
      F) FORMAT="${OPTARG}" ;;
      P) PROMPT="${OPTARG}" ;;
      ?) exit_error ;;
    esac
  done

  shift $(( OPTIND - 1 ))
}

exit_error() {
  [ -z "$1" ] || echo "${COMMAND}: $1"
  exit 1
} >&2

run() {
  printf '%s' "${PROMPT}"
  read -r USER_INPUT

  SWAY_COMMAND="$(
    echo "${FORMAT}" \
      | sed "s/%s/${USER_INPUT}/g"
  )"

  swaymsg -q ${SWAY_COMMAND}
}

init_variables
parse_command_line "$@"

run

A files/scripts/sway/sway-create-workspace => files/scripts/sway/sway-create-workspace +37 -0
@@ 0,0 1,37 @@
#!/bin/sh
# commands used:
# - jq
# - swaymsg

# create a new workspace in the focused output
# at the lowest index available
#
# accept optional workspace name parameter

is_workspace_num_used() {
  WORKSPACE_NUM="$1"

  swaymsg -t get_workspaces \
    | jq -e -r \
      ".[]|select(.num==${WORKSPACE_NUM})" \
  && \
  swaymsg -t get_tree \
    | jq -e -r \
      "recurse(.nodes[]?)
       | select(
          .type==\"workspace\"
          and .num==${WORKSPACE_NUM}
          and (.nodes|length)>0
         )"
} > /dev/null

NEW_WORKSPACE_NUM=1
while is_workspace_num_used "${NEW_WORKSPACE_NUM}"; do
  NEW_WORKSPACE_NUM=$(( NEW_WORKSPACE_NUM + 1 ))
done

if [ -n "$1" ]; then
  swaymsg -q workspace "${NEW_WORKSPACE_NUM}:$1"
else
  swaymsg -q workspace "${NEW_WORKSPACE_NUM}:"
fi

A files/scripts/sway/sway-focus-window-title => files/scripts/sway/sway-focus-window-title +21 -0
@@ 0,0 1,21 @@
#!/bin/sh
# commands used:
# - jq
# - swaymsg

# small wrapper to focus a window by title

TITLE="$1"

# find window id in tree
WINDOW_ID=$(
  swaymsg -t get_tree \
    | jq "recurse(.floating_nodes[]?,.nodes[]?)
          | select(.name == \"${TITLE}\" and (.type == \"con\" or .type == \"floating_con\") )
          | .id"
)

# error out if window with such title doesn't exist
[ -z "${WINDOW_ID}" ] && exit 1

swaymsg -q "[con_id=\"${WINDOW_ID}\"]" focus

A files/scripts/sway/sway-fzf-launcher => files/scripts/sway/sway-fzf-launcher +13 -0
@@ 0,0 1,13 @@
#!/bin/sh
# commands used:
# - fzf

PROMPT="$1"
shift

fzf --reverse \
    --no-multi \
    --margin 1,2,0,2 \
    --prompt "${PROMPT}" \
    --color info:{color/background/number} \
    "$@"

A files/scripts/sway/sway-launch-app => files/scripts/sway/sway-launch-app +61 -0
@@ 0,0 1,61 @@