@1/4 Life @Noel

@Kyle Gospo @Noel
I noticed that the yafti file didnt look correct when testing bazzite last night. posted an updated version added the system flag for you guys.
59 Replies
NerdsRun
NerdsRun•8mo ago
if you run into any issues happy to continue to help.
Kyle Gospo
Kyle Gospo•8mo ago
Take a look soon! Thank you so much
j0rge
j0rge•8mo ago
yeah man as soon as I get back it's time for yafti!!!!
NerdsRun
NerdsRun•8mo ago
quick peek
No description
No description
tryhardsoccermomswag
tryhardsoccermomswag•8mo ago
ooooo
j0rge
j0rge•8mo ago
I'd love to find a "turbo button" ... for switching to -dx like "Enable Developer Experience", which just calls the ujust command but I also want like a sport mode button like in my audi like, a red button.
NerdsRun
NerdsRun•8mo ago
pedal to the metal
j0rge
j0rge•8mo ago
I had an idea once, where like developer experience is a different theme from the stock one, not jarringly so. But like you know when Iron Man puts his suit in combat mode and all those UI elements change? Like sport mode. and you just live change the theme and it like goes into "developer mode" and there's red and black, etc.
NerdsRun
NerdsRun•8mo ago
i have a css file we can changed based off whatever really
j0rge
j0rge•8mo ago
anyway that's just daydreaming, just putting what we have in there will be such a huge improvement.
NerdsRun
NerdsRun•8mo ago
i have to get get the packages stuff added back a after that will push it up.
j0rge
j0rge•8mo ago
no worries, I'm out of band but there's enough reviewers around that you shouldn't be blocked. we we can go into april with this and the iso's mostly sorted we'll be golden
Noel
Noel•8mo ago
I'm aiming for Fedora 40. I think all the ISO issues with flatpaks are sorted. Just need to get a chance to sit down and work on it 😄
j0rge
j0rge•8mo ago
yeah, the reason I say that is it'd be nice to do nothing but testing all of april basically we should start being like "bring out your dead" because we're going to archive a bunch of old stuff, etc.
NerdsRun
NerdsRun•8mo ago
Monster Mash
fiftydinar
fiftydinar•8mo ago
Is this how new yafti will look? Will my current yafti config file work just fine with the old UI?
NerdsRun
NerdsRun•8mo ago
for the initial release i have no plan on changing the config file and will work with the new ui. Is this what your asking?
fiftydinar
fiftydinar•8mo ago
no, I'm asking as a downstream user of yafti, if my current config file doesn't need any changes Since I heard that yafti will get a refactor, that's why I ask
tryhardsoccermomswag
tryhardsoccermomswag•8mo ago
they have their own custom image
NerdsRun
NerdsRun•8mo ago
it will not need any changes for the new ui. The functionality will change a little. For example if you return yafti it will remember what you have previously installed and be a noop. It all allow for adding new packages that you have not installed.
bketelsen
bketelsen•8mo ago
is this still Python?
NerdsRun
NerdsRun•8mo ago
yep.
bketelsen
bketelsen•8mo ago
damn I was hoping for more gotk4 source to learn from lol
NerdsRun
NerdsRun•8mo ago
honestly i wish i would have used rust the gtk4 lib is so nice ;p @fiftydinar in the future i think we should expand the config a little for one off commands by adding fields for validation and verification for the packages being installed.
bketelsen
bketelsen•8mo ago
i finally got a gotk4 app building as a flatpak, but I don't really know gtk so I'm fumbling through events & callbacks
NerdsRun
NerdsRun•8mo ago
yeah, its kind of annoying honestly lol.
bketelsen
bketelsen•8mo ago
sorry - hijacking a thread off topic. back in my box
NerdsRun
NerdsRun•8mo ago
no worries. how is the gosdk? as i use golang for my day job
bketelsen
bketelsen•8mo ago
w.Box = gtk.NewBox(gtk.OrientationVertical, 0)
w.Notebook = gtk.NewNotebook()

w.Instances = NewInstances(ctx, w.client)
instanceLabel := gtk.NewLabel("Instances")

secondLabel := gtk.NewLabel("Second")
secondBox := gtk.NewBox(gtk.OrientationHorizontal, 0)

w.Notebook.AppendPage(w.Instances, instanceLabel)
w.Notebook.AppendPage(secondBox, secondLabel)
w.Header = adw.NewHeaderBar()
w.Header.PackEnd(dd)
w.Box.Append(w.Header)
w.Box = gtk.NewBox(gtk.OrientationVertical, 0)
w.Notebook = gtk.NewNotebook()

w.Instances = NewInstances(ctx, w.client)
instanceLabel := gtk.NewLabel("Instances")

secondLabel := gtk.NewLabel("Second")
secondBox := gtk.NewBox(gtk.OrientationHorizontal, 0)

w.Notebook.AppendPage(w.Instances, instanceLabel)
w.Notebook.AppendPage(secondBox, secondLabel)
w.Header = adw.NewHeaderBar()
w.Header.PackEnd(dd)
w.Box.Append(w.Header)
it looks like this
NerdsRun
NerdsRun•8mo ago
eh, basically the same ;p
bketelsen
bketelsen•8mo ago
yeah but compile time HURTS since it's cgo -> C
fiftydinar
fiftydinar•8mo ago
I currently use yafti as an optional setup which runs automatically on 1st boot. 1st screen is classic welcome, 2nd screen is selection of flatpaks, 3rd screen are just commands, with one of them using pkexec for executing those as root & 4th screen is classic "Finished, here is the link for the ISO & option to exit setup" Having a way to define just scripts or commands in general as rootful without using hacky ways like pkexec or even worse, openssh dialog would be great
NerdsRun
NerdsRun•8mo ago
when i get a bit more development done lets spend some time on a call to make sure you're getting everything you need out of it.
fiftydinar
fiftydinar•8mo ago
I am not the expert on this, just a classic user so some people would have better inputs, or even code suggestions
NerdsRun
NerdsRun•8mo ago
still an important consumer 🙂
fiftydinar
fiftydinar•8mo ago
I prefer texting over calls, as everything will be available for everyone to read plus Discord threads are archived here in search index, which is great
NerdsRun
NerdsRun•8mo ago
Have you tried the template stuff?
bketelsen
bketelsen•8mo ago
nope. I'm all ears if you know how
NerdsRun
NerdsRun•8mo ago
<?xml version="1.0" encoding="UTF-8"?>
<schemalist>
<schema id="it.ublue.Yafti.window" path="/it/ublue/Yafti/window/">
<key name="width" type="i">
<default>800</default>
</key>
<key name="height" type="i">
<default>800</default>
</key>
<key name="is-maximized" type="b">
<default>false</default>
</key>
<key name="is-fullscreen" type="b">
<default>false</default>
</key>
<key name="dark-mode" type="b">
<default>false</default>
</key>
</schema>
<schema id="it.ublue.Yafti.settings" path="/it/ublue/Yafti/settings/" gettext-domain="settings">
<key name="interval" type="d">
<default>1.0</default>
</key>
<key name="start-on-startup" type="b">
<default>false</default>
</key>
<key name="save-format" type="s">
<choices>
<choice value='json'/>
<choice value='csv'/>
<choice value='kv'/>
</choices>
<default>'json'</default>
</key>
</schema>
</schemalist>
<?xml version="1.0" encoding="UTF-8"?>
<schemalist>
<schema id="it.ublue.Yafti.window" path="/it/ublue/Yafti/window/">
<key name="width" type="i">
<default>800</default>
</key>
<key name="height" type="i">
<default>800</default>
</key>
<key name="is-maximized" type="b">
<default>false</default>
</key>
<key name="is-fullscreen" type="b">
<default>false</default>
</key>
<key name="dark-mode" type="b">
<default>false</default>
</key>
</schema>
<schema id="it.ublue.Yafti.settings" path="/it/ublue/Yafti/settings/" gettext-domain="settings">
<key name="interval" type="d">
<default>1.0</default>
</key>
<key name="start-on-startup" type="b">
<default>false</default>
</key>
<key name="save-format" type="s">
<choices>
<choice value='json'/>
<choice value='csv'/>
<choice value='kv'/>
</choices>
<default>'json'</default>
</key>
</schema>
</schemalist>
class Config(BaseConfig):
"""
"""
def __init__(self) -> None:

schema_dir = f"{self.APP_ROOT}/yafti/yafti/screen/assets"
schema_source = Gio.SettingsSchemaSource.new_from_directory(
schema_dir,
Gio.SettingsSchemaSource.get_default(),
False,
)
# Load Window config schema
schema = schema_source.lookup('it.ublue.Yafti.window', False)
self.window = Gio.Settings.new_full(schema, None, None)
# Load Settings config schema
schema = schema_source.lookup('it.ublue.Yafti.settings', False)
self.settings = Gio.Settings.new_full(schema, None, None)
class Config(BaseConfig):
"""
"""
def __init__(self) -> None:

schema_dir = f"{self.APP_ROOT}/yafti/yafti/screen/assets"
schema_source = Gio.SettingsSchemaSource.new_from_directory(
schema_dir,
Gio.SettingsSchemaSource.get_default(),
False,
)
# Load Window config schema
schema = schema_source.lookup('it.ublue.Yafti.window', False)
self.window = Gio.Settings.new_full(schema, None, None)
# Load Settings config schema
schema = schema_source.lookup('it.ublue.Yafti.settings', False)
self.settings = Gio.Settings.new_full(schema, None, None)
bketelsen
bketelsen•8mo ago
That looks like prefs
NerdsRun
NerdsRun•8mo ago
you have run this glib-compile-schemas .
bketelsen
bketelsen•8mo ago
Ahh it’s a preferences window
NerdsRun
NerdsRun•8mo ago
You can then you can add more for windows or views etc.
bketelsen
bketelsen•8mo ago
Ok I did that once but I struggle figuring out what containers to use The docs are pretty basic too
NerdsRun
NerdsRun•8mo ago
yeah... docs suck lol here is another exmaple
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<object class="GtkShortcutsWindow" id="help_overlay">
<property name="modal">True</property>
<child>
<object class="GtkShortcutsSection">
<property name="section-name">shortcuts</property>
<property name="max-height">10</property>
<child>
<object class="GtkShortcutsGroup">
<property name="title" translatable="yes" context="shortcut window">General</property>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Show shortcuts</property>
<property name="action-name">win.show-help-overlay</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Filter to show all provided packages</property>
<property name="action-name">win.filter('All')</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Filter to show only outdated or uninstalled packages</property>
<property name="action-name">win.filter('Open')</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Filter to show only completed installed and out of date packages</property>
<property name="action-name">win.filter('Done')</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<object class="GtkShortcutsWindow" id="help_overlay">
<property name="modal">True</property>
<child>
<object class="GtkShortcutsSection">
<property name="section-name">shortcuts</property>
<property name="max-height">10</property>
<child>
<object class="GtkShortcutsGroup">
<property name="title" translatable="yes" context="shortcut window">General</property>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Show shortcuts</property>
<property name="action-name">win.show-help-overlay</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Filter to show all provided packages</property>
<property name="action-name">win.filter('All')</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Filter to show only outdated or uninstalled packages</property>
<property name="action-name">win.filter('Open')</property>
</object>
</child>
<child>
<object class="GtkShortcutsShortcut">
<property name="title" translatable="yes" context="shortcut window">Filter to show only completed installed and out of date packages</property>
<property name="action-name">win.filter('Done')</property>
</object>
</child>
</object>
</child>
</object>
</child>
</object>
</interface>
with python you can use a decorator
@Gtk.Template(filename="yafti/screen/assets/window.ui")
@Gtk.Template(filename="yafti/screen/assets/window.ui")
bketelsen
bketelsen•8mo ago
Oh that’s nice Does that wire up actions & stuff?
NerdsRun
NerdsRun•8mo ago
events and actions yeah. you do register install and match the xml with what you register in the class/struct
bketelsen
bketelsen•8mo ago
Maybe I should just bite the bullet and learn python
fiftydinar
fiftydinar•8mo ago
let's Go
bketelsen
bketelsen•8mo ago
GitHub
gotk4-examples/gtk4/builder at master · diamondburned/gotk4-examples
Examples for writing GTK4 applications in Go. Contribute to diamondburned/gotk4-examples development by creating an account on GitHub.
NerdsRun
NerdsRun•8mo ago
please do i could use a learning buddy lol unless you want to learn some rust with me haha although, with python and go its hard to justify a new language. i work in the platform space so golang is pretty much a requirement... @bketelsen what are you trying to build?
bketelsen
bketelsen•8mo ago
My goal is to be able to whip up apps for Bluefin as they're needed. I'm practicing on a GUI version of blincus - incus for dev environments
NerdsRun
NerdsRun•8mo ago
finally some more progress. currently installed flatpacks
No description
bketelsen
bketelsen•8mo ago
What are the containers in that window? That’s roughly the layout I’m trying for
NerdsRun
NerdsRun•8mo ago
its a treeview thing ;p
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="libadwaita" version="1.0" />
<template class="YaftiPackages" parent="GtkScrolledWindow">
<!-- <property name="title" translatable="yes">Welcome To Project Bluefin</property>-->
<property name="child">
<object class="AdwClamp">
<property name="maximum-size">700</property>
<property name="tightening-threshold">300</property>
<property name="child">
<object class="GtkBox" id="packages_overview">
<property name="orientation">vertical</property>
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<property name="spacing">12</property>
<child>
<object class="GtkListBox" id="package_list">
<!-- <object class="AdwBin" id="package_list">-->
<property name="visible">True</property>
<property name="selection-mode">none</property>
<style>
<class name="boxed-list" />
</style>
</object>
</child>
</object>
</property>
</object>
</property>
</template>
</interface>
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk" version="4.0"/>
<requires lib="libadwaita" version="1.0" />
<template class="YaftiPackages" parent="GtkScrolledWindow">
<!-- <property name="title" translatable="yes">Welcome To Project Bluefin</property>-->
<property name="child">
<object class="AdwClamp">
<property name="maximum-size">700</property>
<property name="tightening-threshold">300</property>
<property name="child">
<object class="GtkBox" id="packages_overview">
<property name="orientation">vertical</property>
<property name="margin-start">12</property>
<property name="margin-end">12</property>
<property name="spacing">12</property>
<child>
<object class="GtkListBox" id="package_list">
<!-- <object class="AdwBin" id="package_list">-->
<property name="visible">True</property>
<property name="selection-mode">none</property>
<style>
<class name="boxed-list" />
</style>
</object>
</child>
</object>
</property>
</object>
</property>
</template>
</interface>
Noel
Noel•8mo ago
@Kyle Gospo would you be interested in making a logo for Yafti?
Kyle Gospo
Kyle Gospo•8mo ago
@j0rge asked earlier but did you ever get any traction on that ublue logo remake? If I make a Yafti logo it should be inspired by it ideally
j0rge
j0rge•8mo ago
he was taking a break due to burnout so I didn't want to pry again but if you know them more than me feel free to ping but yeah, we should do the website/logo at the same time I think if we can pull that off
Want results from more Discord servers?
Add your server