[-] Andy@programming.dev 6 points 2 years ago

Ah yes you can tell by the post title:

best linux terminal emulator

[-] Andy@programming.dev 6 points 2 years ago

Congrats on all the labor you saved.

If you think folks here are uniquely unreasonable you could try lemmy.world/c/selfhosted .

[-] Andy@programming.dev 6 points 2 years ago

I don't know what I should be noticing there. I can't see any text for the tool buttons along the left edge of the window.

[-] Andy@programming.dev 6 points 2 years ago* (last edited 2 years ago)

For Arch Linux:

  • support a different process supervisor
    • dinit, or
    • s6 with some high level sugar
  • don't use Bash anywhere
    • port down to POSIX, and
    • port up to Zsh
    • port minimal launchers to execline
  • replace PKGBUILD format, maybe with
    • nearly identical but Zsh
    • NestedText containing Zsh snippets
      • use this to render Zsh based on templates
        • my favorite template engine: wheezy.template
  • build packages with more optimizations, like the CachyOS repos
  • include or endorse something like aconfmgr
  • port conf files to NestedText
[-] Andy@programming.dev 6 points 2 years ago* (last edited 2 years ago)

screenshot

Fluent screenshot

screenshot

Papirus screenshot

  • Tela (orange dark)

screenshot

Tela screenshot

screenshot

Vimix screenshot

screenshot

Qogir screenshot

screenshot

Sunity Cursors screenshot

From this thread I tried out Gruvbox Plus Dark, which is nice, but a little low on contrast, and I don't prefer such uniform shapes.

Huh, I only now notice that the Fluent, Tela, Vimix, and Qogir repos are owned by the same user...

[-] Andy@programming.dev 6 points 2 years ago

Is Merkuro the same thing as Kalendar?

[-] Andy@programming.dev 6 points 2 years ago

I'm using the Firefox addon Redirector, and one of my rules there redirects community links using regex. I keep adding to the pattern as I encounter more instances. Currently it's:

Pattern: https://(lemdro\.id|lemmy\.run|beehaw\.org|lemmy\.ml|sh\.itjust\.works|lemmy\.fmhy\.ml|lemmy\.dbzer0\.com|lemmy\.world|sopuli\.xyz|lemmy\.kde\.social|lemmygrad\.ml|mander\.xyz|lemmy\.ca|zerobytes\.monster)/c/(.*)
Redirect to: https://programming.dev/c/$2@$1
1

It also supports Forth and Nim, which can be written in a somewhat concatenative style, too.

1

I personally can't stand Discord, but for now it's getting some concatenative action, so I've signed up again.

When I'm at a computer I'll add this to the sidebar.

[-] Andy@programming.dev 6 points 3 years ago* (last edited 3 years ago)

I think I didn't see these mentioned yet:

11

From the docs:


svcs (pronounced services) is a dependency container for Python. It gives you a central place to register factories for types/interfaces and then imperatively acquire instances of those types with automatic cleanup and health checks.

It’s suitable for implementing Inversion of Control using either dependency injection or service location while not requiring global state, decorators, or mangling of function signatures.


Personally I don't know if I will ever need such a tool; I don't really do web framework-y work right now. But I have a ton of respect for Hynek and enjoy his other projects and his blog posts, so if you need something like this I can recommend it on that basis.

[-] Andy@programming.dev 6 points 3 years ago

Wezterm, which does everything, with a great developer behind it.

Second choice is Konsole: super solid and great rendering.

Aaand tmux with either of those.

1

In case that link changes, the main site is https://inet.run/

I just started reading and don't yet know about the advantages and trade-offs of a design like this.

25

With the textual-web command you can publish any Textual app on the web, making it available to anyone you send the URL to. This works without creating a socket server on your machine, so you won't have to configure firewalls and ports to share your applications.

[-] Andy@programming.dev 6 points 3 years ago* (last edited 3 years ago)

Would you consider editing the main post with the details from here? At least one person here has explicitly said

wish I’d known that before I ordered

And I'd guess many here would like to know that before deciding whether to support the company.

19

I'll copy the release notes below. The exciting bit for me is the ability to pipe service output to a log process, such as s6-log.


This is 0.17.0, the first beta release of Dinit! Dinit is now considered feature-complete for the first main release. Development until then will focus on bug fixes, improvements to existing features, and documentation.

Thank you to several new sponsors, as well as existing sponsors, for supporting this release. Current sponsors include github users: brentfrow, brazeon, and q66 (Daniel Kolesa, author of Chimera Linux). Development of Dinit has also received financial support from Artix Linux. I am grateful for all the support, both financial and otherwise, that has been received.

Special thanks to Mobin Aydinfar, who has taken on secondary maintainer duties in the lead-up to this release, including many valuable contributions to getting CI infrastructure up-and-running.

This release includes several new features and fixes. There are also some small incompatibilities with the previous release, see "changes" below.

New features:

  • A "log-type" service setting allows for control over how a service output is processed. A new "buffer" type allows capturing service output to an in-memory buffer; this may be useful for service started early, before any logging daemon is available. The buffer contents can be inspected via a new dinitctl subcommand, "catlog". See dinit-service(5) and dinitctl(8). Other log-type settings are "none", "file" (log to file as in previous versions) and "pipe" which allows piping output to another (process) service - read on for details.
  • Output from a service process can now be chained to another process (in another service). This allows one service to act as a logging agent for another, for example. The consumer service need not be started at the same time as the producer process; the pipe between them can be created early if needed, and will persist if either end dies (so restarting a logging agent without losing log messages should be possible in theory). The "consumer-of" service setting, specified in the consumer, creates the connection between the services; the producer must have log-type of "pipe".
  • New "triggered" service type, similar to "internal" except that it requires an external trigger before it will start (start of a triggered service is delayed until the external trigger is received). One potential use is to start services after hardware device nodes become available (eg, start dhcp client on a network interface once it is available).
  • New "dinictl" subcommand, "signal", to send a signal to a service process. See dinitctl(8). Implemented by James Knippes and Mobin Aydinfar.
  • New "kill-all-on-stop" service option will cause dinit to kill all (other) processes just before stopping the service. This can be used to ensure a cleaner system state and that filesystems can be unmounted (for example). Use with care; see dinit-service(5) for details.
  • The "shutdown" utility now runs (if present) user-provided shutdown hooks; see shutdown(8) for details.
  • New service settings to control service logfile ownership and permissions: logfile-permissions, logfile-uid, and logfile-gid. Note that these have default values, which results in a change in behaviour from previous versions even if they are not specified in a service description (i.e. the logfile ownership and permissions are now always set).
  • A new "--offline" option for dinitctl enables using "enable" and "disable" subcommands to enable/disable services when dinit is not running.
  • "before" and "after" ordering requirements in service descriptions no longer force the named service to be loaded. This means that a service can be "before" another service even if the other service might not be installed, for example.
  • New "dinitctl" subcommands "is-started" and "is-failed", to test for specific service statuses (intended to be useful in scripts, for example). Contributed by Daniel Kolesa.
  • The "dinitctl" utility now supports the "--use-passed-cfd" argument (as for shutdown).
  • A "configure" script to generate suitable build configuration is included. It is used by default when building on not-recognised systems. Contributed by Mobin Aydinfar.
  • Meson build system added (as an alternative to the existing makefile-based build) by Mobin Aydinfar.

Changes:

  • The default is now to restart services automatically (previously required "restart = yes").
  • The permissions/ownership for logfiles has been reworked, see details in "New features" above.
  • Services which specify "run-as" to run as a different user now run with the supplementary groups of that user (this can be disabled at build time by setting USE_INITGROUPS=0). Thanks to Daniel Kolesa.
  • Environment variables from the service-specific environment ("env-file" setting) can now be substituted in many service settings. Variable expansion now supports a limited subset of shell expansions (such as "$(NAME:-word}" and "${NAME:+word}). Behaviour is not identical to shell; see documentation. Implemented by Daniel Kolesa.
  • Environment variable expansion in service descriptions is no longer optional. The "sub-vars" load option no in a service description no longer has any effect, and "no-sub-vars" is no longer recognised at all.
  • "/run/dinit.d" is now included in the default set of directories search for service description files (in system mode).
  • Some service defaults, including automatic restart, can now be configured at build time (contributed by Mobin Aydinfar).

Fixes:

  • A bug in Dasynq which caused out-of-bounds vector access in dinit on shutdown has been fixed.
  • Fixed a dinit bug that could cause communication on a control socket to block indefinitely, which could theoretically cause dinitctl to hang (no cases of dinitctl hanging have been reported by users!).
34
Litestar 2.0 Released (blog.litestar.dev)
submitted 3 years ago* (last edited 3 years ago) by Andy@programming.dev to c/python@programming.dev

Litestar is a powerful, flexible yet opinionated ASGI framework, focused on building APIs, and offers high-performance data validation and parsing, dependency injection, first-class ORM integration, authorization primitives, and much more that's needed to get applications up and running.

https://github.com/litestar-org/litestar/


I am not personally involved in the project, I just like following its development.


I know Medium is annoying, sorry. The content is also copied on Reddit... where you can enjoy such comments as

Why would they waste their time trying to promote to the few people on Lemmy?

😢

1
Factor 0.99 Released! (re.factorcode.org)

It's been a long time coming, and here it is: a new stable Factor release with years of improvements to enjoy.

For those who don't know:

Factor is a concatenative, stack-based programming language with high-level features including dynamic types, extensible syntax, macros, and garbage collection. On a practical side, Factor has a full-featured library, supports many different platforms, and has been extensively documented.

The implementation is fully compiled for performance, while still supporting interactive development. Factor applications are portable between all common platforms. Factor can deploy stand-alone applications on all platforms. Full source code for the Factor project is available under a BSD license.

1

The first challenge from programming.dev's new challenges community has been posted (and so has my amateur Factor solution).

I hope to see more concatenative solutions posted, and welcome any critical feedback on any of the Factor bits I submit there.

1

Forth, too.

Unfortunately it uses the stable Factor release 0.98 which is a bit old, but I know Factor is heading toward a new release soon, which is probably a prerequisite to updating the runtime on Codewars.

Anyway the little exercises help me get to know the language, and then when I see others' solutions I get to see how badly I've done things and what cool library words I should learn next.

Anyone else using a concatenative language on an exercises-type site like this, especially where other solutions in the same language can be shared?

1

Hello!

I requested the creation of this space because I have a real interest in (and ignorance of) concatenative programming, both the programming languages and tools that fundamentally require that pattern as well as the ones that enable it (or something similar, like ARG1 FUNC ARG2 syntax) in big or small ways here and there.

Examples of the former category include:

Examples of the latter include:


From Wikipedia:

A concatenative programming language is a point-free computer programming language in which all expressions denote functions, and the juxtaposition of expressions denotes function composition. Concatenative programming replaces function application, which is common in other programming styles, with function composition as the default way to build subroutines.

For example, a sequence of operations in an applicative language like the following:

y = foo(x)
z = bar(y)
w = baz(z)

...is written in a concatenative language as a sequence of functions:

x foo bar baz


This space is meant for sharing news, experiences, announcements, questions, showcases, etc. regarding these topics and tools.


Related:

[-] Andy@programming.dev 6 points 3 years ago

I don't think I saw Xournal++ (AKA Xournalpp) mentioned yet, which has helped me once or twice.

[-] Andy@programming.dev 6 points 3 years ago

I can't really leave Firefox but use some extensions to try to lighten the experience, like uBlock Origin configured for "hard mode," TabStash with eager discarding turned on, and LocalCDN.

view more: ‹ prev next ›

Andy

0 post score
0 comment score
joined 3 years ago
MODERATOR OF