Recent submissions

Comment · 8 months ago
Comment · 8 months ago
I wouldn't even expect it on newly created stuff without the -p flag. Normal cp doesn't do it.
Comment · 8 months ago
> 3) Google is biased towards sites that cover a topic earlier than others.

> I’ve seen pages that are still top 3 for a particular competitive query years later, simply because they were one of the first to write about it.

Reason why I still always get the Java 8 docs for any search. Annoying.

Comment · 8 months ago
Process substitution and calling it file redirect is a bit misleading because it is implemented with named pipes which becomes relevant when the command tries to seek in them which then fails.

Also the reason why Zsh has an additional =(command) construct which uses temporary files instead.

Comment · 9 months ago
> Or is there some particular criteria an init system needs to satisfy to be included, that systemd doesn't satisfy but the others do?

Reading the first sentence on that page was to much?

"Init Freedom is about restoring a sane approach to PID1 that respects portability, diversity and freedom of choice."

systemd fails on the portability criteria.

Apart from that, why should they invest there limited time to include systemd? Devuan is Debian without systemd. If you want systemd install Debian.

Comment · 10 months ago
Comment · 11 months ago
Comment · 1 year ago
At least Prosody implements BOSH (xmpp over http) and communication over Websocket.

https://prosody.im/doc/setting_up_bosh

https://prosody.im/doc/modules/mod_websocket

But I never tried it myself and from a quick search the popular non-browser XMPP apps/clients don't seem to use it.

Comment · 1 year ago
It is apparently also hard to maintain over time. I heavily customized my Firefox and Thunderbird and it is annoying how often GUI components which should be equal (e.g. toolbar buttons in different places) look the same* but have multiple different CSS rules.

Some widgets, or rather the repeated reinventions of widgets in HTML+CSS, use variables and the next equally looking widget has none, or other variables with the same values.

From an outsider perspective it looks like a mess.

* or almost the same with minimal, likely unintended, differences like one button has a slight border when hovered but another button right next to it has none

Comment · 1 year ago
> I understand that search bar position is not changeable by theming,

It is changeable. With enough dedication you can go a long way just with CSS.

In this case it is even rather easy because the "unified toolbar" the thing containing the search box, the menu bar (if shown) and the tab bar are three elements in the same flex box. They can be reordered by setting the order property.

Only downside in this case is that (if client side decoration is not disabled in the settings) the window buttons (close, minimize) are also part of the unified toolbar and would end (without further fixes) below the tab bar.

As a quick (and dirty) experiment I moved the tab bar left to the search bar in the same row just with:

  #titlebar {
    flex-direction: row;
    > unified-toolbar { order: 2; width: 50vw; }
    #tabs-toolbar { order: 1; width: 50vw; }
  }

And a hacky way which often works good enough is to reposition and hardcode stuff with position:absolute/fixed/sticky.

Finally Thunderbird's own customization dialog can be used to fill the empty space around the search bar. By default it has a spacer left and right but that is easy to change even without custom CSS.

Comment · 1 year ago
Also

> it is also not possible to theme the settings areas.

I don't see a reason why this should not work. If by settings area the author means the settings page which in modern Thunderbird is more or less a web page in the content area, it should be stylable with userContent.css instead of userChrome.css.

The hard part is to find the right @-moz-document selectors for each individual content page.

Comment · 1 year ago
Comment · 1 year ago
> Also, note that some areas of ThunderBird are rendered outside of the influence of userChrome.css in a "Shadow DOM" - as such, it is not possible to fully theme all elements of Thunderbird.

With some limitations it is possible to restyle Shadow DOM elements. It is just a lot harder to select the right element if it is inside a shadow dom.

I found a workaround (don't remember where I found it) which I use extensively in my personal userChrome.css.

The basic concept (afair) is that you can write selectors which match inside the shadow dom as long as they do not need to "cross" the shadow dom "boundary".

A good starting point for me is often to select by tag and part attribute, e.g. image[part="icon"] { ... }

Now the trick to style a particular instance of a web component (shadow dom instance) is to use variables and defaults.

With a selector which targets the "root element" of the shadow dom I set variables for any value I want to change and with a selector which is fully inside the shadow dom I add styles using the variable (which is then only defined for that particular instance) or a default which effectively cancels my custom style anywhere else.

As concrete example the dialog to create new calendar events has a drop down box to select the calendar where each entry is prefixed with a dot with calendar color. The menulist has a shadow dom and the menupopup another. I styled those dots as squares (for fun and because I think the modern web is to round). So to set the variables on the "outside" I have:

  menulist#item-calendar {
    --parthack-boxmarker-radius: 0;
    --parthack-boxmarker-image-size: 1em;
    --parthack-boxmarker-border: inset 0 0 0 1px color-mix(in srgb, black 20%, transparent);
  }
and to apply it

  menuitem.menuitem-iconic > hbox.menu-iconic-left > image.menu-iconic-icon {
    border-radius: var(--parthack-boxmarker-radius) !important;
    width: var(--parthack-boxmarker-image-size, revert-layer) !important;
    height: var(--parthack-boxmarker-image-size, revert-layer) !important;
    box-shadow: var(--parthack-boxmarker-border, none);
  }
(the variable prefix "parthack" has no special meaning; it just evolved because I initially used it to hack styles onto shadow dom elements over the part attribute)

Now this will change only the icons only in the menulist with id 'item-calendar' and leave others unchanged. Whether I use revert-layer as default or something else depends on what style the element has by default and try and error.

Comment · 1 year ago
> The service required is DNS not ping.

  ping 1.1
is short and easy to remember. Since I'm not using Cloudflare DNS, ping is actually the service I require :D

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton