Hacker News new | past | comments | ask | show | jobs | submit login
Powerlisp: Common Lisp tool for automating tasks for Unix power-users (github.com/luksamuk)
145 points by _emacsomancer_ on July 11, 2019 | hide | past | favorite | 33 comments



I read the whole README and I still have no idea what this does. Something about bookmarking websites and searches in some sort of configurable menu?


Hello, I'm the author. I just found out someone put this in HN again, I hope I can explain.

This is basically a way to create menus and submenus for recurrent utilities. You can use a rofi or dmenu frontend. Once you bind it a key shortcut, rofi/dmenu will come up asking you what to do.

Right now I can directly access my favorite websites, open my favorite programs, do web search (and also switch web engine), all without touching the browser directly. The idea is to group a lot of things in a lightweight script, and have a keyboard-only interaction with no extra extensions or programs.

I agree that the README is a little poor right now, and screenshots/gifs would also help on this regard. I'll start working on it pretty soon.


Maybe "rofi/dmenu scripting and configuration layer written in Common Lisp" might be an appropriate tagline?


Right. With the current title my first impression was that it was like a Unix shell with Common Lisp somehow as the shell language. I mean the shell is the tool Unix power-users mostly use to automate tasks.

It might be a good idea to add screenshots or a gif or something to the README, and I see they've realized that.


Hm, I have similar project, but for OSX users:

https://github.com/40ants/cl-bitbar

It is a library to write plugins for https://getbitbar.com


Awesome! Nice work.


I read the source (it isn’t that long), it seems you can bookmark an arbitrary Unix command in a configurable menu. Kinda neat, don’t see myself using this however.


I like this idea as the foundation of a Lisp-based shell. I'd like to see an plugin API, and package mechanism, similar to MELPA for Emacs. Users could write scripts and publish them as a signed package, then users could install them.

I'd also love to see terminal Emacs as the default shell editor for this shell.


Racket has Rash for this sort of thing

https://docs.racket-lang.org/rash/index.html


“Lisp-based shell” is so overdone. The hot new thing is merging Common Lisp and POSIX shell into a single, monstrous language!

https://github.com/bradleyjensen/shcl


FWIW I have a list of similar ideas done in essentially every language, including every popular Lisp variant:

https://github.com/oilshell/oil/wiki/ExternalResources#inter...


That’s really cool! I got more than a few new ideas for SHCL by browsing through that list. Thanks for sharing!


> I like this idea as the foundation of a Lisp-based shell.

I thought that was called emacs...{ducks}

/...though seriously...



It isn't lisp but I have used xonsh which is a python shell. It has a lot of nice uses and it is much easier to right python that can interact with normal shell commands well including capturing their outputs than is to write actual bash or whatever scripts. And being able to create these things in a solid repl is very nice.

In general I have dreamed for ages of one language could enough to do everything I want to do with a computer. And I am pretty imaginative as to what is in that set.


There’s already a PowerLisp, it’s the original version of Corman Lisp for Macintosh.


This sounds really interesting to me, I have a bunch of items I can think of where this might be useful to automate (for example, my wife and I have different bank accounts, but share a credit card for points reasons... givng my wife a statement is really hard since they "upgraded" their site, and removed the transactions export feature).

But I'm not sure where to start automating this. It would be great to have some examples.


In that case, you might want to check the wiki. There are still some examples missing, but they'll give you a general idea.


Another nice tool (written in Haskell rather than Lisp in this case) is Greenclip, which integrates a clipboard into rodi/dmenu: https://github.com/erebe/greenclip


Any examples of it in use?


Looks like it's time to create a Guix for BSD systems.


I really would like to see this in future, especially for OpenBSD


Which operating systems are supported? Don't see that in the Readme.


Hello. It was tested on Linux and FreeBSD. Works fine on any of those systems if you have SBCL and dmenu installed, though it might need a few tweaks on program paths of your configuration file.

I plan to migrate this to a more flexible Roswell script in a near future.


Like OSX' automator?


Workflow languages are in vogue this morning, huh?


[flagged]


> Like all things Lisp: no one understands the what, how and especially why of it.

I don't know if that's a fair thing to say; there are many lisp programmers out there, writing applications and tools, and they must understand the what, how, and why.

I've never used lisp beyond minor tutorials - but to me, it's just another programming language, albeit a somewhat strange one - IIRC, it doesn't have roots in ALGOL, which probably explains its "strangeness":

https://en.wikipedia.org/wiki/Generational_list_of_programmi...

In fact - that shows it is one of the "root" programming languages. So there you go.

But beyond that, from what I have seen, it seems like a functional-style language built around the concept of everything (primitives?) being a "list" - which is kinda analogous to a mathematical set, I think.

Anyhow, while it may look and "feel" weird, I don't think that's a good reason to dismiss Lisp as a whole.

> This sounds extremely non-useful to me. Opening browser windows? For what? To do what, exactly?

Well - many people who work at the cli/shell level don't want to take their hands off their keyboards, unless absolutely necessary. So, this tool seems to make common tasks (search, browser links to info, often used commands/tasks) available and browsable, using the keyboard and terminal, for reuse - without needing to remember or recall from history a particular command or sequence, or having to set up a ton of aliases (and remembering them). At least, that's how I interpret it. Maybe that isn't for you; that's ok. But someone else might find such a thing handy.

> And stop this "hacking" and "highly hackable" baloney.

I'm not sure why this bothers you; the term "hack" to mean "change" (sometimes quick-n-dirty) has a long history. It doesn't have one meaning or application. I see nothing wrong with using it in this context. Sure, it may not be something you'd want to see on marketing material for an application (then again, seeing such might be a breath of fresh air, imho) - in this context, that of a tool by cli/shell user for other cli/shell users - it is perfectly fit for use, I think.


> IIRC, it doesn't have roots in ALGOL, which probably explains its "strangeness"

To the contrary, Algol took hints from Lisp when it created its if statement (as opposed to conditional GOTO) and subsequent Algol-style languages have only taken more from Lisp as the decades have gone on.

> But beyond that, from what I have seen, it seems like a functional-style language built around the concept of everything (primitives?) being a "list" - which is kinda analogous to a mathematical set, I think.

A "Lisp list" is a sequence which is implemented in terms of a singly-linked list. You can nest lists inside of each other arbitrarily, but if you want O(1) access times or easy element replacement, you should use other sequence types which are implemented in terms of arrays. Common Lisp, the modern Lisp dialect, has those.

If I had to give a high-level summary of modern Lisp, which is Common Lisp, I'd say that it's a dynamically-typed multi-paradigmatic programming language which supports the creation of mini-languages/DSLs through the use of advanced syntactic rewriting rules called macros.


Hello. I currently use this daily to automate my workflow. I have no pretension of "selling" this as a very extensible tool that everyone should use, though I agree that I need to improve the README.


I know that Lisp is very popular here on HN (Paul Graham!), but my gut feeling tells me that many Lisp related posts with hardly any upvotes / comments get pushed to the front page of HN. I wish there was a HN filter to hide certain keywords.

NB: I read SICP cover to cover twenty years ago, did many private projects with DrScheme (Racket) and was influenced by it's paradigms early on. I do appreciate Lispy topics, but why front page of HN?


You can always use greasemonkey/tampermonkey extensions, the HN markup is pretty straightforward...

I think Common Lisp specifically is enjoying a bit of a spike in popularity (at least on HN, I've noticed a lot more front page stories over the last some years than previously) especially as more people realize it's out of the box way more powerful than what you find in SICP's Scheme. (A few offhand things one finds: type declarations with compile-time error checking in the most popular implementation + type info used to produced optimized assembly you can immediately inspect, non-braindead OOP, non-braindead error system, multi-million line software project existence proofs, long history of useful old code that still works like an inline arithmetic reader macro...)


You can hide individual posts, which I find useful for a lot of non-technical content that's less interesting to me. It's manual, but it gets them off the home page and you can see content from the 2nd/3rd pages of material that may be of more interest to you.


Appreciate your help. - Actually that's what I do. Hide manually.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: