Skip to content

fsquillace/kyrat

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
bin
 
 
lib
 
 
 
 
 
 
 
 
 
 
 
 
 
 

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