WEBVTT

00:00:11.500 --> 00:00:16.015
<v Chris>Hello, friends, and welcome back to your weekly Linux talk show. My name is Chris.

00:00:16.015 --> 00:00:16.705
<v Wes>My name is Wes.

00:00:16.705 --> 00:00:17.566
<v Brent>And my name is Brent.

00:00:18.228 --> 00:00:22.775
<v Chris>Hello, gentlemen. Coming up on the show this week, some of us build dashboards.

00:00:22.775 --> 00:00:26.053
<v Chris>Others turn their desktop into a dashboard.

00:00:26.413 --> 00:00:30.205
<v Chris>Quickshell is changing the Linux landscape in a massive way,

00:00:30.205 --> 00:00:31.417
<v Chris>and it kicked off this summer.

00:00:31.893 --> 00:00:35.045
<v Chris>We'll dig into what it is, how you can start having some fun with it,

00:00:35.242 --> 00:00:37.565
<v Chris>and what we've built. Then we're going to round out the show with some great

00:00:37.565 --> 00:00:41.765
<v Chris>boosts, some picks, and a lot more. So before we get there, let's say time-appropriate

00:00:41.765 --> 00:00:43.862
<v Chris>greetings to our virtual lug. Hello, Mumble Room.

00:00:44.693 --> 00:00:47.665
<v Mumble>Hello, Chris. Hello, Brent.

00:00:47.665 --> 00:00:51.136
<v Chris>Hello. Happy birthday, PJ and everybody up there. Thank you for joining us.

00:00:51.635 --> 00:00:53.895
<v Chris>Also, look at that quiet listening, too. Hi up there.

00:00:53.895 --> 00:00:56.115
<v Wes>On a Sunday, on a Tuesday, no less.

00:00:56.115 --> 00:01:01.734
<v Chris>Getting that low latency, Opus. Also, a big good morning to our friends at Define Networking.

00:01:02.913 --> 00:01:07.371
<v Chris>Define.net slash unplug. Go meet Manage Nebula from Define Networking.

00:01:07.928 --> 00:01:11.215
<v Chris>When there's something as foundational as my network, I want to know I own the

00:01:11.215 --> 00:01:14.925
<v Chris>stack end to end, especially over the long term. If I build this thing and I

00:01:14.925 --> 00:01:17.286
<v Chris>build stuff on top of it, it's not a two year thing.

00:01:17.983 --> 00:01:21.825
<v Chris>It's a 10 year thing. This is what I love about Nebula. It's open source and

00:01:21.825 --> 00:01:26.465
<v Chris>it was originally built to secure Slack's massive global infrastructure.

00:01:26.465 --> 00:01:28.339
<v Chris>I mean, just think about that one for a second.

00:01:28.809 --> 00:01:31.925
<v Chris>And today it's trusted from everybody from Rivian to Home Labs.

00:01:31.925 --> 00:01:34.565
<v Chris>I mean, I use it in multiple different ways for small systems,

00:01:34.565 --> 00:01:36.918
<v Chris>direct direct to larger mesh networks.

00:01:37.580 --> 00:01:42.385
<v Chris>And Manage Nebula, which is define.net slash unplugged, Manage Nebula gives

00:01:42.385 --> 00:01:46.415
<v Chris>you the open foundation and peer-to-peer resilience while they handle the certificate

00:01:46.415 --> 00:01:48.412
<v Chris>management and some of the operational headaches.

00:01:48.679 --> 00:01:50.775
<v Chris>You can also spin up your own lighthouses in that scenario.

00:01:51.210 --> 00:01:54.978
<v Chris>You get full control without the busy work, without the big tech login barrier.

00:01:55.500 --> 00:01:59.365
<v Chris>Go get started 100 hosts for free, no credit card required, define.net slash

00:01:59.365 --> 00:02:04.154
<v Chris>unplugged. Go check it out. Redefine your VPN experience, define.net slash unplugged.

00:02:08.478 --> 00:02:12.953
<v Chris>All right, so I will admit it, I wanted to talk about QuickShell this week because

00:02:12.953 --> 00:02:15.055
<v Chris>I think something really special is happening here.

00:02:15.827 --> 00:02:20.332
<v Chris>QuickShell is a toolkit for building status bars, widgets, lock screens,

00:02:21.743 --> 00:02:25.073
<v Chris>other various desktop components, and it's using QtQuick and QML.

00:02:25.073 --> 00:02:28.737
<v Chris>And it can be used alongside your Wayland compositor or window manager,

00:02:29.480 --> 00:02:31.866
<v Chris>or you can build a complete desktop environment with it.

00:02:33.329 --> 00:02:36.731
<v Chris>And it's sort of the ultimate end result, I think, of Wayland.

00:02:37.555 --> 00:02:42.373
<v Chris>And it's fascinating because it means you don't actually need a desktop environment

00:02:42.373 --> 00:02:45.693
<v Chris>anymore. Now, it's not to take away from the hard work that they do to make

00:02:45.693 --> 00:02:46.832
<v Chris>a usable desktop environment.

00:02:47.319 --> 00:02:50.744
<v Wes>Yeah, if you want that, we have better options than ever, and it's excellent.

00:02:51.058 --> 00:02:55.463
<v Chris>But it does mean that you could mix and match, or you can now completely create

00:02:55.463 --> 00:03:00.843
<v Chris>your own environment in a way that's actually achievable to anyone listening to this podcast. Yeah.

00:03:02.243 --> 00:03:06.073
<v Chris>And that is remarkable because you don't need to be attached to any particular

00:03:06.073 --> 00:03:10.143
<v Chris>desktop vendor anymore or any particular toolkit. It's really fascinating.

00:03:10.584 --> 00:03:12.523
<v Chris>So it means, you know, if you want your own desktop widgets,

00:03:12.523 --> 00:03:15.443
<v Chris>your own launcher, your own lock screen, or if you want to take advantage of

00:03:15.443 --> 00:03:17.417
<v Chris>the many that are out there that have been built, you can.

00:03:18.613 --> 00:03:21.893
<v Chris>It gives you the building blocks to create or replace just about all the pieces

00:03:21.893 --> 00:03:25.993
<v Chris>of the desktop environment you care about, but still using a standard toolkit,

00:03:25.993 --> 00:03:30.182
<v Chris>a standard API, and sort of the best of Qt and modern Qt. You think that's fair? Yeah.

00:03:30.633 --> 00:03:32.663
<v Wes>Yeah. I mean, maybe it's worth thinking about where this all sits.

00:03:32.663 --> 00:03:37.383
<v Wes>So we talked about Wayland, right? So Wayland ends up being the protocol that

00:03:37.383 --> 00:03:40.248
<v Wes>sits at the bottom of things. So you need your actual Wayland compositor,

00:03:40.521 --> 00:03:43.733
<v Wes>which could be something like Hyperland or Neary or KWIN.

00:03:44.393 --> 00:03:47.603
<v Wes>There's a bunch of options. Sway uses like the WL roots stuff,

00:03:47.603 --> 00:03:49.033
<v Wes>which a bunch of them use under the hood.

00:03:50.761 --> 00:03:55.083
<v Wes>And then that lets you like draw stuff to the screen, right?

00:03:55.083 --> 00:03:57.303
<v Wes>But you actually, you're going to need to do more. And a lot of these provide

00:03:57.303 --> 00:03:59.235
<v Wes>some basic like window management and that kind of thing.

00:03:59.508 --> 00:04:04.893
<v Wes>But basically after that, nothing else, right? So if you want status indicators,

00:04:04.893 --> 00:04:06.673
<v Wes>you want things you can click to like

00:04:06.673 --> 00:04:09.858
<v Wes>move windows around or switch which workspace you're on or any of that.

00:04:10.049 --> 00:04:13.913
<v Chris>Or if you want to build a widget that has a common interface to talk to network manager.

00:04:13.913 --> 00:04:16.543
<v Wes>There you go. Maybe you want to be able to select your Wi-Fi network.

00:04:16.543 --> 00:04:17.853
<v Wes>None of that comes out of the box.

00:04:17.853 --> 00:04:21.393
<v Wes>So that's where you need this whole shell layer on top.

00:04:21.393 --> 00:04:25.273
<v Wes>And QuickShell is an interesting use where they took, I mean,

00:04:25.273 --> 00:04:29.573
<v Wes>like when I'm used to thinking about Qt, i think object oriented c plus plus

00:04:30.013 --> 00:04:31.813
<v Wes>you know what i mean it's low level uh,

00:04:32.329 --> 00:04:35.603
<v Wes>you can do lots of great stuff it's a whole toolkit for you know interfacing

00:04:35.603 --> 00:04:38.308
<v Wes>with wayland drawing things creating and managing windows,

00:04:38.923 --> 00:04:42.784
<v Wes>um but it involves compiling c plus plus and building c plus plus and kind of

00:04:43.068 --> 00:04:45.663
<v Wes>it sounds like something maybe you do if you were building your own plasma but

00:04:45.663 --> 00:04:49.353
<v Wes>doesn't really sound like something you want to do for quick you know i'm just

00:04:49.353 --> 00:04:53.353
<v Wes>working on trying to build out a cool new widget and that's where qml comes in

00:04:53.777 --> 00:04:56.807
<v Wes>and qml which is the cute markup language

00:04:57.243 --> 00:04:59.669
<v Wes>uh it's a declarative.

00:05:00.661 --> 00:05:04.347
<v Wes>A super simple little programming language, essentially, that lets you describe

00:05:04.347 --> 00:05:06.483
<v Wes>the widgets and the interface that you want to build.

00:05:06.843 --> 00:05:10.027
<v Wes>And then it can either be ahead of time compiled into C++ or,

00:05:10.027 --> 00:05:14.277
<v Wes>and this is the part that makes it super useful to work on, it can just be reloaded

00:05:14.277 --> 00:05:16.108
<v Wes>at runtime and drawn on the screen.

00:05:16.770 --> 00:05:21.187
<v Wes>And so QuickShell, under the hood you have Qt, and then you have QtQuick,

00:05:21.187 --> 00:05:25.337
<v Wes>which is a pre-bundled set of common stuff you can use, like basic drawing blocks.

00:05:25.337 --> 00:05:28.537
<v Wes>And the API, you want to be able to put rectangles and circles and all that

00:05:28.537 --> 00:05:29.634
<v Wes>kind of stuff on the screen.

00:05:30.104 --> 00:05:34.687
<v Wes>and quick shell takes that it sits and runs the cute event loop it's kind of

00:05:34.687 --> 00:05:38.045
<v Wes>going to be the thing that actually talks to the whaling compositor and draws things,

00:05:38.556 --> 00:05:42.377
<v Wes>and it looks on your file system wherever you tell it and it loads qml from

00:05:42.377 --> 00:05:46.294
<v Wes>there and then it can in a loop re-evaluate the qml,

00:05:46.799 --> 00:05:51.297
<v Wes>redraw stuff on the screen and it's done a lot of the hard work to build qml

00:05:51.297 --> 00:05:55.067
<v Wes>services which are basically extra apis available to you when you're writing

00:05:55.067 --> 00:05:56.492
<v Wes>a qml on top of quick shell

00:05:56.794 --> 00:06:01.357
<v Wes>that bind to like pipe wire and there's a plugin that handles niri or there's

00:06:01.357 --> 00:06:04.557
<v Wes>uh they have a first party plugin for hyperland so now you can get access to

00:06:04.557 --> 00:06:06.076
<v Wes>all of the hyperland stat state

00:06:06.413 --> 00:06:08.926
<v Wes>right in the qml and then the biggest part that is

00:06:09.338 --> 00:06:11.626
<v Wes>wild because this has been in since like q5,

00:06:12.659 --> 00:06:18.297
<v Wes>how far ahead it is in some ways is qml is designed to be reactive yes so think

00:06:18.297 --> 00:06:21.707
<v Wes>of it kind of like a spreadsheet right where you have linked formulas and cells

00:06:21.707 --> 00:06:25.427
<v Wes>yeah yeah and so you make a change in one cell and everything else automatically

00:06:25.427 --> 00:06:26.127
<v Wes>recomputes and updates.

00:06:26.207 --> 00:06:26.967
<v Chris>Rescales, yeah.

00:06:26.967 --> 00:06:31.787
<v Wes>And so you can describe declarative widgets and bars and panels and docs.

00:06:31.787 --> 00:06:33.313
<v Chris>And they'll rescale to the appropriate display.

00:06:33.574 --> 00:06:37.342
<v Wes>Well, not only that, but like if you update whatever data at the root,

00:06:37.562 --> 00:06:41.307
<v Wes>everything downstream, you don't have to handle like manually updating each

00:06:41.307 --> 00:06:44.117
<v Wes>part of the widget, right? It's much closer to something like React,

00:06:44.117 --> 00:06:47.036
<v Wes>where you describe what you want the final state to look like.

00:06:47.545 --> 00:06:51.271
<v Wes>And as long as you're binding in properties from QML...

00:06:52.358 --> 00:06:56.944
<v Wes>it all just auto-updates. It's like a differential data flow UI engine that

00:06:56.944 --> 00:06:58.912
<v Wes>you get for free just by using QML.

00:06:59.063 --> 00:07:01.294
<v Chris>That you can declaratively define.

00:07:01.294 --> 00:07:01.894
<v Wes>Exactly.

00:07:01.894 --> 00:07:07.167
<v Brent>It sounds like a completely new way to look at how to build desktops. Am I getting that wrong?

00:07:07.950 --> 00:07:11.346
<v Chris>No, you're getting it right. And what's new, what's changed,

00:07:11.462 --> 00:07:16.254
<v Chris>is in May, version 0.3.0 came out, which added a bunch of stuff,

00:07:16.254 --> 00:07:18.968
<v Chris>like PaulKit, Pipewire, Wayland idle timers,

00:07:19.784 --> 00:07:23.874
<v Chris>just more control over managing the windows, A lot of multi-monitor fixes went

00:07:23.874 --> 00:07:29.829
<v Chris>in, and then it was followed by a 0.31 stability release in late August,

00:07:30.340 --> 00:07:34.241
<v Chris>which fixed a few crashes involving multi-monitors and Wi-Fi and things like that.

00:07:35.001 --> 00:07:38.252
<v Chris>So it sort of got recognition after these more recent releases.

00:07:39.465 --> 00:07:43.914
<v Chris>You can use it alongside Plasma pretty easily. You can also use it on GNOME,

00:07:43.914 --> 00:07:46.413
<v Chris>although for full integration, you would need a corresponding extension.

00:07:47.829 --> 00:07:55.202
<v Chris>But it's really blowing up on Hyperland and other tiling window managers because

00:07:55.329 --> 00:07:59.194
<v Chris>there are projects that are now giving you more of a – I wouldn't call it a

00:07:59.194 --> 00:08:01.234
<v Chris>complete desktop because Wes will give me a hard time.

00:08:01.234 --> 00:08:04.314
<v Chris>But I would say it gives you like a status bar, application timers,

00:08:04.314 --> 00:08:07.555
<v Chris>a control center for like which Wi-Fi network, audio device,

00:08:07.978 --> 00:08:13.011
<v Chris>notifications and D&D, calendar integration, Bluetooth controls,

00:08:13.974 --> 00:08:17.104
<v Chris>you know, settings, drop down, things like that that are kind of nice to have

00:08:17.104 --> 00:08:21.765
<v Chris>on any desktop that don't come inherently with nearly any of these tiling window managers.

00:08:21.963 --> 00:08:25.614
<v Wes>Sort of the day-to-day stuff that you'd expect to like run and operate a machine

00:08:25.614 --> 00:08:29.492
<v Wes>just from the GUI without having to know a bunch of keyboard shortcuts or stuff like that.

00:08:29.811 --> 00:08:33.054
<v Chris>But they're, and it's beautiful. It's also, I don't know if we've touched on

00:08:33.054 --> 00:08:34.646
<v Chris>this, but it's gorgeous.

00:08:35.198 --> 00:08:38.791
<v Chris>It's, it looks like some of the most modern desktop Linux out there.

00:08:39.790 --> 00:08:43.084
<v Chris>And Hyperland really is a nice fit because it's a very smooth desktop,

00:08:43.084 --> 00:08:44.154
<v Chris>but it doesn't bring anything.

00:08:44.903 --> 00:08:47.451
<v Chris>And really, and so this kind of gives you something to work with.

00:08:47.991 --> 00:08:51.712
<v Chris>The other reason it's getting some traction is Amarchi is using it, Amarchi.

00:08:52.467 --> 00:08:56.354
<v Chris>They have a Quattro release in the works, and they've kind of built a whole

00:08:56.354 --> 00:08:59.020
<v Chris>Hyperland shell around QuickShell.

00:08:59.653 --> 00:09:03.270
<v Chris>And the desktop is a QuickShell process called Amarchi shell,

00:09:03.734 --> 00:09:07.334
<v Chris>and has a top bar, drop-down control panels, notifications, volume,

00:09:07.774 --> 00:09:10.954
<v Chris>brightness stuff, application menu, clipboard, emoji, overlays,

00:09:10.954 --> 00:09:12.842
<v Chris>lock screen. Yeah, these are the whole lock screen.

00:09:13.765 --> 00:09:15.866
<v Chris>You know, pseudo-prompts, background services.

00:09:16.842 --> 00:09:19.556
<v Chris>And because everything is sort of like Gnome Shell, where it's sort of one big,

00:09:19.556 --> 00:09:23.116
<v Chris>large process, they can rechange and refresh stuff while it's running.

00:09:23.116 --> 00:09:26.594
<v Chris>But they also have a plug-in system, which sits on top of QuickShell.

00:09:26.966 --> 00:09:28.136
<v Chris>They've already had over a

00:09:28.136 --> 00:09:31.482
<v Chris>thousand different contributions of plug-ins in their quote-unquote store.

00:09:31.952 --> 00:09:33.956
<v Chris>They also ran a little bit of a competition,

00:09:33.956 --> 00:09:36.286
<v Chris>and they awarded some of the competitions and stuff like that.

00:09:37.060 --> 00:09:40.206
<v Wes>Yeah, this is where it kind of gets interesting that it's using QML.

00:09:40.206 --> 00:09:43.746
<v Wes>Because at first, it kind of just, you know, you could almost view it like sort

00:09:43.746 --> 00:09:46.476
<v Wes>of something like Nix. It's declarative. You set a lot of properties,

00:09:46.476 --> 00:09:49.646
<v Wes>right? Like I need to set the width of this piece of the UI or something,

00:09:49.646 --> 00:09:51.792
<v Wes>you know, the background color, all those kinds of normal things.

00:09:52.350 --> 00:09:56.576
<v Wes>But the properties can also be expressions, which are just JavaScript.

00:09:56.576 --> 00:10:00.996
<v Wes>And once you put that there, you can basically do anything. It becomes essentially

00:10:00.996 --> 00:10:02.085
<v Wes>a full programming language.

00:10:02.566 --> 00:10:05.585
<v Wes>And so that means you can have really self-contained little plugins because,

00:10:06.798 --> 00:10:10.806
<v Wes>Quickshell and QML offer stuff like, you know, talking to REST APIs,

00:10:10.806 --> 00:10:14.362
<v Wes>reading files on the file system, doing like Dbus and Unix sockets.

00:10:14.676 --> 00:10:17.659
<v Wes>you get all kinds of different ways to pull data in. So if you want,

00:10:17.955 --> 00:10:20.866
<v Wes>however you want to surface that, an API that runs on your box,

00:10:20.866 --> 00:10:25.896
<v Wes>a file from the file system, something else, if you can use those hooks to bring

00:10:25.896 --> 00:10:29.416
<v Wes>data into QML, then the rest of the stuff all just applies, right?

00:10:29.416 --> 00:10:32.346
<v Wes>So it's the second you've got it in there, you can build a UI with it.

00:10:32.346 --> 00:10:35.666
<v Chris>I did, and I'll talk about that in a little bit. I built a couple things.

00:10:35.858 --> 00:10:39.474
<v Wes>And so the Omachi setup is,

00:10:39.950 --> 00:10:42.826
<v Wes>you can have this top level, it's all just like, you can just have essentially

00:10:42.826 --> 00:10:46.166
<v Wes>a big folder of QML, And then because the plugins are mostly self-contained,

00:10:46.166 --> 00:10:49.146
<v Wes>then we could rely on like Hyperland specific stuff or whatever,

00:10:49.146 --> 00:10:51.490
<v Wes>you know, there's some more specificity in some of them.

00:10:51.699 --> 00:10:56.916
<v Wes>But in general, you just drop that folder in the tree and Quickshell is already

00:10:56.916 --> 00:11:00.386
<v Wes>set up to reload that anyway. And then the second you reference it anywhere

00:11:00.386 --> 00:11:02.954
<v Wes>else or, you know, it can tie up all the strings for you.

00:11:03.580 --> 00:11:04.175
<v Wes>And then you're done.

00:11:04.175 --> 00:11:07.115
<v Chris>And one of the nice things about that is it keeps a real consistent look.

00:11:07.115 --> 00:11:10.215
<v Chris>So all of their plugins for their desktop, for their Quattro desktop,

00:11:10.616 --> 00:11:14.625
<v Chris>they all have a consistent theme. And when you change the shell theme,

00:11:14.625 --> 00:11:19.215
<v Chris>they all immediately adapt and are consistent. It's very, it's really quite nice.

00:11:19.215 --> 00:11:24.735
<v Wes>Yeah. And so internally, they can expose sort of properties inside QML.

00:11:24.735 --> 00:11:27.115
<v Wes>And then so when you're building a downstream plugin, if you just reference

00:11:27.115 --> 00:11:29.175
<v Wes>that, you automatically get that consistency.

00:11:29.175 --> 00:11:32.935
<v Chris>So historically, throughout Linux and all the various distributions that are

00:11:32.935 --> 00:11:35.935
<v Chris>out there, we had these boutique distributions where, you know,

00:11:35.935 --> 00:11:39.575
<v Chris>a couple of Rockstar developers would or one Rockstar developer or whatever

00:11:39.575 --> 00:11:43.955
<v Chris>it might be, would get together and they would create their version of a desktop environment.

00:11:43.955 --> 00:11:46.941
<v Chris>We still have versions of these at different scales.

00:11:48.045 --> 00:11:51.955
<v Chris>But what I think we're going to see with QuickShell and AI-assisted development

00:11:51.955 --> 00:11:55.672
<v Chris>and with bases like Arch and NixOS is you're going to see….

00:11:56.973 --> 00:12:02.932
<v Chris>Hundreds and thousands of little teeny tiny micro distros that are their own

00:12:02.932 --> 00:12:06.993
<v Chris>composite, like mine. Like Hypervibe is now, it's a base of Nix OS.

00:12:08.032 --> 00:12:12.842
<v Chris>The window manager is Wayland Hyperland. And then the entire shell now from

00:12:12.842 --> 00:12:16.374
<v Chris>the lock screen, the login screen, everything is all QuickShell.

00:12:17.361 --> 00:12:21.703
<v Chris>I've built it all. I've built my entire, my desk over the last three days.

00:12:22.318 --> 00:12:26.342
<v Chris>Well, okay, there's a little more. And I've deployed it to all my systems with

00:12:26.342 --> 00:12:28.712
<v Chris>multiple different – every system has a different video card,

00:12:28.712 --> 00:12:29.777
<v Chris>a different monitor layout.

00:12:30.782 --> 00:12:35.762
<v Chris>And it's my desktop shell now. And it really wasn't – it's not like I sat down

00:12:35.762 --> 00:12:36.862
<v Chris>and, like, learned how to do C++.

00:12:37.816 --> 00:12:41.891
<v Chris>Quick shell is so straightforward, and it's so easy for agents to manage as well.

00:12:42.768 --> 00:12:47.835
<v Chris>Or for a person to just do, you know, by hand, all 100% human Greg created.

00:12:48.335 --> 00:12:51.062
<v Chris>It's approachable that way too. So it's really going to create,

00:12:51.062 --> 00:12:54.362
<v Chris>I believe, because we already have so many great distros, especially like when

00:12:54.362 --> 00:12:56.802
<v Chris>you think about the Ublues you could easily rebase on and Silverblue.

00:12:56.802 --> 00:13:01.837
<v Chris>There's so many great base distros out there to then just build your own layer on top of.

00:13:02.650 --> 00:13:05.993
<v Chris>And you'll just see people will just be hundreds, if not thousands of GitHub

00:13:06.115 --> 00:13:10.022
<v Chris>repos and GitLab repos out there of people just running their own distro now.

00:13:10.318 --> 00:13:13.962
<v Chris>And I bet, I bet if people boosted in our email, I bet you a lot of people in

00:13:13.962 --> 00:13:15.816
<v Chris>our audience are already doing this.

00:13:17.035 --> 00:13:20.052
<v Chris>And this is what's being this is what quick shell is unlocking now is this last

00:13:20.052 --> 00:13:24.432
<v Chris>layer this last layer of the desktop can now be completely yours or there's

00:13:24.432 --> 00:13:28.332
<v Chris>so many cool community spins out there you can take in i just think that's really neat.

00:13:28.332 --> 00:13:32.262
<v Wes>Yeah there's like a critical mass factor i like your comparison with nix right

00:13:32.262 --> 00:13:36.082
<v Wes>because there's a long time where nix was like okay really cool technology but

00:13:36.082 --> 00:13:37.862
<v Wes>if nix packages didn't really have enough,

00:13:38.562 --> 00:13:41.152
<v Wes>you're not going to take all the time to reboot strap your whole environment

00:13:41.152 --> 00:13:45.022
<v Wes>every time right so and i think that's where we're getting now.

00:13:45.022 --> 00:13:45.960
<v Wes>It's like Quickshell has...

00:13:47.005 --> 00:13:50.092
<v Wes>QML has been around for a while, right? We've had a lot of these primitives.

00:13:50.092 --> 00:13:53.982
<v Wes>QuickShell's now got a rich enough API and we've got so much stuff that's building

00:13:53.982 --> 00:13:57.792
<v Wes>on top of it and sort of figuring out some of the quirks of the system and how

00:13:57.792 --> 00:14:01.022
<v Wes>to wire it up robustly and it's open source.

00:14:01.022 --> 00:14:05.472
<v Wes>So now we just have all of these pieces that even if you can't just exactly

00:14:05.472 --> 00:14:09.362
<v Wes>pull the thing, most of it's going to be declared to VUI and maybe you need

00:14:09.362 --> 00:14:11.992
<v Wes>to fuss a little with where the data comes in and out or whatever.

00:14:12.744 --> 00:14:18.241
<v Wes>But that's it. And you have a bunch of examples of how to do it or reinvent yourself?

00:14:19.002 --> 00:14:21.712
<v Chris>This is what I wanted Plasma Widgets to be.

00:14:23.092 --> 00:14:27.332
<v Chris>I remember when QML was first introduced and I thought there's real potential here for all of this.

00:14:27.918 --> 00:14:31.432
<v Chris>The other thing I think that's moving the needle a little bit is the Omicron

00:14:31.432 --> 00:14:35.342
<v Chris>Foundation announced that it has become a premier sponsor of Quickshell and

00:14:35.342 --> 00:14:39.802
<v Chris>its lead developer, who's known publicly as Outfoxed, and the sponsorship is

00:14:39.802 --> 00:14:42.006
<v Chris>initially set to run for three years.

00:14:42.702 --> 00:14:46.272
<v Chris>They're also sponsoring Vaxery from Hyperland for, I believe,

00:14:46.732 --> 00:14:48.879
<v Chris>three years, perhaps, with the option to even extend that.

00:14:49.273 --> 00:14:53.872
<v Chris>So both the Hyperland component and the Quickshell component now have at least

00:14:53.872 --> 00:14:56.268
<v Chris>three years of full-time funding for development.

00:14:56.826 --> 00:14:59.763
<v Chris>So they're probably not slowing down because that just happened.

00:15:00.082 --> 00:15:02.592
<v Wes>Yeah, that means you can actually, you know, you can take some stuff off the

00:15:02.592 --> 00:15:04.422
<v Wes>backlog, you can plan out some

00:15:04.422 --> 00:15:07.013
<v Wes>months at a time to figure out what things you're going to be building.

00:15:07.449 --> 00:15:07.712
<v Chris>Yeah.

00:15:07.712 --> 00:15:09.032
<v Wes>That's an enviable position.

00:15:09.032 --> 00:15:12.142
<v Chris>So I feel like you're going to hear more about Quickshell, and one of the ways

00:15:12.142 --> 00:15:15.582
<v Chris>you're going to experience it is You'll probably see at least Plasma-based distros

00:15:15.582 --> 00:15:17.596
<v Chris>start shipping different QuickShell applications,

00:15:18.147 --> 00:15:20.562
<v Chris>not to spoil the picks, but that's another thing that's happening is people

00:15:20.562 --> 00:15:24.382
<v Chris>are able to also publish standalone applications using QuickShell,

00:15:24.899 --> 00:15:27.139
<v Chris>which is very fascinating. I played with some of those too.

00:15:27.546 --> 00:15:30.019
<v Chris>But I think we should talk about some of the stuff we built. Yeah.

00:15:40.546 --> 00:15:44.375
<v Brent>So with all that fun, we built a thing, we extended it, and well,

00:15:44.375 --> 00:15:45.934
<v Brent>of course, we have some notes.

00:15:46.205 --> 00:15:50.925
<v Brent>But before we get there, let's talk a bit more about these community plugins.

00:15:51.935 --> 00:15:54.175
<v Chris>I thought this was an interesting way to kind of kick things off.

00:15:54.175 --> 00:15:58.015
<v Chris>You know, Omar, she held this community plugin contest and awarded some cash

00:15:58.015 --> 00:16:02.460
<v Chris>prizes to some of the number one plugins for their platform.

00:16:02.964 --> 00:16:09.542
<v Chris>And can and have been pretty straightforward to just port these to my own setup.

00:16:11.035 --> 00:16:14.665
<v Chris>really it's not hard these are not like inherently locked into oma archie they

00:16:14.665 --> 00:16:17.655
<v Chris>might be designed around oma archie but they're not inherently locked in.

00:16:17.655 --> 00:16:20.715
<v Wes>Which is a great point because from the outside especially if you are coming

00:16:20.715 --> 00:16:24.915
<v Wes>from like an ohm or plasma it could be kind of hard to understand like is this

00:16:24.915 --> 00:16:29.275
<v Wes>compatible what parts of this can i use or not use and you're not using that

00:16:29.275 --> 00:16:31.305
<v Wes>you're using a different shell which we can.

00:16:31.305 --> 00:16:32.525
<v Chris>Talk more about yeah yeah so.

00:16:32.525 --> 00:16:35.419
<v Wes>I think it's a great test case because it does show like unless it's trying

00:16:35.570 --> 00:16:38.505
<v Wes>it helps probably that you're on the same compositor but like unless you're

00:16:38.505 --> 00:16:42.095
<v Wes>unless it really needs some sort of hyper specific omachi information.

00:16:42.298 --> 00:16:45.785
<v Chris>Or design elements right i mean they have a very unique style i like it i mean

00:16:45.785 --> 00:16:50.775
<v Chris>it is it is a good look uh i just it's not the shell i'm using uh but one of the number one uh,

00:16:51.595 --> 00:16:55.755
<v Chris>plugins is really cool it's called radio atlas and it is a plugin that allows

00:16:55.755 --> 00:16:59.705
<v Chris>you to rotate a globe and then little dots on the map throughout and around

00:16:59.705 --> 00:17:04.055
<v Chris>the world and when you click the dot it plays the radio station from that area

00:17:04.055 --> 00:17:06.510
<v Chris>around the world it's basically got all the radio stations,

00:17:06.992 --> 00:17:10.275
<v Chris>and it's just a really neat thing to have like if you like me i really enjoy

00:17:10.275 --> 00:17:14.695
<v Chris>trying especially around the states different local radio local tv,

00:17:15.915 --> 00:17:19.615
<v Chris>and it's just really well done and it's like an example of what actually is

00:17:19.615 --> 00:17:26.215
<v Chris>a very powerful and very nice user interface very high-end user interface that

00:17:26.215 --> 00:17:29.095
<v Chris>is done with this kind of simple quick shell setup.

00:17:29.435 --> 00:17:33.135
<v Wes>It gets it much closer to like if you were comfortable building out like a simple

00:17:33.135 --> 00:17:38.975
<v Wes>React UI you can now do a similar thing except it's a part of the desktop.

00:17:38.975 --> 00:17:39.528
<v Chris>Or you know,

00:17:40.602 --> 00:17:45.850
<v Chris>Claude Code can. The other one that I thought was just a great idea that I'll

00:17:45.850 --> 00:17:49.547
<v Chris>probably be borrowing is the Home Assistant QuickShell integration.

00:17:49.745 --> 00:17:53.910
<v Chris>To just be able to control different parts of your Home Assistant right there in the bar.

00:17:54.310 --> 00:17:58.080
<v Chris>Very, very beautifully done. Again, not necessarily locked to one particular

00:17:58.080 --> 00:18:01.400
<v Chris>project, which is really great. So they have some really wonderful plugins,

00:18:01.400 --> 00:18:04.054
<v Chris>and you can just browse them and get an idea of what people are building.

00:18:05.174 --> 00:18:08.332
<v Chris>And I did that. And I found one called SyncShell.

00:18:08.594 --> 00:18:10.352
<v Wes>Oh, okay.

00:18:10.631 --> 00:18:16.082
<v Chris>Sync Shell is a health and monitoring widget for Sync Thing.

00:18:17.144 --> 00:18:20.772
<v Chris>And you can control and install or control service, pause syncing, things like that.

00:18:21.022 --> 00:18:24.598
<v Wes>And as we know, you've recently recommitted to our dear Sync Thing.

00:18:24.766 --> 00:18:29.040
<v Chris>That's right. So this one was built. Sync Shell is built for Oma Archie,

00:18:29.040 --> 00:18:31.830
<v Chris>although the project does stay. You know, we're totally open to expanding in

00:18:31.830 --> 00:18:33.740
<v Chris>the future. So I may link them what I did.

00:18:34.152 --> 00:18:39.568
<v Chris>Because I have built my shell around Dank Linux, the DMS shell.

00:18:39.922 --> 00:18:45.250
<v Chris>Dank Shell is beautiful. So I took a lot of my design from Dank Shell,

00:18:45.250 --> 00:18:51.799
<v Chris>which is, you know, it's like a it's a community made desktop for Sway,

00:18:52.019 --> 00:18:54.452
<v Chris>really any Wayland, any Wayland desktop.

00:18:54.876 --> 00:18:59.860
<v Chris>And it's beautiful. It's so gorgeous. It's so nice. And so I just sort of like

00:18:59.860 --> 00:19:04.860
<v Chris>aped all of this and then wanted to create a SyncThing widget that matches that design.

00:19:05.191 --> 00:19:08.110
<v Chris>And I'm going to publish this. So if you end up playing around with this listener

00:19:08.110 --> 00:19:11.100
<v Chris>and you also use sync thing and you would like a sync thing widget for your

00:19:11.100 --> 00:19:14.258
<v Chris>dank desktop, I will publish this in the show notes.

00:19:14.653 --> 00:19:20.880
<v Chris>I have made sync shell and it is kind of my, you know, quick copy.

00:19:20.880 --> 00:19:23.710
<v Chris>This is a read only version. It tells you the current status of things,

00:19:23.710 --> 00:19:26.848
<v Chris>where they're synced, how much space is transferred, where what's left.

00:19:27.284 --> 00:19:31.610
<v Chris>You can see I have 73 gigabytes indexed across 11 folders. And I'm currently

00:19:31.610 --> 00:19:33.750
<v Chris>updating this week in Bitcoin. And...

00:19:35.022 --> 00:19:39.346
<v Chris>It's QML, JavaScript, and a little Nix language so I can get it easily going on my host.

00:19:39.590 --> 00:19:42.789
<v Wes>Nice. See, and this is great, too, because you've already tried experimenting

00:19:42.789 --> 00:19:44.385
<v Wes>with, like, can I have this?

00:19:45.070 --> 00:19:48.349
<v Wes>One thing I'm excited about here is the composability, right?

00:19:48.349 --> 00:19:51.019
<v Wes>So you can just sort of publish this. It's just some bits. You don't really

00:19:51.019 --> 00:19:53.992
<v Wes>need to compile anything or do any complicated build.

00:19:54.521 --> 00:19:57.619
<v Wes>And so you can have a simple Nix package that kind of just puts the bits on

00:19:57.619 --> 00:19:59.641
<v Wes>disk and then pull them in the right spot.

00:19:59.977 --> 00:20:05.126
<v Chris>And it's really good at handling various monitor layouts and panel size differences.

00:20:05.329 --> 00:20:09.029
<v Chris>which has been really, really nice because I have really weird esoteric vertical

00:20:09.029 --> 00:20:14.165
<v Chris>monitors and every monitor has a different resolution in some systems. It's really crazy.

00:20:14.780 --> 00:20:18.139
<v Chris>So it's been nice to build something because I have one Nix config for all these

00:20:18.139 --> 00:20:21.179
<v Chris>hosts. So it's really nice to be able to build something that does work across

00:20:21.179 --> 00:20:22.675
<v Chris>multiple hosts but is still adaptive.

00:20:22.829 --> 00:20:26.459
<v Wes>You can have customizations but it's not like a crazy thing where you're constantly

00:20:26.459 --> 00:20:28.799
<v Wes>duplicating everything and having to do a bunch of jank.

00:20:28.799 --> 00:20:33.519
<v Chris>I really like that. It feels like mine too in a way that I wasn't really missing

00:20:33.519 --> 00:20:36.059
<v Chris>some of this stuff but now that I have it, I don't think I can go back.

00:20:36.929 --> 00:20:40.006
<v Chris>It is still sort of feels early. It is kind of easy every now and then to like,

00:20:40.523 --> 00:20:44.809
<v Chris>slip into an accidental like CPU loop where it's like eating a lot of CPU because

00:20:45.149 --> 00:20:47.529
<v Chris>something in the bar didn't render correctly. And it takes me a minute to catch

00:20:47.529 --> 00:20:50.507
<v Chris>that. But that's my own foot gun. Not inherent to quick show.

00:20:51.192 --> 00:20:52.979
<v Chris>Did you have anything you built or play around with?

00:20:52.979 --> 00:20:56.318
<v Wes>I did. Yeah. So, okay. One thing I find fascinating here is.

00:20:57.160 --> 00:21:01.549
<v Wes>because there's this connection with, you know, drawing UIs,

00:21:01.775 --> 00:21:05.467
<v Wes>the flip side of that, which has become quite the study in the web world,

00:21:05.751 --> 00:21:07.777
<v Wes>is like you need state management, right?

00:21:07.777 --> 00:21:10.680
<v Wes>So like you have the UI, but the UI is displaying state, which could be,

00:21:11.045 --> 00:21:13.807
<v Wes>you know, the external state of your sync thing, or it could be like where the

00:21:13.807 --> 00:21:15.807
<v Wes>windows are and which windows exist and how many workshops you have.

00:21:16.207 --> 00:21:17.047
<v Chris>But what's the source of truth kind of thing?

00:21:17.047 --> 00:21:17.417
<v Wes>Yes.

00:21:17.417 --> 00:21:17.757
<v Chris>Okay.

00:21:17.757 --> 00:21:21.787
<v Wes>And different desktops have taken different paths on some of this, right?

00:21:21.787 --> 00:21:22.077
<v Chris>Yeah, yeah.

00:21:22.077 --> 00:21:27.247
<v Wes>So like the stuff that this latest Omachi is doing is really like QML QuickShell

00:21:27.247 --> 00:21:31.177
<v Wes>native, where it's all there. It's just one tree. The state lives mostly in

00:21:31.177 --> 00:21:33.962
<v Wes>that system besides like some config files on disk.

00:21:34.450 --> 00:21:38.157
<v Wes>But DankMaterialShell kind of took a different path. They have a separate Go

00:21:38.157 --> 00:21:40.527
<v Wes>daemon that sort of does a lot of the stuff under the hood.

00:21:40.527 --> 00:21:40.876
<v Chris>Yeah.

00:21:41.010 --> 00:21:45.107
<v Wes>And then QML talks to it over two different sockets. One's like a request response.

00:21:45.107 --> 00:21:47.796
<v Wes>And then the other one, it sort of subscribes for updates.

00:21:48.115 --> 00:21:53.437
<v Wes>And so the Go daemon can kind of own a bunch of the state. and then QML ends

00:21:53.437 --> 00:21:55.487
<v Wes>up being used sort of as the presentation layer.

00:21:55.650 --> 00:21:59.357
<v Chris>That's one of the things that actually drew me to Dank. I mean,

00:21:59.357 --> 00:22:01.727
<v Chris>because you need something that's doing that management and that dispatch.

00:22:01.727 --> 00:22:02.867
<v Chris>I thought that was a good way to do it.

00:22:02.867 --> 00:22:06.296
<v Wes>Yeah, absolutely. And what's fun is you get various sort of like there's different,

00:22:06.459 --> 00:22:10.287
<v Wes>it fits into sort of theoretical computer science because there's just various

00:22:10.287 --> 00:22:13.777
<v Wes>ways of managing state and various ways of handling and updating UIs.

00:22:13.777 --> 00:22:17.647
<v Wes>And so you get, QML handles a certain amount of it and then everything else,

00:22:17.647 --> 00:22:20.767
<v Wes>you get to see this sort of plethora of different open source takes,

00:22:20.767 --> 00:22:25.777
<v Wes>right? So there's like Celestia, they compile a C++ plugin that they load,

00:22:25.777 --> 00:22:27.170
<v Wes>and that's where the config lives.

00:22:28.227 --> 00:22:31.747
<v Wes>There's a bunch of different use cases. Some folks even like Noctalia used to

00:22:31.747 --> 00:22:35.233
<v Wes>use QuickShell, but now they're just going C++ native entirely.

00:22:35.819 --> 00:22:41.677
<v Wes>Yeah. So I decided I'd build my own shell, kind of inspired by what Dank is doing.

00:22:41.677 --> 00:22:44.753
<v Chris>Oh, this is exciting. Brent, what do you think? Okay, Brent.

00:22:45.020 --> 00:22:49.827
<v Chris>Brent, what is Wes's desktop shell? What are the key things that Wes has to

00:22:49.827 --> 00:22:51.394
<v Chris>have on his desktop shell? What do you think?

00:22:52.057 --> 00:22:54.017
<v Chris>app launcher probably maybe you.

00:22:54.017 --> 00:22:57.767
<v Brent>Know i think he's gonna hide that i think is he's gonna get to an app launcher

00:22:57.767 --> 00:23:00.637
<v Brent>with the keyboard shortcuts but right but i mean and.

00:23:00.637 --> 00:23:02.732
<v Chris>I guess you could use another one too you don't have to build one.

00:23:03.377 --> 00:23:08.687
<v Brent>He wants a bunch of visibility into like multitasking i think so similar like

00:23:08.687 --> 00:23:12.857
<v Brent>pinning your tabs in your you know browser some people do this i hear i bet

00:23:12.857 --> 00:23:16.197
<v Brent>you he has like a sidebar or something where you can see the progress of,

00:23:16.997 --> 00:23:21.167
<v Brent>everything that's going on at a glance and then you know keyboard shortcuts

00:23:21.167 --> 00:23:22.857
<v Brent>to quickly move to them uh you should.

00:23:22.857 --> 00:23:23.777
<v Chris>Call it the pain bench.

00:23:25.341 --> 00:23:26.057
<v Brent>I like what.

00:23:26.057 --> 00:23:27.257
<v Wes>You guys are crafting for me.

00:23:27.257 --> 00:23:31.377
<v Brent>Can you write some of this down someone recorded right well.

00:23:31.377 --> 00:23:35.417
<v Chris>I'm thinking i'm thinking like uh it depends on how far you want to go right

00:23:35.417 --> 00:23:40.260
<v Chris>because oh man you could build one that has like a wi-fi network manager interface you,

00:23:42.071 --> 00:23:44.891
<v Chris>Why not have a button that executes K-Exec? You could just have that.

00:23:44.891 --> 00:23:48.591
<v Chris>Oh, I don't have that yet. K-Exec on the fly. Okay, so tell us, what is your desktop?

00:23:49.211 --> 00:23:52.231
<v Wes>What is it? Well, so right now it's super minimal. I went with Neary as the

00:23:52.631 --> 00:23:56.293
<v Wes>scrollable Wayland compositor under the hood. Nice.

00:23:56.688 --> 00:24:00.391
<v Wes>And then on top of that, well, naturally because it's me, I have a Clojure Babashka

00:24:00.391 --> 00:24:05.161
<v Wes>program, and it's serving the role of that Go program. So it's sort of the state

00:24:05.161 --> 00:24:08.118
<v Wes>manager and the brain, and then it subscribes.

00:24:08.374 --> 00:24:12.371
<v Wes>Neary has an event socket, And so you talk to that. The first thing is it pushes

00:24:12.371 --> 00:24:14.347
<v Wes>the current state of everything it knows.

00:24:14.655 --> 00:24:17.851
<v Wes>And then after that, it will send events whenever you do stuff,

00:24:17.851 --> 00:24:19.958
<v Wes>right? You click or you move windows or you do whatever.

00:24:20.121 --> 00:24:20.661
<v Chris>This guy.

00:24:20.661 --> 00:24:21.211
<v Wes>And then so,

00:24:23.250 --> 00:24:25.011
<v Wes>the brain just gets those and.

00:24:25.011 --> 00:24:28.651
<v Chris>Sort of- So Neri's doing that inherently and you're just writing on top of that?

00:24:28.651 --> 00:24:29.741
<v Wes>Yeah, so it subscribes.

00:24:29.741 --> 00:24:30.471
<v Chris>Oh, that's great.

00:24:30.471 --> 00:24:34.831
<v Wes>So anytime you know, like if I like click a button that takes me to Workshop

00:24:34.831 --> 00:24:38.351
<v Wes>2 or Workspace 2, that sends an event that says that, right?

00:24:38.351 --> 00:24:42.047
<v Wes>And then so the Clojure program does what's known as like a reduce or a fold.

00:24:42.337 --> 00:24:45.351
<v Wes>So every time it gets an event, it just updates state, right?

00:24:45.351 --> 00:24:47.661
<v Wes>It says like, oh, I know that what changed. Let me keep track of it.

00:24:48.188 --> 00:24:54.371
<v Wes>And then anytime you have an update, you render out now what the state looks

00:24:54.371 --> 00:24:56.072
<v Wes>like, right? And so that gets pushed.

00:24:56.239 --> 00:24:57.591
<v Wes>You could do it over a socket or

00:24:57.591 --> 00:24:59.746
<v Wes>I'm just doing a file right now because I don't have that much in there.

00:25:00.135 --> 00:25:03.578
<v Wes>So it has opportunity there to update the state.

00:25:03.693 --> 00:25:07.241
<v Wes>It controls that and it can fire off events or whatever and actions that are

00:25:07.241 --> 00:25:11.451
<v Wes>needed when you see like, oh this thing changed sure what do I need to do and then,

00:25:11.911 --> 00:25:16.331
<v Wes>QML is set up to be the rendering side so it reads the state.json file and then

00:25:16.331 --> 00:25:19.211
<v Wes>that has everything it needs to display everything of course and then source

00:25:19.211 --> 00:25:23.591
<v Wes>of truth just like a lot of these are doing um QuickShell has an IPC

00:25:24.031 --> 00:25:27.541
<v Wes>that you can talk to right so essentially it then triggers things in QuickShell

00:25:27.541 --> 00:25:31.031
<v Wes>so like when you click one of the things it had to build was like a little workspace

00:25:31.031 --> 00:25:33.951
<v Wes>switcher yeah there's also basic stuff for just being able to click and see

00:25:33.951 --> 00:25:35.805
<v Wes>what windows are open and click on those.

00:25:36.078 --> 00:25:37.771
<v Chris>Okay so you got a window switcher.

00:25:38.291 --> 00:25:39.445
<v Wes>And so that took,

00:25:40.350 --> 00:25:45.067
<v Wes>all of that loop to be able to work right um and so i was trying to figure out

00:25:45.067 --> 00:25:47.212
<v Wes>like what exactly all do you need

00:25:47.600 --> 00:25:51.807
<v Wes>um so that gave me like a very basic i've got my clock i've got my very basic

00:25:51.807 --> 00:25:55.167
<v Wes>window controls right everything working there uh and then of course i had to

00:25:55.167 --> 00:25:59.367
<v Wes>add basic system monitoring right so like live cpu and disk and networking.

00:25:59.367 --> 00:26:02.471
<v Chris>Nice oh i didn't think you'd do monitoring that's cool uh.

00:26:02.837 --> 00:26:07.767
<v Wes>And then uh i figured you know because in case brantley wanted to use any of

00:26:07.767 --> 00:26:12.727
<v Wes>this i did add a little monitor that tells me the Firefox windows I have open

00:26:12.727 --> 00:26:14.077
<v Wes>and how many tabs they have in each of them.

00:26:14.477 --> 00:26:15.437
<v Brent>Called it. Good call.

00:26:17.233 --> 00:26:21.000
<v Wes>And then I did also build a cute little power profile switcher.

00:26:21.198 --> 00:26:21.620
<v Chris>Oh, yeah.

00:26:21.620 --> 00:26:23.420
<v Wes>So you can kind of just click that and toggle it.

00:26:23.420 --> 00:26:24.160
<v Chris>And you know it works.

00:26:24.971 --> 00:26:28.030
<v Wes>And then the fanciest thing I've built so far, because a lot of this was just

00:26:28.030 --> 00:26:30.620
<v Wes>trying to get the underlying architecture to work at all and be like an actual

00:26:30.620 --> 00:26:36.170
<v Wes>desktop I could use without having to switch back, is a little open code session viewer.

00:26:36.170 --> 00:26:37.680
<v Chris>I was thinking about building one of those.

00:26:37.680 --> 00:26:42.210
<v Wes>So it tells me I have 11 sessions over the last 24 hours, 32 million tokens,

00:26:42.210 --> 00:26:44.350
<v Wes>you know, and then it tells me like how much I've spent. and then you click

00:26:44.350 --> 00:26:47.910
<v Wes>it and this took a little bit, you know, to make work. It's not very,

00:26:47.910 --> 00:26:52.020
<v Wes>it's not fancy yet, but you click it and it drops down and it shows you like the most recent ones.

00:26:52.020 --> 00:26:52.440
<v Chris>Oh, I love it.

00:26:52.440 --> 00:26:52.810
<v Wes>Yeah.

00:26:52.810 --> 00:26:58.180
<v Chris>And their title. Yeah. That's great. So to sort of double down on that point,

00:26:58.180 --> 00:27:01.270
<v Chris>we're talking about a lot like building your desktop and creating a shell and

00:27:01.270 --> 00:27:05.031
<v Chris>replacing Plasma or GNOME, but you could just build that widget.

00:27:05.350 --> 00:27:05.690
<v Wes>Yeah.

00:27:05.690 --> 00:27:08.540
<v Chris>And you could just use it on whatever desktop you'd like today.

00:27:08.540 --> 00:27:10.400
<v Wes>You do not need to replace the entire shell.

00:27:10.400 --> 00:27:13.250
<v Chris>So if you just want a widget for a thing that's unique to you,

00:27:13.250 --> 00:27:15.600
<v Chris>Like I was kind of joking in the intro, you could turn your dashboard,

00:27:15.600 --> 00:27:19.190
<v Chris>you could turn your desktop into a dashboard because you could just build like

00:27:19.190 --> 00:27:21.313
<v Chris>I built a sync thing. You built an open code thing.

00:27:21.626 --> 00:27:23.800
<v Chris>They don't require that you build your whole shell.

00:27:24.360 --> 00:27:26.990
<v Chris>You could actually just make them plasma widgets or you could make them a little

00:27:26.990 --> 00:27:29.500
<v Chris>application on Gnome or whatever you want to use.

00:27:29.500 --> 00:27:35.220
<v Wes>And like you could, like in my version, I'm having the Clojure program go and

00:27:35.220 --> 00:27:37.010
<v Wes>fetch the data and then write it into the state.

00:27:37.010 --> 00:27:41.330
<v Wes>But the rest of that, like the downstream UI part, you could just take,

00:27:41.330 --> 00:27:43.830
<v Wes>right? Because none of that needs to change. You just have to fill in the gap

00:27:43.830 --> 00:27:45.200
<v Wes>with how you want to provide the information.

00:27:45.200 --> 00:27:46.164
<v Chris>The info, yep, yep, yep.

00:27:46.774 --> 00:27:51.980
<v Brent>I feel like with our modern tools, we're starting to see a shift towards deep customization.

00:27:52.380 --> 00:27:56.440
<v Brent>If you look at a tool like OpenCode, for instance, you can modify it as much

00:27:56.440 --> 00:28:02.035
<v Brent>as you want to be your own very personalized, esoteric workspace.

00:28:02.610 --> 00:28:07.400
<v Brent>And this QuickShell stuff and this entire conversation and Wes's beginnings

00:28:07.400 --> 00:28:12.540
<v Brent>of his customizations just reminds me that we all get to have our own distinct

00:28:12.540 --> 00:28:14.073
<v Brent>computing environments now and it's,

00:28:14.584 --> 00:28:16.680
<v Brent>this is what we've always wanted and everybody's always wanted,

00:28:16.680 --> 00:28:18.293
<v Brent>it's been too hard to attain, but,

00:28:19.083 --> 00:28:21.842
<v Brent>I don't know. This year just feels like everybody gets a desktop.

00:28:21.842 --> 00:28:25.596
<v Brent>You get a desktop and you get a desktop. You just get whatever you want. It's great.

00:28:26.374 --> 00:28:31.082
<v Chris>It was also really easy to port the widgets I had built for my Waybar over to

00:28:31.082 --> 00:28:33.502
<v Chris>QuickShell. It took seconds.

00:28:33.502 --> 00:28:36.192
<v Wes>I wanted to ask you about that because you had been using Waybar before.

00:28:36.892 --> 00:28:40.482
<v Wes>One version of what you can think of QuickShell is sort of as a Waybar replacement.

00:28:40.482 --> 00:28:45.954
<v Chris>On steroids. I also really like the launcher that Dank chose and built. It's really good.

00:28:46.392 --> 00:28:48.485
<v Chris>And one of the plug-ins is Nick's Run.

00:28:48.955 --> 00:28:52.961
<v Chris>So if I type Nix and the name of a package, it searches Nix packages,

00:28:53.164 --> 00:28:56.362
<v Chris>gives me a list, and then I just hit it, and it just runs it from the repository

00:28:56.362 --> 00:28:58.000
<v Chris>immediately and launches the application.

00:28:58.737 --> 00:29:02.220
<v Chris>It's really next level. So I love it. I love it.

00:29:02.992 --> 00:29:05.872
<v Chris>And, yeah, look at that. Oh, Wes just posted a picture. Actually,

00:29:05.872 --> 00:29:07.012
<v Chris>Wes, it looks really good.

00:29:07.732 --> 00:29:10.782
<v Chris>See, I kind of went for more, like, bubbly kind of pill widgets on mine,

00:29:10.782 --> 00:29:14.965
<v Chris>but you went for, like, a clean text bar, which I think also looks really good.

00:29:16.080 --> 00:29:18.762
<v Chris>Oh, yeah, that's nice looking, Wes. Clean, minimal.

00:29:18.959 --> 00:29:21.882
<v Wes>Yeah, and I want to play more with doing more theme stuff. I just kind of got

00:29:21.882 --> 00:29:27.132
<v Wes>it across to like, what's the minimum thing I could actually use today without hating it, right?

00:29:27.132 --> 00:29:31.482
<v Chris>Yeah. I think that looks very good. What are you, Brent, right? You impressed?

00:29:31.482 --> 00:29:34.572
<v Brent>Yeah, I'm trying to wonder, like, Wes, when are you going to publish this for

00:29:34.572 --> 00:29:37.657
<v Brent>us to all play with? Because I feel like there's some real gems here.

00:29:38.970 --> 00:29:42.897
<v Chris>It's fun. It's also getting to play with this stuff and just like you were saying,

00:29:42.897 --> 00:29:45.495
<v Chris>in a deeper way and building this whole thing.

00:29:45.698 --> 00:29:49.518
<v Wes>There's a lot. I've played with tiling window managers over the years.

00:29:50.226 --> 00:29:53.927
<v Wes>I've never gone this deep. And it was a great excuse to understand more of what

00:29:53.927 --> 00:29:58.327
<v Wes>are some of the options because it opens our software, right?

00:29:58.327 --> 00:29:59.491
<v Wes>You dive in and there's...

00:30:00.530 --> 00:30:03.055
<v Wes>Like all the good things, there's so much you didn't know you didn't know.

00:30:03.542 --> 00:30:07.427
<v Chris>Well, as my kids would say, I'm so cooked now because between Quickshell and

00:30:07.427 --> 00:30:11.417
<v Chris>Hyperland, It really is the perfect sweet spot for me now.

00:30:11.417 --> 00:30:14.437
<v Chris>I just can't ever, I mean, I love all the desktop environments,

00:30:14.437 --> 00:30:16.927
<v Chris>but for like my production systems where I'm working and sitting there doing

00:30:16.927 --> 00:30:21.347
<v Chris>show prep, I have built such a workflow around the keybinds and now with the

00:30:21.347 --> 00:30:23.412
<v Chris>quickshell stuff, it's so good.

00:30:23.986 --> 00:30:28.851
<v Chris>It really is, it is a unique kind of lock-in. I have created my own lock-in

00:30:29.251 --> 00:30:30.552
<v Chris>and I love it. I couldn't be happier.

00:30:30.900 --> 00:30:34.237
<v Chris>And so even if you just use it to create a simple widget or you use it to try

00:30:34.237 --> 00:30:36.877
<v Chris>out a lot of the really neat desktop shells or build your own,

00:30:36.877 --> 00:30:39.847
<v Chris>And I think you're going to be hearing a lot more about QuickShell for many,

00:30:39.847 --> 00:30:42.696
<v Chris>many reasons. And so it really blew up over the summer.

00:30:42.806 --> 00:30:45.807
<v Chris>And we just kind of wanted to give you a heads up and give you a little information

00:30:45.807 --> 00:30:49.157
<v Chris>about what's going on. And if you built something or have built or build something

00:30:49.157 --> 00:30:50.736
<v Chris>with it, you've got to let us know.

00:31:03.169 --> 00:31:08.196
<v Brent>Once again, this week, we have some red hot feedback. This one from definitely not a Mac user.

00:31:08.881 --> 00:31:11.708
<v Brent>I don't know what they like, but they definitely don't like a Mac, I guess.

00:31:12.236 --> 00:31:17.054
<v Brent>Hey, JB team, too long for just a boost. So I'm yapping here on the email.

00:31:17.449 --> 00:31:21.676
<v Brent>My dad and I just finished up a road trip across the country from Columbus,

00:31:21.676 --> 00:31:25.094
<v Brent>Ohio to LA for college. Oh, that sounds fun.

00:31:25.698 --> 00:31:28.891
<v Brent>And as you do, we realized we needed to plan this trip.

00:31:29.477 --> 00:31:34.922
<v Brent>I found a tool called Trek, and it so happens you featured this on episode 680.

00:31:36.016 --> 00:31:41.026
<v Brent>Seeing as it has an MCP naturally, my dad and I each hooked up our own clankers

00:31:41.026 --> 00:31:43.426
<v Brent>to it, and oh boy, is that the way to do trips.

00:31:44.042 --> 00:31:47.276
<v Brent>As if we needed to complicate it further, we hooked up Devarich,

00:31:47.276 --> 00:31:53.536
<v Brent>remember the big D, and Imich to make a timeline for our trip on Trek to keep,

00:31:54.056 --> 00:31:57.480
<v Brent>the memories after we get there. That's so smart.

00:31:58.003 --> 00:31:58.804
<v Chris>String it all together.

00:31:58.966 --> 00:32:04.076
<v Brent>We used GPT and Claude models to make the rough skeleton before we left on the trip.

00:32:04.396 --> 00:32:07.893
<v Brent>This put in places we wanted to stop and the routes to get there.

00:32:08.311 --> 00:32:14.366
<v Brent>But once we left, we used Hermes agents only. Shout out to Quinn 2.7+.

00:32:14.877 --> 00:32:18.096
<v Brent>My dad would book a hotel, give his agent the booking confirmation number,

00:32:18.096 --> 00:32:22.928
<v Brent>and my agent would send me the Google Map link and suggest a good dinner spot nearby.

00:32:23.485 --> 00:32:28.796
<v Brent>Hermes also managed our time so we could visit the Gateway Arch and Arches National

00:32:28.796 --> 00:32:30.573
<v Brent>Park. Yes, yes, we like Arches.

00:32:31.020 --> 00:32:36.082
<v Brent>While also making tracks across the country to make sure we get to the check-in on time.

00:32:36.877 --> 00:32:41.121
<v Brent>This whole trip was made so much easier by combining all of those tools.

00:32:41.121 --> 00:32:46.269
<v Brent>Imagine how many people contributed to this trip from the open source community. Wow.

00:32:46.942 --> 00:32:51.261
<v Brent>All the time we saved in planning, let my dad start to catch up on Linux Unplugged

00:32:51.261 --> 00:32:56.181
<v Brent>episodes, as well as time to argue about the relative merits of supporting legacy

00:32:56.181 --> 00:32:59.676
<v Brent>and outdated protocols in the kernel, such as AppleTalk.

00:33:00.117 --> 00:33:04.661
<v Chris>Yeah, buddy. So definitely not a Mac user. I have a couple of hot tips for you

00:33:04.661 --> 00:33:07.374
<v Chris>because you can probably guess I have done something very similar.

00:33:07.948 --> 00:33:12.341
<v Chris>And I would very much recommend, it's free to do, to sign up for the TomTom

00:33:12.341 --> 00:33:19.107
<v Chris>developer API because this gives your bot super routing powers. It knows about outages.

00:33:19.483 --> 00:33:23.233
<v Chris>It knows about closures. It knows about weather. It knows about traffic.

00:33:23.820 --> 00:33:28.151
<v Chris>It also can do route distance and planning and they have an endpoint if you

00:33:28.151 --> 00:33:31.586
<v Chris>have an EV. So it can do range calculation as well.

00:33:32.109 --> 00:33:36.751
<v Chris>Then if you really want to go nuts, most states or like up in Canada provinces

00:33:36.751 --> 00:33:40.840
<v Chris>and areas will have developer APIs for their local traffic information.

00:33:41.223 --> 00:33:45.774
<v Chris>So for me, I'm very often in the Washington, Idaho, Oregon or B.C. area.

00:33:46.145 --> 00:33:50.708
<v Chris>So I signed up for APIs for each one of those and I can check their particular closures when routing.

00:33:51.138 --> 00:33:55.791
<v Chris>Then on top of that, if you really want to go crazy, you can also tie into things

00:33:55.791 --> 00:34:00.018
<v Chris>like free campsites.net and other services like recreation.gov.

00:34:00.297 --> 00:34:03.205
<v Chris>and it can actually do availability planning and checking.

00:34:03.536 --> 00:34:07.751
<v Chris>So you can bring it all together and you can have it produce quite the comprehensive

00:34:07.751 --> 00:34:10.264
<v Chris>plan. I just went on a trip to Idaho over the weekend.

00:34:11.407 --> 00:34:14.896
<v Chris>The entire thing was generated by my agent. And then for consumption by the

00:34:14.896 --> 00:34:19.336
<v Chris>wife, I had to produce a PDF, which she loved. And it just broke everything

00:34:19.336 --> 00:34:21.916
<v Chris>down day by day where we're going to stop, where if you wanted to,

00:34:21.916 --> 00:34:24.016
<v Chris>if you don't want to stop there, you could stop here. You'll have this much

00:34:24.016 --> 00:34:25.502
<v Chris>battery charge when you arrive.

00:34:25.827 --> 00:34:27.505
<v Chris>These are the food places nearby.

00:34:28.079 --> 00:34:31.951
<v Chris>These are the campgrounds that allow you to stay one night. You can book late.

00:34:32.154 --> 00:34:34.703
<v Chris>They let you park and sleep in a car, like all the stuff.

00:34:35.289 --> 00:34:38.586
<v Chris>It just does all the stuff. Oh, and it'll even tell me because this is a problem

00:34:38.586 --> 00:34:42.576
<v Chris>here. It'll tell me like how close I'm going to get to wildfires along my route

00:34:42.576 --> 00:34:45.541
<v Chris>because I'm checking all the wildfire information as well.

00:34:46.353 --> 00:34:50.126
<v Chris>And it just produces such an awesome comprehensive. This is coming from somebody

00:34:50.126 --> 00:34:52.956
<v Chris>who's a road trip enthusiast, right? I mean, I've been doing this for a long

00:34:52.956 --> 00:34:54.283
<v Chris>time and this is all stuff I had to do.

00:34:55.156 --> 00:34:59.596
<v Chris>You can even have a check in on cellular coverage. I mean, in other words,

00:34:59.596 --> 00:35:03.256
<v Chris>keep going because it just keeps getting better and better. It's really pretty great.

00:35:03.256 --> 00:35:07.697
<v Brent>Can we just have an API for everything? Finally, maybe I would book my trips in advance.

00:35:09.851 --> 00:35:11.936
<v Chris>Yeah, but then you also have to do what the agent tells you,

00:35:11.936 --> 00:35:15.976
<v Chris>and that's the human factor. All right, well, we do have some boosts,

00:35:15.976 --> 00:35:17.635
<v Chris>too, so let's get to those, gentlemen.

00:35:22.100 --> 00:35:27.789
<v Chris>And Greg, the lawyer, comes in with 40,000 sats. Greg, you're back again. Look at you.

00:35:31.104 --> 00:35:35.527
<v Chris>And Greg comes in with one message. He comes in with boost.

00:35:35.974 --> 00:35:39.847
<v Chris>Love it, Greg. Thank you very much. Greg, you're often on the top of the list

00:35:39.847 --> 00:35:43.799
<v Chris>there, and it doesn't go unnoticed. We appreciate it very, very much.

00:35:44.635 --> 00:35:48.972
<v Chris>You, sir, are the baller booster of the show. Appreciate you.

00:35:49.552 --> 00:35:52.647
<v Chris>Hey, speaking of PJ and his B-Day.

00:35:52.647 --> 00:35:57.667
<v Wes>Oh, we got a birthday booster. Except this was actually a boost from last week's live.

00:35:57.667 --> 00:36:01.155
<v Chris>Oh, really? Coming in live so early but late?

00:36:01.712 --> 00:36:07.267
<v Chris>All right. Do we have a sound for 8,888 sats? How about that?

00:36:07.807 --> 00:36:11.947
<v Wes>Yeah, PJ says, does this thing work? And yes, it does. I guess on a delay this

00:36:11.947 --> 00:36:13.717
<v Wes>time because we were not watching live.

00:36:13.717 --> 00:36:14.307
<v Chris>But thank you.

00:36:14.727 --> 00:36:15.867
<v Wes>It's fun to get live boosts.

00:36:15.867 --> 00:36:17.902
<v Chris>Thank you, PJ. Thank you. Yeah.

00:36:18.750 --> 00:36:22.076
<v Brent>Well, Colarapha boosts in a row of ducks.

00:36:23.736 --> 00:36:25.227
<v Chris>Colaphora? No.

00:36:25.547 --> 00:36:26.262
<v Brent>Colarapha?

00:36:26.668 --> 00:36:27.507
<v Wes>Colaphora.

00:36:27.507 --> 00:36:31.967
<v Chris>That ain't right. No message, just value. We take that. Thank you very,

00:36:31.967 --> 00:36:33.257
<v Chris>very much. Appreciate that.

00:36:33.791 --> 00:36:38.317
<v Chris>All right. Next boost comes in from Nyquist, which almost sounds like the drive

00:36:38.317 --> 00:36:41.267
<v Chris>I used to use. Is that, are you Nyquist? Are you referring to the old Nyquist

00:36:41.267 --> 00:36:42.858
<v Chris>drive? Cause that would be awesome.

00:36:43.305 --> 00:36:45.517
<v Chris>Also no message though, just the value.

00:36:48.884 --> 00:36:51.229
<v Wes>Sir, Omlet comes in with a row of ducks.

00:36:51.862 --> 00:36:52.290
<v Chris>Hey!

00:36:52.290 --> 00:36:54.980
<v Wes>When I hear SyncThing, I just have to boost in.

00:36:54.980 --> 00:36:55.890
<v Chris>All right!

00:36:55.890 --> 00:36:56.841
<v Wes>Such a game changer.

00:36:57.207 --> 00:37:00.130
<v Chris>Isn't it? Some projects out there just don't get enough love,

00:37:00.130 --> 00:37:02.410
<v Chris>and that's where we're like, no, we've got to talk about this.

00:37:02.410 --> 00:37:04.890
<v Chris>I know people know about SyncThing, but it just doesn't get enough talk.

00:37:05.589 --> 00:37:08.990
<v Wes>At Chris, I enjoyed the irony of recommending it because there's no cloud,

00:37:08.990 --> 00:37:12.996
<v Wes>and then pointing a free cloud-hosted LLM at it, but I do agree, the API is great.

00:37:14.030 --> 00:37:18.848
<v Wes>On the topic of web and thin clients, Maybe check out a file browser fork.

00:37:19.771 --> 00:37:23.190
<v Wes>And then Bearded Tech independently also recommended, I think,

00:37:23.190 --> 00:37:26.960
<v Wes>there's like a maintained fork called Quantum File Browser or something like that.

00:37:26.960 --> 00:37:30.960
<v Chris>Yeah. Yeah. So because the question was is like, how do we stack like a file

00:37:30.960 --> 00:37:32.727
<v Chris>manager or something on top of this?

00:37:33.436 --> 00:37:37.000
<v Chris>So that way when you're on a mobile device, you could get to these files or

00:37:37.000 --> 00:37:39.220
<v Chris>maybe you're on a computer that doesn't have sync thing installed,

00:37:39.220 --> 00:37:40.470
<v Chris>but you're on your machine.

00:37:40.470 --> 00:37:42.860
<v Wes>You just want to quickly download or maybe even upload something. Yeah.

00:37:42.860 --> 00:37:45.250
<v Chris>So this is File Browser Quantum.

00:37:47.548 --> 00:37:53.240
<v Chris>that's pretty cool that's pretty cool mostly Go and it is Apache 2.0 licensed.

00:37:53.240 --> 00:37:55.890
<v Wes>Yeah another option would be something like Copy Party which is also in that

00:37:55.890 --> 00:37:58.250
<v Wes>space so there's a few different things that maybe we should be.

00:37:58.250 --> 00:38:01.270
<v Chris>Trying I need to try something I do because that is going to be that's going

00:38:01.270 --> 00:38:04.650
<v Chris>to be one of those things if I don't set it up when I do need it I'm really going to be kicking.

00:38:07.310 --> 00:38:11.526
<v Brent>Well speaking of omelets Outdoor Geek is here with 5000 Sats,

00:38:14.294 --> 00:38:20.418
<v Brent>here's a psa avoid the hp 840 g9 12th gen intel for linux,

00:38:21.144 --> 00:38:26.372
<v Brent>i couldn't get any sort of low power state working on this thing oh sleep battery

00:38:26.372 --> 00:38:32.432
<v Brent>drain is more than 10 per hour on linux on windows however it's less than one percent.

00:38:32.432 --> 00:38:33.694
<v Chris>Oh that's annoying.

00:38:33.839 --> 00:38:38.912
<v Brent>I tried nix os pop os and fedora i put maybe eight hours of troubleshooting

00:38:38.912 --> 00:38:42.657
<v Brent>into this thing about two months ago but nothing made this thing better.

00:38:43.307 --> 00:38:46.802
<v Wes>Oh well you you definitely tried you gotta give credit for that hp.

00:38:47.442 --> 00:38:50.582
<v Chris>840 g9 12th gen intel he says.

00:38:51.375 --> 00:38:52.762
<v Wes>Well if anyone knows any tricks.

00:38:53.087 --> 00:38:56.252
<v Chris>I just haven't been able to pull the trigger on a used laptop it's just such

00:38:56.252 --> 00:38:58.056
<v Chris>a bad time to buy a computer right now.

00:38:58.468 --> 00:39:04.602
<v Brent>This is a bit on theme for me this week because i uh as most of you might remember

00:39:04.602 --> 00:39:09.282
<v Brent>i just moved recently and so somehow the dev1 came out of box this week and

00:39:09.282 --> 00:39:12.612
<v Brent>i plugged it in i was like wait a second this thing's charging 100% all the time.

00:39:12.612 --> 00:39:16.400
<v Brent>I need to just set this thing maybe to something lower, because I mostly use it on desktop.

00:39:16.969 --> 00:39:17.445
<v Chris>Nope.

00:39:17.602 --> 00:39:20.522
<v Brent>Can't do that. Did a ton of research. Nope.

00:39:20.881 --> 00:39:26.342
<v Brent>None of the kernel for this thing just can't handle it. There is a PR to allow

00:39:26.342 --> 00:39:28.432
<v Brent>it to happen, but who knows how long that's going to take. Yeah,

00:39:28.432 --> 00:39:31.023
<v Brent>I was very surprised. Very, very surprised.

00:39:32.062 --> 00:39:36.160
<v Brent>Even TLP can't do it on this thing. Nope. Not going to happen for this one.

00:39:37.542 --> 00:39:40.562
<v Chris>Okay, I got a suggestion. You set up Home Assistant.

00:39:41.216 --> 00:39:44.372
<v Chris>you get a little sensor on there that monitors the battery charge then you put

00:39:44.372 --> 00:39:47.722
<v Chris>your charger on a smart switch the smart switch gets toggled by home assistant

00:39:47.722 --> 00:39:50.962
<v Chris>when you reach 80% home assistant turns off the smart switch and then when you

00:39:50.962 --> 00:39:54.735
<v Chris>reach 60% home assistant turns it back on the digital world fails you?

00:39:55.019 --> 00:39:57.622
<v Wes>Go to the analog via the digital control.

00:39:57.962 --> 00:40:04.622
<v Chris>MRAM comes in with a row of ducks 2,222 cents first time booster wow that's

00:40:04.622 --> 00:40:06.983
<v Chris>awesome thank you for boosting,

00:40:08.453 --> 00:40:09.347
<v Chris>I like RAM.

00:40:11.466 --> 00:40:12.273
<v Chris>Appreciate the value.

00:40:13.132 --> 00:40:17.637
<v Wes>Too Many Accounts comes in with 11,337 sets.

00:40:19.099 --> 00:40:23.315
<v Wes>Picking up the Firefox thread here, I'd love your take on how to handle multiple

00:40:23.315 --> 00:40:25.145
<v Wes>Firefox profiles elegantly.

00:40:25.865 --> 00:40:30.593
<v Wes>Firefox now ships to profile managers, but both lack the ease of Chrome profiles,

00:40:31.093 --> 00:40:34.605
<v Wes>for a GUI file like me. I love hate, my foxy friend.

00:40:36.585 --> 00:40:40.725
<v Chris>So I just randomly did see that old, like there's like two versions and one

00:40:40.725 --> 00:40:45.295
<v Chris>of them look real old. Like the original one from early days of Firefox.

00:40:45.295 --> 00:40:47.641
<v Chris>I was surprised that that UI had popped up.

00:40:48.865 --> 00:40:54.828
<v Chris>I don't do the profiles thing anymore. I have messed around a bit with containers.

00:40:55.170 --> 00:40:56.645
<v Wes>Ah, yeah, I have done that too.

00:40:56.778 --> 00:40:59.595
<v Chris>And I do find that to be kind of useful and tab groups.

00:40:59.595 --> 00:41:01.855
<v Wes>Right. Yeah, I've used containers, especially for things like,

00:41:01.855 --> 00:41:04.885
<v Wes>you know, you have like a day job or a particular account associated for something like that.

00:41:05.185 --> 00:41:08.069
<v Chris>That I think works better than individual profiles personally.

00:41:08.191 --> 00:41:13.115
<v Wes>But we may not be addressing what you use profiles for. I'm kind of curious what you need them to do.

00:41:13.115 --> 00:41:18.525
<v Chris>And have you tried that? that because i i don't know it's it's like you've probably

00:41:18.525 --> 00:41:21.008
<v Chris>seen it once before maybe you took it off your menu bar kind of like when you

00:41:21.339 --> 00:41:22.825
<v Chris>when they first added it they kept popping up,

00:41:23.365 --> 00:41:26.375
<v Chris>every few updates and first i was like i'll get this out of here i don't want

00:41:26.375 --> 00:41:29.005
<v Chris>i don't care about this but then i actually like stopped and used it and i actually

00:41:29.005 --> 00:41:29.751
<v Chris>found it pretty effective.

00:41:30.725 --> 00:41:34.585
<v Brent>I haven't quite used the chrome profile switcher so i'm not sure which features

00:41:34.585 --> 00:41:39.085
<v Brent>uh you love about it but i do remember using profiles in the past and i found

00:41:39.085 --> 00:41:41.291
<v Brent>the easiest way to use it was to have a distinct,

00:41:43.489 --> 00:41:44.545
<v Brent>shortcut icon.

00:41:44.545 --> 00:41:46.085
<v Chris>For them that would just.

00:41:46.585 --> 00:41:51.285
<v Brent>Launch that one and that seemed to be the easiest way to manage it just outside of the browser.

00:41:51.285 --> 00:41:58.075
<v Chris>Itself. Usually it's just a pending, a profile kind of stands at the end of

00:41:58.075 --> 00:41:59.731
<v Chris>the executable. It's not really that hard.

00:42:00.845 --> 00:42:03.335
<v Chris>And you can usually just play around with it at the command line and see what

00:42:03.335 --> 00:42:06.697
<v Chris>works and then make that the launcher. But that would probably be one way to do it.

00:42:07.081 --> 00:42:10.765
<v Chris>I guess that we need more information to properly answer this and ask why you

00:42:10.765 --> 00:42:13.495
<v Chris>and we're also asking to be honest with you if you're holding it wrong a little

00:42:13.495 --> 00:42:17.053
<v Chris>bit but just a little bit like you might not be we might wait you might just need more context,

00:42:18.528 --> 00:42:22.428
<v Chris>Bronzer Wing comes in with 11,233 Satoshis.

00:42:23.851 --> 00:42:27.554
<v Chris>One vote for a Clanker podcast. Have you guys tried the Pi coding agent?

00:42:27.851 --> 00:42:35.345
<v Chris>I'm writing it with Llama CPP with Unsloth QN 3.8 Q4 KXL with MTP and No Vision

00:42:35.345 --> 00:42:38.795
<v Chris>MM Pro J for extra speed. Okay, I don't know what that last one is.

00:42:38.795 --> 00:42:41.935
<v Chris>Love it. I lost me on the last one. Feels almost frontier-like.

00:42:41.935 --> 00:42:42.419
<v Brent>Whoa.

00:42:42.523 --> 00:42:46.915
<v Chris>I ditched Hermes and OpenCode as they felt too bloated for local models.

00:42:46.915 --> 00:42:49.635
<v Chris>Oh, that is an interesting observation. I could see that.

00:42:50.235 --> 00:42:52.605
<v Chris>So I could see maybe why Pi coding would be a little more appealing.

00:42:52.605 --> 00:42:55.665
<v Wes>Yeah, if you don't. And, you know, if you are targeting a specific thing,

00:42:55.665 --> 00:42:59.741
<v Wes>you don't need a full sort of general assistant type agent. Skip the bloat.

00:43:00.037 --> 00:43:02.415
<v Chris>Have you tried? I know you've looked at it, Wes. I know you're familiar with it.

00:43:02.555 --> 00:43:05.375
<v Wes>Yeah, I haven't done anything extensive with Pi. I have, yeah,

00:43:05.955 --> 00:43:08.395
<v Wes>poked at it a little bit because it's kind of, you know, it was some of the

00:43:08.395 --> 00:43:12.795
<v Wes>fundamentals here early, too, and it's just continued on. Maybe we owe it some time.

00:43:14.095 --> 00:43:16.695
<v Wes>Thanks for the idea there, Bronzwing, and the report. They're always useful.

00:43:16.695 --> 00:43:17.139
<v Chris>I agree.

00:43:19.295 --> 00:43:24.290
<v Wes>G Anonymous comes in. 4,500 and 13 sats.

00:43:26.618 --> 00:43:33.125
<v Wes>No message found. So I'll take Distro Stew too because Distro Stew sent in 12,345 sats.

00:43:33.125 --> 00:43:37.154
<v Chris>You know, it's been a minute since we've had ourselves a Spaceballs boost.

00:43:40.503 --> 00:43:42.371
<v Wes>Yikes. 300 character limit.

00:43:42.371 --> 00:43:44.251
<v Chris>Oh, yikes. You say. Blessing, we say.

00:43:47.031 --> 00:43:50.151
<v Wes>I recently created a hub and spoke module for my sync thing setup.

00:43:50.611 --> 00:43:54.171
<v Wes>Two Nix servers. Everything else is a spoke. Phones, laptops, etc.

00:43:54.900 --> 00:43:59.251
<v Wes>When I was mesh syncing every host to every ephemeral host, it led to an unnecessary

00:43:59.251 --> 00:44:01.012
<v Wes>amount of conflicts over time.

00:44:01.378 --> 00:44:03.967
<v Wes>And then we get a little link from Stu here.

00:44:05.575 --> 00:44:07.131
<v Chris>Which doesn't seem to be working.

00:44:07.131 --> 00:44:09.881
<v Wes>Oh, no, it didn't seem to work. Maybe it got cut off by the 300 characters.

00:44:09.881 --> 00:44:10.131
<v Chris>Maybe.

00:44:10.571 --> 00:44:13.801
<v Wes>But love it. Thank you for the architecture.

00:44:13.801 --> 00:44:18.291
<v Chris>Yeah, the old hub and spoke model. I did it when I, for a long time,

00:44:18.671 --> 00:44:23.228
<v Chris>like sort of my main sync thing server was actually a VPS with some attached storage.

00:44:23.971 --> 00:44:26.351
<v Chris>And then I would attach everything to that and then have it,

00:44:26.467 --> 00:44:29.011
<v Chris>you know, everything obviously because of its high speed would sync there first

00:44:29.011 --> 00:44:31.141
<v Chris>just naturally and then it would sort of distribute to everything else and that

00:44:31.141 --> 00:44:33.137
<v Chris>worked quite well. It did work quite well.

00:44:34.182 --> 00:44:39.597
<v Brent>Well, Gene Bean boosted in a couple rows of ducks for a total of 6,666 sets.

00:44:43.190 --> 00:44:49.151
<v Brent>First one here, the hold music from Data in LUP680 is quite great.

00:44:51.108 --> 00:44:55.410
<v Brent>As for making up for missed streaming sats, wallet emptied while driving.

00:44:57.796 --> 00:44:58.753
<v Chris>On a road trip, eh, Gene?

00:44:59.530 --> 00:45:03.467
<v Brent>Do you all have any suggestions for interacting with SyncThing from iOS?

00:45:04.878 --> 00:45:09.808
<v Chris>Probably using whatever file manager that ends up being agreeable,

00:45:09.808 --> 00:45:13.018
<v Chris>I think. Really, I think it's probably putting a web file manager on a mesh

00:45:13.018 --> 00:45:15.842
<v Chris>VPN network is probably going to be my solution for that.

00:45:16.377 --> 00:45:20.336
<v Chris>I don't think sync thing as a service is very viable unless somebody knows differently.

00:45:21.683 --> 00:45:25.166
<v Chris>If anybody has a solution for that, please let us know because that is something I'd like to solve.

00:45:25.967 --> 00:45:31.888
<v Chris>Mr. Mayhem came in with a smoking hot boost right as we got going here. 2001 Satoshis.

00:45:33.530 --> 00:45:36.748
<v Chris>Your pre-show song reminded me to boost. Well, thank you very much,

00:45:36.748 --> 00:45:38.381
<v Chris>Mr. Mayhem. Appreciate that.

00:45:40.148 --> 00:45:46.178
<v Wes>Time for some fiat booze here we go boys well tan comes in with a hundred dollars wow,

00:45:57.980 --> 00:46:00.166
<v Wes>Month two, FOSS ad boost.

00:46:00.166 --> 00:46:00.736
<v Chris>All right.

00:46:00.736 --> 00:46:01.246
<v Wes>Thank you.

00:46:01.246 --> 00:46:01.939
<v Chris>Thank you, Dan.

00:46:02.165 --> 00:46:05.966
<v Wes>This is for a cool little project I found called the Open Book Touch,

00:46:06.406 --> 00:46:10.366
<v Wes>which is everything I've thought an e-reader should be and nothing more.

00:46:10.966 --> 00:46:13.427
<v Wes>I've already ordered one and thought I'd spread the word.

00:46:14.152 --> 00:46:18.016
<v Chris>Okay, look at this. This is looking good. So it looks like pricing will be between

00:46:18.016 --> 00:46:20.816
<v Chris>$150 and $250, depending on options.

00:46:20.961 --> 00:46:24.996
<v Wes>A pocketable, front-lit, open-source e-reader for every book in every language.

00:46:24.996 --> 00:46:30.316
<v Chris>Looks like a cleaner version of the Kindle. about the size of a large Field

00:46:30.316 --> 00:46:32.647
<v Chris>Notes notebook, which is a great visual.

00:46:33.239 --> 00:46:35.728
<v Chris>And yeah, it's an EPUB reader.

00:46:35.896 --> 00:46:36.726
<v Wes>No physical buttons.

00:46:36.726 --> 00:46:37.133
<v Chris>The ink.

00:46:37.986 --> 00:46:42.616
<v Wes>Device is a single, perfectly symmetrical 4.26-inch front-lit e-paper touchscreen,

00:46:42.616 --> 00:46:44.488
<v Wes>one centimeter thin in its enclosure.

00:46:45.097 --> 00:46:46.016
<v Chris>It looks great.

00:46:46.016 --> 00:46:49.393
<v Wes>Open book touch slips into a pocket and disappears until you unlock it to read.

00:46:50.536 --> 00:46:54.236
<v Chris>All right. Nice find, Dan. Thank you very much. I really would love to know

00:46:54.236 --> 00:46:55.866
<v Chris>how you like it when you get it.

00:46:55.886 --> 00:46:57.766
<v Wes>Yeah, please do report, because, boy, that looks tempting.

00:46:57.766 --> 00:46:58.762
<v Chris>Mm-hmm, mm-hmm.

00:46:59.847 --> 00:47:04.155
<v Brent>Well, definitely not. A Mac user comes in again with 20 total fiat. Yeah.

00:47:06.773 --> 00:47:11.812
<v Brent>My dad and I just finished a cross-country client-gertriff powered by open source.

00:47:12.096 --> 00:47:14.878
<v Chris>Oh, this is his boost to refer. You know, that's a nice way to do it.

00:47:15.378 --> 00:47:17.138
<v Chris>If you're going to do a long email, that's really thoughtful.

00:47:17.138 --> 00:47:20.438
<v Brent>Thank you, definitely. There's some extra details in here. Track and Devaric,

00:47:20.438 --> 00:47:24.398
<v Brent>which we mentioned. Image, we mentioned. Hermes, of course. But there's Nebula in here as well.

00:47:24.838 --> 00:47:26.178
<v Chris>Oh, yeah. Nice, dude.

00:47:26.178 --> 00:47:29.288
<v Brent>He says, see my email for more fun info. We did, and that was great.

00:47:29.288 --> 00:47:32.588
<v Brent>Boosting in to say thanks for being the entertainment on this trip and providing

00:47:32.588 --> 00:47:34.638
<v Brent>all the pics to make it happen. Keep it up.

00:47:34.638 --> 00:47:38.594
<v Chris>Well done putting it all to practical use, definitely. That's really awesome.

00:47:39.221 --> 00:47:43.588
<v Chris>Monty comes in with a free member boost. I support the use ThinkPad plan.

00:47:43.588 --> 00:47:46.498
<v Chris>There's never a shortage of good options in that 300 range.

00:47:46.498 --> 00:47:46.868
<v Brent>Agreed.

00:47:46.868 --> 00:47:50.068
<v Chris>I look for a listing that have several of the same model as a sign that there

00:47:50.068 --> 00:47:52.154
<v Chris>are off-lease business units. Yeah.

00:47:52.878 --> 00:47:57.098
<v Chris>Yeah, one listing has like 10 or more available. They usually come looking like

00:47:57.098 --> 00:48:00.468
<v Chris>new. Then I resell the previous and I get close to half back.

00:48:00.468 --> 00:48:01.245
<v Brent>Nice.

00:48:01.582 --> 00:48:03.908
<v Chris>Yeah, I guess around $300 if you only use them for a year or two.

00:48:03.908 --> 00:48:07.480
<v Chris>They probably don't lose too much more value. Halfback is not bad.

00:48:08.008 --> 00:48:12.373
<v Chris>That's kind of what I really want is a ThinkPad, around 14-inch screen,

00:48:13.151 --> 00:48:16.692
<v Chris>32 gigs of RAM, and 10th Gen or newer processor.

00:48:19.377 --> 00:48:22.434
<v Chris>I think 300 is a little, probably not quite enough at this point.

00:48:22.992 --> 00:48:25.406
<v Chris>But that's what I was looking at on eBay, and I just haven't really pulled the trigger yet.

00:48:26.591 --> 00:48:30.067
<v Brent>Well, we have another member boost here from Paul. Paul writes,

00:48:30.067 --> 00:48:36.677
<v Brent>continuing my member boost streak, do you try local tier models like the 30B

00:48:36.677 --> 00:48:39.703
<v Brent>variants of Muse Glimmer, Quen, or Gemma?

00:48:41.032 --> 00:48:44.747
<v Brent>I guess you don't have the resources to run them on your own hardware in a meaningful

00:48:44.747 --> 00:48:50.198
<v Brent>way, But would you be interested in trying to use small models exclusively for a week as a test?

00:48:51.237 --> 00:48:52.207
<v Wes>Ooh, fun idea.

00:48:52.207 --> 00:48:56.117
<v Chris>I'm always trying them to see what I can eke out of an old computer.

00:48:56.557 --> 00:49:01.137
<v Chris>And that's not much. Wes has done the Rent-A-Gupu model.

00:49:01.137 --> 00:49:01.535
<v Wes>Yeah.

00:49:01.657 --> 00:49:06.348
<v Chris>And has played with some of the more powerful versions of these self-hosted models on a rented GPU.

00:49:06.504 --> 00:49:10.167
<v Wes>Yeah, I've played a little bit with the Muse Glimmer model. That was fun.

00:49:10.167 --> 00:49:15.937
<v Wes>I was just playing with the Quen 3827B model.

00:49:15.937 --> 00:49:16.286
<v Chris>Yeah.

00:49:16.897 --> 00:49:18.916
<v Wes>And a tiny bit with Gamma. I'd like to do a little bit more with Gamma.

00:49:19.368 --> 00:49:22.648
<v Wes>But yeah, I haven't done like a whole week long. It's more like,

00:49:22.857 --> 00:49:26.377
<v Wes>you know, when new models come out, I usually try to find some time to go at

00:49:26.377 --> 00:49:28.757
<v Wes>least put them through some basic paces.

00:49:29.237 --> 00:49:31.134
<v Wes>Doesn't always happen, but I'd like to do more.

00:49:31.627 --> 00:49:37.281
<v Chris>Yeah. Oh, boy. Are we ready? One day in the distant future, hardware prices,

00:49:37.392 --> 00:49:40.757
<v Chris>some at some point will come back to earth and these models will be optimized

00:49:40.757 --> 00:49:43.371
<v Chris>for on a local hardware and maybe the two will meet maybe,

00:49:44.989 --> 00:49:48.257
<v Chris>A guy from Vienna sent a member boost. Use a rubber duck.

00:49:48.577 --> 00:49:51.880
<v Chris>Save the planet. I had this thought yesterday when debugging a network issue.

00:49:52.199 --> 00:49:55.670
<v Chris>The solution was quite obvious, but asking the LM first got me into a cul-de-sac.

00:49:56.054 --> 00:50:00.877
<v Chris>The rubber duck uses the energy and doesn't talk back. Nice feature sometimes. Yeah, it can be, right?

00:50:01.237 --> 00:50:06.085
<v Chris>You know, the rubber duck approach just to kick things around is definitely a valid use.

00:50:06.700 --> 00:50:11.227
<v Chris>Rubber duck it, Wes. And plug your laptop in. Wes's desktop environment is using

00:50:11.227 --> 00:50:13.881
<v Chris>too much power. Let's plug it in real quick. You want to take Lutra's copy?

00:50:14.055 --> 00:50:18.333
<v Brent>Gotta optimize that, Wes. Lucitropy came in with a free member boost.

00:50:18.832 --> 00:50:19.529
<v Chris>Lucitropy.

00:50:19.959 --> 00:50:25.659
<v Brent>I went to the future and got Wine 99.0, so I don't need to dual boot Windows anymore.

00:50:26.477 --> 00:50:30.497
<v Brent>I think we're reaching a point where you can clank any unsupported application

00:50:30.497 --> 00:50:35.687
<v Brent>into Wine. I was able to get my clanker to iterate and debug loading a small

00:50:35.687 --> 00:50:39.242
<v Brent>proprietary work app with Wine, and now I don't need Windows.

00:50:39.671 --> 00:50:48.147
<v Chris>Hmm. It does seem like... Wine compatibility is a softer target than porting

00:50:48.147 --> 00:50:49.685
<v Chris>an entire Windows application.

00:50:50.190 --> 00:50:53.767
<v Chris>And we have seen a couple of success stories of previously very complicated

00:50:53.767 --> 00:50:55.942
<v Chris>Windows applications getting wine support.

00:50:56.668 --> 00:50:58.897
<v Chris>So we may be, you might be honest on here.

00:50:58.897 --> 00:51:01.457
<v Wes>I mean, you can imagine, right? Just a few, especially if it's just a couple

00:51:01.457 --> 00:51:04.067
<v Wes>of spots, like it's not missing a whole giant compatibility thing,

00:51:04.067 --> 00:51:07.747
<v Wes>but it's just a few things you need to fix or implement some stub or something.

00:51:07.747 --> 00:51:11.697
<v Chris>Yeah. The real trick would be if anybody ever got Mac apps working,

00:51:11.697 --> 00:51:14.199
<v Chris>but now that they're on the M platform, I don't think that's ever going to happen.

00:51:14.745 --> 00:51:18.067
<v Chris>Thank you, everybody, who boosted the shows. We have those of you who streamed

00:51:18.067 --> 00:51:23.087
<v Chris>them stats, 15 of you, collectively stacked 26,303 Satoshis.

00:51:26.586 --> 00:51:31.733
<v Chris>I guess that's the Texas amount. There you go. 26,303. That's not too bad.

00:51:31.733 --> 00:51:32.635
<v Chris>Thank you, SatStreamers.

00:51:32.925 --> 00:51:36.143
<v Chris>When you combine that with our Fiat Boosters and our SatBoosters,

00:51:36.143 --> 00:51:44.465
<v Chris>and we'll just kind of convert it all to sats, the show this week stacked 292,102 Satoshis.

00:51:45.417 --> 00:51:46.288
<v Chris>Not too bad at all.

00:51:48.192 --> 00:51:51.135
<v Chris>And, of course, thank you to all of our members who put your support on Autopilot.

00:51:51.605 --> 00:51:55.673
<v Chris>Don't forget you get that free member boost as a reward at boost.jupiterbroadcasting.com.

00:51:55.673 --> 00:52:00.253
<v Chris>and you can support each individual episode as well by going to boost.jupiterbroadcasting.com

00:52:00.253 --> 00:52:03.146
<v Chris>or in your podcast app. The memberships are pretty neat, though.

00:52:03.564 --> 00:52:07.209
<v Chris>Jupyter.party gives you access to the entire network's special features,

00:52:07.540 --> 00:52:11.543
<v Chris>like bootleg editions of the show, which right now, the bootleg edition of Linux

00:52:11.543 --> 00:52:15.487
<v Chris>Unplugged is almost an hour and 54, 55 minutes long at this point.

00:52:15.870 --> 00:52:19.153
<v Chris>Lots of content, really good discussions in those bootlegs, sometimes develop

00:52:19.153 --> 00:52:22.423
<v Chris>into full segments, but sometimes it only ever lives in the bootlegs.

00:52:22.423 --> 00:52:24.460
<v Chris>If you want more content, there's a whole other show.

00:52:24.849 --> 00:52:30.497
<v Chris>and jupyter.signal, or you can support just this humble show at linuxunplugged.com slash membership.

00:52:32.604 --> 00:52:37.104
<v Chris>I'm kind of excited about these picks, boys. Let's start with Dank Calendar

00:52:37.104 --> 00:52:40.414
<v Chris>because it's the one I told you about that kind of proves that these quick shell

00:52:40.414 --> 00:52:45.566
<v Chris>applications don't have to be tied to an individual desktop environment or individual shell.

00:52:46.019 --> 00:52:49.614
<v Chris>They can actually be spun out into their own applications. And I present you

00:52:49.994 --> 00:52:52.892
<v Chris>Dank Calendar, which is also available on Flathub.

00:52:53.374 --> 00:52:55.974
<v Chris>So you can just install it on any distro of choice.

00:52:55.974 --> 00:52:57.174
<v Wes>Yeah, look at this.

00:52:57.174 --> 00:53:02.054
<v Chris>Now, it's a simple, clean, local calendar that can connect to Google,

00:53:02.054 --> 00:53:05.727
<v Chris>Microsoft, CalDev, and iCloud calendars and pull it into one app.

00:53:07.174 --> 00:53:10.294
<v Chris>And I use it in coordination with my Keeper application, which is already syncing

00:53:10.294 --> 00:53:14.951
<v Chris>all of my calendars to one iCal feed. So then I can just plug that into Dank Calendar.

00:53:15.427 --> 00:53:19.854
<v Chris>And, well, Richard is your mother's brother. I now have not only a great desktop

00:53:19.854 --> 00:53:21.609
<v Chris>calendar app, but a great calendar widget as well.

00:53:21.922 --> 00:53:26.026
<v Wes>Yeah, and you can tell how it's made. I mean, one, it's got a flake.next. Love to see it.

00:53:26.854 --> 00:53:30.334
<v Wes>it's 49% go and 45% QML.

00:53:32.394 --> 00:53:35.308
<v Chris>The other one, you know, Wes, you were talking about sources of truth.

00:53:36.058 --> 00:53:40.038
<v Chris>And I think when you're thinking about agentic network management or you're

00:53:40.038 --> 00:53:45.037
<v Chris>just thinking about human network management, having a visual home lab map,

00:53:45.652 --> 00:53:49.848
<v Chris>diagram that is live and represents your actual living network.

00:53:49.848 --> 00:53:52.918
<v Wes>Oh, not like the way it was six months ago when I last thought to update it?

00:53:52.918 --> 00:53:56.918
<v Chris>Yeah, is pretty useful. And I've always kind of loved experimenting with these.

00:53:56.918 --> 00:53:59.480
<v Chris>And I think I have found the apex predator in the space.

00:53:59.968 --> 00:54:04.257
<v Chris>It's called Home Label. It's a visual home lab manager mapper kind of a dealio.

00:54:04.559 --> 00:54:09.795
<v Chris>It's self-hostable, and it visualizes an interactive diagram of your network with live monitoring.

00:54:10.602 --> 00:54:15.310
<v Chris>It provides a network integration for like your IP network, your Zigbee devices,

00:54:15.554 --> 00:54:16.965
<v Chris>and your Z-Wave devices.

00:54:17.359 --> 00:54:22.495
<v Chris>So you can also bring your smart devices into this diagram, which is really, really powerful.

00:54:22.821 --> 00:54:27.548
<v Chris>It also supports importing Proxmox. So if you use a Proxmox server,

00:54:27.548 --> 00:54:31.174
<v Chris>you can connect to it, and it understands the architecture of your Proxmox VM

00:54:31.290 --> 00:54:35.578
<v Chris>and pulls that into the diagram for you as well, including the networking setup and all of that.

00:54:36.098 --> 00:54:41.868
<v Chris>It's great. It produces a canvas layout that you can export as Markdown or you

00:54:41.868 --> 00:54:46.830
<v Chris>can export as a PNG, or you can make available to agents over at MCP.

00:54:47.300 --> 00:54:51.458
<v Chris>And then they can use this as a source of truth for how your network is actually

00:54:51.458 --> 00:54:54.655
<v Chris>physically laid out and what services run on which device.

00:54:55.061 --> 00:54:57.838
<v Chris>So this goes back to what Wes was saying about having a source of truth.

00:54:57.838 --> 00:54:59.932
<v Chris>This could be a source of truth in that scenario.

00:55:00.147 --> 00:55:02.528
<v Chris>So again, it's called home label. And one of the things I love about it is even

00:55:02.528 --> 00:55:09.548
<v Chris>if you never had any plans to use the MCP or whatever, it produces this great

00:55:09.548 --> 00:55:12.608
<v Chris>visual diagram system of your network –.

00:55:13.846 --> 00:55:18.925
<v Chris>That you can use as a human being. And they've just recently announced a Hacks

00:55:18.925 --> 00:55:22.595
<v Chris>plugin so it'll integrate with your Home Assistant if you use the Home Assistant

00:55:22.595 --> 00:55:24.531
<v Chris>stack and pull in that information.

00:55:25.083 --> 00:55:28.717
<v Chris>Every device, one canvas, your switches, your routers, your cameras,

00:55:28.960 --> 00:55:31.306
<v Chris>your VMs, your NAS device,

00:55:31.835 --> 00:55:35.549
<v Chris>any electric smart devices that are reading electricity usage,

00:55:35.840 --> 00:55:39.792
<v Chris>your ISP information, Wi-Fi stuff, like I said, ZigBee and Z-Wave,

00:55:40.210 --> 00:55:43.655
<v Chris>all of it into this, and then it diagrams it all up for you and then gives you

00:55:43.655 --> 00:55:47.996
<v Chris>nice little status lights about what services are active, you could literally...

00:55:49.261 --> 00:55:53.297
<v Chris>Diagram your network rack if you want with this thing and end of down to the

00:55:53.297 --> 00:55:55.101
<v Chris>individual port level if you so care.

00:55:56.239 --> 00:56:00.577
<v Chris>And the ability to pull in the Zigbee and the Z-Wave networks so you can map

00:56:00.577 --> 00:56:05.467
<v Chris>your IoT network along with the rest of, so you now get the full picture of

00:56:05.467 --> 00:56:07.263
<v Chris>the network, not just your IP network

00:56:07.634 --> 00:56:10.677
<v Chris>and not just the Zigbee network and not just the Z-Wave network off on their

00:56:10.677 --> 00:56:14.153
<v Chris>own islands, but the whole thing and all of it monitored by the system available

00:56:14.554 --> 00:56:16.984
<v Chris>as an API, a web interface or an MCP.

00:56:18.156 --> 00:56:24.304
<v Chris>homelabel.net it's fantastic I set it up this weekend I've been loving it.

00:56:24.791 --> 00:56:26.677
<v Brent>This is so crazy it's very.

00:56:26.677 --> 00:56:31.947
<v Chris>Impressive wow it's great I'm really really happy with it I had it scan,

00:56:32.907 --> 00:56:38.737
<v Chris>both my hen network and my main network and the proxmox how did it do what did

00:56:38.737 --> 00:56:42.467
<v Chris>you learn all diagram nice it's MIT licensed so,

00:56:43.187 --> 00:56:49.187
<v Chris>have at it you can run it via docker or whatever you like I'm doing Docker compose for this setup and,

00:56:50.627 --> 00:56:52.946
<v Chris>easy peasy. Really? It wasn't, it was, it was nothing.

00:56:53.590 --> 00:56:56.220
<v Chris>And the results are great. The scan is great too. It has, um,

00:56:56.899 --> 00:57:00.457
<v Chris>by default, you have to review the results and then approve them,

00:57:00.457 --> 00:57:03.117
<v Chris>which is my preferred route because otherwise sometimes these things just get

00:57:03.117 --> 00:57:05.508
<v Chris>crazy and then you can just get to diagramming.

00:57:06.233 --> 00:57:08.697
<v Chris>Uh, you could likely even just have the agent generated diagram,

00:57:08.697 --> 00:57:10.204
<v Chris>I suppose if you don't want to do it yourself.

00:57:10.721 --> 00:57:13.557
<v Chris>Um, but it's really neat. It's neat to also see all my cameras in their own

00:57:13.557 --> 00:57:16.890
<v Chris>group and stuff like that, that other tools just haven't really properly visualized.

00:57:17.291 --> 00:57:20.847
<v Wes>Yeah, it seems like maybe part of the value is that it has a wide array of possible

00:57:20.847 --> 00:57:24.567
<v Wes>options and things that it has understanding of and that you can therefore have

00:57:24.567 --> 00:57:25.986
<v Wes>them all in one cohesive picture.

00:57:26.538 --> 00:57:29.748
<v Chris>Your IP network, your Proxmox, your Zigbee, and your Z-Wave,

00:57:31.009 --> 00:57:33.871
<v Chris>is really great. I've never seen that before.

00:57:34.353 --> 00:57:37.917
<v Wes>You don't have to bring your own understanding and layers and stuff.

00:57:38.108 --> 00:57:39.253
<v Wes>It understands that already.

00:57:39.253 --> 00:57:42.753
<v Chris>Yeah, you can. So if you don't use a Hacks integration, then you have to just

00:57:42.753 --> 00:57:44.613
<v Chris>connect to like your MQTT server or something.

00:57:44.913 --> 00:57:48.081
<v Chris>There's a little bit more work there. But if you use the Hacks integration, it just ties all in.

00:57:48.743 --> 00:57:51.123
<v Chris>And then to be able to export it all is really nice. So like you can like,

00:57:51.123 --> 00:57:54.995
<v Chris>you know, go flex your network diagram when you get it all pretty as a PNG. That's pretty cool.

00:57:55.506 --> 00:57:58.503
<v Chris>And if you do want to hook it up to the MCP, you can just, you can ask your

00:57:58.503 --> 00:58:02.313
<v Chris>agent or your cloud code or your open code, whatever it is, what nodes are currently

00:58:02.313 --> 00:58:04.163
<v Chris>offline, it gets a list back.

00:58:04.163 --> 00:58:09.773
<v Chris>You could say, add a new LXE container named PyHole at 192.168.1.5 running on

00:58:09.773 --> 00:58:11.702
<v Chris>this host connected to this virtual VLAN.

00:58:11.812 --> 00:58:15.863
<v Chris>And the agent can query this and understand what all of that means and have

00:58:15.863 --> 00:58:18.301
<v Chris>a live updated map and understanding of it.

00:58:19.322 --> 00:58:22.673
<v Chris>So you're going to reduce not only exploration times, you're going to reduce

00:58:22.673 --> 00:58:25.463
<v Chris>your token costs, but you're going to reduce mistakes too. And then that means

00:58:25.463 --> 00:58:27.211
<v Chris>you can use models that perhaps aren't, you know,

00:58:28.691 --> 00:58:30.798
<v Chris>Fable or something. They don't have to be frontier level.

00:58:31.146 --> 00:58:34.399
<v Wes>I noticed it also has a read-only stats API you can get.

00:58:34.939 --> 00:58:36.719
<v Wes>So that's kind of nice. You can see how many nodes you've got,

00:58:36.719 --> 00:58:40.103
<v Wes>stuff that's offline, unknown devices, and when you last did a scan.

00:58:41.259 --> 00:58:44.155
<v Wes>That smells like a little Quickshell widget to me.

00:58:44.393 --> 00:58:48.669
<v Chris>You're right, dude. You're right, actually. Well said. I hadn't thought of that

00:58:48.669 --> 00:58:51.144
<v Chris>yet, but I mean, I have it all set up. I'm all in on this.

00:58:51.603 --> 00:58:54.919
<v Chris>I really like it. And it's really, it's complimentary to some of the other network

00:58:54.919 --> 00:58:57.669
<v Chris>monitoring I already use, too. It's fantastic.

00:58:58.900 --> 00:59:00.709
<v Chris>Can you hear the plane out there, Brentley? Did you hear the plane?

00:59:00.709 --> 00:59:01.797
<v Brent>Makes me want to fly.

00:59:02.139 --> 00:59:04.889
<v Chris>We had a banner going by for Home Label as we did the episode.

00:59:04.889 --> 00:59:08.049
<v Chris>I don't know. I know it's an audio. Yeah, yeah, yeah, of course.

00:59:08.049 --> 00:59:09.499
<v Chris>But that was actually the smoke one.

00:59:09.499 --> 00:59:09.796
<v Brent>Oh.

00:59:10.539 --> 00:59:14.749
<v Chris>Yeah, so MIT license, link to that in the show notes. And if you forget the

00:59:14.749 --> 00:59:19.454
<v Chris>show notes, well, those are at linuxunplugged.com. And this one is slash 682.

00:59:22.019 --> 00:59:24.999
<v Wes>It's best not to think about it and just read the numbers without internalizing.

00:59:26.529 --> 00:59:31.360
<v Chris>Also, I want to remind you the show is live. We make it a Tuesday on a Sunday over at JBLive.tv.

00:59:35.018 --> 00:59:38.432
<v Chris>Yeah, you can get it converted at jupiterbroadcasting.com slash calendar.

00:59:38.432 --> 00:59:41.385
<v Chris>The mumble room's always going throughout the week, but really pops during the show.

00:59:41.821 --> 00:59:45.712
<v Chris>And then if you want to read more, look at something we said,

00:59:45.712 --> 00:59:48.724
<v Chris>or point your clanker at more information, Wes, hook them up with the info.

00:59:49.269 --> 00:59:54.442
<v Wes>Well, do you prefer an SRT file or the even more robust VTT file?

00:59:54.442 --> 00:59:55.542
<v Chris>I think I'm going VTT these days.

00:59:55.542 --> 00:59:59.002
<v Wes>You're a VTT kind of person. Okay, yeah, web VTT, good standard there.

00:59:59.002 --> 00:59:59.522
<v Chris>I'm liking that.

01:00:01.000 --> 01:00:01.702
<v Wes>But that's not all?

01:00:01.702 --> 01:00:01.992
<v Chris>No.

01:00:01.992 --> 01:00:07.962
<v Wes>No, there's an upgraded now in two dimensions instead of just one video feed. Yeah, an MP4.

01:00:07.962 --> 01:00:10.272
<v Chris>That seems like a lot of work. Huh, that's just in the feed?

01:00:10.272 --> 01:00:10.582
<v Wes>Yeah.

01:00:10.582 --> 01:00:11.742
<v Chris>Just a regular OSS feed?

01:00:11.742 --> 01:00:15.146
<v Wes>Right next to where we keep our JSON file with our Cloud Chapters.

01:00:15.512 --> 01:00:19.522
<v Chris>So like structured data that you could just analyze and go right to the section in the show?

01:00:19.522 --> 01:00:22.352
<v Wes>It's a little out of vogue. It is XML-based, right?

01:00:22.352 --> 01:00:22.402
<v Chris>Oh.

01:00:23.142 --> 01:00:25.293
<v Wes>But technically, XML is parsable, yes.

01:00:25.427 --> 01:00:27.209
<v Chris>Oh, okay. Can we just do it in Markdown then?

01:00:28.468 --> 01:00:30.422
<v Wes>Someday. We probably will.

01:00:31.644 --> 01:00:34.482
<v Chris>I don't know about that. So we'd love it if you joined us. Take advantage of

01:00:34.482 --> 01:00:39.161
<v Chris>all those extra features and all that over at linuxunplugged.com slash RSS for the RSS feed.

01:00:39.469 --> 01:00:42.296
<v Chris>And of course, of course, that mumble room.

01:00:42.667 --> 01:00:45.506
<v Chris>Details at jupyterbroadcasting.com. Check out some of the other great shows

01:00:45.849 --> 01:00:48.083
<v Chris>over there as well. The launch comes out on Tuesday.

01:00:49.668 --> 01:00:53.672
<v Chris>Actually, it's live Tuesday. It comes out on Wednesday. Check it out. Weeklylaunch.ru.

01:00:53.722 --> 01:00:55.235
<v Wes>I think there's an RSS feed for that.

01:00:55.380 --> 01:00:56.922
<v Chris>There might be. There might be several RSS feeds.

01:00:56.922 --> 01:00:57.505
<v Wes>More XML, baby.

01:00:57.998 --> 01:01:01.242
<v Chris>Websites are great. I tell you what. All right. Thank you so much for joining

01:01:01.242 --> 01:01:03.414
<v Chris>us on this week's episode of your Unplugged program.

01:01:03.716 --> 01:01:07.825
<v Chris>And we'll see you right back here next Tuesday, as in Sunday.

