c6d716a53c
Move from markdown to org mode. Seems more appropriate. I hope github supports all the syntax. |
||
---|---|---|
.gitignore | ||
README.org | ||
ob-tmux.el |
README.org
ob-tmux
Ob-tmux is an Emacs library that allows org mode to evaluate code blocks in a tmux session.
Installation
Unfortunately, ob-tmux has not yet been added to melpa. You will need
to copy the ob-tmux.el
file to a directory in your load-path
.
Configuration
In your .emacs
or .emacs.d/init.el
file, add the following:
(require 'ob-tmux)
(setq org-babel-default-header-args:tmux
'((:results . "silent") ;
(:session . "default") ; The default tmux session to send code to
;; You can use xterm or gnome terminal
(:terminal . "gnome-terminal")))
;; The tmux sessions are prefixed with the following string.
;; You can customize this if you like.
(setq org-babel-tmux-session-prefix "org-babel-session-")
;; Finally, if you tmux is not in your $PATH for whatever reason, you
;; may set the path to the tmux binary as follows:
(setq org-babel-tmux-location "/usr/bin/tmux")
Usage
You can start a new terminal window with a tmux session as follows:
#+BEGIN_SRC tmux :session hello echo hello #+END_SRC
If you press C-c C-c
with your point in the code block, a new
terminal window will pop up with a new tmux session named
org-babel-session-hello
.
You can continue work in this session with another code block.
#+BEGIN_SRC tmux :session hello echo world #+END_SRC
If you press C-c C-c
now, no new terminal window will open, but the
code will be sent to the existing tmux session.
You can open new windows within the existing session using the familiar tmux syntax.
#+BEGIN_SRC tmux :session hello:new-window echo hello world in new-window #+END_SRC
Executing this code block will add a window, new-window
, to your
session.
You can exit your tmux session by detaching. The terminal window will close automatically. Ob-tmux will not detect that you have detached. Any commands you send will be sent in the background. You can reattach to your tmux session at any time and check that the commands have indeed been executed.
Ob-tmux is useful for keeping notes on how to install software or perform tasks in the terminal, especially when some interactivity is required. It is also very useful for starting up your tmux sessions after a reboot. Take a Look at the following snippet.
** Startup tmux Use ~C-c C-v s~ to execute subtree. *** Jupyter #+BEGIN_SRC tmux :session daemons:jupyter cd ~/projects/notebooks/ jupyter notebook #+END_SRC *** htop #+BEGIN_SRC tmux session daemons:htop htop #+END_SRC *** dmesg #+BEGIN_SRC tmux :session daemons:dmesg dmesg #+END_SRC
If your point is on the Startup tmux
header, you can execute all
code blocks in the subtree with C-c C-v s
to jump start your tmux
sessions.
Known bugs and or possible issues
My tmux indexes start at 1. By default, tmux window indexes start at zero. This might lead to problems. I have not yet checked.
Terminals other than xterm and gnome-terminal have not been checked. If you have positive or negative experiences with any other terminal, let me know.
I will try to respond within a week to any issues raised. I cannot promise I will fix them.
Contributions
Contributions are always welcome. Please be in touch before you make sweeping changes or add large features. This may prevent disappointment and will help me help you.