• drosophila@lemmy.blahaj.zone
    link
    fedilink
    English
    arrow-up
    6
    ·
    24 hours ago

    Does anyone here have any ideas about how computer interfaces should work? Or, in other words what sort of features would you want in an ‘ideal’ (for you) computer system?

    I’ve been thinking about this for awhile, and I have some wishes:

    • A scrolling/tiling window manager like Niri.
    • A rich / hypertext format that’s more powerful than markup but less powerful than HTML + CSS.
    • A terminal that’s capable of outputting and rendering the above format: tables, collapsible sections, links, etc.
    • Some sort of unified UI that combines a file explorer, document viewer / editor, and terminal.
    • A terminal / scripting language that’s more discoverable than what we have. Perhaps by using a noun verb format instead of a verb noun format. Combine that with a ZSH-like (or IDE-like) autocomplete for command options, but add a small text description to each option and allow the user to do an incremental search of this text (with synonyms) by pressing a hotkey. These two things make interacting with files a little bit like right clicking (by listing valid operations for a given type of object) and a little like doing a text search on a settings menu, respectively. This could be accomplished without giving up the power of linguistic composition.
    • A terminal / scripting language that’s better than bash (not a high bar), straightforward and simple, and somewhat fast to evaluate (as far as interpreted languages can be fast), but not super complicated under the hood like Python is.
    • A series of linked wiki articles written in the above mentioned markup language, stored locally, that tells you how the OS works and how to use it. Instead of having to go to an external website to find out the steps your init process takes to start your computer, you read a plain english document describing them, with hyperlinks to the corresponding articles for the processes it interacts with. Like man pages but answers “how is it configured, and why that way”, rather than just “how do I configure it”. Some of these pages, or portions of them, might need to be dynamically generated depending on what packages you have installed. The pages should be organized such that the top level (or home page) give the most generalized and basic descriptions, with links to FAQs and how-tos, and the deeper you drill down the more specific and technical the articles get.
    • A NixOS-like declarative configuration system that uses config files written in the above mentioned markup language. The various config files should link to the corresponding wiki articles and vice versa.
    • An indexed full text search for the above mentioned documents (and any user generated documents).
    • A BeOs-like database file system, with tags and attributes.
    • File system level snapshots integrated into version control and the declarative configuration system mentioned earlier.
    • A plan9-like ‘everything is a file’ philosophy, as well as plan9’s hierarchical namespaces.
    • Containerized applications and permissions using the above mentioned namespaces.

    A lot of the above already exists, but only in pieces instead of in a fully unified system. Or else in a unified system that does some of these things, but not all of them.

    • Swedneck@discuss.tchncs.de
      link
      fedilink
      English
      arrow-up
      1
      ·
      56 minutes ago

      honestly basically the only thing i’m missing is the ability to control things with gestures, i just want to point at the computer and turn my hand to raise and lower volume when i’m on the other side of the room…

    • Reilyh they/them@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      8 hours ago

      I don’t understand like half of what’s written here, but I’d be happy to drop how I confronted such problems.

      • (On Window Manager) I use dwm ( doom :{ ), I like dwm, dwm has a lot of quirks. But it’s so extensible by your own shell scripts, to the point where you’d have something radically different than what you started with. Your own window manager tailored for your very own specific needs. You know that meme of that one person that has way too many keybindings so they’d have to place a peddle under their feet to shuffle through key bindings? I want that, where do I get one, and how do I set it up?

      • (Better Markup) Yeah I’ve been having issues with this lately. This will tie in with another point you made about a series of linked wiki articles. I have been using hugo, and there is this little neat feature called “shortcodes” that lets you make say a shortcode for a an image that rotates, then you go to the Markdown file and just type "{{ < shortcode_name >}} providing the necessary arguments. And hugo will compile for you an image that you rotate along side the Markdown content. Yes you need to know HTML and CSS for it, but I think it gives you quite the augmented Markup

      • (Responsive Terminal UI?). Hmm. Hmmmm. I would say sixel, but since you want collapsible sections. May I suggest building your own local wiki again? Maybe embedding a web browser inside of the terminal to get intractability.

      • Unifed UI. To be honest when you first mentioned this, my brain jumped to lf file manager. Inside it, it opens programs based on the type of the files and the programs that I specified:

        • I use neovim to view/edit text files.
        • zathrua for documents.
        • nsxiv for images. Especially with key-hander and you become a god. Here are some of my shortcuts for nsxiv:
          • path (copy file path)
          • copy (copy an image)
          • remove (🔥)
          • name (Rename) dragon (Enable drag and drop)
          • pqiv (another powerful image multimedia viewer)
          • e-config (edit the keybindings)
          • music (play music from the cover image)
        • nvim also as document editor since most of what I write is just Markdown converted to PDFs.
        • Terminal st There is this neat patch for dwm (Patch meaning you’d have to download this feature and patch it into vanilla dwm) that is called “swallow”. In which a terminal would swallow graphical programs ran from inside it. In the previous list, zathura and nsxiv are graphical programs, but they’d get swallowed, giving the illusion of a unified UI system.
      • (Auto Complete With Descriptions) I don’t understand the first half. But for completion: In zsh usually detailed auto complete is handled by the program you installed. My script called sc meaning “stupid commands” has options with descriptions. Searching this with a hotkey can be easily done with zsh plus some kinda of A W K black magic. Or your favorite text stream manipulator.

      • (Better Bash) I haven’t done any form of pure bash scripting, so I have much to learn.

      • (The Ultimate Manual) Yes. Yes. Yes. The closest thing I have to that is a downloaded version of the Arch Wiki that I can use in my browser offline. Although I’d love to see a dynamically generated system manual, that would get you what you want immediately instead of having to read the full arch wiki article. I would love to think about how such a thing could be developed. For now Man pages and the Arch wiki are enough for me. But yes, a dynamic manual, absolutely!

      • (Configs Linking To Manual) Have you heard of explainshell.com? Yes it’s for commands, and it tells you what the arguments do. I wonder if a similar thing could be developed for config files. It would gather all of your config options, and then using black magic it would predict how the program is gonna behave based on the given config options. I might have used the word “black magic” instead of an LLM. I don’t know if I can trust those things…

      • (Indexed Full Text Search) … Like I said, my documents are Markdown so it can be easily searched with grep. Although I wonder if a database of text generated by an OCR could give such a functionality. For now I open my document, and search it using zathura.

      • (Tags) Tags. MMMM. I don’t know what a BeOs is but I know that I use hydrus to manage any kind of files using tags. I can find any meme I have saved, because I tag them with multiple tags. Some people have used hydrus to manage audio, text files, and all other shenanigans. But to be honest, hydrus seems very hacky to me, it is not extensible, after all it’s like a personal booru. I’m waiting for a command line client that accesses the hydrus database (kinda like how you can control MPD using mpc. MPD being the Music Playing Daemon, and mpc its client.)

      • (File System Snapshots With Version Control) Yeah. This is pretty nice. Wait, is git not able to handle the whole system so we need a specific file system made for that purpose? Holy shit. Now that I think about it, you will be able to see everything that ever happened on Computer. Would take a shit fuck ton of space though. But I hear that storage is cheap, so go nuts.

      • (Plan 9) I always wanted to get into what the whole Plan 9 is about. Sadly I don’t know anything about this.

      • Please don’t laugh. I don’t know what a “namespace” is.

      In the end, it appears that most of these are hacky ways of getting what you want. You said it yourself, the perfect/ideal system. But that’s what it is, perfect. In my view, you can get very close to perfect but never fully realizing it. But that’s the beauty of it, how many nights did I spend trying to make all kinds of wacky shell scripts. Just take a look at what my scripts are named: animateRotate avgstudytime Emojis.sh genart gendunstrc Genre popup-dict RemoveNumbas shoot and my personal favorite sort_by_how_many_files_were_created_on_a_date a script that I took 2 or 3 hours to write, then used only once. Ahhh, Computer.

      This was written using nvim with VimWiki as a Markdown file using Markdown syntax highlighting, that I forgot how I set up.

      PS: I feel bad for not providing git repos because of my own laziness and incompetence.

      • drosophila@lemmy.blahaj.zone
        link
        fedilink
        English
        arrow-up
        1
        ·
        edit-2
        14 minutes ago

        That was a good comment, thanks.

        I’ll try to clarify a little bit more about what I was talking about and reply to some stuff.

        • Window Manager: This is Niri, but of course everyone will have their own preferences for their window manager. For foot pedals you can just search “USB foot pedal” and get lots of results for ordering that sort of thing online. You might also be interested in macro pads, which are basically just little keyboards with extra keys you can use to supplement your primary keyboard. Of course you still have to set that up in software, but it seems like this program can do that for you (I haven’t done this myself, so no guarantees lol).
        • Better Markup, Responsive Terminal UI, Unified UI: When I mention these things I’m mostly thinking of The Mother of All Demos. You can watch recordings of it on youtube, and its quite remarkable, Douglas Engelbart demonstrates things like rich text (nested lists, collapsible sections), hyperlinks, word processing, the computer mouse, and a slew of other things, all back in 1968 when most people were barely even using an interactive shell (as batch processing was the norm). But the really interesting thing about that demo, in my opinion, is how unified the UI was. It was built for handling a data structure that was basically a linked list of text strings: showing you different views of that data structure and editing it in different ways (opening and collapsing subsections, displaying only a single subsection, ‘following’ a link like clicking on a hypertext link, its hard to explain succinctly, the best way is just to watch the demo). Which of course works for things like lists of groceries or whatever, but works just as well for files in a file tree, items in a configuration file, the syntax tree of a piece of computer code, or a version control tree. On NLS (the system shown off in the demo), you could use the same interface, the shortcut keys, for interacting with all of these. I don’t necessarily think that we should copy NLS in every detail, but you can see what I mean when I say that I think the terminal, file explorer, and document editor could have the same UI. IMO these are all ‘text dominated’ tasks that could probably be manipulated in the same way.
        • Auto Complete: In the first part I’m talking about being able to type something like example.mp4 ffmpeg, instead of ffmpeg example.mp4. In the second case you need to know that ffmpeg exists to begin trying to manipulate the video file, in the first case you could hypothetically type example.mp4 [tab] then get a list of programs that are registered as being able to handle mp4 files, allowing you to discover ffmpeg’s existence. This discoverability is one of the big reasons that graphical interfaces are perceived as more user friendly than a terminal. That’s what I mean when I say using a noun verb syntax would be more similar to right click (specifically right click --> open with). Of course you’d still want the ability to force a specific program to try to ingest a type of file its not associated with, but you can do that with [right click] --> [open with] too.
        • Config Links to Manual: I have heard of that but I haven’t used it much (I probably should though). If it works for shell commands I don’t see why the same technique couldn’t work for config files. The real problem is that so many programs use very different formatting for their configs, and they’d all have to publish detailed descriptions of their syntax in a metasyntax language, along with detailed English documentation of their behavior. So it would be a lot of work to implement. I don’t think this is impossible, but I don’t think its likely to happen any time soon.
        • Indexed Full Text Search: Grep is fine for what it is, but its not indexed search. Search indexing is what allows sites like Google and Wikipedia to search billions of documents, very fast, and with very little CPU and disk usage. Recoll is a program that can do this (and it works on pdfs and epubs too), after you select what directories you want to use it on and build the index, but in my opinion this should be a standard part of the OS’s functionality.
        • Tags: BeOS (made a typo earlier with the capitalization) was an OS that was around during the 90s. Among a few other neat features it had a file system that let you add arbitrary metadata attributes to files, and optionally index them (a little bit like having Hydrus built into the file system and file explorer). In such a system an email program could be implemented just by adding extra attributes to a bunch of text files in a folder. That makes the email program easier to implement, since it can piggyback off of OS functionality instead of having to come up with something itself, but the real power of that kind of setup is that other programs, like command line utilities, could inspect, search, and modify that metadata in a very easy standardized way.
        • File System Snapshot With Version Control: You wouldn’t want to make snapshots for every single change, and you probably wouldn’t want to keep the full snapshot history for your entire computer (although for some folders you could maybe do either/both of these). Rather you’d mostly take snapshots of your whole disk before big updates or changes, and use them as a restore point (so you typically wouldn’t keep ones that are years old). You can do this without file system level snapshots, using programs like Timeshift, but its cheaper from a disk space standpoint to use file system snapshots, and also much faster to create / restore. OpenSuse uses BTRFS to do this, and even lets you boot into old snapshots from the grub menu.
        • Plan 9: Plan 9 was built as a successor to Unix, meant to be less crufty and to take the ‘everything is a file’ philosophy further. For example to take a screenshot in Plan 9 you can execute cat /dev/screen | topng > screenshot.png. Even other devices on the network are represented as (virtual) files in a folder, and everything is accomplished using file operations.
        • Namespaces: In general computing a namespace is a mapping from a set of names (or identifiers or whatever) to a set of objects or resources. So, URLs for example, are a namespace that maps a text strings to IP addresses. In Plan 9 a namespace is a mapping between the file system as presented to a specific program, and the actual file system. Processes can modify the namespace of their child processes, allowing them to redirect their inputs and outputs. This lets you do a lot of stuff, for example in plan 9 every program can run without a display server, because every program tries to write directly to the screen ‘file’. If you start a program up using a display server and desktop environment its output is redirected to an input on the display server instead. Same goes for audio, and IPC, and so on and so forth, since everything is accomplished using file operations. Using this you can containerize applications, or even run an entire plan 9 userspace nested within the actual userspace. This was invented in the 90s, way before Docker or even the common use of virtual machines. Rather than use a special tool to accomplish something specific, it was accomplished using standard functionality of the OS, that was designed to be applicable to a wide range of situations. This is a common theme in the things I’ve mentioned.
    • untorquer@lemmy.world
      link
      fedilink
      English
      arrow-up
      1
      ·
      18 hours ago

      I’m not a power user but I’m petty happy with my basic arch/KDE Plasma 6/wayland setup. It does its best to do absolutely nothing more than i ask it to which really just means it stays the fuck out of my way and doesn’t bother me. It’s perfect.

  • lime!@feddit.nu
    link
    fedilink
    English
    arrow-up
    17
    ·
    edit-2
    1 day ago

    home-made A4 version:

    if you want it in editable format:

    60 lines of html

    just save as computer.html, open in your browser, and save as pdf.

    <!doctype html>
    <head>
    <style>
    body {
      font-family: monospace;
      text-align: justify;
      font-size: 14pt;
      width: 210mm;
      height: 297mm;
      padding: 12mm;
      text-width: 1.2em;
    }
    h2 {
      font-size: 16pt;
      margin-left: 13.5mm;
      text-indent: -13.5mm;
    }
    #a:before {content: "A. "}
    #b:before {content: "B. "}
    #c:before {content: "C. "}
    #d:before {content: "D. "}
    ol {
      padding-left: 14mm;
    }
    </style>
    </head>
    <body>
    <div style="text-align: center">
    <h1>Practice Guide for Computer</h1>
    <p>Adapted from Ron Miller’s Advanced Improv Practice Guide</p>
    <p>Before starting your daily practice routine, read and seriously
    consider the following:</p>
    </div>
    <h2 id="a">DAILY AFFIRMATIONS</h2>
    <ol>
    <li>How fortunate I am that in this life I am one who been allowed to
    create beauty with <strong>computer</strong>.</li>
    <li>It is my responsibility to create peace, beauty, and love with
    <strong>computer</strong>.</li>
    </ol>
    <h2 id="b">I WILL BE KIND TO MYSELF</h2>
    <ol>
    <li>IT IS ONLY <strong>COMPUTER</strong></li>
    <li>No matter my level of development in <strong>computer</strong>, how
    good or bad I think I am, it is only <strong>computer</strong> and I am
    a beautiful person.</li>
    <li>I will not compare myself with my colleagues. If they do
    <strong>computer</strong> beautifully, I will enjoy it and be thankful
    and proud that I live in fellowship with them.</li>
    <li>There will always be someone with more abilities in
    <strong>computer</strong> than my own as there will be those with less.</li>
    </ol>
    <h2 id="c">REASONS TO DO <span style="text-decoration: underline;">COMPUTER</span></h2>
    <ol>
    <li>To contribute to the world’s spiritual growth.</li>
    <li>To contribute to my own self-discovery and spiritual growth.</li>
    <li>To pay homage to all the great practitioners of
    <strong>computer</strong>, past and present, who have added beauty to
    the world.</li>
    </ol>
    <h2 id="d">RID YOURSELF OF THE FOLLOWING REASONS FOR BEING A PRACTITIONER OF
    <span style="text-decoration: underline;">COMPUTER<span></h2>
    <ol type="1" style="columns: 2">
    <li>To create self-esteem</li>
    <li>To be “hip”</li>
    <li>To manipulate</li>
    <li>To get rich or famous</li>
    </ol>
    </body>
    

    Edit: hm. i just noticed that the original has that weird americanism where there are two spaces after punctuation. that explains why it was a bit off.

    • GreenCrunch@piefed.blahaj.zone
      link
      fedilink
      English
      arrow-up
      3
      ·
      20 hours ago

      Is that an americanism? I always found it silly in the age of digital type but there are still people who insist two spaces is correct and you can’t do it any other way.

      I had assumed it was some typewriter related thing, that with the fixed width space the typewriter can do it looks better with two spaces or something?

      Is this not a thing outside of the US, and everyone has always used one space? How did the two spaces start???

  • rozlav@lemmy.blahaj.zone
    link
    fedilink
    English
    arrow-up
    6
    ·
    2 days ago

    Where did @Shkshkshk@dice.camp found this ?
    Very interesting, especially part B, I am not fully understanding part C, I would love to make a C version with more sociological statements & obvious political reasons to do technological stuff instead of only computer in a way we don’t make nature worst. But that mystical feeling about « computer » is super educational in a way, thanks for sharing !!
    (✯◡✯)