diff --git a/README.md b/README.md deleted file mode 100644 index 1822efa..0000000 --- a/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# ob-tmux.el - -An ob-screen.el inspired export block for org mode and tmux. \ No newline at end of file diff --git a/README.org b/README.org new file mode 100644 index 0000000..ae3d8eb --- /dev/null +++ b/README.org @@ -0,0 +1,93 @@ +* 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: +#+BEGIN_SRC elisp + (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") +#+END_SRC +* 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.