home: refact for modular home-manager : emails and tmux
This commit is contained in:
parent
4ef4631356
commit
eef1090086
50 changed files with 220 additions and 2509 deletions
9
dotfiles/tmux/plugins/tpm/.gitattributes
vendored
9
dotfiles/tmux/plugins/tpm/.gitattributes
vendored
|
@ -1,9 +0,0 @@
|
||||||
# Force text files to have unix eols, so Windows/Cygwin does not break them
|
|
||||||
*.* eol=lf
|
|
||||||
|
|
||||||
# These files are unfortunately not recognized as text files so
|
|
||||||
# explicitly listing them here
|
|
||||||
tpm eol=lf
|
|
||||||
bin/* eol=lf
|
|
||||||
bindings/* eol=lf
|
|
||||||
tests/* eol=lf
|
|
4
dotfiles/tmux/plugins/tpm/.gitignore
vendored
4
dotfiles/tmux/plugins/tpm/.gitignore
vendored
|
@ -1,4 +0,0 @@
|
||||||
**/.vagrant/
|
|
||||||
run_tests
|
|
||||||
tests/run_tests_in_isolation
|
|
||||||
tests/helpers/helpers.sh
|
|
3
dotfiles/tmux/plugins/tpm/.gitmodules
vendored
3
dotfiles/tmux/plugins/tpm/.gitmodules
vendored
|
@ -1,3 +0,0 @@
|
||||||
[submodule "lib/tmux-test"]
|
|
||||||
path = lib/tmux-test
|
|
||||||
url = https://github.com/tmux-plugins/tmux-test.git
|
|
|
@ -1,19 +0,0 @@
|
||||||
# generic packages and tmux
|
|
||||||
before_install:
|
|
||||||
- sudo apt-get update
|
|
||||||
- sudo apt-get install -y git-core expect
|
|
||||||
- sudo apt-get install -y python-software-properties software-properties-common
|
|
||||||
- sudo apt-get install -y libevent-dev libncurses-dev
|
|
||||||
- git clone https://github.com/tmux/tmux.git
|
|
||||||
- cd tmux
|
|
||||||
- git checkout 2.0
|
|
||||||
- sh autogen.sh
|
|
||||||
- ./configure && make && sudo make install
|
|
||||||
|
|
||||||
install:
|
|
||||||
- git fetch --unshallow --recurse-submodules || git fetch --recurse-submodules
|
|
||||||
# manual `git clone` required for testing `tmux-test` plugin itself
|
|
||||||
- git clone https://github.com/tmux-plugins/tmux-test lib/tmux-test; true
|
|
||||||
- lib/tmux-test/setup
|
|
||||||
|
|
||||||
script: ./tests/run_tests_in_isolation
|
|
|
@ -1,86 +0,0 @@
|
||||||
# Changelog
|
|
||||||
|
|
||||||
### master
|
|
||||||
|
|
||||||
### v3.1.0, 2023-01-03
|
|
||||||
- upgrade to new version of `tmux-test`
|
|
||||||
- bug: when using `emacs` copy mode, Enter does not quit screen after tpm
|
|
||||||
installation/update. Fix by making `Escape` the key for emacs mode.
|
|
||||||
- add a doc with troubleshooting instructions
|
|
||||||
- add `.gitattributes` file that forces linefeed characters (classic `\n`) as
|
|
||||||
line endings - helps with misconfigured git on windows/cygwin
|
|
||||||
- readme update: announce Cygwin support
|
|
||||||
- un-deprecate old plugin definition syntax: `set -g @tpm_plugins`
|
|
||||||
- More stuff, check `git log`.
|
|
||||||
|
|
||||||
### v3.0.0, 2015-08-03
|
|
||||||
- refactor `shared_set_tpm_path_constant` function
|
|
||||||
- move all instructions to `docs/` dir
|
|
||||||
- add `bin/install_plugins` cli executable script
|
|
||||||
- improved test runner function
|
|
||||||
- switch to using [tmux-test](https://github.com/tmux-plugins/tmux-test)
|
|
||||||
framework
|
|
||||||
- add `bin/update_plugins` cli executable script
|
|
||||||
- refactor test `expect` scripts, make them simpler and ensure they properly
|
|
||||||
assert expectations
|
|
||||||
- refactor code that sets 'TMUX_PLUGIN_MANAGER_PATH' global env var
|
|
||||||
- stop using global variable for 'tpm path'
|
|
||||||
- support defining plugins via `set -g @plugin` in sourced files as well
|
|
||||||
|
|
||||||
### v2.0.0, 2015-07-07
|
|
||||||
- enable overriding default key bindings
|
|
||||||
- start using `C-c` to clear screen
|
|
||||||
- add uninstall/clean procedure and keybinding (prefix+alt+u) (@chilicuil)
|
|
||||||
- add new `set @plugin 'repo'` plugin definition syntax (@chilicuil)
|
|
||||||
- revert back to using `-g` flag in new plugin definition syntax
|
|
||||||
- permit leading whitespace with new plugin definition syntax (thanks @chilicuil)
|
|
||||||
- make sure `TMUX_PLUGIN_MANAGER_PATH` always has trailng slash
|
|
||||||
- ensure old/deprecated plugin syntax `set -g @tpm_plugins` works alongside new
|
|
||||||
`set -g @plugin` syntax
|
|
||||||
|
|
||||||
### v1.2.2, 2015-02-08
|
|
||||||
- set GIT_TERMINAL_PROMPT=0 when doing `git clone`, `pull` or `submodule update`
|
|
||||||
to ensure git does not prompt for username/password in any case
|
|
||||||
|
|
||||||
### v1.2.1, 2014-11-21
|
|
||||||
- change the way plugin name is expanded. It now uses the http username
|
|
||||||
and password by default, like this: `https://git::@github.com/`. This prevents
|
|
||||||
username and password prompt (and subsequently tmux install hanging) with old
|
|
||||||
git versions. Fixes #7.
|
|
||||||
|
|
||||||
### v1.2.0, 2014-11-20
|
|
||||||
- refactor tests so they can be used on travis
|
|
||||||
- add travis.yml, add travis badge to the readme
|
|
||||||
|
|
||||||
### v1.1.0, 2014-11-19
|
|
||||||
- if the plugin is not downloaded do not source it
|
|
||||||
- remove `PLUGINS.md`, an obsolete list of plugins
|
|
||||||
- update readme with instructions about uninstalling plugins
|
|
||||||
- tilde char and `$HOME` in `TMUX_SHARED_MANAGER_PATH` couldn't be used because
|
|
||||||
they are just plain strings. Fixing the problem by manually expanding them.
|
|
||||||
- bugfix: fragile `*.tmux` file globbing (@majutsushi)
|
|
||||||
|
|
||||||
### v1.0.0, 2014-08-05
|
|
||||||
- update readme because of github organization change to
|
|
||||||
[tmux-plugins](https://github.com/tmux-plugins)
|
|
||||||
- update tests to pass
|
|
||||||
- update README to suggest different first plugin
|
|
||||||
- update list of plugins in the README
|
|
||||||
- remove README 'about' section
|
|
||||||
- move key binding to the main file. Delete `key_binding.sh`.
|
|
||||||
- rename `display_message` -> `echo_message`
|
|
||||||
- installing plugins installs just new plugins. Already installed plugins aren't
|
|
||||||
updated.
|
|
||||||
- add 'update plugin' binding and functionality
|
|
||||||
- add test for updating a plugin
|
|
||||||
|
|
||||||
### v0.0.2, 2014-07-17
|
|
||||||
- run all *.tmux plugin files as executables
|
|
||||||
- fix all redirects to /dev/null
|
|
||||||
- fix bug: TPM shared path is created before sync (cloning plugins from github
|
|
||||||
is done)
|
|
||||||
- add test suite running in Vagrant
|
|
||||||
- add Tmux version check. `TPM` won't run if Tmux version is less than 1.9.
|
|
||||||
|
|
||||||
### v0.0.1, 2014-05-21
|
|
||||||
- get TPM up and running
|
|
|
@ -1,2 +0,0 @@
|
||||||
Instructions moved to
|
|
||||||
[docs/how_to_create_plugin.md](docs/how_to_create_plugin.md).
|
|
|
@ -1,20 +0,0 @@
|
||||||
MIT license
|
|
||||||
Copyright (C) 2014 Bruno Sutic
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining
|
|
||||||
a copy of this software and associated documentation files (the "Software"),
|
|
||||||
to deal in the Software without restriction, including without limitation
|
|
||||||
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
||||||
and/or sell copies of the Software, and to permit persons to whom the
|
|
||||||
Software is furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included
|
|
||||||
in all copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
||||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
|
||||||
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
|
||||||
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
|
||||||
DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
||||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
|
||||||
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
|
@ -1,101 +0,0 @@
|
||||||
# Tmux Plugin Manager
|
|
||||||
|
|
||||||
[](https://travis-ci.org/tmux-plugins/tpm)
|
|
||||||
|
|
||||||
Installs and loads `tmux` plugins.
|
|
||||||
|
|
||||||
Tested and working on Linux, OSX, and Cygwin.
|
|
||||||
|
|
||||||
See list of plugins [here](https://github.com/tmux-plugins/list).
|
|
||||||
|
|
||||||
### Installation
|
|
||||||
|
|
||||||
Requirements: `tmux` version 1.9 (or higher), `git`, `bash`.
|
|
||||||
|
|
||||||
Clone TPM:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
|
|
||||||
```
|
|
||||||
|
|
||||||
Put this at the bottom of `~/.tmux.conf` (`$XDG_CONFIG_HOME/tmux/tmux.conf`
|
|
||||||
works too):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# List of plugins
|
|
||||||
set -g @plugin 'tmux-plugins/tpm'
|
|
||||||
set -g @plugin 'tmux-plugins/tmux-sensible'
|
|
||||||
|
|
||||||
# Other examples:
|
|
||||||
# set -g @plugin 'github_username/plugin_name'
|
|
||||||
# set -g @plugin 'github_username/plugin_name#branch'
|
|
||||||
# set -g @plugin 'git@github.com:user/plugin'
|
|
||||||
# set -g @plugin 'git@bitbucket.com:user/plugin'
|
|
||||||
|
|
||||||
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
|
|
||||||
run '~/.tmux/plugins/tpm/tpm'
|
|
||||||
```
|
|
||||||
|
|
||||||
Reload TMUX environment so TPM is sourced:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# type this in terminal if tmux is already running
|
|
||||||
tmux source ~/.tmux.conf
|
|
||||||
```
|
|
||||||
|
|
||||||
That's it!
|
|
||||||
|
|
||||||
### Installing plugins
|
|
||||||
|
|
||||||
1. Add new plugin to `~/.tmux.conf` with `set -g @plugin '...'`
|
|
||||||
2. Press `prefix` + <kbd>I</kbd> (capital i, as in **I**nstall) to fetch the plugin.
|
|
||||||
|
|
||||||
You're good to go! The plugin was cloned to `~/.tmux/plugins/` dir and sourced.
|
|
||||||
|
|
||||||
### Uninstalling plugins
|
|
||||||
|
|
||||||
1. Remove (or comment out) plugin from the list.
|
|
||||||
2. Press `prefix` + <kbd>alt</kbd> + <kbd>u</kbd> (lowercase u as in **u**ninstall) to remove the plugin.
|
|
||||||
|
|
||||||
All the plugins are installed to `~/.tmux/plugins/` so alternatively you can
|
|
||||||
find plugin directory there and remove it.
|
|
||||||
|
|
||||||
### Key bindings
|
|
||||||
|
|
||||||
`prefix` + <kbd>I</kbd>
|
|
||||||
- Installs new plugins from GitHub or any other git repository
|
|
||||||
- Refreshes TMUX environment
|
|
||||||
|
|
||||||
`prefix` + <kbd>U</kbd>
|
|
||||||
- updates plugin(s)
|
|
||||||
|
|
||||||
`prefix` + <kbd>alt</kbd> + <kbd>u</kbd>
|
|
||||||
- remove/uninstall plugins not on the plugin list
|
|
||||||
|
|
||||||
### Docs
|
|
||||||
|
|
||||||
- [Help, tpm not working](docs/tpm_not_working.md) - problem solutions
|
|
||||||
|
|
||||||
More advanced features and instructions, regular users probably do not need
|
|
||||||
this:
|
|
||||||
|
|
||||||
- [How to create a plugin](docs/how_to_create_plugin.md). It's easy.
|
|
||||||
- [Managing plugins via the command line](docs/managing_plugins_via_cmd_line.md)
|
|
||||||
- [Changing plugins install dir](docs/changing_plugins_install_dir.md)
|
|
||||||
- [Automatic TPM installation on a new machine](docs/automatic_tpm_installation.md)
|
|
||||||
|
|
||||||
### Tests
|
|
||||||
|
|
||||||
Tests for this project run on [Travis CI](https://travis-ci.org/tmux-plugins/tpm).
|
|
||||||
|
|
||||||
When run locally, [vagrant](https://www.vagrantup.com/) is required.
|
|
||||||
Run tests with:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
# within project directory
|
|
||||||
./run_tests
|
|
||||||
```
|
|
||||||
|
|
||||||
### License
|
|
||||||
|
|
||||||
[MIT](LICENSE.md)
|
|
|
@ -1,14 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Script intended for use via the command line.
|
|
||||||
#
|
|
||||||
# `.tmux.conf` needs to be set for TPM. Tmux has to be installed on the system,
|
|
||||||
# but does not need to be started in order to run this script.
|
|
||||||
|
|
||||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
SCRIPTS_DIR="$CURRENT_DIR/../scripts"
|
|
||||||
|
|
||||||
main() {
|
|
||||||
"$SCRIPTS_DIR/clean_plugins.sh" # has correct exit code
|
|
||||||
}
|
|
||||||
main
|
|
|
@ -1,14 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Script intended for use via the command line.
|
|
||||||
#
|
|
||||||
# `.tmux.conf` needs to be set for TPM. Tmux has to be installed on the system,
|
|
||||||
# but does not need to be started in order to run this script.
|
|
||||||
|
|
||||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
SCRIPTS_DIR="$CURRENT_DIR/../scripts"
|
|
||||||
|
|
||||||
main() {
|
|
||||||
"$SCRIPTS_DIR/install_plugins.sh" # has correct exit code
|
|
||||||
}
|
|
||||||
main
|
|
|
@ -1,24 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Script intended for use via the command line.
|
|
||||||
#
|
|
||||||
# `.tmux.conf` needs to be set for TPM. Tmux has to be installed on the system,
|
|
||||||
# but does not need to be started in order to run this script.
|
|
||||||
|
|
||||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
SCRIPTS_DIR="$CURRENT_DIR/../scripts"
|
|
||||||
PROGRAM_NAME="$0"
|
|
||||||
|
|
||||||
if [ $# -eq 0 ]; then
|
|
||||||
echo "usage:"
|
|
||||||
echo " $PROGRAM_NAME all update all plugins"
|
|
||||||
echo " $PROGRAM_NAME tmux-foo update plugin 'tmux-foo'"
|
|
||||||
echo " $PROGRAM_NAME tmux-bar tmux-baz update multiple plugins"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
main() {
|
|
||||||
"$SCRIPTS_DIR/update_plugin.sh" --shell-echo "$*" # has correct exit code
|
|
||||||
}
|
|
||||||
main "$*"
|
|
||||||
|
|
|
@ -1,19 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Tmux key-binding script.
|
|
||||||
# Scripts intended to be used via the command line are in `bin/` directory.
|
|
||||||
|
|
||||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
SCRIPTS_DIR="$CURRENT_DIR/../scripts"
|
|
||||||
HELPERS_DIR="$SCRIPTS_DIR/helpers"
|
|
||||||
|
|
||||||
source "$HELPERS_DIR/tmux_echo_functions.sh"
|
|
||||||
source "$HELPERS_DIR/tmux_utils.sh"
|
|
||||||
|
|
||||||
main() {
|
|
||||||
reload_tmux_environment
|
|
||||||
"$SCRIPTS_DIR/clean_plugins.sh" --tmux-echo >/dev/null 2>&1
|
|
||||||
reload_tmux_environment
|
|
||||||
end_message
|
|
||||||
}
|
|
||||||
main
|
|
|
@ -1,19 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Tmux key-binding script.
|
|
||||||
# Scripts intended to be used via the command line are in `bin/` directory.
|
|
||||||
|
|
||||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
SCRIPTS_DIR="$CURRENT_DIR/../scripts"
|
|
||||||
HELPERS_DIR="$SCRIPTS_DIR/helpers"
|
|
||||||
|
|
||||||
source "$HELPERS_DIR/tmux_echo_functions.sh"
|
|
||||||
source "$HELPERS_DIR/tmux_utils.sh"
|
|
||||||
|
|
||||||
main() {
|
|
||||||
reload_tmux_environment
|
|
||||||
"$SCRIPTS_DIR/install_plugins.sh" --tmux-echo >/dev/null 2>&1
|
|
||||||
reload_tmux_environment
|
|
||||||
end_message
|
|
||||||
}
|
|
||||||
main
|
|
|
@ -1,49 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Tmux key-binding script.
|
|
||||||
# Scripts intended to be used via the command line are in `bin/` directory.
|
|
||||||
|
|
||||||
# This script:
|
|
||||||
# - shows a list of installed plugins
|
|
||||||
# - starts a prompt to enter the name of the plugin that will be updated
|
|
||||||
|
|
||||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
SCRIPTS_DIR="$CURRENT_DIR/../scripts"
|
|
||||||
HELPERS_DIR="$SCRIPTS_DIR/helpers"
|
|
||||||
|
|
||||||
source "$HELPERS_DIR/plugin_functions.sh"
|
|
||||||
source "$HELPERS_DIR/tmux_echo_functions.sh"
|
|
||||||
source "$HELPERS_DIR/tmux_utils.sh"
|
|
||||||
|
|
||||||
display_plugin_update_list() {
|
|
||||||
local plugins="$(tpm_plugins_list_helper)"
|
|
||||||
tmux_echo "Installed plugins:"
|
|
||||||
tmux_echo ""
|
|
||||||
|
|
||||||
for plugin in $plugins; do
|
|
||||||
# displaying only installed plugins
|
|
||||||
if plugin_already_installed "$plugin"; then
|
|
||||||
local plugin_name="$(plugin_name_helper "$plugin")"
|
|
||||||
tmux_echo " $plugin_name"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
tmux_echo ""
|
|
||||||
tmux_echo "Type plugin name to update it."
|
|
||||||
tmux_echo ""
|
|
||||||
tmux_echo "- \"all\" - updates all plugins"
|
|
||||||
tmux_echo "- ENTER - cancels"
|
|
||||||
}
|
|
||||||
|
|
||||||
update_plugin_prompt() {
|
|
||||||
tmux command-prompt -p 'plugin update:' " \
|
|
||||||
send-keys C-c; \
|
|
||||||
run-shell '$SCRIPTS_DIR/update_plugin_prompt_handler.sh %1'"
|
|
||||||
}
|
|
||||||
|
|
||||||
main() {
|
|
||||||
reload_tmux_environment
|
|
||||||
display_plugin_update_list
|
|
||||||
update_plugin_prompt
|
|
||||||
}
|
|
||||||
main
|
|
|
@ -1,12 +0,0 @@
|
||||||
# Automatic tpm installation
|
|
||||||
|
|
||||||
One of the first things we do on a new machine is cloning our dotfiles. Not everything comes with them though, so for example `tpm` most likely won't be installed.
|
|
||||||
|
|
||||||
If you want to install `tpm` and plugins automatically when tmux is started, put the following snippet in `.tmux.conf` before the final `run '~/.tmux/plugins/tpm/tpm'`:
|
|
||||||
|
|
||||||
```
|
|
||||||
if "test ! -d ~/.tmux/plugins/tpm" \
|
|
||||||
"run 'git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm && ~/.tmux/plugins/tpm/bin/install_plugins'"
|
|
||||||
```
|
|
||||||
|
|
||||||
This useful tip was submitted by @acr4 and narfman0.
|
|
|
@ -1,16 +0,0 @@
|
||||||
# Changing plugins install dir
|
|
||||||
|
|
||||||
By default, TPM installs plugins in a subfolder named `plugins/` inside
|
|
||||||
`$XDG_CONFIG_HOME/tmux/` if a `tmux.conf` file was found at that location, or
|
|
||||||
inside `~/.tmux/` otherwise.
|
|
||||||
|
|
||||||
You can change the install path by putting this in `.tmux.conf`:
|
|
||||||
|
|
||||||
set-environment -g TMUX_PLUGIN_MANAGER_PATH '/some/other/path/'
|
|
||||||
|
|
||||||
Tmux plugin manager initialization in `.tmux.conf` should also be updated:
|
|
||||||
|
|
||||||
# initializes TMUX plugin manager in a new path
|
|
||||||
run /some/other/path/tpm/tpm
|
|
||||||
|
|
||||||
Please make sure that the `run` line is at the very bottom of `.tmux.conf`.
|
|
|
@ -1,108 +0,0 @@
|
||||||
# How to create Tmux plugins
|
|
||||||
|
|
||||||
Creating a new plugin is easy.
|
|
||||||
|
|
||||||
For demonstration purposes we'll create a simple plugin that lists all
|
|
||||||
installed TPM plugins. Yes, a plugin that lists plugins :) We'll bind that to
|
|
||||||
`prefix + T`.
|
|
||||||
|
|
||||||
The source code for this example plugin can be found
|
|
||||||
[here](https://github.com/tmux-plugins/tmux-example-plugin).
|
|
||||||
|
|
||||||
### 1. create a new git project
|
|
||||||
|
|
||||||
TPM depends on git for downloading and updating plugins.
|
|
||||||
|
|
||||||
To create a new git project:
|
|
||||||
|
|
||||||
$ mkdir tmux_my_plugin
|
|
||||||
$ cd tmux_my_plugin
|
|
||||||
$ git init
|
|
||||||
|
|
||||||
### 2. create a `*.tmux` plugin run file
|
|
||||||
|
|
||||||
When it sources a plugin, TPM executes all `*.tmux` files in your plugins'
|
|
||||||
directory. That's how plugins are run.
|
|
||||||
|
|
||||||
Create a plugin run file in plugin directory:
|
|
||||||
|
|
||||||
$ touch my_plugin.tmux
|
|
||||||
$ chmod u+x my_plugin.tmux
|
|
||||||
|
|
||||||
You can have more than one `*.tmux` file, and all will get executed. However, usually
|
|
||||||
you'll need just one.
|
|
||||||
|
|
||||||
### 3. create a plugin key binding
|
|
||||||
|
|
||||||
We want the behavior of the plugin to trigger when a user hits `prefix + T`.
|
|
||||||
|
|
||||||
Key `T` is chosen because:
|
|
||||||
- it's "kind of" a mnemonic for `TPM`
|
|
||||||
- the key is not used by Tmux natively. Tmux man page, KEY BINDINGS section
|
|
||||||
contains a list of all the bindings Tmux uses. There's plenty of unused keys
|
|
||||||
and we don't want to override any of Tmux default key bindings.
|
|
||||||
|
|
||||||
Open the plugin run file in your favorite text editor:
|
|
||||||
|
|
||||||
$ vim my_plugin.tmux
|
|
||||||
# or
|
|
||||||
$ subl my_plugin.tmux
|
|
||||||
|
|
||||||
Put the following content in the file:
|
|
||||||
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
tmux bind-key T run-shell "$CURRENT_DIR/scripts/tmux_list_plugins.sh"
|
|
||||||
|
|
||||||
As you can see, plugin run file is a simple bash script that sets up the binding.
|
|
||||||
|
|
||||||
When pressed, `prefix + T` will execute another shell script:
|
|
||||||
`tmux_list_plugins.sh`. That script should be in `scripts/` directory -
|
|
||||||
relative to the plugin run file.
|
|
||||||
|
|
||||||
|
|
||||||
### 4. listing plugins
|
|
||||||
|
|
||||||
Now that we have the binding, let's create a script that's invoked with
|
|
||||||
`prefix + T`.
|
|
||||||
|
|
||||||
$ mkdir scripts
|
|
||||||
$ touch scripts/tmux_list_plugins.sh
|
|
||||||
$ chmod u+x scripts/tmux_list_plugins.sh
|
|
||||||
|
|
||||||
And here's the script content:
|
|
||||||
|
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# fetching the directory where plugins are installed
|
|
||||||
plugin_path="$(tmux show-env -g TMUX_PLUGIN_MANAGER_PATH | cut -f2 -d=)"
|
|
||||||
|
|
||||||
# listing installed plugins
|
|
||||||
ls -1 "$plugin_path"
|
|
||||||
|
|
||||||
### 5. try it out
|
|
||||||
|
|
||||||
To see if this works, execute the plugin run file:
|
|
||||||
|
|
||||||
$ ./my_plugin.tmux
|
|
||||||
|
|
||||||
That should set up the key binding. Now hit `prefix + T` and see if it works.
|
|
||||||
|
|
||||||
### 6. publish the plugin
|
|
||||||
|
|
||||||
When everything is ready, push the plugin to an online git repository,
|
|
||||||
preferably GitHub.
|
|
||||||
|
|
||||||
Other users can install your plugin by just adding plugin git URL to the
|
|
||||||
`@plugin` list in their `.tmux.conf`.
|
|
||||||
|
|
||||||
If the plugin is on GitHub, your users will be able to use the shorthand of
|
|
||||||
`github_username/repository`.
|
|
||||||
|
|
||||||
### Conclusion
|
|
||||||
|
|
||||||
Hopefully, that was easy. As you can see, it's mostly shell scripting.
|
|
||||||
|
|
||||||
You can use other scripting languages (ruby, python etc) but plain old shell
|
|
||||||
is preferred because of portability.
|
|
|
@ -1,36 +0,0 @@
|
||||||
# Managing plugins via the command line
|
|
||||||
|
|
||||||
Aside from tmux key bindings, TPM provides shell interface for managing plugins
|
|
||||||
via scripts located in [bin/](../bin/) directory.
|
|
||||||
|
|
||||||
Tmux does not need to be started in order to run scripts (but it's okay if it
|
|
||||||
is). If you [changed tpm install dir](../docs/changing_plugins_install_dir.md)
|
|
||||||
in `.tmux.conf` that should work fine too.
|
|
||||||
|
|
||||||
Prerequisites:
|
|
||||||
|
|
||||||
- tmux installed on the system (doh)
|
|
||||||
- `.tmux.conf` set up for TPM
|
|
||||||
|
|
||||||
### Installing plugins
|
|
||||||
|
|
||||||
As usual, plugins need to be specified in `.tmux.conf`. Run the following
|
|
||||||
command to install plugins:
|
|
||||||
|
|
||||||
~/.tmux/plugins/tpm/bin/install_plugins
|
|
||||||
|
|
||||||
### Updating plugins
|
|
||||||
|
|
||||||
To update all installed plugins:
|
|
||||||
|
|
||||||
~/.tmux/plugins/tpm/bin/update_plugins all
|
|
||||||
|
|
||||||
or update a single plugin:
|
|
||||||
|
|
||||||
~/.tmux/plugins/tpm/bin/update_plugins tmux-sensible
|
|
||||||
|
|
||||||
### Removing plugins
|
|
||||||
|
|
||||||
To remove plugins not on the plugin list:
|
|
||||||
|
|
||||||
~/.tmux/plugins/tpm/bin/clean_plugins
|
|
|
@ -1,102 +0,0 @@
|
||||||
# Help, tpm not working!
|
|
||||||
|
|
||||||
Here's the list of issues users had with `tpm`:
|
|
||||||
|
|
||||||
<hr />
|
|
||||||
|
|
||||||
> Nothing works. `tpm` key bindings `prefix + I`, `prefix + U` not even
|
|
||||||
defined.
|
|
||||||
|
|
||||||
Related [issue #22](https://github.com/tmux-plugins/tpm/issues/22)
|
|
||||||
|
|
||||||
- Do you have required `tmux` version to run `tpm`?<br/>
|
|
||||||
Check `tmux` version with `$ tmux -V` command and make sure it's higher or
|
|
||||||
equal to the required version for `tpm` as stated in the readme.
|
|
||||||
|
|
||||||
- ZSH tmux plugin might be causing issues.<br/>
|
|
||||||
If you have it installed, try disabling it and see if `tpm` works then.
|
|
||||||
|
|
||||||
<hr />
|
|
||||||
|
|
||||||
> Help, I'm using custom config file with `tmux -f /path/to/my_tmux.conf`
|
|
||||||
to start Tmux and for some reason plugins aren't loaded!?
|
|
||||||
|
|
||||||
Related [issue #57](https://github.com/tmux-plugins/tpm/issues/57)
|
|
||||||
|
|
||||||
`tpm` has a known issue when using custom config file with `-f` option.
|
|
||||||
The solution is to use alternative plugin definition syntax. Here are the steps
|
|
||||||
to make it work:
|
|
||||||
|
|
||||||
1. remove all `set -g @plugin` lines from tmux config file
|
|
||||||
2. in the config file define the plugins in the following way:
|
|
||||||
|
|
||||||
# List of plugins
|
|
||||||
set -g @tpm_plugins ' \
|
|
||||||
tmux-plugins/tpm \
|
|
||||||
tmux-plugins/tmux-sensible \
|
|
||||||
tmux-plugins/tmux-resurrect \
|
|
||||||
'
|
|
||||||
|
|
||||||
# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
|
|
||||||
run '~/.tmux/plugins/tpm/tpm'
|
|
||||||
|
|
||||||
3. Reload TMUX environment so TPM is sourced: `$ tmux source /path/to/my_tmux.conf`
|
|
||||||
|
|
||||||
The plugins should now be working.
|
|
||||||
|
|
||||||
<hr />
|
|
||||||
|
|
||||||
> Weird sequence of characters show up when installing or updating plugins
|
|
||||||
|
|
||||||
Related: [issue #25](https://github.com/tmux-plugins/tpm/issues/25)
|
|
||||||
|
|
||||||
- This could be caused by [tmuxline.vim](https://github.com/edkolev/tmuxline.vim)
|
|
||||||
plugin. Uninstall it and see if things work.
|
|
||||||
|
|
||||||
<hr />
|
|
||||||
|
|
||||||
> "failed to connect to server" error when sourcing .tmux.conf
|
|
||||||
|
|
||||||
Related: [issue #48](https://github.com/tmux-plugins/tpm/issues/48)
|
|
||||||
|
|
||||||
- Make sure `tmux source ~/.tmux.conf` command is ran from inside `tmux`.
|
|
||||||
|
|
||||||
<hr />
|
|
||||||
|
|
||||||
> tpm not working: '~/.tmux/plugins/tpm/tpm' returned 2 (Windows / Cygwin)
|
|
||||||
|
|
||||||
Related: [issue #81](https://github.com/tmux-plugins/tpm/issues/81)
|
|
||||||
|
|
||||||
This issue is most likely caused by Windows line endings. For example, if you
|
|
||||||
have git's `core.autocrlf` option set to `true`, git will automatically convert
|
|
||||||
all the files to Windows line endings which might cause a problem.
|
|
||||||
|
|
||||||
The solution is to convert all line ending to Unix newline characters. This
|
|
||||||
command handles that for all files under `.tmux/` dir (skips `.git`
|
|
||||||
subdirectories):
|
|
||||||
|
|
||||||
```bash
|
|
||||||
find ~/.tmux -type d -name '.git*' -prune -o -type f -print0 | xargs -0 dos2unix
|
|
||||||
```
|
|
||||||
|
|
||||||
<hr />
|
|
||||||
|
|
||||||
> '~/.tmux/plugins/tpm/tpm' returned 127 (on macOS, w/ tmux installed using brew)
|
|
||||||
|
|
||||||
Related: [issue #67](https://github.com/tmux-plugins/tpm/issues/67)
|
|
||||||
|
|
||||||
This problem is because tmux's `run-shell` command runs a shell which doesn't read from user configs, thus tmux installed in a brew prefix (e.g. `/usr/local/bin`) will not be found.
|
|
||||||
|
|
||||||
The solution is to find your brew prefix
|
|
||||||
|
|
||||||
```sh
|
|
||||||
> echo "$(brew --prefix)/bin"
|
|
||||||
/opt/homebrew/bin
|
|
||||||
```
|
|
||||||
|
|
||||||
And prepend it to the `PATH` environment variable
|
|
||||||
```
|
|
||||||
set-environment -g PATH "/opt/homebrew/bin:/bin:/usr/bin"
|
|
||||||
```
|
|
||||||
|
|
||||||
before any `run-shell`/`run` commands in `~/.tmux.conf`.
|
|
|
@ -1,78 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
VERSION="$1"
|
|
||||||
UNSUPPORTED_MSG="$2"
|
|
||||||
|
|
||||||
get_tmux_option() {
|
|
||||||
local option=$1
|
|
||||||
local default_value=$2
|
|
||||||
local option_value=$(tmux show-option -gqv "$option")
|
|
||||||
if [ -z "$option_value" ]; then
|
|
||||||
echo "$default_value"
|
|
||||||
else
|
|
||||||
echo "$option_value"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# Ensures a message is displayed for 5 seconds in tmux prompt.
|
|
||||||
# Does not override the 'display-time' tmux option.
|
|
||||||
display_message() {
|
|
||||||
local message="$1"
|
|
||||||
|
|
||||||
# display_duration defaults to 5 seconds, if not passed as an argument
|
|
||||||
if [ "$#" -eq 2 ]; then
|
|
||||||
local display_duration="$2"
|
|
||||||
else
|
|
||||||
local display_duration="5000"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# saves user-set 'display-time' option
|
|
||||||
local saved_display_time=$(get_tmux_option "display-time" "750")
|
|
||||||
|
|
||||||
# sets message display time to 5 seconds
|
|
||||||
tmux set-option -gq display-time "$display_duration"
|
|
||||||
|
|
||||||
# displays message
|
|
||||||
tmux display-message "$message"
|
|
||||||
|
|
||||||
# restores original 'display-time' value
|
|
||||||
tmux set-option -gq display-time "$saved_display_time"
|
|
||||||
}
|
|
||||||
|
|
||||||
# this is used to get "clean" integer version number. Examples:
|
|
||||||
# `tmux 1.9` => `19`
|
|
||||||
# `1.9a` => `19`
|
|
||||||
get_digits_from_string() {
|
|
||||||
local string="$1"
|
|
||||||
local only_digits="$(echo "$string" | tr -dC '[:digit:]')"
|
|
||||||
echo "$only_digits"
|
|
||||||
}
|
|
||||||
|
|
||||||
tmux_version_int() {
|
|
||||||
local tmux_version_string=$(tmux -V)
|
|
||||||
echo "$(get_digits_from_string "$tmux_version_string")"
|
|
||||||
}
|
|
||||||
|
|
||||||
unsupported_version_message() {
|
|
||||||
if [ -n "$UNSUPPORTED_MSG" ]; then
|
|
||||||
echo "$UNSUPPORTED_MSG"
|
|
||||||
else
|
|
||||||
echo "Error, Tmux version unsupported! Please install Tmux version $VERSION or greater!"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
exit_if_unsupported_version() {
|
|
||||||
local current_version="$1"
|
|
||||||
local supported_version="$2"
|
|
||||||
if [ "$current_version" -lt "$supported_version" ]; then
|
|
||||||
display_message "$(unsupported_version_message)"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
main() {
|
|
||||||
local supported_version_int="$(get_digits_from_string "$VERSION")"
|
|
||||||
local current_version_int="$(tmux_version_int)"
|
|
||||||
exit_if_unsupported_version "$current_version_int" "$supported_version_int"
|
|
||||||
}
|
|
||||||
main
|
|
|
@ -1,41 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
HELPERS_DIR="$CURRENT_DIR/helpers"
|
|
||||||
|
|
||||||
source "$HELPERS_DIR/plugin_functions.sh"
|
|
||||||
source "$HELPERS_DIR/utility.sh"
|
|
||||||
|
|
||||||
if [ "$1" == "--tmux-echo" ]; then # tmux-specific echo functions
|
|
||||||
source "$HELPERS_DIR/tmux_echo_functions.sh"
|
|
||||||
else # shell output functions
|
|
||||||
source "$HELPERS_DIR/shell_echo_functions.sh"
|
|
||||||
fi
|
|
||||||
|
|
||||||
clean_plugins() {
|
|
||||||
local plugins plugin plugin_directory
|
|
||||||
plugins="$(tpm_plugins_list_helper)"
|
|
||||||
|
|
||||||
for plugin_directory in "$(tpm_path)"/*; do
|
|
||||||
[ -d "${plugin_directory}" ] || continue
|
|
||||||
plugin="$(plugin_name_helper "${plugin_directory}")"
|
|
||||||
case "${plugins}" in
|
|
||||||
*"${plugin}"*) : ;;
|
|
||||||
*)
|
|
||||||
[ "${plugin}" = "tpm" ] && continue
|
|
||||||
echo_ok "Removing \"$plugin\""
|
|
||||||
rm -rf "${plugin_directory}" >/dev/null 2>&1
|
|
||||||
[ -d "${plugin_directory}" ] &&
|
|
||||||
echo_err " \"$plugin\" clean fail" ||
|
|
||||||
echo_ok " \"$plugin\" clean success"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
main() {
|
|
||||||
ensure_tpm_path_exists
|
|
||||||
clean_plugins
|
|
||||||
exit_value_helper
|
|
||||||
}
|
|
||||||
main
|
|
|
@ -1,104 +0,0 @@
|
||||||
# using @tpm_plugins is now deprecated in favor of using @plugin syntax
|
|
||||||
tpm_plugins_variable_name="@tpm_plugins"
|
|
||||||
|
|
||||||
# manually expanding tilde char or `$HOME` variable.
|
|
||||||
_manual_expansion() {
|
|
||||||
local path="$1"
|
|
||||||
local expanded_tilde="${path/#\~/$HOME}"
|
|
||||||
echo "${expanded_tilde/#\$HOME/$HOME}"
|
|
||||||
}
|
|
||||||
|
|
||||||
_tpm_path() {
|
|
||||||
local string_path="$(tmux start-server\; show-environment -g TMUX_PLUGIN_MANAGER_PATH | cut -f2 -d=)/"
|
|
||||||
_manual_expansion "$string_path"
|
|
||||||
}
|
|
||||||
|
|
||||||
_CACHED_TPM_PATH="$(_tpm_path)"
|
|
||||||
|
|
||||||
# Get the absolute path to the users configuration file of TMux.
|
|
||||||
# This includes a prioritized search on different locations.
|
|
||||||
#
|
|
||||||
_get_user_tmux_conf() {
|
|
||||||
# Define the different possible locations.
|
|
||||||
xdg_location="${XDG_CONFIG_HOME:-$HOME/.config}/tmux/tmux.conf"
|
|
||||||
default_location="$HOME/.tmux.conf"
|
|
||||||
|
|
||||||
# Search for the correct configuration file by priority.
|
|
||||||
if [ -f "$xdg_location" ]; then
|
|
||||||
echo "$xdg_location"
|
|
||||||
|
|
||||||
else
|
|
||||||
echo "$default_location"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
_tmux_conf_contents() {
|
|
||||||
user_config=$(_get_user_tmux_conf)
|
|
||||||
cat /etc/tmux.conf "$user_config" 2>/dev/null
|
|
||||||
if [ "$1" == "full" ]; then # also output content from sourced files
|
|
||||||
local file
|
|
||||||
for file in $(_sourced_files); do
|
|
||||||
cat $(_manual_expansion "$file") 2>/dev/null
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# return files sourced from tmux config files
|
|
||||||
_sourced_files() {
|
|
||||||
_tmux_conf_contents |
|
|
||||||
sed -E -n -e "s/^[[:space:]]*source(-file)?[[:space:]]+(-q+[[:space:]]+)?['\"]?([^'\"]+)['\"]?/\3/p"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Want to be able to abort in certain cases
|
|
||||||
trap "exit 1" TERM
|
|
||||||
export TOP_PID=$$
|
|
||||||
|
|
||||||
_fatal_error_abort() {
|
|
||||||
echo >&2 "Aborting."
|
|
||||||
kill -s TERM $TOP_PID
|
|
||||||
}
|
|
||||||
|
|
||||||
# PUBLIC FUNCTIONS BELOW
|
|
||||||
|
|
||||||
tpm_path() {
|
|
||||||
if [ "$_CACHED_TPM_PATH" == "/" ]; then
|
|
||||||
echo >&2 "FATAL: Tmux Plugin Manager not configured in tmux.conf"
|
|
||||||
_fatal_error_abort
|
|
||||||
fi
|
|
||||||
echo "$_CACHED_TPM_PATH"
|
|
||||||
}
|
|
||||||
|
|
||||||
tpm_plugins_list_helper() {
|
|
||||||
# lists plugins from @tpm_plugins option
|
|
||||||
echo "$(tmux start-server\; show-option -gqv "$tpm_plugins_variable_name")"
|
|
||||||
|
|
||||||
# read set -g @plugin "tmux-plugins/tmux-example-plugin" entries
|
|
||||||
_tmux_conf_contents "full" |
|
|
||||||
awk '/^[ \t]*set(-option)? +-g +@plugin/ { gsub(/'\''/,""); gsub(/'\"'/,""); print $4 }'
|
|
||||||
}
|
|
||||||
|
|
||||||
# Allowed plugin name formats:
|
|
||||||
# 1. "git://github.com/user/plugin_name.git"
|
|
||||||
# 2. "user/plugin_name"
|
|
||||||
plugin_name_helper() {
|
|
||||||
local plugin="$1"
|
|
||||||
# get only the part after the last slash, e.g. "plugin_name.git"
|
|
||||||
local plugin_basename="$(basename "$plugin")"
|
|
||||||
# remove ".git" extension (if it exists) to get only "plugin_name"
|
|
||||||
local plugin_name="${plugin_basename%.git}"
|
|
||||||
echo "$plugin_name"
|
|
||||||
}
|
|
||||||
|
|
||||||
plugin_path_helper() {
|
|
||||||
local plugin="$1"
|
|
||||||
local plugin_name="$(plugin_name_helper "$plugin")"
|
|
||||||
echo "$(tpm_path)${plugin_name}/"
|
|
||||||
}
|
|
||||||
|
|
||||||
plugin_already_installed() {
|
|
||||||
local plugin="$1"
|
|
||||||
local plugin_path="$(plugin_path_helper "$plugin")"
|
|
||||||
[ -d "$plugin_path" ] &&
|
|
||||||
cd "$plugin_path" &&
|
|
||||||
git remote >/dev/null 2>&1
|
|
||||||
}
|
|
|
@ -1,7 +0,0 @@
|
||||||
echo_ok() {
|
|
||||||
echo "$*"
|
|
||||||
}
|
|
||||||
|
|
||||||
echo_err() {
|
|
||||||
fail_helper "$*"
|
|
||||||
}
|
|
|
@ -1,28 +0,0 @@
|
||||||
_has_emacs_mode_keys() {
|
|
||||||
$(tmux show -gw mode-keys | grep -q emacs)
|
|
||||||
}
|
|
||||||
|
|
||||||
tmux_echo() {
|
|
||||||
local message="$1"
|
|
||||||
tmux run-shell "echo '$message'"
|
|
||||||
}
|
|
||||||
|
|
||||||
echo_ok() {
|
|
||||||
tmux_echo "$*"
|
|
||||||
}
|
|
||||||
|
|
||||||
echo_err() {
|
|
||||||
tmux_echo "$*"
|
|
||||||
}
|
|
||||||
|
|
||||||
end_message() {
|
|
||||||
if _has_emacs_mode_keys; then
|
|
||||||
local continue_key="ESCAPE"
|
|
||||||
else
|
|
||||||
local continue_key="ENTER"
|
|
||||||
fi
|
|
||||||
tmux_echo ""
|
|
||||||
tmux_echo "TMUX environment reloaded."
|
|
||||||
tmux_echo ""
|
|
||||||
tmux_echo "Done, press $continue_key to continue."
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
HELPERS_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
source "$HELPERS_DIR/plugin_functions.sh"
|
|
||||||
|
|
||||||
reload_tmux_environment() {
|
|
||||||
tmux source-file $(_get_user_tmux_conf) >/dev/null 2>&1
|
|
||||||
}
|
|
|
@ -1,17 +0,0 @@
|
||||||
ensure_tpm_path_exists() {
|
|
||||||
mkdir -p "$(tpm_path)"
|
|
||||||
}
|
|
||||||
|
|
||||||
fail_helper() {
|
|
||||||
local message="$1"
|
|
||||||
echo "$message" >&2
|
|
||||||
FAIL="true"
|
|
||||||
}
|
|
||||||
|
|
||||||
exit_value_helper() {
|
|
||||||
if [ "$FAIL" == "true" ]; then
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
}
|
|
|
@ -1,75 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
HELPERS_DIR="$CURRENT_DIR/helpers"
|
|
||||||
|
|
||||||
source "$HELPERS_DIR/plugin_functions.sh"
|
|
||||||
source "$HELPERS_DIR/utility.sh"
|
|
||||||
|
|
||||||
if [ "$1" == "--tmux-echo" ]; then # tmux-specific echo functions
|
|
||||||
source "$HELPERS_DIR/tmux_echo_functions.sh"
|
|
||||||
else # shell output functions
|
|
||||||
source "$HELPERS_DIR/shell_echo_functions.sh"
|
|
||||||
fi
|
|
||||||
|
|
||||||
clone() {
|
|
||||||
local plugin="$1"
|
|
||||||
local branch="$2"
|
|
||||||
if [ -n "$branch" ]; then
|
|
||||||
cd "$(tpm_path)" &&
|
|
||||||
GIT_TERMINAL_PROMPT=0 git clone -b "$branch" --single-branch --recursive "$plugin" >/dev/null 2>&1
|
|
||||||
else
|
|
||||||
cd "$(tpm_path)" &&
|
|
||||||
GIT_TERMINAL_PROMPT=0 git clone --single-branch --recursive "$plugin" >/dev/null 2>&1
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# tries cloning:
|
|
||||||
# 1. plugin name directly - works if it's a valid git url
|
|
||||||
# 2. expands the plugin name to point to a GitHub repo and tries cloning again
|
|
||||||
clone_plugin() {
|
|
||||||
local plugin="$1"
|
|
||||||
local branch="$2"
|
|
||||||
clone "$plugin" "$branch" ||
|
|
||||||
clone "https://git::@github.com/$plugin" "$branch"
|
|
||||||
}
|
|
||||||
|
|
||||||
# clone plugin and produce output
|
|
||||||
install_plugin() {
|
|
||||||
local plugin="$1"
|
|
||||||
local branch="$2"
|
|
||||||
local plugin_name="$(plugin_name_helper "$plugin")"
|
|
||||||
|
|
||||||
if plugin_already_installed "$plugin"; then
|
|
||||||
echo_ok "Already installed \"$plugin_name\""
|
|
||||||
else
|
|
||||||
echo_ok "Installing \"$plugin_name\""
|
|
||||||
clone_plugin "$plugin" "$branch" &&
|
|
||||||
echo_ok " \"$plugin_name\" download success" ||
|
|
||||||
echo_err " \"$plugin_name\" download fail"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
install_plugins() {
|
|
||||||
local plugins="$(tpm_plugins_list_helper)"
|
|
||||||
for plugin in $plugins; do
|
|
||||||
IFS='#' read -ra plugin <<< "$plugin"
|
|
||||||
install_plugin "${plugin[0]}" "${plugin[1]}"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
verify_tpm_path_permissions() {
|
|
||||||
local path="$(tpm_path)"
|
|
||||||
# check the write permission flag for all users to ensure
|
|
||||||
# that we have proper access
|
|
||||||
[ -w "$path" ] ||
|
|
||||||
echo_err "$path is not writable!"
|
|
||||||
}
|
|
||||||
|
|
||||||
main() {
|
|
||||||
ensure_tpm_path_exists
|
|
||||||
verify_tpm_path_permissions
|
|
||||||
install_plugins
|
|
||||||
exit_value_helper
|
|
||||||
}
|
|
||||||
main
|
|
|
@ -1,42 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
HELPERS_DIR="$CURRENT_DIR/helpers"
|
|
||||||
|
|
||||||
source "$HELPERS_DIR/plugin_functions.sh"
|
|
||||||
|
|
||||||
plugin_dir_exists() {
|
|
||||||
[ -d "$1" ]
|
|
||||||
}
|
|
||||||
|
|
||||||
# Runs all *.tmux files from the plugin directory.
|
|
||||||
# Files are ran as executables.
|
|
||||||
# No errors if the plugin dir does not exist.
|
|
||||||
silently_source_all_tmux_files() {
|
|
||||||
local plugin_path="$1"
|
|
||||||
local plugin_tmux_files="$plugin_path*.tmux"
|
|
||||||
if plugin_dir_exists "$plugin_path"; then
|
|
||||||
for tmux_file in $plugin_tmux_files; do
|
|
||||||
# if the glob didn't find any files this will be the
|
|
||||||
# unexpanded glob which obviously doesn't exist
|
|
||||||
[ -f "$tmux_file" ] || continue
|
|
||||||
# runs *.tmux file as an executable
|
|
||||||
$tmux_file >/dev/null 2>&1
|
|
||||||
done
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
source_plugins() {
|
|
||||||
local plugin plugin_path
|
|
||||||
local plugins="$(tpm_plugins_list_helper)"
|
|
||||||
for plugin in $plugins; do
|
|
||||||
IFS='#' read -ra plugin <<< "$plugin"
|
|
||||||
plugin_path="$(plugin_path_helper "${plugin[0]}")"
|
|
||||||
silently_source_all_tmux_files "$plugin_path"
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
main() {
|
|
||||||
source_plugins
|
|
||||||
}
|
|
||||||
main
|
|
|
@ -1,78 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# this script handles core logic of updating plugins
|
|
||||||
|
|
||||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
HELPERS_DIR="$CURRENT_DIR/helpers"
|
|
||||||
|
|
||||||
source "$HELPERS_DIR/plugin_functions.sh"
|
|
||||||
source "$HELPERS_DIR/utility.sh"
|
|
||||||
|
|
||||||
if [ "$1" == "--tmux-echo" ]; then # tmux-specific echo functions
|
|
||||||
source "$HELPERS_DIR/tmux_echo_functions.sh"
|
|
||||||
else # shell output functions
|
|
||||||
source "$HELPERS_DIR/shell_echo_functions.sh"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# from now on ignore first script argument
|
|
||||||
shift
|
|
||||||
|
|
||||||
pull_changes() {
|
|
||||||
local plugin="$1"
|
|
||||||
local plugin_path="$(plugin_path_helper "$plugin")"
|
|
||||||
cd "$plugin_path" &&
|
|
||||||
GIT_TERMINAL_PROMPT=0 git pull &&
|
|
||||||
GIT_TERMINAL_PROMPT=0 git submodule update --init --recursive
|
|
||||||
}
|
|
||||||
|
|
||||||
update() {
|
|
||||||
local plugin="$1" output
|
|
||||||
output=$(pull_changes "$plugin" 2>&1)
|
|
||||||
if (( $? == 0 )); then
|
|
||||||
echo_ok " \"$plugin\" update success"
|
|
||||||
echo_ok "$(echo "$output" | sed -e 's/^/ | /')"
|
|
||||||
else
|
|
||||||
echo_err " \"$plugin\" update fail"
|
|
||||||
echo_err "$(echo "$output" | sed -e 's/^/ | /')"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
update_all() {
|
|
||||||
echo_ok "Updating all plugins!"
|
|
||||||
echo_ok ""
|
|
||||||
local plugins="$(tpm_plugins_list_helper)"
|
|
||||||
for plugin in $plugins; do
|
|
||||||
IFS='#' read -ra plugin <<< "$plugin"
|
|
||||||
local plugin_name="$(plugin_name_helper "${plugin[0]}")"
|
|
||||||
# updating only installed plugins
|
|
||||||
if plugin_already_installed "$plugin_name"; then
|
|
||||||
update "$plugin_name" &
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
wait
|
|
||||||
}
|
|
||||||
|
|
||||||
update_plugins() {
|
|
||||||
local plugins="$*"
|
|
||||||
for plugin in $plugins; do
|
|
||||||
IFS='#' read -ra plugin <<< "$plugin"
|
|
||||||
local plugin_name="$(plugin_name_helper "${plugin[0]}")"
|
|
||||||
if plugin_already_installed "$plugin_name"; then
|
|
||||||
update "$plugin_name" &
|
|
||||||
else
|
|
||||||
echo_err "$plugin_name not installed!" &
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
wait
|
|
||||||
}
|
|
||||||
|
|
||||||
main() {
|
|
||||||
ensure_tpm_path_exists
|
|
||||||
if [ "$1" == "all" ]; then
|
|
||||||
update_all
|
|
||||||
else
|
|
||||||
update_plugins "$*"
|
|
||||||
fi
|
|
||||||
exit_value_helper
|
|
||||||
}
|
|
||||||
main "$*"
|
|
|
@ -1,18 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
HELPERS_DIR="$CURRENT_DIR/helpers"
|
|
||||||
|
|
||||||
if [ $# -eq 0 ]; then
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
source "$HELPERS_DIR/tmux_echo_functions.sh"
|
|
||||||
source "$HELPERS_DIR/tmux_utils.sh"
|
|
||||||
|
|
||||||
main() {
|
|
||||||
"$CURRENT_DIR/update_plugin.sh" --tmux-echo "$*"
|
|
||||||
reload_tmux_environment
|
|
||||||
end_message
|
|
||||||
}
|
|
||||||
main "$*"
|
|
|
@ -1,13 +0,0 @@
|
||||||
install_key_option="@tpm-install"
|
|
||||||
default_install_key="I"
|
|
||||||
|
|
||||||
update_key_option="@tpm-update"
|
|
||||||
default_update_key="U"
|
|
||||||
|
|
||||||
clean_key_option="@tpm-clean"
|
|
||||||
default_clean_key="M-u"
|
|
||||||
|
|
||||||
SUPPORTED_TMUX_VERSION="1.9"
|
|
||||||
|
|
||||||
DEFAULT_TPM_ENV_VAR_NAME="TMUX_PLUGIN_MANAGER_PATH"
|
|
||||||
DEFAULT_TPM_PATH="$HOME/.tmux/plugins/"
|
|
|
@ -1,36 +0,0 @@
|
||||||
#!/usr/bin/env expect
|
|
||||||
|
|
||||||
# disables script output
|
|
||||||
log_user 0
|
|
||||||
|
|
||||||
spawn tmux
|
|
||||||
|
|
||||||
# Waiting for tmux to attach. If this is not done, next command, `send` will
|
|
||||||
# not work properly.
|
|
||||||
sleep 1
|
|
||||||
|
|
||||||
# this is tmux prefix + I
|
|
||||||
send "I"
|
|
||||||
|
|
||||||
# cloning might take a while
|
|
||||||
set timeout 20
|
|
||||||
|
|
||||||
expect_after {
|
|
||||||
timeout { exit 1 }
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"Installing \"non-existing-plugin\""
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"\"non-existing-plugin\" download fail"
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"Done, press ENTER to continue" {
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
exit 1
|
|
|
@ -1,35 +0,0 @@
|
||||||
#!/usr/bin/env expect
|
|
||||||
|
|
||||||
# disables script output
|
|
||||||
log_user 0
|
|
||||||
|
|
||||||
spawn tmux
|
|
||||||
|
|
||||||
# Waiting for tmux to attach. If this is not done, next command, `send` will
|
|
||||||
# not work properly.
|
|
||||||
sleep 1
|
|
||||||
|
|
||||||
# this is tmux prefix + alt + u
|
|
||||||
send "u"
|
|
||||||
|
|
||||||
set timeout 5
|
|
||||||
|
|
||||||
expect_after {
|
|
||||||
timeout { exit 1 }
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"Removing \"tmux-example-plugin\""
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"\"tmux-example-plugin\" clean success"
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"Done, press ENTER to continue." {
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
exit 1
|
|
|
@ -1,44 +0,0 @@
|
||||||
#!/usr/bin/env expect
|
|
||||||
|
|
||||||
# disables script output
|
|
||||||
log_user 0
|
|
||||||
|
|
||||||
spawn tmux
|
|
||||||
|
|
||||||
# Waiting for tmux to attach. If this is not done, next command, `send` will
|
|
||||||
# not work properly.
|
|
||||||
sleep 1
|
|
||||||
|
|
||||||
# this is tmux prefix + I
|
|
||||||
send "I"
|
|
||||||
|
|
||||||
# cloning might take a while
|
|
||||||
set timeout 15
|
|
||||||
|
|
||||||
expect_after {
|
|
||||||
timeout { exit 1 }
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"Installing \"tmux-example-plugin\""
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"\"tmux-example-plugin\" download success"
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"Installing \"tmux-copycat\""
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"\"tmux-copycat\" download success"
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"Done, press ENTER to continue." {
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
exit 1
|
|
|
@ -1,50 +0,0 @@
|
||||||
#!/usr/bin/env expect
|
|
||||||
|
|
||||||
# disables script output
|
|
||||||
log_user 0
|
|
||||||
|
|
||||||
spawn tmux
|
|
||||||
|
|
||||||
# Waiting for tmux to attach. If this is not done, next command, `send` will
|
|
||||||
# not work properly.
|
|
||||||
sleep 1
|
|
||||||
|
|
||||||
# this is tmux prefix + I
|
|
||||||
send "I"
|
|
||||||
|
|
||||||
# cloning might take a while
|
|
||||||
set timeout 15
|
|
||||||
|
|
||||||
expect_after {
|
|
||||||
timeout { exit 1 }
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"Installing \"tmux-example-plugin\""
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"\"tmux-example-plugin\" download success"
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"Done, press ENTER to continue" {
|
|
||||||
send "
"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
sleep 1
|
|
||||||
# this is tmux prefix + I
|
|
||||||
send "I"
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"Already installed \"tmux-example-plugin\""
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"Done, press ENTER to continue" {
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
exit 1
|
|
|
@ -1,55 +0,0 @@
|
||||||
#!/usr/bin/env expect
|
|
||||||
|
|
||||||
# disables script output
|
|
||||||
log_user 0
|
|
||||||
|
|
||||||
spawn tmux
|
|
||||||
|
|
||||||
# Waiting for tmux to attach. If this is not done, next command, `send` will
|
|
||||||
# not work properly.
|
|
||||||
sleep 1
|
|
||||||
|
|
||||||
# this is tmux prefix + U
|
|
||||||
send "U"
|
|
||||||
|
|
||||||
set timeout 15
|
|
||||||
|
|
||||||
expect_after {
|
|
||||||
timeout { exit 1 }
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"Installed plugins"
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"tmux-example-plugin"
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"\"all\" - updates all plugins"
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"ENTER - cancels"
|
|
||||||
}
|
|
||||||
|
|
||||||
# wait for tmux to display prompt before sending characters
|
|
||||||
sleep 1
|
|
||||||
send "tmux-example-plugin\r"
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"Updating \"tmux-example-plugin\""
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"\"tmux-example-plugin\" update success"
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"Done, press ENTER to continue." {
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
exit 1
|
|
|
@ -1,59 +0,0 @@
|
||||||
#!/usr/bin/env expect
|
|
||||||
|
|
||||||
# disables script output
|
|
||||||
log_user 0
|
|
||||||
|
|
||||||
spawn tmux
|
|
||||||
|
|
||||||
# Waiting for tmux to attach. If this is not done, next command, `send` will
|
|
||||||
# not work properly.
|
|
||||||
sleep 1
|
|
||||||
|
|
||||||
# this is tmux prefix + U
|
|
||||||
send "U"
|
|
||||||
|
|
||||||
set timeout 5
|
|
||||||
|
|
||||||
expect_after {
|
|
||||||
timeout { exit 1 }
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"Installed plugins"
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"tmux-example-plugin"
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"\"all\" - updates all plugins"
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"ENTER - cancels"
|
|
||||||
}
|
|
||||||
|
|
||||||
# wait for tmux to display prompt before sending characters
|
|
||||||
sleep 1
|
|
||||||
send "all\r"
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"Updating all plugins!"
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"Updating \"tmux-example-plugin\""
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"\"tmux-example-plugin\" update success"
|
|
||||||
}
|
|
||||||
|
|
||||||
expect {
|
|
||||||
"Done, press ENTER to continue." {
|
|
||||||
exit 0
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
exit 1
|
|
|
@ -1,13 +0,0 @@
|
||||||
check_dir_exists_helper() {
|
|
||||||
[ -d "$1" ]
|
|
||||||
}
|
|
||||||
|
|
||||||
# runs the scripts and asserts it has the correct output and exit code
|
|
||||||
script_run_helper() {
|
|
||||||
local script="$1"
|
|
||||||
local expected_output="$2"
|
|
||||||
local expected_exit_code="${3:-0}"
|
|
||||||
$script 2>&1 |
|
|
||||||
grep "$expected_output" >/dev/null 2>&1 && # grep -q flag quits the script early
|
|
||||||
[ "${PIPESTATUS[0]}" -eq "$expected_exit_code" ]
|
|
||||||
}
|
|
|
@ -1,67 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
TPM_DIR="$PWD"
|
|
||||||
PLUGINS_DIR="$HOME/.tmux/plugins"
|
|
||||||
|
|
||||||
source "$CURRENT_DIR/helpers/helpers.sh"
|
|
||||||
source "$CURRENT_DIR/helpers/tpm.sh"
|
|
||||||
|
|
||||||
manually_install_the_plugin() {
|
|
||||||
rm -rf "$PLUGINS_DIR"
|
|
||||||
mkdir -p "$PLUGINS_DIR"
|
|
||||||
cd "$PLUGINS_DIR"
|
|
||||||
git clone --quiet https://github.com/tmux-plugins/tmux-example-plugin
|
|
||||||
}
|
|
||||||
|
|
||||||
# TMUX KEY-BINDING TESTS
|
|
||||||
|
|
||||||
test_plugin_uninstallation_via_tmux_key_binding() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
manually_install_the_plugin
|
|
||||||
|
|
||||||
"$CURRENT_DIR/expect_successful_clean_plugins" ||
|
|
||||||
fail_helper "[key-binding] clean fails"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
# SCRIPT TESTS
|
|
||||||
|
|
||||||
test_plugin_uninstallation_via_script() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
manually_install_the_plugin
|
|
||||||
|
|
||||||
script_run_helper "$TPM_DIR/bin/clean_plugins" '"tmux-example-plugin" clean success' ||
|
|
||||||
fail_helper "[script] plugin cleaning fails"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
test_unsuccessful_plugin_uninstallation_via_script() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
manually_install_the_plugin
|
|
||||||
chmod 000 "$PLUGINS_DIR/tmux-example-plugin" # disable directory deletion
|
|
||||||
|
|
||||||
local expected_exit_code=1
|
|
||||||
script_run_helper "$TPM_DIR/bin/clean_plugins" '"tmux-example-plugin" clean fail' "$expected_exit_code" ||
|
|
||||||
fail_helper "[script] unsuccessful plugin cleaning doesn't fail"
|
|
||||||
|
|
||||||
chmod 755 "$PLUGINS_DIR/tmux-example-plugin" # enable directory deletion
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
run_tests
|
|
|
@ -1,284 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
PLUGINS_DIR="$HOME/.tmux/plugins"
|
|
||||||
TPM_DIR="$PWD"
|
|
||||||
|
|
||||||
CUSTOM_PLUGINS_DIR="$HOME/foo/plugins"
|
|
||||||
ADDITIONAL_CONFIG_FILE_1="$HOME/.tmux/additional_config_file_1"
|
|
||||||
ADDITIONAL_CONFIG_FILE_2="$HOME/.tmux/additional_config_file_2"
|
|
||||||
|
|
||||||
source "$CURRENT_DIR/helpers/helpers.sh"
|
|
||||||
source "$CURRENT_DIR/helpers/tpm.sh"
|
|
||||||
|
|
||||||
# TMUX KEY-BINDING TESTS
|
|
||||||
|
|
||||||
test_plugin_installation_via_tmux_key_binding() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
"$CURRENT_DIR/expect_successful_plugin_download" ||
|
|
||||||
fail_helper "[key-binding] plugin installation fails"
|
|
||||||
|
|
||||||
check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" ||
|
|
||||||
fail_helper "[key-binding] plugin download fails"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
test_plugin_installation_via_tmux_key_binding_set_option() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
set-option -g @plugin "tmux-plugins/tmux-example-plugin"
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
"$CURRENT_DIR/expect_successful_plugin_download" ||
|
|
||||||
fail_helper "[key-binding][set-option] plugin installation fails"
|
|
||||||
|
|
||||||
check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" ||
|
|
||||||
fail_helper "[key-binding][set-option] plugin download fails"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
test_plugin_installation_custom_dir_via_tmux_key_binding() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
set-environment -g TMUX_PLUGIN_MANAGER_PATH '$CUSTOM_PLUGINS_DIR'
|
|
||||||
|
|
||||||
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
"$CURRENT_DIR/expect_successful_plugin_download" ||
|
|
||||||
fail_helper "[key-binding][custom dir] plugin installation fails"
|
|
||||||
|
|
||||||
check_dir_exists_helper "$CUSTOM_PLUGINS_DIR/tmux-example-plugin/" ||
|
|
||||||
fail_helper "[key-binding][custom dir] plugin download fails"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
rm -rf "$CUSTOM_PLUGINS_DIR"
|
|
||||||
}
|
|
||||||
|
|
||||||
test_non_existing_plugin_installation_via_tmux_key_binding() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
set -g @plugin "tmux-plugins/non-existing-plugin"
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
"$CURRENT_DIR/expect_failed_plugin_download" ||
|
|
||||||
fail_helper "[key-binding] non existing plugin installation doesn't fail"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
test_multiple_plugins_installation_via_tmux_key_binding() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
|
||||||
\ \ set -g @plugin 'tmux-plugins/tmux-copycat'
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
"$CURRENT_DIR/expect_successful_multiple_plugins_download" ||
|
|
||||||
fail_helper "[key-binding] multiple plugins installation fails"
|
|
||||||
|
|
||||||
check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" ||
|
|
||||||
fail_helper "[key-binding] plugin download fails (tmux-example-plugin)"
|
|
||||||
|
|
||||||
check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" ||
|
|
||||||
fail_helper "[key-binding] plugin download fails (tmux-copycat)"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
test_plugins_installation_from_sourced_file_via_tmux_key_binding() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
source '$ADDITIONAL_CONFIG_FILE_1'
|
|
||||||
set -g @plugin 'tmux-plugins/tmux-example-plugin'
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
mkdir ~/.tmux
|
|
||||||
echo "set -g @plugin 'tmux-plugins/tmux-copycat'" > "$ADDITIONAL_CONFIG_FILE_1"
|
|
||||||
|
|
||||||
"$CURRENT_DIR/expect_successful_multiple_plugins_download" ||
|
|
||||||
fail_helper "[key-binding][sourced file] plugins installation fails"
|
|
||||||
|
|
||||||
check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" ||
|
|
||||||
fail_helper "[key-binding][sourced file] plugin download fails (tmux-example-plugin)"
|
|
||||||
|
|
||||||
check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" ||
|
|
||||||
fail_helper "[key-binding][sourced file] plugin download fails (tmux-copycat)"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
test_plugins_installation_from_multiple_sourced_files_via_tmux_key_binding() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
\ \ source '$ADDITIONAL_CONFIG_FILE_1'
|
|
||||||
source-file '$ADDITIONAL_CONFIG_FILE_2'
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
mkdir ~/.tmux
|
|
||||||
echo "set -g @plugin 'tmux-plugins/tmux-example-plugin'" > "$ADDITIONAL_CONFIG_FILE_1"
|
|
||||||
echo " set -g @plugin 'tmux-plugins/tmux-copycat'" > "$ADDITIONAL_CONFIG_FILE_2"
|
|
||||||
|
|
||||||
"$CURRENT_DIR/expect_successful_multiple_plugins_download" ||
|
|
||||||
fail_helper "[key-binding][multiple sourced files] plugins installation fails"
|
|
||||||
|
|
||||||
check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" ||
|
|
||||||
fail_helper "[key-binding][multiple sourced files] plugin download fails (tmux-example-plugin)"
|
|
||||||
|
|
||||||
check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" ||
|
|
||||||
fail_helper "[key-binding][multiple sourced files] plugin download fails (tmux-copycat)"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
# SCRIPT TESTS
|
|
||||||
|
|
||||||
test_plugin_installation_via_script() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-example-plugin" download success' ||
|
|
||||||
fail_helper "[script] plugin installation fails"
|
|
||||||
|
|
||||||
check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" ||
|
|
||||||
fail_helper "[script] plugin download fails"
|
|
||||||
|
|
||||||
script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-example-plugin"' ||
|
|
||||||
fail_helper "[script] plugin already installed message fail"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
test_plugin_installation_custom_dir_via_script() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
set-environment -g TMUX_PLUGIN_MANAGER_PATH '$CUSTOM_PLUGINS_DIR'
|
|
||||||
|
|
||||||
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-example-plugin" download success' ||
|
|
||||||
fail_helper "[script][custom dir] plugin installation fails"
|
|
||||||
|
|
||||||
check_dir_exists_helper "$CUSTOM_PLUGINS_DIR/tmux-example-plugin/" ||
|
|
||||||
fail_helper "[script][custom dir] plugin download fails"
|
|
||||||
|
|
||||||
script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-example-plugin"' ||
|
|
||||||
fail_helper "[script][custom dir] plugin already installed message fail"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
rm -rf "$CUSTOM_PLUGINS_DIR"
|
|
||||||
}
|
|
||||||
|
|
||||||
test_non_existing_plugin_installation_via_script() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
set -g @plugin "tmux-plugins/non-existing-plugin"
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
local expected_exit_code=1
|
|
||||||
script_run_helper "$TPM_DIR/bin/install_plugins" '"non-existing-plugin" download fail' "$expected_exit_code" ||
|
|
||||||
fail_helper "[script] non existing plugin installation doesn't fail"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
test_multiple_plugins_installation_via_script() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
|
||||||
\ \ set -g @plugin 'tmux-plugins/tmux-copycat'
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-example-plugin" download success' ||
|
|
||||||
fail_helper "[script] multiple plugins installation fails"
|
|
||||||
|
|
||||||
check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" ||
|
|
||||||
fail_helper "[script] plugin download fails (tmux-example-plugin)"
|
|
||||||
|
|
||||||
check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" ||
|
|
||||||
fail_helper "[script] plugin download fails (tmux-copycat)"
|
|
||||||
|
|
||||||
script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-copycat"' ||
|
|
||||||
fail_helper "[script] multiple plugins already installed message fail"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
test_plugins_installation_from_sourced_file_via_script() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
source '$ADDITIONAL_CONFIG_FILE_1'
|
|
||||||
set -g @plugin 'tmux-plugins/tmux-example-plugin'
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
mkdir ~/.tmux
|
|
||||||
echo "set -g @plugin 'tmux-plugins/tmux-copycat'" > "$ADDITIONAL_CONFIG_FILE_1"
|
|
||||||
|
|
||||||
script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-copycat" download success' ||
|
|
||||||
fail_helper "[script][sourced file] plugins installation fails"
|
|
||||||
|
|
||||||
check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" ||
|
|
||||||
fail_helper "[script][sourced file] plugin download fails (tmux-example-plugin)"
|
|
||||||
|
|
||||||
check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" ||
|
|
||||||
fail_helper "[script][sourced file] plugin download fails (tmux-copycat)"
|
|
||||||
|
|
||||||
script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-copycat"' ||
|
|
||||||
fail_helper "[script][sourced file] plugins already installed message fail"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
test_plugins_installation_from_multiple_sourced_files_via_script() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
\ \ source '$ADDITIONAL_CONFIG_FILE_1'
|
|
||||||
source-file '$ADDITIONAL_CONFIG_FILE_2'
|
|
||||||
set -g @plugin 'tmux-plugins/tmux-example-plugin'
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
mkdir ~/.tmux
|
|
||||||
echo " set -g @plugin 'tmux-plugins/tmux-copycat'" > "$ADDITIONAL_CONFIG_FILE_1"
|
|
||||||
echo "set -g @plugin 'tmux-plugins/tmux-sensible'" > "$ADDITIONAL_CONFIG_FILE_2"
|
|
||||||
|
|
||||||
script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-sensible" download success' ||
|
|
||||||
fail_helper "[script][multiple sourced files] plugins installation fails"
|
|
||||||
|
|
||||||
check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" ||
|
|
||||||
fail_helper "[script][multiple sourced files] plugin download fails (tmux-example-plugin)"
|
|
||||||
|
|
||||||
check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" ||
|
|
||||||
fail_helper "[script][multiple sourced files] plugin download fails (tmux-copycat)"
|
|
||||||
|
|
||||||
check_dir_exists_helper "$PLUGINS_DIR/tmux-sensible/" ||
|
|
||||||
fail_helper "[script][multiple sourced files] plugin download fails (tmux-sensible)"
|
|
||||||
|
|
||||||
script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-sensible"' ||
|
|
||||||
fail_helper "[script][multiple sourced files] plugins already installed message fail"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
run_tests
|
|
|
@ -1,100 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
PLUGINS_DIR="$HOME/.tmux/plugins"
|
|
||||||
TPM_DIR="$PWD"
|
|
||||||
|
|
||||||
source "$CURRENT_DIR/helpers/helpers.sh"
|
|
||||||
source "$CURRENT_DIR/helpers/tpm.sh"
|
|
||||||
|
|
||||||
# TMUX KEY-BINDING TESTS
|
|
||||||
|
|
||||||
test_plugin_installation_via_tmux_key_binding() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
set -g @tpm_plugins "tmux-plugins/tmux-example-plugin"
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
# opens tmux and test it with `expect`
|
|
||||||
$CURRENT_DIR/expect_successful_plugin_download ||
|
|
||||||
fail_helper "[key-binding] plugin installation fails"
|
|
||||||
|
|
||||||
# check plugin dir exists after download
|
|
||||||
check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" ||
|
|
||||||
fail_helper "[key-binding] plugin download fails"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
test_legacy_and_new_syntax_for_plugin_installation_work_via_tmux_key_binding() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
set -g @tpm_plugins " \
|
|
||||||
tmux-plugins/tmux-example-plugin \
|
|
||||||
"
|
|
||||||
set -g @plugin 'tmux-plugins/tmux-copycat'
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
# opens tmux and test it with `expect`
|
|
||||||
"$CURRENT_DIR"/expect_successful_multiple_plugins_download ||
|
|
||||||
fail_helper "[key-binding] multiple plugins installation fails"
|
|
||||||
|
|
||||||
# check plugin dir exists after download
|
|
||||||
check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" ||
|
|
||||||
fail_helper "[key-binding] plugin download fails (tmux-example-plugin)"
|
|
||||||
|
|
||||||
check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" ||
|
|
||||||
fail_helper "[key-binding] plugin download fails (tmux-copycat)"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
# SCRIPT TESTS
|
|
||||||
|
|
||||||
test_plugin_installation_via_script() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
set -g @tpm_plugins "tmux-plugins/tmux-example-plugin"
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-example-plugin" download success' ||
|
|
||||||
fail_helper "[script] plugin installation fails"
|
|
||||||
|
|
||||||
check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" ||
|
|
||||||
fail_helper "[script] plugin download fails"
|
|
||||||
|
|
||||||
script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-example-plugin"' ||
|
|
||||||
fail_helper "[script] plugin already installed message fail"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
test_legacy_and_new_syntax_for_plugin_installation_work_via_script() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
set -g @tpm_plugins " \
|
|
||||||
tmux-plugins/tmux-example-plugin \
|
|
||||||
"
|
|
||||||
set -g @plugin 'tmux-plugins/tmux-copycat'
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
script_run_helper "$TPM_DIR/bin/install_plugins" '"tmux-example-plugin" download success' ||
|
|
||||||
fail_helper "[script] multiple plugin installation fails"
|
|
||||||
|
|
||||||
check_dir_exists_helper "$PLUGINS_DIR/tmux-example-plugin/" ||
|
|
||||||
fail_helper "[script] plugin download fails (tmux-example-plugin)"
|
|
||||||
|
|
||||||
check_dir_exists_helper "$PLUGINS_DIR/tmux-copycat/" ||
|
|
||||||
fail_helper "[script] plugin download fails (tmux-copycat)"
|
|
||||||
|
|
||||||
script_run_helper "$TPM_DIR/bin/install_plugins" 'Already installed "tmux-copycat"' ||
|
|
||||||
fail_helper "[script] multiple plugins already installed message fail"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
run_tests
|
|
|
@ -1,78 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
TPM_DIR="$PWD"
|
|
||||||
PLUGINS_DIR="$HOME/.tmux/plugins"
|
|
||||||
|
|
||||||
CUSTOM_PLUGINS_DIR="$HOME/foo/plugins"
|
|
||||||
|
|
||||||
source "$CURRENT_DIR/helpers/helpers.sh"
|
|
||||||
source "$CURRENT_DIR/helpers/tpm.sh"
|
|
||||||
|
|
||||||
check_binding_defined() {
|
|
||||||
local binding="$1"
|
|
||||||
tmux list-keys | grep -q "$binding"
|
|
||||||
}
|
|
||||||
|
|
||||||
create_test_plugin_helper() {
|
|
||||||
local plugin_path="$PLUGINS_DIR/tmux_test_plugin/"
|
|
||||||
rm -rf "$plugin_path"
|
|
||||||
mkdir -p "$plugin_path"
|
|
||||||
|
|
||||||
while read line; do
|
|
||||||
echo "$line" >> "$plugin_path/test_plugin.tmux"
|
|
||||||
done
|
|
||||||
chmod +x "$plugin_path/test_plugin.tmux"
|
|
||||||
}
|
|
||||||
|
|
||||||
check_tpm_path() {
|
|
||||||
local correct_tpm_path="$1"
|
|
||||||
local tpm_path="$(tmux start-server\; show-environment -g TMUX_PLUGIN_MANAGER_PATH | cut -f2 -d=)"
|
|
||||||
[ "$correct_tpm_path" == "$tpm_path" ]
|
|
||||||
}
|
|
||||||
|
|
||||||
test_plugin_sourcing() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
set -g @plugin "doesnt_matter/tmux_test_plugin"
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
# manually creates a local tmux plugin
|
|
||||||
create_test_plugin_helper <<- HERE
|
|
||||||
tmux bind-key R run-shell foo_command
|
|
||||||
HERE
|
|
||||||
|
|
||||||
tmux new-session -d # tmux starts detached
|
|
||||||
check_binding_defined "R run-shell foo_command" ||
|
|
||||||
fail_helper "Plugin sourcing fails"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
test_default_tpm_path() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
check_tpm_path "${PLUGINS_DIR}/" ||
|
|
||||||
fail_helper "Default TPM path not correct"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
test_custom_tpm_path() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
set-environment -g TMUX_PLUGIN_MANAGER_PATH '$CUSTOM_PLUGINS_DIR'
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
check_tpm_path "$CUSTOM_PLUGINS_DIR" ||
|
|
||||||
fail_helper "Custom TPM path not correct"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
run_tests
|
|
|
@ -1,60 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
TPM_DIR="$PWD"
|
|
||||||
PLUGINS_DIR="$HOME/.tmux/plugins"
|
|
||||||
|
|
||||||
source "$CURRENT_DIR/helpers/helpers.sh"
|
|
||||||
source "$CURRENT_DIR/helpers/tpm.sh"
|
|
||||||
|
|
||||||
manually_install_the_plugin() {
|
|
||||||
mkdir -p "$PLUGINS_DIR"
|
|
||||||
cd "$PLUGINS_DIR"
|
|
||||||
git clone --quiet https://github.com/tmux-plugins/tmux-example-plugin
|
|
||||||
}
|
|
||||||
|
|
||||||
# TMUX KEY-BINDING TESTS
|
|
||||||
|
|
||||||
test_plugin_update_via_tmux_key_binding() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
manually_install_the_plugin
|
|
||||||
|
|
||||||
"$CURRENT_DIR/expect_successful_update_of_all_plugins" ||
|
|
||||||
fail_helper "[key-binding] 'update all plugins' fails"
|
|
||||||
|
|
||||||
"$CURRENT_DIR/expect_successful_update_of_a_single_plugin" ||
|
|
||||||
fail_helper "[key-binding] 'update single plugin' fails"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
# SCRIPT TESTS
|
|
||||||
|
|
||||||
test_plugin_update_via_script() {
|
|
||||||
set_tmux_conf_helper <<- HERE
|
|
||||||
set -g mode-keys vi
|
|
||||||
set -g @plugin "tmux-plugins/tmux-example-plugin"
|
|
||||||
run-shell "$TPM_DIR/tpm"
|
|
||||||
HERE
|
|
||||||
|
|
||||||
manually_install_the_plugin
|
|
||||||
|
|
||||||
local expected_exit_code=1
|
|
||||||
script_run_helper "$TPM_DIR/bin/update_plugins" 'usage' "$expected_exit_code" ||
|
|
||||||
fail_helper "[script] running update plugins without args should fail"
|
|
||||||
|
|
||||||
script_run_helper "$TPM_DIR/bin/update_plugins tmux-example-plugin" '"tmux-example-plugin" update success' ||
|
|
||||||
fail_helper "[script] plugin update fails"
|
|
||||||
|
|
||||||
script_run_helper "$TPM_DIR/bin/update_plugins all" '"tmux-example-plugin" update success' ||
|
|
||||||
fail_helper "[script] update all plugins fails"
|
|
||||||
|
|
||||||
teardown_helper
|
|
||||||
}
|
|
||||||
|
|
||||||
run_tests
|
|
|
@ -1,81 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
CURRENT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
|
||||||
BINDINGS_DIR="$CURRENT_DIR/bindings"
|
|
||||||
SCRIPTS_DIR="$CURRENT_DIR/scripts"
|
|
||||||
|
|
||||||
source "$SCRIPTS_DIR/variables.sh"
|
|
||||||
|
|
||||||
get_tmux_option() {
|
|
||||||
local option="$1"
|
|
||||||
local default_value="$2"
|
|
||||||
local option_value="$(tmux show-option -gqv "$option")"
|
|
||||||
if [ -z "$option_value" ]; then
|
|
||||||
echo "$default_value"
|
|
||||||
else
|
|
||||||
echo "$option_value"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
tpm_path_set() {
|
|
||||||
tmux show-environment -g "$DEFAULT_TPM_ENV_VAR_NAME" >/dev/null 2>&1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check if configuration file exists at an XDG-compatible location, if so use
|
|
||||||
# that directory for TMUX_PLUGIN_MANAGER_PATH. Otherwise use $DEFAULT_TPM_PATH.
|
|
||||||
set_default_tpm_path() {
|
|
||||||
local xdg_tmux_path="${XDG_CONFIG_HOME:-$HOME/.config}/tmux"
|
|
||||||
local tpm_path="$DEFAULT_TPM_PATH"
|
|
||||||
|
|
||||||
if [ -f "$xdg_tmux_path/tmux.conf" ]; then
|
|
||||||
tpm_path="$xdg_tmux_path/plugins/"
|
|
||||||
fi
|
|
||||||
|
|
||||||
tmux set-environment -g "$DEFAULT_TPM_ENV_VAR_NAME" "$tpm_path"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Ensures TMUX_PLUGIN_MANAGER_PATH global env variable is set.
|
|
||||||
#
|
|
||||||
# Put this in `.tmux.conf` to override the default:
|
|
||||||
# `set-environment -g TMUX_PLUGIN_MANAGER_PATH "/some/other/path/"`
|
|
||||||
set_tpm_path() {
|
|
||||||
if ! tpm_path_set; then
|
|
||||||
set_default_tpm_path
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# 1. Fetches plugin names from `@plugin` variables
|
|
||||||
# 2. Creates full plugin path
|
|
||||||
# 3. Sources all *.tmux files from each of the plugin directories
|
|
||||||
# - no errors raised if directory does not exist
|
|
||||||
# Files are sourced as tmux config files, not as shell scripts!
|
|
||||||
source_plugins() {
|
|
||||||
"$SCRIPTS_DIR/source_plugins.sh" >/dev/null 2>&1
|
|
||||||
}
|
|
||||||
|
|
||||||
# prefix + I - downloads TPM plugins and reloads TMUX environment
|
|
||||||
# prefix + U - updates a plugin (or all of them) and reloads TMUX environment
|
|
||||||
# prefix + alt + u - remove unused TPM plugins and reloads TMUX environment
|
|
||||||
set_tpm_key_bindings() {
|
|
||||||
local install_key="$(get_tmux_option "$install_key_option" "$default_install_key")"
|
|
||||||
tmux bind-key "$install_key" run-shell "$BINDINGS_DIR/install_plugins"
|
|
||||||
|
|
||||||
local update_key="$(get_tmux_option "$update_key_option" "$default_update_key")"
|
|
||||||
tmux bind-key "$update_key" run-shell "$BINDINGS_DIR/update_plugins"
|
|
||||||
|
|
||||||
local clean_key="$(get_tmux_option "$clean_key_option" "$default_clean_key")"
|
|
||||||
tmux bind-key "$clean_key" run-shell "$BINDINGS_DIR/clean_plugins"
|
|
||||||
}
|
|
||||||
|
|
||||||
supported_tmux_version_ok() {
|
|
||||||
"$SCRIPTS_DIR/check_tmux_version.sh" "$SUPPORTED_TMUX_VERSION"
|
|
||||||
}
|
|
||||||
|
|
||||||
main() {
|
|
||||||
if supported_tmux_version_ok; then
|
|
||||||
set_tpm_path
|
|
||||||
set_tpm_key_bindings
|
|
||||||
source_plugins
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
main
|
|
|
@ -1,95 +0,0 @@
|
||||||
source-file ~/.config/tmux/tmux.reset.conf
|
|
||||||
set-option -g default-terminal 'screen-254color'
|
|
||||||
set-option -g terminal-overrides ',xterm-256color:RGB'
|
|
||||||
|
|
||||||
set -g prefix ^A
|
|
||||||
set -g detach-on-destroy off # don't exit from tmux when closing a session
|
|
||||||
set -g escape-time 0 # zero-out escape time delay
|
|
||||||
set -g history-limit 1000000 # increase history size (from 2,000)
|
|
||||||
set -g renumber-windows on # renumber all windows when any window is closed
|
|
||||||
set -g set-clipboard on # use system clipboard
|
|
||||||
set -g status-position bottom # macOS / darwin style
|
|
||||||
set -g default-terminal "${TERM}"
|
|
||||||
set -g pane-active-border-style 'fg=magenta,bg=default'
|
|
||||||
set -g pane-border-style 'fg=brightblack,bg=default'
|
|
||||||
set -g mouse on
|
|
||||||
#bind-key -r B run-shell "~/.config/tmux/scripts/sessionizer.sh ~/omerxx/omerxx.com"
|
|
||||||
|
|
||||||
#set -g @fzf-url-fzf-options '-p 60%,30% --prompt=" " --border-label=" Open URL "'
|
|
||||||
#set -g @fzf-url-history-limit '2000'
|
|
||||||
|
|
||||||
# Vim style pane selection
|
|
||||||
bind h select-pane -L
|
|
||||||
bind j select-pane -D
|
|
||||||
bind k select-pane -U
|
|
||||||
bind l select-pane -R
|
|
||||||
|
|
||||||
# Start windows and panes at 1, not 0
|
|
||||||
set -g base-index 1
|
|
||||||
set -g pane-base-index 1
|
|
||||||
set-window-option -g pane-base-index 1
|
|
||||||
set-option -g renumber-windows on
|
|
||||||
|
|
||||||
# Use Alt-arrow keys without prefix key to switch panes
|
|
||||||
#bind -n M-Left select-pane -L
|
|
||||||
#bind -n M-Right select-pane -R
|
|
||||||
#bind -n M-Up select-pane -U
|
|
||||||
#bind -n M-Down select-pane -D
|
|
||||||
|
|
||||||
# Shift arrow to switch windows
|
|
||||||
#bind -n S-Left previous-window
|
|
||||||
#bind -n S-Right next-window
|
|
||||||
|
|
||||||
# Shift Alt vim keys to switch windows
|
|
||||||
#bind -n M-H previous-window
|
|
||||||
#bind -n M-L next-window
|
|
||||||
|
|
||||||
# set vi-mode
|
|
||||||
set-window-option -g mode-keys vi
|
|
||||||
# keybindings
|
|
||||||
bind-key -T copy-mode-vi v send-keys -X begin-selection
|
|
||||||
bind-key -T copy-mode-vi C-v send-keys -X rectangle-toggle
|
|
||||||
bind-key -T copy-mode-vi y send-keys -X copy-selection-and-cancel
|
|
||||||
|
|
||||||
#bind '"' split-window -v -c "#{pane_current_path}"
|
|
||||||
#bind % split-window -h -c "#{pane_current_path}"
|
|
||||||
|
|
||||||
set -g @plugin 'tmux-plugins/tpm'
|
|
||||||
set -g @plugin 'tmux-plugins/tmux-sensible'
|
|
||||||
set -g @plugin 'tmux-plugins/tmux-yank'
|
|
||||||
set -g @plugin 'tmux-plugins/tmux-resurrect'
|
|
||||||
set -g @plugin 'tmux-plugins/tmux-continuum'
|
|
||||||
#set -g @plugin 'fcsonline/tmux-thumbs'
|
|
||||||
#set -g @plugin 'sainnhe/tmux-fzf'
|
|
||||||
#set -g @plugin 'wfxr/tmux-fzf-url'
|
|
||||||
#set -g @plugin 'omerxx/catppuccin-tmux' # My fork that holds the meetings script bc I'm lazy af
|
|
||||||
#set -g @plugin 'omerxx/tmux-sessionx'
|
|
||||||
|
|
||||||
#set -g @sessionx-bind 'o'
|
|
||||||
#set -g @sessionx-x-path '~/dotfiles'
|
|
||||||
#set -g @sessionx-window-height '85%'
|
|
||||||
#set -g @sessionx-window-width '75%'
|
|
||||||
#set -g @sessionx-zoxide-mode 'on'
|
|
||||||
#set -g @continuum-restore 'on'
|
|
||||||
#set -g @resurrect-strategy-nvim 'session'
|
|
||||||
#set -g @catppuccin_window_left_separator ""
|
|
||||||
#set -g @catppuccin_window_right_separator " "
|
|
||||||
#set -g @catppuccin_window_middle_separator " █"
|
|
||||||
#set -g @catppuccin_window_number_position "right"
|
|
||||||
#set -g @catppuccin_window_default_fill "number"
|
|
||||||
#set -g @catppuccin_window_default_text "#W"
|
|
||||||
#set -g @catppuccin_window_current_fill "number"
|
|
||||||
#set -g @catppuccin_window_current_text "#W#{?window_zoomed_flag,(),}"
|
|
||||||
#set -g @catppuccin_status_modules_right "directory date_time"
|
|
||||||
#set -g @catppuccin_status_modules_left "session"
|
|
||||||
#set -g @catppuccin_status_left_separator " "
|
|
||||||
#set -g @catppuccin_status_right_separator " "
|
|
||||||
#set -g @catppuccin_status_right_separator_inverse "no"
|
|
||||||
#set -g @catppuccin_status_fill "icon"
|
|
||||||
#set -g @catppuccin_status_connect_separator "no"
|
|
||||||
#set -g @catppuccin_directory_text "#{b:pane_current_path}"
|
|
||||||
#set -g @catppuccin_meetings_text "#($HOME/.config/tmux/scripts/cal.sh)"
|
|
||||||
#set -g @catppuccin_meetings_text ""
|
|
||||||
#set -g @catppuccin_date_time_text "%H:%M"
|
|
||||||
|
|
||||||
run '~/.config/tmux/plugins/tpm/tpm'
|
|
|
@ -1,38 +0,0 @@
|
||||||
# First remove *all* keybindings
|
|
||||||
# unbind-key -a
|
|
||||||
# Now reinsert all the regular tmux keys
|
|
||||||
bind ^X lock-server
|
|
||||||
bind ^C new-window -c "$HOME"
|
|
||||||
bind ^D detach
|
|
||||||
bind * list-clients
|
|
||||||
|
|
||||||
bind H previous-window
|
|
||||||
bind L next-window
|
|
||||||
|
|
||||||
bind r command-prompt "rename-window %%"
|
|
||||||
bind R source-file ~/.config/tmux/tmux.conf
|
|
||||||
bind ^A last-window
|
|
||||||
bind ^W list-windows
|
|
||||||
bind w list-windows
|
|
||||||
bind z resize-pane -Z
|
|
||||||
bind ^L refresh-client
|
|
||||||
bind l refresh-client
|
|
||||||
bind | split-window
|
|
||||||
bind s split-window -v -c "#{pane_current_path}"
|
|
||||||
bind v split-window -h -c "#{pane_current_path}"
|
|
||||||
bind '"' choose-window
|
|
||||||
bind h select-pane -L
|
|
||||||
bind j select-pane -D
|
|
||||||
bind k select-pane -U
|
|
||||||
bind l select-pane -R
|
|
||||||
bind -r -T prefix , resize-pane -L 20
|
|
||||||
bind -r -T prefix . resize-pane -R 20
|
|
||||||
bind -r -T prefix - resize-pane -D 7
|
|
||||||
bind -r -T prefix = resize-pane -U 7
|
|
||||||
bind : command-prompt
|
|
||||||
bind * setw synchronize-panes
|
|
||||||
bind P set pane-border-status
|
|
||||||
bind c kill-pane
|
|
||||||
bind x swap-pane -D
|
|
||||||
bind S choose-session
|
|
||||||
bind-key -T copy-mode-vi v send-keys -X begin-selection
|
|
|
@ -2,7 +2,7 @@
|
||||||
# your system. Help is available in the configuration.nix(5) man page
|
# your system. Help is available in the configuration.nix(5) man page
|
||||||
# and in the NixOS manual (accessible by running ’nixos-help’).
|
# and in the NixOS manual (accessible by running ’nixos-help’).
|
||||||
|
|
||||||
{ config, pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
hardware.bluetooth.enable = true;
|
hardware.bluetooth.enable = true;
|
||||||
|
@ -61,12 +61,12 @@
|
||||||
../../modules/console.nix
|
../../modules/console.nix
|
||||||
../../modules/desktop.nix
|
../../modules/desktop.nix
|
||||||
../../modules/fonts.nix
|
../../modules/fonts.nix
|
||||||
../../modules/home-config.nix
|
|
||||||
../../modules/laptop.nix
|
../../modules/laptop.nix
|
||||||
../../modules/local-dev.nix
|
../../modules/local-dev.nix
|
||||||
../../modules/nixos.nix
|
../../modules/nixos.nix
|
||||||
../../modules/systemd-unfreeze.nix
|
../../modules/systemd-unfreeze.nix
|
||||||
../../modules/zen-browser.nix
|
../../modules/zen-browser.nix
|
||||||
|
../../users/mrflos.nix
|
||||||
];
|
];
|
||||||
services.eris-server = {
|
services.eris-server = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
|
@ -62,11 +62,6 @@
|
||||||
firefox.nativeMessagingHosts.packages = [ pkgs.passff-host ];
|
firefox.nativeMessagingHosts.packages = [ pkgs.passff-host ];
|
||||||
hyprland.enable = true;
|
hyprland.enable = true;
|
||||||
niri.enable = true;
|
niri.enable = true;
|
||||||
ssh.askPassword = pkgs.lib.mkForce "${pkgs.ksshaskpass.out}/bin/ksshaskpass"; # conflict between kde and gnome cf. https://github.com/NixOS/nixpkgs/issues/75867
|
|
||||||
ssh.startAgent = true;
|
|
||||||
|
|
||||||
steam.enable = true;
|
|
||||||
|
|
||||||
nix-ld.enable = true;
|
nix-ld.enable = true;
|
||||||
# Sets up all the libraries to load
|
# Sets up all the libraries to load
|
||||||
nix-ld.libraries = with pkgs; [
|
nix-ld.libraries = with pkgs; [
|
||||||
|
@ -74,6 +69,9 @@
|
||||||
stdenv.cc.cc.lib
|
stdenv.cc.cc.lib
|
||||||
zlib
|
zlib
|
||||||
];
|
];
|
||||||
|
ssh.askPassword = pkgs.lib.mkForce "${pkgs.ksshaskpass.out}/bin/ksshaskpass"; # conflict between kde and gnome cf. https://github.com/NixOS/nixpkgs/issues/75867
|
||||||
|
ssh.startAgent = true;
|
||||||
|
steam.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
# Allow unfree packages
|
# Allow unfree packages
|
||||||
|
@ -144,7 +142,6 @@
|
||||||
mumble
|
mumble
|
||||||
nextcloud-client
|
nextcloud-client
|
||||||
pcmanfm
|
pcmanfm
|
||||||
thunderbird
|
|
||||||
tigervnc
|
tigervnc
|
||||||
transmission_4-qt
|
transmission_4-qt
|
||||||
unetbootin
|
unetbootin
|
||||||
|
|
101
modules/home-manager/emails.nix
Normal file
101
modules/home-manager/emails.nix
Normal file
|
@ -0,0 +1,101 @@
|
||||||
|
{
|
||||||
|
accounts.email.accounts = {
|
||||||
|
"mrflos@chmok.net" = {
|
||||||
|
realName = "Florian Schmitt";
|
||||||
|
userName = "mrflos@chmok.net";
|
||||||
|
address = "mrflos@chmok.net";
|
||||||
|
|
||||||
|
primary = true;
|
||||||
|
thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
imap = {
|
||||||
|
host = "mail.infomaniak.com";
|
||||||
|
port = 993;
|
||||||
|
};
|
||||||
|
|
||||||
|
smtp = {
|
||||||
|
host = "mail.infomaniak.com";
|
||||||
|
port = 465;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"mrflos@yeswiki.pro" = {
|
||||||
|
realName = "Florian Schmitt - Yeswiki.pro";
|
||||||
|
userName = "mrflos@yeswiki.pro";
|
||||||
|
address = "mrflos@yeswiki.pro";
|
||||||
|
|
||||||
|
thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
imap = {
|
||||||
|
host = "mail.infomaniak.com";
|
||||||
|
port = 993;
|
||||||
|
};
|
||||||
|
|
||||||
|
smtp = {
|
||||||
|
host = "mail.infomaniak.com";
|
||||||
|
port = 465;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"mrflos@mrflos.pw" = {
|
||||||
|
realName = "Florian Schmitt";
|
||||||
|
userName = "mrflos";
|
||||||
|
address = "mrflos@mrflos.pw";
|
||||||
|
|
||||||
|
primary = false;
|
||||||
|
thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
imap = {
|
||||||
|
host = "mrflos.pw";
|
||||||
|
port = 993;
|
||||||
|
#tls.enable = true;
|
||||||
|
#tls.useStartTls = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
smtp = {
|
||||||
|
host = "mrflos.pw";
|
||||||
|
port = 587;
|
||||||
|
#tls.useStartTls = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"contact@yeswiki.pro" = {
|
||||||
|
realName = "YesWiki.pro";
|
||||||
|
userName = "contact@yeswiki.pro";
|
||||||
|
address = "contact@yeswiki.pro";
|
||||||
|
|
||||||
|
primary = false;
|
||||||
|
thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
imap = {
|
||||||
|
host = "mail.infomaniak.com";
|
||||||
|
port = 993;
|
||||||
|
};
|
||||||
|
|
||||||
|
smtp = {
|
||||||
|
host = "mail.infomaniak.com";
|
||||||
|
port = 465;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
"contact@yeswiki.net" = {
|
||||||
|
realName = "YesWiki.net";
|
||||||
|
userName = "contact@yeswiki.net";
|
||||||
|
address = "contact@yeswiki.net";
|
||||||
|
|
||||||
|
primary = false;
|
||||||
|
thunderbird = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
imap = {
|
||||||
|
host = "mail.infomaniak.com";
|
||||||
|
port = 993;
|
||||||
|
};
|
||||||
|
|
||||||
|
smtp = {
|
||||||
|
host = "mail.infomaniak.com";
|
||||||
|
port = 465;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
356
users/mrflos.nix
356
users/mrflos.nix
|
@ -7,7 +7,6 @@ in
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
<home-manager/nixos>
|
<home-manager/nixos>
|
||||||
../dotfiles/dotfiles.nix
|
|
||||||
];
|
];
|
||||||
|
|
||||||
home-manager.useGlobalPkgs = true;
|
home-manager.useGlobalPkgs = true;
|
||||||
|
@ -31,255 +30,128 @@ in
|
||||||
home-manager.backupFileExtension = "backup";
|
home-manager.backupFileExtension = "backup";
|
||||||
home-manager.users.mrflos = {
|
home-manager.users.mrflos = {
|
||||||
home.stateVersion = "23.05";
|
home.stateVersion = "23.05";
|
||||||
};
|
imports = [
|
||||||
|
../modules/home-manager/emails.nix
|
||||||
# home.file = {
|
../modules/home-manager/dotfiles.nix
|
||||||
#"./.config/kitty/" = {
|
../modules/home-manager/tmux.nix
|
||||||
# force = true;
|
];
|
||||||
# source = ../dotfiles/kitty;
|
home.sessionVariables = {
|
||||||
# recursive = true;
|
EDITOR = "nvim";
|
||||||
#};
|
#LD_LIBRARY_PATH = "${pkgs.stdenv.cc.cc.lib}/lib";
|
||||||
#
|
|
||||||
#"./.config/lazygit/" = {
|
|
||||||
# force = true;
|
|
||||||
# source = ../dotfiles/lazygit;
|
|
||||||
# recursive = true;
|
|
||||||
#};
|
|
||||||
#
|
|
||||||
#"./.config/niri/" = {
|
|
||||||
# force = true;
|
|
||||||
# source = ../dotfiles/niri;
|
|
||||||
# recursive = true;
|
|
||||||
#};
|
|
||||||
#
|
|
||||||
#"./.config/nvim/" = {
|
|
||||||
# force = true;
|
|
||||||
# source = ../dotfiles/nvim;
|
|
||||||
# recursive = true;
|
|
||||||
#};
|
|
||||||
#
|
|
||||||
#"./.config/tmux/" = {
|
|
||||||
# force = true;
|
|
||||||
# source = ../dotfiles/tmux;
|
|
||||||
# recursive = true;
|
|
||||||
#};
|
|
||||||
#
|
|
||||||
#"./.config/waybar/" = {
|
|
||||||
# force = true;
|
|
||||||
# source = ../dotfiles/waybar;
|
|
||||||
# recursive = true;
|
|
||||||
#};
|
|
||||||
#};
|
|
||||||
home.sessionVariables = {
|
|
||||||
EDITOR = "nvim";
|
|
||||||
#LD_LIBRARY_PATH = "${pkgs.stdenv.cc.cc.lib}/lib";
|
|
||||||
};
|
|
||||||
home.sessionPath = [
|
|
||||||
"$HOME/Code/nixos-config/scripts"
|
|
||||||
"$HOME/.local/bin"
|
|
||||||
"$HOME/go/bin"
|
|
||||||
];
|
|
||||||
accounts.email.accounts = {
|
|
||||||
"mrflos@chmok.net" = {
|
|
||||||
realName = "Florian Schmitt";
|
|
||||||
userName = "mrflos@chmok.net";
|
|
||||||
address = "mrflos@chmok.net";
|
|
||||||
|
|
||||||
primary = true;
|
|
||||||
thunderbird = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
imap = {
|
|
||||||
host = "mail.infomaniak.com";
|
|
||||||
port = 993;
|
|
||||||
};
|
|
||||||
|
|
||||||
smtp = {
|
|
||||||
host = "mail.infomaniak.com";
|
|
||||||
port = 465;
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
"mrflos@yeswiki.pro" = {
|
home.sessionPath = [
|
||||||
realName = "Florian Schmitt - Yeswiki.pro";
|
"$HOME/Code/nixos-config/scripts"
|
||||||
userName = "mrflos@yeswiki.pro";
|
"$HOME/.local/bin"
|
||||||
address = "mrflos@yeswiki.pro";
|
"$HOME/go/bin"
|
||||||
|
];
|
||||||
|
|
||||||
|
programs = {
|
||||||
|
direnv = {
|
||||||
|
enable = true;
|
||||||
|
enableZshIntegration = true;
|
||||||
|
nix-direnv.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
git = {
|
||||||
|
enable = true;
|
||||||
|
userName = "Florian Schmitt";
|
||||||
|
userEmail = "mrflos@gmail.com";
|
||||||
|
aliases = {
|
||||||
|
fa = "fetch --all --tags --prune --recurse-submodules --force";
|
||||||
|
};
|
||||||
|
extraConfig = {
|
||||||
|
pull.rebase = true;
|
||||||
|
init.defaultBranch = "main";
|
||||||
|
core.editor = "nvim";
|
||||||
|
core.fileMode = false;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
mpv = {
|
||||||
|
enable = true;
|
||||||
|
package = (
|
||||||
|
pkgs.mpv-unwrapped.wrapper {
|
||||||
|
scripts = with pkgs.mpvScripts; [
|
||||||
|
mpris
|
||||||
|
sponsorblock
|
||||||
|
thumbfast
|
||||||
|
#uosc
|
||||||
|
#modernx
|
||||||
|
mpv-osc-tethys
|
||||||
|
visualizer
|
||||||
|
];
|
||||||
|
|
||||||
|
mpv = pkgs.mpv-unwrapped.override {
|
||||||
|
waylandSupport = true;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
config = {
|
||||||
|
profile = "high-quality";
|
||||||
|
ytdl-format = "bestvideo+bestaudio";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
neovim = {
|
||||||
|
defaultEditor = true;
|
||||||
|
viAlias = true;
|
||||||
|
vimAlias = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
starship = {
|
||||||
|
enable = true;
|
||||||
|
settings = with builtins; fromTOML (readFile ../dotfiles/starship/starship.toml);
|
||||||
|
};
|
||||||
|
|
||||||
thunderbird = {
|
thunderbird = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
profiles."mrflos" = {
|
||||||
|
isDefault = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
imap = {
|
zsh = {
|
||||||
host = "mail.infomaniak.com";
|
|
||||||
port = 993;
|
|
||||||
};
|
|
||||||
|
|
||||||
smtp = {
|
|
||||||
host = "mail.infomaniak.com";
|
|
||||||
port = 465;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"mrflos@mrflos.pw" = {
|
|
||||||
realName = "Florian Schmitt";
|
|
||||||
userName = "mrflos";
|
|
||||||
address = "mrflos@mrflos.pw";
|
|
||||||
|
|
||||||
primary = false;
|
|
||||||
thunderbird = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
autosuggestion.enable = true;
|
||||||
imap = {
|
enableCompletion = true;
|
||||||
host = "mrflos.pw";
|
shellAliases = {
|
||||||
port = 993;
|
#tmux = "tmux -f ~/.config/tmux/tmux.conf attach || tmux -f ~/.config/tmux/tmux.conf new";
|
||||||
#tls.enable = true;
|
bunx = "bun --bun x";
|
||||||
#tls.useStartTls = true;
|
c = "/home/mrflos/Code/nixos-config/scripts/tmux-sessionizer";
|
||||||
};
|
g = "lazygit";
|
||||||
|
n = "/home/mrflos/Code/nixos-config/scripts/open-notes";
|
||||||
smtp = {
|
s = "/home/mrflos/Code/nixos-config/scripts/ssh-connect";
|
||||||
host = "mrflos.pw";
|
t = "/home/mrflos/Code/nixos-config/scripts/tmux-sessionizer";
|
||||||
port = 587;
|
kdenix = "nix run github:pjones/plasma-manager --extra-experimental-features nix-command --extra-experimental-features flakes > /home/mrflos/Developpements/nixos-config/modules/home-plasma.nix";
|
||||||
#tls.useStartTls = true;
|
icat = "kitty +kitten icat";
|
||||||
};
|
nixedit = "vi /etc/nixos";
|
||||||
};
|
nixupdate = "sudo nix-channel --update && sudo nixos-rebuild switch";
|
||||||
"contact@yeswiki.pro" = {
|
nixclean = "sudo nix-env --delete-generations old --profile /nix/var/nix/profiles/system && sudo /nix/var/nix/profiles/system/bin/switch-to-configuration switch && sudo nix-store --gc";
|
||||||
realName = "YesWiki.pro";
|
socks = "ssh -N -f -C -D 9090 mrflos@yunohost.yeswiki.net -p 6742";
|
||||||
userName = "contact@yeswiki.pro";
|
vi = "/run/current-system/sw/bin/nvim";
|
||||||
address = "contact@yeswiki.pro";
|
vim = "/run/current-system/sw/bin/nvim";
|
||||||
|
yeswiki-updater = "cd /home/mrflos/Code/yeswiki-installer/ && sudo php yeswiki-updater.php";
|
||||||
primary = false;
|
};
|
||||||
thunderbird = {
|
initExtra = ''
|
||||||
enable = true;
|
export BUN_INSTALL="$HOME/.bun"
|
||||||
};
|
export PHP_CS_FIXER_IGNORE_ENV=1
|
||||||
imap = {
|
export PATH="$HOME/.local/bin:$BUN_INSTALL/bin:$PATH"
|
||||||
host = "mail.infomaniak.com";
|
eval "$(atuin init zsh)"
|
||||||
port = 993;
|
eval "$(zoxide init zsh)"
|
||||||
};
|
|
||||||
|
|
||||||
smtp = {
|
|
||||||
host = "mail.infomaniak.com";
|
|
||||||
port = 465;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
"contact@yeswiki.net" = {
|
|
||||||
realName = "YesWiki.net";
|
|
||||||
userName = "contact@yeswiki.net";
|
|
||||||
address = "contact@yeswiki.net";
|
|
||||||
|
|
||||||
primary = false;
|
|
||||||
thunderbird = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
imap = {
|
|
||||||
host = "mail.infomaniak.com";
|
|
||||||
port = 993;
|
|
||||||
};
|
|
||||||
|
|
||||||
smtp = {
|
|
||||||
host = "mail.infomaniak.com";
|
|
||||||
port = 465;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs = {
|
|
||||||
direnv = {
|
|
||||||
enable = true;
|
|
||||||
enableZshIntegration = true;
|
|
||||||
nix-direnv.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
git = {
|
|
||||||
enable = true;
|
|
||||||
userName = "Florian Schmitt";
|
|
||||||
userEmail = "mrflos@gmail.com";
|
|
||||||
aliases = {
|
|
||||||
fa = "fetch --all --tags --prune --recurse-submodules --force";
|
|
||||||
};
|
|
||||||
extraConfig = {
|
|
||||||
pull.rebase = true;
|
|
||||||
init.defaultBranch = "main";
|
|
||||||
core.editor = "nvim";
|
|
||||||
core.fileMode = false;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
mpv = {
|
|
||||||
enable = true;
|
|
||||||
package = (
|
|
||||||
pkgs.mpv-unwrapped.wrapper {
|
|
||||||
scripts = with pkgs.mpvScripts; [
|
|
||||||
mpris
|
|
||||||
sponsorblock
|
|
||||||
thumbfast
|
|
||||||
#uosc
|
|
||||||
#modernx
|
|
||||||
mpv-osc-tethys
|
|
||||||
visualizer
|
|
||||||
];
|
|
||||||
|
|
||||||
mpv = pkgs.mpv-unwrapped.override {
|
|
||||||
waylandSupport = true;
|
|
||||||
};
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
config = {
|
|
||||||
profile = "high-quality";
|
|
||||||
ytdl-format = "bestvideo+bestaudio";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
neovim = {
|
|
||||||
defaultEditor = true;
|
|
||||||
viAlias = true;
|
|
||||||
vimAlias = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
starship = {
|
|
||||||
enable = true;
|
|
||||||
settings = with builtins; fromTOML (readFile ../dotfiles/starship/starship.toml);
|
|
||||||
};
|
|
||||||
|
|
||||||
zsh = {
|
|
||||||
enable = true;
|
|
||||||
autosuggestion.enable = true;
|
|
||||||
enableCompletion = true;
|
|
||||||
shellAliases = {
|
|
||||||
#tmux = "tmux -f ~/.config/tmux/tmux.conf attach || tmux -f ~/.config/tmux/tmux.conf new";
|
|
||||||
bunx = "bun --bun x";
|
|
||||||
c = "/home/mrflos/Code/nixos-config/scripts/tmux-sessionizer";
|
|
||||||
g = "lazygit";
|
|
||||||
n = "/home/mrflos/Code/nixos-config/scripts/open-notes";
|
|
||||||
s = "/home/mrflos/Code/nixos-config/scripts/ssh-connect";
|
|
||||||
t = "/home/mrflos/Code/nixos-config/scripts/tmux-sessionizer";
|
|
||||||
kdenix = "nix run github:pjones/plasma-manager --extra-experimental-features nix-command --extra-experimental-features flakes > /home/mrflos/Developpements/nixos-config/modules/home-plasma.nix";
|
|
||||||
icat = "kitty +kitten icat";
|
|
||||||
nixedit = "vi /etc/nixos";
|
|
||||||
nixupdate = "sudo nix-channel --update && sudo nixos-rebuild switch";
|
|
||||||
nixclean = "sudo nix-env --delete-generations old --profile /nix/var/nix/profiles/system && sudo /nix/var/nix/profiles/system/bin/switch-to-configuration switch && sudo nix-store --gc";
|
|
||||||
socks = "ssh -N -f -C -D 9090 mrflos@yunohost.yeswiki.net -p 6742";
|
|
||||||
vi = "/run/current-system/sw/bin/nvim";
|
|
||||||
vim = "/run/current-system/sw/bin/nvim";
|
|
||||||
yeswiki-updater = "cd /home/mrflos/Code/yeswiki-installer/ && sudo php yeswiki-updater.php";
|
|
||||||
};
|
|
||||||
initExtra = ''
|
|
||||||
export BUN_INSTALL="$HOME/.bun"
|
|
||||||
export PHP_CS_FIXER_IGNORE_ENV=1
|
|
||||||
export PATH="$HOME/.local/bin:$BUN_INSTALL/bin:$PATH"
|
|
||||||
eval "$(atuin init zsh)"
|
|
||||||
eval "$(zoxide init zsh)"
|
|
||||||
'';
|
|
||||||
oh-my-zsh = {
|
|
||||||
enable = true;
|
|
||||||
extraConfig = ''
|
|
||||||
zstyle :omz:plugins:ssh-agent helper ksshaskpass
|
|
||||||
zstyle :omz:plugins:ssh-agent agent-forwarding yes
|
|
||||||
zstyle :omz:plugins:ssh-agent lazy yes
|
|
||||||
'';
|
'';
|
||||||
plugins = [
|
oh-my-zsh = {
|
||||||
"git"
|
enable = true;
|
||||||
"ssh-agent"
|
extraConfig = ''
|
||||||
];
|
zstyle :omz:plugins:ssh-agent helper ksshaskpass
|
||||||
# theme = "robbyrussell";
|
zstyle :omz:plugins:ssh-agent agent-forwarding yes
|
||||||
|
zstyle :omz:plugins:ssh-agent lazy yes
|
||||||
|
'';
|
||||||
|
plugins = [
|
||||||
|
"git"
|
||||||
|
"ssh-agent"
|
||||||
|
];
|
||||||
|
# theme = "robbyrussell";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
services.ssh-agent.enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
services.ssh-agent.enable = true;
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue