~trs-80/rofi-in-elisp

cd96658cf5b82664c00e60ebb2157e233f20fb06 — TRS-80 9 months ago 5e27093
Improved Org->MD export

- Added CUSTOM_ID to Org headings to generate consistent links.

- Change Footnote section to level 2 heading.

- Remove gigantic ToC heading
2 files changed, 41 insertions(+), 41 deletions(-)

M README.md
M README.org
M README.md => README.md +11 -41
@@ 1,33 1,21 @@

# Table of Contents

1.  [rofi-in-elisp](#orgf6d6a18)
    1.  [Introduction](#orgfc44874)
        1.  [What has been Implemented (so far)](#org30dd02e)
    2.  [How it Works](#org56bc4fa)
    3.  [Installation](#orgc174a25)
    4.  [Setup](#org25e21d8)
        1.  [i3](#org70b1bdd)
    5.  [Roadmap](#orga674ad2)
    6.  [Contributing](#orgf50e6df)
1.  [rofi-in-elisp](#rofi-in-elisp)
    1.  [Introduction](#introduction)
        1.  [What has been Implemented (so far)](#what-has-been-implemented-(so-far))
    2.  [How it Works](#how-it-works)
    3.  [Installation](#installation)
    4.  [Setup](#setup)
        1.  [i3](#i3)
    5.  [Roadmap](#roadmap)
    6.  [Contributing](#contributing)

[![img](assets/gplv3-with-text-136x68.png)](https://www.fsf.org/about/what-is-free-software)


<a id="orgf6d6a18"></a>

# rofi-in-elisp


<a id="orgfc44874"></a>

## Introduction

I started using [Rofi](https://github.com/davatorium/rofi) shortly after switching to [i3](https://i3wm.org/).  I even wrote some modi (modes) for Rofi (which were never published).  However, fairly quickly I started running into what I felt were limitations in Rofi.<sup><a id="fnr.1" class="footref" href="#fn.1">1</a></sup>  So eventually I got the idea, why not just implement something like Rofi, except in Elisp?  Because, as an Emacs user, that's probably what I really wanted to do, anyway, amirite?  :)  And so, here we are.


<a id="org30dd02e"></a>

### What has been Implemented (so far)

In fairness, I cannot really call this a full implementation of Rofi, by any stretch.  Out of the box, Rofi does many things.  Out of the following list, only things that have been checked off have been implemented (so far):


@@ 46,17 34,11 @@ Now, this is not due to any techical limitation.  In fact what I wrote so far is

Some of those (mainly launching ssh session) I will probably never get around to, as we have Tramp for that.


<a id="org56bc4fa"></a>

## How it Works

Invoke the included `rofi-in-elisp-launcher` shell script with a single argument, the modi (or mode) that you want to launch.  Example: `rofi-in-elisp-launcher web` to launch the web search modi.  That modi gets passed from the shell script to the `rofi-in-elisp` function as its only required argument.

-   Note: You probably want to bind each modi (mode) to some keybinding, for convenience (more on that in the [Setup](#org25e21d8) section).


<a id="orgc174a25"></a>
-   Note: You probably want to bind each modi (mode) to some keybinding, for convenience (more on that in the [Setup](#setup) section).

## Installation



@@ 68,9 50,6 @@ The main (and only) function, `rofi-in-elisp` is tagged with an `autoload` magic

Having said all the above, this is the very first Elisp package I ever released publicly.  I tried to study dilligently the relevant information, and I feel reasonably confident I have done things correctly.  However, as it's still my first go around, any feedback would be welcomed.


<a id="org25e21d8"></a>

## Setup

-   For this program to work, Emacs needs to be running as a [daemon/server](https://www.gnu.org/software/emacs/manual/html_node/emacs/Emacs-Server.html).  This is because the `rofi-in-elisp-launcher` shell script opens a pop-up window by calling `emacsclient` (mostly for performance reasons).


@@ 81,9 60,6 @@ In my case, I use i3, so I have included instructions on how to set this up, bel

-   Setting up keybindings will vary per window manager, of course.  I am willing to accept additions to this document with instructions for other window managers.


<a id="org70b1bdd"></a>

### i3

-   There are 2 things we need to set up in i3:


@@ 111,9 87,6 @@ In my case, I use i3, so I have included instructions on how to set this up, bel
        # them to other keys like so (where 'new' is the name of some new modi):
        bindsym $mod+n exec ~/full/path/to/rofi-in-elisp-launcher new


<a id="orga674ad2"></a>

## Roadmap

I prefer to track my tasks (all tasks, whether software or other project related) in Orgmode.  They used to be right here, but that's to messy for a README, so I moved them to their own file in `ROADMAP.org`.


@@ 122,9 95,6 @@ I still plan on interacting with the public through the [Issue tracker](https://

To be honest, combining the two into some workflow I can live with is going to be an interesting experiment, but we will see how it goes.


<a id="orgf50e6df"></a>

## Contributing

In case you did not notice, I keep the primary copy of this README in Orgmode (`README.org`), and then I generate the Markdown (`README.md`) from that.


@@ 134,7 104,7 @@ This is because, unlike [Drew](https://lists.sr.ht/~sircmpwn/sr.ht-discuss/%3Cfe
Having said that, there seem to be some initial issues with exporting Orgmode to Markdown (expanded upon at above "Drew" link, above) which I hope to get figured out, however currently they are still in progress.


# Footnotes
## Footnotes

<sup><a id="fn.1" href="#fnr.1">1</a></sup> In fairness, since using Emacs and especially since learning a bit of Elisp I have probably become spoiled by becoming accustomed to do pretty much whatever I want.


M README.org => README.org +30 -0
@@ 1,9 1,15 @@
[[https://www.fsf.org/about/what-is-free-software][file:assets/gplv3-with-text-136x68.png]]

* rofi-in-elisp
  :PROPERTIES:
  :CUSTOM_ID:            rofi-in-elisp
  :END:


** Introduction
   :PROPERTIES:
   :CUSTOM_ID:            introduction
   :END:
   :LOGBOOK:
   - State "CREATED"       from                 [2020-10-28 Wed 07:39] \\
     - Create this README.


@@ 12,6 18,9 @@
I started using [[https://github.com/davatorium/rofi][Rofi]] shortly after switching to [[https://i3wm.org/][i3]].  I even wrote some modi (modes) for Rofi (which were never published).  However, fairly quickly I started running into what I felt were limitations in Rofi.[fn:1]  So eventually I got the idea, why not just implement something like Rofi, except in Elisp?  Because, as an Emacs user, that's probably what I really wanted to do, anyway, amirite?  :)  And so, here we are.

*** What has been Implemented (so far)
    :PROPERTIES:
    :CUSTOM_ID:            what-has-been-implemented-(so-far)
    :END:

In fairness, I cannot really call this a full implementation of Rofi, by any stretch.  Out of the box, Rofi does many things.  Out of the following list, only things that have been checked off have been implemented (so far):



@@ 31,6 40,9 @@ Some of those (mainly launching ssh session) I will probably never get around to


** How it Works
   :PROPERTIES:
   :CUSTOM_ID:            how-it-works
   :END:

Invoke the included =rofi-in-elisp-launcher= shell script with a single argument, the modi (or mode) that you want to launch.  Example: =rofi-in-elisp-launcher web= to launch the web search modi.  That modi gets passed from the shell script to the =rofi-in-elisp= function as its only required argument.



@@ 38,6 50,9 @@ Invoke the included =rofi-in-elisp-launcher= shell script with a single argument


** Installation
   :PROPERTIES:
   :CUSTOM_ID:            installation
   :END:

So far this package is not in any of the popular online repositories.  Although I did try and follow the standard Emacs Lisp [[https://www.gnu.org/software/emacs/manual/html_node/elisp/Packaging.html#Packaging][packaging]] guidelines.



@@ 49,6 64,9 @@ Having said all the above, this is the very first Elisp package I ever released 


** Setup
   :PROPERTIES:
   :CUSTOM_ID:            setup
   :END:

- For this program to work, Emacs needs to be running as a [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Emacs-Server.html][daemon/server]].  This is because the =rofi-in-elisp-launcher= shell script opens a pop-up window by calling =emacsclient= (mostly for performance reasons).



@@ 59,6 77,9 @@ In my case, I use i3, so I have included instructions on how to set this up, bel
- Setting up keybindings will vary per window manager, of course.  I am willing to accept additions to this document with instructions for other window managers.

*** i3
    :PROPERTIES:
    :CUSTOM_ID:            i3
    :END:

- There are 2 things we need to set up in i3:



@@ 90,6 111,9 @@ In my case, I use i3, so I have included instructions on how to set this up, bel


** Roadmap
   :PROPERTIES:
   :CUSTOM_ID:            roadmap
   :END:

I prefer to track my tasks (all tasks, whether software or other project related) in Orgmode.  They used to be right here, but that's to messy for a README, so I moved them to their own file in =ROADMAP.org=.



@@ 99,6 123,9 @@ To be honest, combining the two into some workflow I can live with is going to b


** Contributing
   :PROPERTIES:
   :CUSTOM_ID:            contributing
   :END:

In case you did not notice, I keep the primary copy of this README in Orgmode (=README.org=), and then I generate the Markdown (=README.md=) from that.



@@ 108,6 135,9 @@ Having said that, there seem to be some initial issues with exporting Orgmode to


** Footnotes
   :PROPERTIES:
   :CUSTOM_ID:            footnotes
   :END:

[fn:1] In fairness, since using Emacs and especially since learning a bit of Elisp I have probably become spoiled by becoming accustomed to do pretty much whatever I want.