You are not logged in.
( don't know if this is any help: https://forum.maboxlinux.org/t/test-nee … rners/1209 )
...elevator in the Brain Hotel, broken down but just as well...
( a boring Japan blog (currently paused), now on Bluesky, there's also some GitStuff )
Online
That looks like it might help!
No, he can't sleep on the floor. What do you think I'm yelling for?!!!
Offline
Hi Chaps, of course I am testing from Arch and dwm but still X nevertheless.
Just for reference, I use round corners and my shadows follow suit. Yes, my shadows are more like a dark alternative to KDE's old blue glow but still round corners.
I imported the BL picom.conf and hit an issue right off the bat. I am a full whole version and a point release ahead on Arch than what is the latest version of Picom for Debian. No point me testing that over here.
I shall do a BL install tomorrow so I can compare apples with apples (and to familiarise myself with Debian). But, in the meantime, my picom.conf for reference.
#################################
# Shadows #
#################################
# Enabled client-side shadows on windows. Note desktop windows
# (windows with '_NET_WM_WINDOW_TYPE_DESKTOP') never get shadow,
# unless explicitly requested using the wintypes option.
#
shadow = true;
# The blur radius for shadows, in pixels. (defaults to 12)
shadow-radius = 16;
#14
# The opacity of shadows. (0.0 - 1.0, defaults to 0.75)
shadow-opacity = 1.0;
# The left offset for shadows, in pixels. (defaults to -15)
shadow-offset-x = -16;
#-12
# The top offset for shadows, in pixels. (defaults to -15)
shadow-offset-y = -16;
#-12
# Red color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-red = 0
# Green color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-green = 0
# Blue color value of shadow (0.0 - 1.0, defaults to 0).
# shadow-blue = 0
# Hex string color value of shadow (#000000 - #FFFFFF, defaults to #000000). This option will override options set shadow-(red/green/blue)
#shadow-color = "#363636"
# Specify a list of conditions of windows that should have no shadow.
#
# examples:
# shadow-exclude = "n:e:Notification";
#
# shadow-exclude = []
shadow-exclude = [
"! name~=''",
"_GTK_FRAME_EXTENTS@:c",
"_NET_WM_STATE@:32a *= '_NET_WM_STATE_MAXIMIZED'",
"_NET_WM_STATE@:32a *= '_NET_WM_STATE_FULLSCREEN'",
"class_g = 'Conky'",
"class_g *?= 'firefox'",
"class_g *?= 'firefox-nightly'",
"class_g ?= 'LibreWolf'",
"class_g ?= 'Chromium'",
"class_g ?= 'chromium'",
"class_g ?= 'Mercury Browser'",
"class_g ?= 'fragments'",
"class_g = 'transmission-gtk'",
"class_g = 'dwmsystray'",
"class_g = 'Slock'",
"class_g = 'slock'",
"class_g = 'Vivaldi-stable'",
"class_g = 'slock'",
"class_g = 'fragments'",
"class_g ?= 'Steam'",
"class_g ?= 'steam'",
"class_g = 'dwm'",
"_NET_WM_WINDOW_TYPE@:32a *= '_NET_WM_WINDOW_TYPE_DOCK'",
];
# Specify a X geometry that describes the region in which shadow should not
# be painted in, such as a dock window region. Use
# shadow-exclude-reg = "x10+0+0"
# for example, if the 10 pixels on the bottom of the screen should not have shadows painted on.
#
# shadow-exclude-reg = ""
# Crop shadow of a window fully on a particular Xinerama screen to the screen.
# xinerama-shadow-crop = false
#################################
# Fading #
#################################
# Fade windows in/out when opening/closing and when opacity changes,
# unless no-fading-openclose is used.
# fading = false
fading = true;
# Opacity change between steps while fading in. (0.01 - 1.0, defaults to 0.028)
# fade-in-step = 0.028
fade-in-step = 0.03;
# Opacity change between steps while fading out. (0.01 - 1.0, defaults to 0.03)
# fade-out-step = 0.03
fade-out-step = 0.03;
# The time between steps in fade step, in milliseconds. (> 0, defaults to 10)
# fade-delta = 10
# Specify a list of conditions of windows that should not be faded.
# fade-exclude = []
#
# Advanced Options
#
# Do not fade on window open/close.
# no-fading-openclose = false
# Do not fade destroyed ARGB windows with WM frame. Workaround of bugs in Openbox, Fluxbox, etc.
# no-fading-destroyed-argb = false
#################################
# Transparency / Opacity #
#################################
# Opacity of inactive windows. (0.1 - 1.0, defaults to 1.0)
# inactive-opacity = 1
inactive-opacity = 1;
# Opacity of window titlebars and borders. (0.1 - 1.0, disabled by default)
# frame-opacity = 1.0
frame-opacity = 1.0;
# Let inactive opacity set by -i override the '_NET_WM_OPACITY' values of windows.
# inactive-opacity-override = true
inactive-opacity-override = false;
# Default opacity for active windows. (0.0 - 1.0, defaults to 1.0)
# active-opacity = 1.0
# Dim inactive windows. (0.0 - 1.0, defaults to 0.0)
# inactive-dim = 0.0
# Specify a list of conditions of windows that should never be considered focused.
# focus-exclude = []
focus-exclude = [];
# Use fixed inactive dim value, instead of adjusting according to window opacity.
# inactive-dim-fixed = 1.0
# Specify a list of opacity rules, in the format `PERCENT:PATTERN`,
opacity-rule = [
"100:class_g = 'Bar'", # lemonbar
"100:class_g = 'slop'", # maim
"100:class_g = 'XTerm'",
"100:class_g = 'ncmpcpp'",
"100:class_g = 'URxvt'",
"90:class_g = 'kitty' && focused",
"80:class_g = 'kitty' && !focused",
"95:class_g = 'Alacritty'",
"100:class_g = 'St'",
"100:class_g = 'dunst'",
"100:class_g = 'Polybar'",
"100:class_g = 'firefox'",
"100:class_g = 'Chromium'",
"100:class_g = 'micro'",
"100:class_g = 'Easytag'",
"100:class_g = 'Mercury Browser'",
"100:class_g = 'LibreWolf'",
"100:class_g = 'Vivaldi-stable'",
"100:class_g = 'transmission-gtk'",
"100:class_g = 'dwmsystray'",
"100:class_g = 'Steam'",
"100:class_g = 'steam'",
"100:class_g = 'dwm'",
"100:class_g = 'Thunderbird'",
"100:class_g = 'Thunar'"
];
# xinerama-shadow-crop = false
#################################
# Corners #
#################################
corner-radius = 10;
rounded-corners-exclude = [
# "window_type = 'normal'",
# "class_g ?= 'rofi'",
"class_g ?= 'polybar'",
"class_g ?= 'polybar'",
"class_g ?= 'eww-bar'",
"class_g ?= 'Dunst'",
"class_g = 'dwmsystray'",
"class_g = 'dmenu'",
"class_g ?= 'firefox'",
"class_g ?= 'Chromium'",
"class_g ?= 'chromium'",
"class_g ?= 'micro'",
"class_g ?= 'steam'",
"class_g ?= 'Steam'",
"class_g ?= 'transmission-gtk'",
"class_g ?= 'Vivaldi-stable'",
"class_g ?= 'LibreWolf'",
"class_g ?= 'Mercury Browser'",
"class_g ?= 'Slock'",
"class_g ?= 'slock'",
"class_g ?= 'qutebrowser'",
"class_g ?= 'ncmpcpp'",
"class_g = 'dwm'",
"class_g ?= 'tint2'"
];
# Specify a list of border width rules, in the format `PIXELS:PATTERN`,
# Note we don't make any guarantee about possible conflicts with the
# border_width set by the window manager.
#
# example:
# round-borders-rule = [ "2:class_g = 'URxvt'" ];
#
round-borders-rule = [
"2:class_g ?= 'URxvt'",
];
#################################
# Background-Blurring #
#################################
#blur: {
# method = "dual_kawase";
# strength = 10;
# background = false;
# background-frame = false;
# background-fixed = false;
# kern = "3x3box";
#}
blur-method = "dual_kawase"
blur-deviation = 1.0
blur-strength = 8
blur-background = true
blur-background-frame = true
blur-background-fixed = true
blur-kern = "3x3gaussian"
blur-background-exclude = [
"window_type = 'dock'",
"window_type = 'desktop'",
"_GTK_FRAME_EXTENTS@:c"
]
transparent-clipping-exclude = [
"class_g = 'easyeffects'",
"_GTK_FRAME_EXTENTS@:c"]
# Exclude conditions for background blur.
blur-background-exclude = [
#"window_type = 'dock'",
"window_type = 'desktop'",
"class_g = 'Plank'",
"class_g = 'firefox'",
"class_g = 'LibreWolf'",
"class_g = 'Mercury Browser'",
"class_g ?= 'Chromium'",
"class_g ?= 'chromium'",
"class_g = 'dwmsystray'",
"class_g = 'Polybar'",
"class_g = 'dwm'",
"class_g = 'slock'",
"class_g = 'Slock'",
"class_g = 'Steam'",
"class_g = 'steam'",
"class_g = 'fragments'",
"class_g = 'transmission-gtk'",
"class_g = 'slop'",
"_GTK_FRAME_EXTENTS@:c"
];
#################################
# General Settings #
#################################
# Daemonize process. Fork to background after initialization. Causes issues with certain (badly-written) drivers.
# daemon = false
# Specify the backend to use: `xrender`, `glx`, or `xr_glx_hybrid`.
# `xrender` is the default one.
#
backend = "glx"
#backend = "xrender";
# Enable/disable VSync.
# vsync = false
vsync = true;
# Enable remote control via D-Bus. See the *D-BUS API* section below for more details.
# dbus = false
# Try to detect WM windows (a non-override-redirect window with no
# child that has 'WM_STATE') and mark them as active.
#
# mark-wmwin-focused = false
mark-wmwin-focused = true;
# Mark override-redirect windows that doesn't have a child window with 'WM_STATE' focused.
# mark-ovredir-focused = false
mark-ovredir-focused = true;
# Try to detect windows with rounded corners and don't consider them
# shaped windows. The accuracy is not very high, unfortunately.
#
# detect-rounded-corners = false
detect-rounded-corners = true;
# Detect '_NET_WM_OPACITY' on client windows, useful for window managers
# not passing '_NET_WM_OPACITY' of client windows to frame windows.
#
# detect-client-opacity = false
detect-client-opacity = true;
# Use EWMH '_NET_ACTIVE_WINDOW' to determine currently focused window,
# rather than listening to 'FocusIn'/'FocusOut' event. Might have more accuracy,
# provided that the WM supports it.
#
# use-ewmh-active-win = false
# Unredirect all windows if a full-screen opaque window is detected,
# to maximize performance for full-screen windows. Known to cause flickering
# when redirecting/unredirecting windows.
#
# unredir-if-possible = false
# Delay before unredirecting the window, in milliseconds. Defaults to 0.
# unredir-if-possible-delay = 0
# Conditions of windows that shouldn't be considered full-screen for unredirecting screen.
# unredir-if-possible-exclude = []
# Use 'WM_TRANSIENT_FOR' to group windows, and consider windows
# in the same group focused at the same time.
#
# detect-transient = false
detect-transient = true;
# Use 'WM_CLIENT_LEADER' to group windows, and consider windows in the same
# group focused at the same time. 'WM_TRANSIENT_FOR' has higher priority if
# detect-transient is enabled, too.
#
# detect-client-leader = false
detect-client-leader = true;
# Resize damaged region by a specific number of pixels.
# A positive value enlarges it while a negative one shrinks it.
# If the value is positive, those additional pixels will not be actually painted
# to screen, only used in blur calculation, and such. (Due to technical limitations,
# with use-damage, those pixels will still be incorrectly painted to screen.)
# Primarily used to fix the line corruption issues of blur,
# in which case you should use the blur radius value here
# (e.g. with a 3x3 kernel, you should use `--resize-damage 1`,
# with a 5x5 one you use `--resize-damage 2`, and so on).
# May or may not work with *--glx-no-stencil*. Shrinking doesn't function correctly.
#
# resize-damage = 1
# Specify a list of conditions of windows that should be painted with inverted color.
# Resource-hogging, and is not well tested.
#
# invert-color-include = []
# GLX backend: Avoid using stencil buffer, useful if you don't have a stencil buffer.
# Might cause incorrect opacity when rendering transparent content (but never
# practically happened) and may not work with blur-background.
# My tests show a 15% performance boost. Recommended.
#
# glx-no-stencil = false
# GLX backend: Avoid rebinding pixmap on window damage.
# Probably could improve performance on rapid window content changes,
# but is known to break things on some drivers (LLVMpipe, xf86-video-intel, etc.).
# Recommended if it works.
#
# glx-no-rebind-pixmap = false
# Disable the use of damage information.
# This cause the whole screen to be redrawn everytime, instead of the part of the screen
# has actually changed. Potentially degrades the performance, but might fix some artifacts.
# The opposing option is use-damage
#
# no-use-damage = false
use-damage = true;
# Use X Sync fence to sync clients' draw calls, to make sure all draw
# calls are finished before picom starts drawing. Needed on nvidia-drivers
# with GLX backend for some users.
#
# xrender-sync-fence = false
# GLX backend: Use specified GLSL fragment shader for rendering window contents.
# See `compton-default-fshader-win.glsl` and `compton-fake-transparency-fshader-win.glsl`
# in the source tree for examples.
#
# glx-fshader-win = ""
# Force all windows to be painted with blending. Useful if you
# have a glx-fshader-win that could turn opaque pixels transparent.
#
# force-win-blend = false
# Do not use EWMH to detect fullscreen windows.
# Reverts to checking if a window is fullscreen based only on its size and coordinates.
#
# no-ewmh-fullscreen = false
# Dimming bright windows so their brightness doesn't exceed this set value.
# Brightness of a window is estimated by averaging all pixels in the window,
# so this could comes with a performance hit.
# Setting this to 1.0 disables this behaviour. Requires --use-damage to be disabled. (default: 1.0)
#
# max-brightness = 1.0
# Make transparent windows clip other windows like non-transparent windows do,
# instead of blending on top of them.
#
# transparent-clipping = false
# Set the log level. Possible values are:
# "trace", "debug", "info", "warn", "error"
# in increasing level of importance. Case doesn't matter.
# If using the "TRACE" log level, it's better to log into a file
# using *--log-file*, since it can generate a huge stream of logs.
#
# log-level = "debug"
log-level = "warn";
# Set the log file.
# If *--log-file* is never specified, logs will be written to stderr.
# Otherwise, logs will to written to the given file, though some of the early
# logs might still be written to the stderr.
# When setting this option from the config file, it is recommended to use an absolute path.
#
# log-file = "/path/to/your/log/file"
# Show all X errors (for debugging)
# show-all-xerrors = false
# Write process ID to a file.
# write-pid-path = "/path/to/your/log/file"
# Window type settings
#
# 'WINDOW_TYPE' is one of the 15 window types defined in EWMH standard:
# "unknown", "desktop", "dock", "toolbar", "menu", "utility",
# "splash", "dialog", "normal", "dropdown_menu", "popup_menu",
# "tooltip", "notification", "combo", and "dnd".
#
# Following per window-type options are available: ::
#
# fade, shadow:::
# Controls window-type-specific shadow and fade settings.
#
# opacity:::
# Controls default opacity of the window type.
#
# focus:::
# Controls whether the window of this type is to be always considered focused.
# (By default, all window types except "normal" and "dialog" has this on.)
#
# full-shadow:::
# Controls whether shadow is drawn under the parts of the window that you
# normally won't be able to see. Useful when the window has parts of it
# transparent, and you want shadows in those areas.
#
# clip-shadow-above:::
# Controls wether shadows that would have been drawn above the window should
# be clipped. Useful for dock windows that should have no shadow painted on top.
#
# redir-ignore:::
# Controls whether this type of windows should cause screen to become
# redirected again after been unredirected. If you have unredir-if-possible
# set, and doesn't want certain window to cause unnecessary screen redirection,
# you can set this to `true`.
#
wintypes:
{
tooltip = { fade = true; shadow = true; opacity = 0.75; focus = true; full-shadow = false; };
dock = { shadow = false; clip-shadow-above = true; }
dnd = { shadow = false; }
popup_menu = { opacity = 0.8; }
dropdown_menu = { opacity = 0.8; }
};
"All we are is dust in the wind, dude"
- Theodore "Ted" Logan
"Led Zeppelin didn't write tunes that everybody liked, they left that to the Bee Gees."
- Wayne Campbell
Offline
I imported the BL picom.conf...
I've just pushed the shadow tweaks I suggested the other day, along with dropping transparency for inactive windows, agreed with hhh quite a while ago:
https://github.com/BunsenLabs/bunsen-co … picom.conf
So you're starting from the same place.
...elevator in the Brain Hotel, broken down but just as well...
( a boring Japan blog (currently paused), now on Bluesky, there's also some GitStuff )
Online
Testing this now, and the problem using a lower-right shadow is the opacity. Maybe 0.7 (70% opacity) works with a dark wallpaper and a dark theme, but with the Emerald wallpaper and especially when one window is over another with the default theme, it's just way too much to my eye. I would never go as high as Matt's 1.0, but to each his own! Is that really where you have it? I'll have to go look at a recent scrot of yours.
.5 looks too bold. .4 is where the rounded corners and the shadow along the window edge start to look OK to me. .3, like they have it in John's link, is where I would set it. Can we compromise with 0.35? I'm judging by looking at the lower-right corner on a low-res monitor (1366x768), granted that emphasizes the problem.
No, he can't sleep on the floor. What do you think I'm yelling for?!!!
Offline
^This is interesting.
@hhh have another look at the four screenshots I posted here:
https://forums.bunsenlabs.org/viewtopic … 77#p130277
They were all done with opacity at 0.6. The last one is over the Emerald wallpaper, where to me the shadow looks almost invisible, while over the white geany, maybe about right. Right now in my VM I've got the opacity set at 0.8 where it looks good to me in most situations.
Maybe our displays are different in colour rendering (mine is 1400x900), or maybe our eyes, or maybe just our taste in shadows?
BTW:
...works with a dark wallpaper and a dark theme, but with the Emerald wallpaper and especially when one window is over another with the default theme, it's just way too much...
The default theme is Boron-aqua which is very dark.
Here's a terminal over a Thunar in Boron-aqua with opacity at 0.35:
To me, that shadow is quite hard to see. Here's opacity at 0.8:
That looks good to me, but over a white window:
I'm still OK with it, but I could see how someone might find the shadow a bit too dark there.
Anyway, first we need to make sure we're comparing apples to apples.
EDIT: One thing: I bet blur radius has an effect here. All the above had shadow-radius = 12.
Could you post a screenshot of an example where you find the shadow way too much at 0.7?
(On BL, menu > Quick Screenshot + Upload is very handy.)
Last edited by johnraff (2023-11-19 03:21:44)
...elevator in the Brain Hotel, broken down but just as well...
( a boring Japan blog (currently paused), now on Bluesky, there's also some GitStuff )
Online
Hey, I knew we were including Aqua (dark), I didn't know it was the default. Cool.
It's out taste in shadows!
Yes, I was checking with blur at 12. Yes, that makes a difference, I tested at .7 with a radius of 8 and it looked more like an extra border than a shadow.
It really is our taste, I think. That top scrot's shadow looks very heavy to me (.5 as a compromise?), though I prefer the back shadow I proposed to a drop shadow. I want a shadow to emphasize which window is active/on, and with a drop shadow it only does that on 2 sides. I don't mind that look, it's just not my preference.
I'll post some scrots of what other desktop environments do as a reference, and you can make up your mind from there and I'll be fine with it.
No, he can't sleep on the floor. What do you think I'm yelling for?!!!
Offline
It really is our taste, I think. That top scrot's shadow looks very heavy to me (.5 as a compromise?), though I prefer the back shadow I proposed to a drop shadow. I want a shadow to emphasize which window is active/on, and with a drop shadow it only does that on 2 sides. I don't mind that look, it's just not my preference.
If we end up staying with a drop shadow, I'd be fine with opacity at 0.5. It's still enough to see the active window. Maybe better to default to something that's innocuous than one likely to freak someone out.
As for emphasizing the active window, I like (very much) something that looks like a real shadow. It gives a 3-D illusion that the window is floating above the desktop, which - to my eyes - makes it stand out better. But since you prefer a shadow all round the window (right?), maybe we need some more opinions here?
I'll post some scrots of what other desktop environments do as a reference, and you can make up your mind from there and I'll be fine with it.
Please! Also if you can put together a screenshot on Boron-aqua over the Emerald wallpaper with the shadow you prefer. EDIT: or just give me the shadow radius, opacity and offsets and I'll run it on the same VM I did mine on, for a direct comparison.
@Dobbie, @Bronto any ideas?
Last edited by johnraff (2023-11-20 05:03:48)
...elevator in the Brain Hotel, broken down but just as well...
( a boring Japan blog (currently paused), now on Bluesky, there's also some GitStuff )
Online
Hey, I knew we were including Aqua (dark), I didn't know it was the default. Cool.
Yeh that whole thing was a misunderstanding. I thought you were proposing light-aqua as the default, so made it so. When I found out you preferred aqua (dark) I set that as default. I prefer the dark theme too!
...elevator in the Brain Hotel, broken down but just as well...
( a boring Japan blog (currently paused), now on Bluesky, there's also some GitStuff )
Online
I'm a little new to all the shadow and opacity stuff. For a long time I ran a basic config of xcompmgr with no shadows or opacity.
I'm a big fan of clean minimalism.
Minimal shadows, minimal opacity. I use dwm so most of my windows are full screen all the time. I only just recently enabled a bar of any sort again (I actually just disabled it again). My shadow, goes around the windows, just as Has likes it.
An example of my compositing vs. without:
Saying all that though, I like the idea of the "3D" shadow effect too, especially in a stacking WM like Openbox.
"All we are is dust in the wind, dude"
- Theodore "Ted" Logan
"Led Zeppelin didn't write tunes that everybody liked, they left that to the Bee Gees."
- Wayne Campbell
Offline
^Those two images are the same.
Anyway I guess they're "with compositing", and the window has got a fuzzy shadow all round it.
Sorry, I definitely prefer a drop shadow to that. Don't like the effect at all to be honest.
No accounting for tastes, as they say.
...elevator in the Brain Hotel, broken down but just as well...
( a boring Japan blog (currently paused), now on Bluesky, there's also some GitStuff )
Online
Ha! The right image has no opacity or shadows (no rounded corners either).
To each their own. I don't really notice the shadow unless I look for it.
EDIT I just noticed I uploaded the same image twice.
"All we are is dust in the wind, dude"
- Theodore "Ted" Logan
"Led Zeppelin didn't write tunes that everybody liked, they left that to the Bee Gees."
- Wayne Campbell
Offline
To each their own. I don't really notice the shadow unless I look for it.
It hits me the moment I look at it!
Not in a nice way, and certainly not "clean".
I prefer the no-shadow version to be honest, if that's what the shadow is like.
Last edited by johnraff (2023-11-20 07:35:34)
...elevator in the Brain Hotel, broken down but just as well...
( a boring Japan blog (currently paused), now on Bluesky, there's also some GitStuff )
Online
OK, I thought Xfce on debian would be the nearest to what John is proposing, but, uh... no!
I think it's a drop-shadow (the shadow is centered lower-right behind the window), but it's so transparent I can't tell. That can't be more than 20% opacity, and there is no setting for it. It's either enabled or disabled.
GNOME on debian next, weee!
No, he can't sleep on the floor. What do you think I'm yelling for?!!!
Offline
GNOME on Xorg
I think GNOME actually makes the shadow on the active window slightly more opaque, like a half percent.
-edit- No, it increases the radius by 5px. That's what I'm seeing, at least.
Last edited by hhh (2023-11-20 08:00:23)
No, he can't sleep on the floor. What do you think I'm yelling for?!!!
Offline
Offline
Offline
what John is proposing...
Basically I'd like something similar to what BL and Crunchbang shipped up to date.
Lithium and before used compton or xcompmgr, but here's Beryllium's picom shadow settings:
shadow = true;
shadow-radius = 7;
shadow-opacity = 0.6
shadow-offset-x = -2;
shadow-offset-y = -2;
The reason we can't go on using that as-is is because of the round window corners and the sharp shadow corners.
Hence all the extra blurring to fudge it over.
...elevator in the Brain Hotel, broken down but just as well...
( a boring Japan blog (currently paused), now on Bluesky, there's also some GitStuff )
Online
PS without checking picom's settings, is it possible to activate the shadow only behind the active window? Would that make a drop-shadow more acceptable?
Here is -8, -8, 12 radius, .35 opacity...
https://imgur.com/WvJ5SQkl.png
That looks OK to me, though I'd prefer a little bit more opacity... say .45??
...elevator in the Brain Hotel, broken down but just as well...
( a boring Japan blog (currently paused), now on Bluesky, there's also some GitStuff )
Online
^ Sold!
No, he can't sleep on the floor. What do you think I'm yelling for?!!!
Offline