Skip to content

SSH wrapper script that brings your dotfiles always with you on Linux and OSX

License

Notifications You must be signed in to change notification settings

fsquillace/kyrat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

61 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

kyrat

Kyrat - A simple ssh wrapper script that brings your dotfiles always with you on Linux and OSX

Project Status Communication
Build status Join the gitter chat at https://gitter.im/fsquillace/kyrat

Table of Contents

Description

kyrat is a ssh wrapper that allows to source local dotfiles on a ssh session to a remote host. No installations or root access on the remote host are required. It works either from/to a Linux or OSX machines.

kyrat can transfer to the remote host and source the following dotfiles:

  • bashrc files (located in either ~/.config/kyrat/bashrc or inside the directory ~/.config/kyrat/bashrc.d/).
  • inputrc files (located in either ~/.config/kyrat/inputrc or inside the directory ~/.config/kyrat/inputrc.d/)
  • vimrc files (located in either ~/.config/kyrat/vimrc or inside the directory ~/.config/kyrat/vimrc.d/).
  • tmux.conf files (located in either ~/.config/kyrat/tmux.conf or inside the directory ~/.config/kyrat/tmux.conf.d/).
  • zshrc files (located in either ~/.config/kyrat/zshrc or inside the directory ~/.config/kyrat/zshrc.d/).

Environment variables

  • KYRAT_SHELL can be used to set which shell to spawn remotely (default is bash). The allowed shells are bash, zsh and sh.
  • KYRAT_TMPDIR remote location to store the dotfiles (default /tmp).

Kyrat features

The following summarizes the Kyrat features:

  • Dotfile types supported: bashrc, vimrc, inputrc, tmux.conf, zshrc
  • Platform: Linux, OSX
  • Compression during tranfer: gzip
  • Encoding during transfer: base64
  • Automatic removal of remote dotfiles when exiting from Kyrat session
  • Remote dotfile location: /tmp (configurable via KYRAT_TMPDIR env variable)
  • Remote shells available to spawn: bash, zsh or sh (configurable via KYRAT_SHELL env variable)

How it works?

This is the sequence of steps that occur when running Kyrat:

  • The dotfiles are encoded using Base64 and compressed with Gzip
  • The dotfile blobs are passed through the ssh command line containing a script
  • The remote host will execute such script with the instructions of:
    • how to decode and extract the dotfiles
    • where to store the dotfiles (according to KYRAT_TMPDIR variable)
    • which environment variables to set to make the dotfiles working properly
    • which remote shell to spawn (bash, zsh or sh according to KYRAT_SHELL variable)

Quickstart

Bash

Write locally in either ~/.config/kyrat/bashrc or any files inside ~/.config/kyrat/bashrc.d/:

alias q=exit

function processof(){
    ps -U $1 -u $1 u
}

export PATH=$PATH:/sbin:/usr/sbin

Now, just access to your remote host:

$> kyrat myuser@myserver.com
myserver.com $> processof feel
    feel     20567  0.3  0.0  14748   952 pts/5    S+   12:44   0:13 ping www.google.com
    feel     23458  0.0  0.0  12872  1372 pts/9    R+   13:49   0:00 ps -U feel -u feel u

myserver.com $> q
exit

Or even inline:

$> kyrat myuser@myserver.com -- processorof feel

Vim

Write locally in either ~/.config/kyrat/vimrc or any files inside ~/.config/kyrat/vimrc.d/:

nnoremap <silent> <Leader>e :Explore<CR>

Now, just access to your remote host via kyrat, run vim and you will have the shortcut \e for running the vim file explorer.

Inputrc

Write locally in either ~/.config/kyrat/inputrc or any files inside ~/.config/kyrat/inputrc.d/:

set completion-ignore-case On

Now, just access to your remote host via kyrat and the terminal will have case insensitive tab completion.

Tmux

Write locally in either ~/.config/kyrat/tmux.conf or any files inside ~/.config/kyrat/tmux.conf.d/:

bind e setw synchronize-panes on \; display "Synchronization ON"
bind E setw synchronize-panes off \; display "Synchronization OFF"

Now, just access to your remote host via kyrat and run the following:

tmux -f "$TMUX_CONF"

This will open a tmux session and you can now toggle synchronization between panes on the same window with the keys e/E.

Installation

Dependencies

Before installing Kyrat be sure that all dependencies are properly installed in your system. The Kyrat dependencies are the following:

Linux

Assuming all Kyrat dependencies are properly installed in the system, to install Kyrat run the following:

    git clone https://github.com/fsquillace/kyrat ~/.local/share/kyrat
    export PATH=$PATH:~/.local/share/kyrat/bin

OSX

In order to install all Kyrat dependencies, you first need to install Homebrew.

To install all the needed dependencies via Homebrew:

brew update
brew install bash coreutils

Once all Kyrat dependencies are properly installed in the system, to install Kyrat run the following:

    git clone https://github.com/fsquillace/kyrat ~/.local/share/kyrat
    export PATH=$PATH:~/.local/share/kyrat/bin

Troubleshooting

This section has been left blank intentionally. It will be filled up as soon as troubles come in!

Contributing

You could help improving Kyrat in the following ways:

Donating

To sustain the project please consider funding by donations through the GitHub Sponsors page.

Authors

Kyrat was originally created in April 2014 by Filippo Squillace (feel.sqoox@gmail.com).

Here is a list of really appreciated contributors!

Last words

Consider your origins:
You were not born to live like brutes
but to follow virtue and knowledge.
[verse, Dante Alighieri, from Divine Comedy]

About

SSH wrapper script that brings your dotfiles always with you on Linux and OSX

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages