Ubuntu Summit 2024 | Lowering the Burden: a GUI App for Everything

00:30:46
https://www.youtube.com/watch?v=57Y16OI3OTo

Summary

TLDREric M., project leader for Ubuntu Studio, addresses the challenges developers face when creating tools mainly catered to other developers rather than everyday users in this 30-minute workshop. He advocates for the development of graphical user interfaces (GUIs) for greater accessibility, reducing reliance on terminal commands, which can deter non-developers. He critiques Fedora’s focus on developers and highlights the need for simpler, user-centric systems. Eric showcases his work with Zenity, a tool that adds GUIs to Bash scripts, such as creating a Minecraft server management tool for his son. He demonstrates the Ubuntu Studio installers and audio configuration tools, which use GUI-based solutions to simplify package installation and customization tasks. Additionally, Eric touches on the challenge of integrating localization in Bash and indicates plans for future advancements in the user experience design of Ubuntu Studio projects. The talk emphasizes moving towards tools that are easier for everyday users to adopt, while also laying the groundwork for more advanced GUI implementations in the future.

Takeaways

  • 🛠️ Developers tend to create tools for their own needs, neglecting the everyday user's accessibility.
  • 🎛️ Eric emphasizes the need for GUI-based tools, highlighting tools like Zenity.
  • 💻 Ubuntu Studio is being optimized to cater to non-technical users with ready-to-use features.
  • 📉 Reducing terminal dependency helps improve user adoption rates for Linux systems.
  • 📈 Moving beyond developer-centric design is key for reaching a mainstream audience.
  • 👶 Eric showcased a simple Zenity tool to let his son start and stop a Minecraft server via GUI.
  • 🎨 GUIs can handle tasks like color selection, file paths, and system notifications easily.
  • 📦 Ubuntu Studio and Edubuntu customization tools make package installation user-friendly.
  • 🎙️ The Ubuntu Studio audio configuration program simplifies advanced audio management.
  • 🔄 Localization in Bash scripting remains an ongoing challenge in Eric's work.

Timeline

  • 00:00:00 - 00:05:00

    The speaker, Eric, introduces his workshop focusing on the challenges Linux faces in appealing to everyday users rather than just developers. He critiques the Fedora workstation for targeting developers and shares his journey in making Ubuntu Studio user-friendly. Eric highlights the problem of Linux's reliance on terminal commands, which deters non-technical users.

  • 00:05:00 - 00:10:00

    To address this, Eric discusses tools like `QDialog` and `Zenity` that present graphical user interfaces (GUIs) even when built with command-line tools. He uses an example involving his 12-year-old son to showcase a practical application of Zenity, where he automated the management of a Minecraft Bedrock server using a simple yet effective GUI-based solution.

  • 00:10:00 - 00:15:00

    Eric shifts focus to explain the benefits of GUIs for tasks like package management and system customization. He demonstrates how Zenity was used for applications, such as the Ubuntu Studio installer, which allows users to easily add or remove meta packages and dependencies without diving into terminal commands.

  • 00:15:00 - 00:20:00

    He discusses the challenges of modernizing these tools, including porting old projects like the Ubuntu Studio Installer from outdated frameworks to Zenity and modern shells. Eric also elaborates on the scalability issues and how GUIs improve accessibility and user experience, particularly for high-DPI displays.

  • 00:20:00 - 00:25:00

    Eric highlights other utility tools like the Ubuntu Studio Audio Configuration Program, emphasizing its evolution over the years to support new features like buffer management, starting/stopping audio services, and kernel parameter configuration. These tools aim to simplify complex system configurations for end-users.

  • 00:25:00 - 00:30:46

    The session concludes with a Q&A. Eric addresses challenges in localization for bash-based GUIs and the potential for future iterations using more advanced GUI frameworks. He reiterates his goal of stepping towards more accessible, user-friendly Linux interfaces, bridging the gap between developers and everyday users.

Show more

Mind Map

Video Q&A

  • What is the main issue developers face, according to Eric?

    Developers often design systems for other developers rather than for everyday users, making it difficult for non-technical users to interact with those systems.

  • How long has Eric been working on Ubuntu Studio?

    Eric has been working on Ubuntu Studio for about six and a half years.

  • What is the purpose of using GUI tools like Zenity?

    GUI tools like Zenity make applications more accessible and user-friendly for non-developers, reducing reliance on terminal commands.

  • What was the use case of Zenity in Eric's personal project?

    Eric used Zenity to create a GUI for his 12-year-old son to manage a Minecraft Bedrock server without needing admin access or terminal commands.

  • What is the main takeaway about Fedora's strategy?

    Eric criticizes Fedora's focus on tools for developers and makers rather than targeting everyday users.

  • Why does Eric choose to highlight Ubuntu Studio’s installers?

    He emphasizes how Ubuntu Studio’s installers use GUI tools to simplify package installation and customization for end users.

  • What is Eric's approach to improving developer tools for end users?

    He advocates creating front-end GUIs to reduce the reliance on terminal use while making tools simpler and more intuitive.

  • How does the Ubuntu Studio audio configuration program work?

    The program provides GUI-based controls for managing audio parameters such as buffer rates, sample rates, and audio routing, removing the need for command-line tools.

  • What was one challenge with the original Ubuntu Studio installer?

    The original installer was written in outdated Tk/Tcl, making it visually outdated and incompatible with high DPI displays.

  • What improvements did Eric make to localization?

    Eric acknowledged that localization in Bash is a challenge and stated it remains a work in progress for future improvements.

View more video summaries

Get instant access to free YouTube video summaries powered by AI!
Subtitles
en
Auto Scroll:
  • 00:00:03
    well uh good afternoon everyone I'm
  • 00:00:05
    ericm uh project leader for Studio like
  • 00:00:08
    I was just introduced
  • 00:00:10
    as uh I tend to talk a little fast I'm
  • 00:00:13
    going to slow down a little bit but we
  • 00:00:15
    do have a long way to go before the sun
  • 00:00:17
    goes down I've only got a 30 minute
  • 00:00:19
    Workshop today so uh just wanted to talk
  • 00:00:22
    about uh this um what we have here today
  • 00:00:27
    A bit of a problem that we have kind of
  • 00:00:30
    as a uh community and that's that we
  • 00:00:33
    have
  • 00:00:34
    uh a bit of a problem in that as
  • 00:00:37
    developers we tend to develop for
  • 00:00:39
    developers and for ourselves so just
  • 00:00:43
    wanted to talk about that a little bit
  • 00:00:45
    so um what was funny is that as I was
  • 00:00:47
    browsing Reddit the other day I actually
  • 00:00:50
    came across this
  • 00:00:51
    Meme and you may have seen it before um
  • 00:00:55
    it's a little bit of thing coming along
  • 00:00:58
    Windows 10 is being killed off by
  • 00:01:00
    Microsoft in October
  • 00:01:02
    25 and you know we have an advantage
  • 00:01:05
    here where we can probably or a thing
  • 00:01:07
    where we can probably take advantage of
  • 00:01:10
    coming up but we do have a problem in
  • 00:01:14
    that there is a bias in that people
  • 00:01:18
    coming into Linux seem to think they
  • 00:01:21
    have to run stuff from the terminal all
  • 00:01:23
    the time or that it's for power users or
  • 00:01:27
    things like that now personally
  • 00:01:30
    I have been working on abun Studio to
  • 00:01:32
    try to bring it to
  • 00:01:35
    the the everyday user for the past six
  • 00:01:39
    and a half years and to try and make
  • 00:01:41
    sure that people can use it and not have
  • 00:01:45
    to worry about making it complicated and
  • 00:01:47
    we finally got to that stage in 2404
  • 00:01:51
    where people can just start it up be
  • 00:01:53
    ready to go to do a professional audio
  • 00:01:55
    video graphics work just out of the box
  • 00:01:58
    and it's actually getting a lot of good
  • 00:02:00
    positive feedback especially with 24.10
  • 00:02:03
    where we have moved to the generic
  • 00:02:05
    kernel and been able to configure kernel
  • 00:02:09
    options by default and I'll show you a
  • 00:02:11
    bit about that in a um in a little bit
  • 00:02:15
    later but um I am going to pick on our
  • 00:02:18
    friends at Fedora I used to be a fedora
  • 00:02:21
    developer so I can do that I'm a little
  • 00:02:23
    I giving myself a little bit of license
  • 00:02:25
    for that we look at their
  • 00:02:28
    um look a little bit at their web page
  • 00:02:30
    this is a little snipp it from their web
  • 00:02:32
    page this is the Fedora workstation
  • 00:02:34
    where we're talking about we'll read
  • 00:02:36
    that a little bit Fedora workstation is
  • 00:02:38
    a polished easyto use operating system
  • 00:02:41
    for laptop and desktop computers with a
  • 00:02:43
    complete set of tools for developers and
  • 00:02:46
    makers of all kinds I want to highlight
  • 00:02:49
    that last portion a little bit with a
  • 00:02:52
    complete set of tools for developers and
  • 00:02:56
    makers of all kinds for
  • 00:03:00
    developers and makers of all kinds for
  • 00:03:03
    developers so you see where we're going
  • 00:03:05
    with this they're targeting developers
  • 00:03:07
    they are not targeting the everyday end
  • 00:03:11
    user which to me is a little bit
  • 00:03:14
    problematic um I I just you know kind of
  • 00:03:18
    rubs me the wrong way um I was when I my
  • 00:03:22
    first uh computer experience was a on a
  • 00:03:24
    Commodore Amiga and if you're familiar
  • 00:03:27
    with that it was an all gooey based
  • 00:03:29
    thing if were in the terminal you were
  • 00:03:30
    doing it wrong um all of their
  • 00:03:33
    configuration was done in a GUI if you
  • 00:03:35
    were running anything it was done in a
  • 00:03:37
    guy um if you were programming you were
  • 00:03:39
    doing it in a text file which is I mean
  • 00:03:42
    expected but it you know then um my
  • 00:03:46
    first computer that we actually own that
  • 00:03:48
    was my uncle's computer my first
  • 00:03:49
    computer that we actually owned was a
  • 00:03:50
    com 64 I learned how to program on that
  • 00:03:53
    in basic so uh if you any of you were
  • 00:03:56
    following the summit Matrix Channel you
  • 00:03:59
    may have seen me goof around with
  • 00:04:01
    somebody talking about we were talking
  • 00:04:03
    about a little bit of old basic and I
  • 00:04:05
    just you know called them loopy and told
  • 00:04:07
    them 10 go to 10 should be their tagline
  • 00:04:10
    if you know what that means that's
  • 00:04:11
    literally a loop it literally Loops in
  • 00:04:14
    the code if you run it so anyhow so why
  • 00:04:18
    would we use guey apps and yes the
  • 00:04:20
    terminal is faster but only if you know
  • 00:04:24
    the commands
  • 00:04:25
    already uh for newcomers being told to
  • 00:04:29
    go to a terminal is a
  • 00:04:31
    deterrent um it will be every time and
  • 00:04:34
    you know especially if they're having to
  • 00:04:36
    do some base configuration or run
  • 00:04:39
    something that isn't something that
  • 00:04:41
    needs to be done every day developers I
  • 00:04:45
    have noticed do tend to scratch their
  • 00:04:46
    own itch and develop for themselves I do
  • 00:04:50
    it and I have caught myself doing it and
  • 00:04:54
    I was like well actually this is
  • 00:04:56
    something that the uh end user is going
  • 00:04:59
    to be needing to do so this is something
  • 00:05:03
    that we need to be doing and uh I I need
  • 00:05:07
    to actually run write a front end
  • 00:05:09
    for uh so for in order for desktop legs
  • 00:05:13
    to be considered for everyday computer
  • 00:05:15
    users developers need to start
  • 00:05:16
    developing for non-developers and focus
  • 00:05:19
    on the graphical user
  • 00:05:21
    interface so this saves end user time
  • 00:05:25
    how much is your time Worth to think
  • 00:05:27
    about it this saves the end user their
  • 00:05:30
    time how much is their time worth and it
  • 00:05:32
    saves you support costs because then
  • 00:05:35
    they're not going to have to hunt
  • 00:05:36
    through the memorized terminal code
  • 00:05:39
    terminal commands and you're not going
  • 00:05:42
    to have to tell them all the time where
  • 00:05:44
    are they going to have to look for
  • 00:05:45
    configuration
  • 00:05:47
    files
  • 00:05:49
    um
  • 00:05:50
    so this is where I there are actually
  • 00:05:54
    two tools that you can use that are very
  • 00:05:57
    basic there's Q dialog and enity they
  • 00:05:59
    have compete with each other but zenity
  • 00:06:01
    is the most featureful it has the
  • 00:06:05
    most uh different options available they
  • 00:06:08
    are both now this is slightly
  • 00:06:10
    hypocritical but I'm getting they're
  • 00:06:12
    they're both command like tools but they
  • 00:06:15
    present a graphical user
  • 00:06:17
    interface uh Q dialogue does also not
  • 00:06:21
    look so great on
  • 00:06:23
    gome especially on default auntu because
  • 00:06:27
    the user has to take great strides to
  • 00:06:30
    configure it to look good for the uh
  • 00:06:34
    Ubuntu experience like you have to make
  • 00:06:37
    some environment variables so um being
  • 00:06:40
    the technical director for edubuntu I
  • 00:06:43
    have taken some strides to getting the
  • 00:06:46
    settings correct so that edge
  • 00:06:50
    BTU can actually look decent with cutees
  • 00:06:55
    and KD apps because we Shi some of those
  • 00:06:57
    by default
  • 00:06:59
    so I'm GNA give you a use case where I
  • 00:07:03
    had somebody who is not technical in
  • 00:07:05
    fact a 12-year-old who I did not want to
  • 00:07:08
    give administrator access to our server
  • 00:07:12
    to run a Minecraft server that he has
  • 00:07:14
    with his friends from
  • 00:07:16
    school and that's my son Jonathan Johnny
  • 00:07:19
    needed a way to start this and stop this
  • 00:07:21
    Minecraft Bedrock
  • 00:07:23
    server it's a non- Java server and it is
  • 00:07:27
    run out of our Ubuntu
  • 00:07:30
    server and I was not going to about to
  • 00:07:33
    give him an admin access to start and
  • 00:07:37
    stop using a systemd service that I had
  • 00:07:40
    on our
  • 00:07:41
    server so I created a Cron job for it to
  • 00:07:46
    look for a specific file on that
  • 00:07:49
    server and if it sees that file it's
  • 00:07:51
    going to start the server if it doesn't
  • 00:07:54
    see the file it's going to stop the
  • 00:07:55
    server or if the file doesn't exist it's
  • 00:07:58
    not going to do anything if it sees the
  • 00:08:00
    file and the server is already running
  • 00:08:03
    it's not going to it's going to start
  • 00:08:04
    the Ser it's going to keep the server
  • 00:08:07
    running so we I made a solution where
  • 00:08:10
    the file is
  • 00:08:12
    created and then it can be synced with
  • 00:08:15
    nextcloud next he has that on his laptop
  • 00:08:19
    and then nextcloud syncs it to the
  • 00:08:21
    server and the server sees the file
  • 00:08:24
    starts up the
  • 00:08:28
    service the the app to create was
  • 00:08:30
    written in bra in bash with a front end
  • 00:08:33
    in zenity and it actually runs in
  • 00:08:36
    Windows subsystem for Linux and it was
  • 00:08:38
    actually very easy to create and by the
  • 00:08:41
    way Bedrock runs most Rel in Windows you
  • 00:08:44
    can run it
  • 00:08:45
    in in Atlantic SP very hacky so I'll
  • 00:08:50
    show you kind of what it looks like here
  • 00:08:52
    this is um a exact screenshot of my
  • 00:08:55
    son's machine he is a wild robot fan so
  • 00:08:57
    he has as his desktop wallpaper but this
  • 00:09:00
    is what the zened dialogue looks like
  • 00:09:04
    it's just a couple of radio buttons he
  • 00:09:06
    can either start it or stop it and it
  • 00:09:09
    will tell him what the state state of
  • 00:09:11
    the server
  • 00:09:13
    is and whether or not to he needs to
  • 00:09:17
    start it or stop it and it's his option
  • 00:09:21
    and he starts it it'll create that file
  • 00:09:24
    it'll sync within a minute that server
  • 00:09:27
    starts running and he's off and running
  • 00:09:29
    with his
  • 00:09:32
    friends so and there's the
  • 00:09:36
    code that's the code that it takes to
  • 00:09:39
    run it and you can see it's just
  • 00:09:41
    checking to see if that file is there or
  • 00:09:43
    not and then it has it's basically
  • 00:09:48
    creating a
  • 00:09:49
    variable and then if that is
  • 00:09:54
    one one option then it creates the file
  • 00:09:58
    by go executing touch to that
  • 00:10:01
    file and if if it's not
  • 00:10:04
    there or if it if it's the other option
  • 00:10:08
    it removes
  • 00:10:10
    it and then it just tells him it'll
  • 00:10:13
    start within one minute and then it goes
  • 00:10:15
    and there is a fail safe if it bugs out
  • 00:10:18
    it says there's an error occur an error
  • 00:10:20
    has occurred and that's his cue to come
  • 00:10:21
    get
  • 00:10:24
    me so um I do have if you have your
  • 00:10:28
    laptops and have zenity installed and
  • 00:10:31
    that's as easy as if you're running a
  • 00:10:33
    boon 2 which you probably are if you're
  • 00:10:35
    at this conference apt install ubben or
  • 00:10:38
    app install
  • 00:10:40
    zenity and we can actually write a
  • 00:10:44
    simple bunch of code here you can
  • 00:10:47
    actually write some zenity right now and
  • 00:10:50
    it will look a lot like
  • 00:10:52
    that so I'm going to actually try to if
  • 00:10:56
    it will let me oh
  • 00:11:00
    you can actually write
  • 00:11:02
    a to write that so let's see if it'll oh
  • 00:11:06
    oh darn it you're supposed to be
  • 00:11:11
    interactive
  • 00:11:16
    yeah you know it it's supposed to let me
  • 00:11:19
    demonstrate that but it's not being very
  • 00:11:24
    Cooperative
  • 00:11:25
    so if you guys want to give that a try
  • 00:11:28
    go ahead um we are only oh gosh I've
  • 00:11:32
    already got 15 minutes
  • 00:11:34
    in so either way let's go ahead and skip
  • 00:11:37
    that part so um the first window is what
  • 00:11:41
    you would get and you can type in just
  • 00:11:45
    hello world and then the second
  • 00:11:48
    window is what you'll get back and then
  • 00:11:52
    um there's multiple options for what you
  • 00:11:54
    can get like for instance you can put in
  • 00:11:57
    a calendar
  • 00:11:59
    and if you want to get the date that's
  • 00:12:01
    what it comes back
  • 00:12:03
    with or
  • 00:12:05
    let's do color we can do a color
  • 00:12:08
    selection
  • 00:12:09
    box and get back the RGB color that RGB
  • 00:12:13
    color can then be converted to whatever
  • 00:12:16
    color you want or even have it output
  • 00:12:19
    that hash whatever you would really like
  • 00:12:21
    to
  • 00:12:22
    do it's even file selection dialogue and
  • 00:12:26
    it comes up with the exact path on the
  • 00:12:28
    system
  • 00:12:31
    and if you don't want it to come up like
  • 00:12:34
    an information
  • 00:12:35
    box you can make a notification system
  • 00:12:38
    notification right there and then so
  • 00:12:41
    really the options are endless in what
  • 00:12:43
    you can do with
  • 00:12:44
    this and what we've done with um Ubuntu
  • 00:12:49
    Studio and Ed Ubuntu is we have these
  • 00:12:51
    installers which are probably going to
  • 00:12:53
    be renamed customizers in the next
  • 00:12:56
    version uh and these are for installing
  • 00:12:58
    and uninstalling The Meta
  • 00:13:01
    packages and you can add and remove meta
  • 00:13:04
    packages their dependencies and
  • 00:13:06
    recommends using these
  • 00:13:08
    applications and for the removal what we
  • 00:13:12
    do is we take and we find out which
  • 00:13:17
    applications are the recommends of these
  • 00:13:21
    packages and then we mark them as Auto
  • 00:13:26
    just to make sure and then we do an auto
  • 00:13:30
    remove on all of those packages now if
  • 00:13:32
    there is any it does have the side
  • 00:13:34
    effect that if there are any other Auto
  • 00:13:36
    removable packages in the system those
  • 00:13:40
    will get Auto removed as well um just if
  • 00:13:44
    it all it also means that if your system
  • 00:13:46
    is doing that that you have been
  • 00:13:48
    maintaining your system very well I will
  • 00:13:53
    say um so here's the abuna studio
  • 00:13:56
    installer which I get I again said might
  • 00:14:00
    be renamed customizer it was first
  • 00:14:02
    written in TK tickle which we uh which
  • 00:14:05
    is ancient you can see it on the upper
  • 00:14:07
    right hand corner there it did not
  • 00:14:09
    follow any um gtk or cute specifications
  • 00:14:13
    therefore it always showed up looking
  • 00:14:15
    like it was from the
  • 00:14:16
    90s and it was it had a problem that
  • 00:14:20
    could not scale to uh High DPI and that
  • 00:14:23
    was when the uh person who created it
  • 00:14:27
    came to me and said uh what can we do
  • 00:14:28
    about this so I was just like needs a
  • 00:14:31
    complete rewrite there's nothing we can
  • 00:14:33
    do there if we're going to go anywhere
  • 00:14:37
    with it it is be Rewritten so back uh
  • 00:14:40
    last year and a half ago for 20304 I
  • 00:14:43
    took on the project rewrote it in bash
  • 00:14:47
    insanity and at the time I had just been
  • 00:14:50
    um working on a lot of bash stuff using
  • 00:14:54
    q q dialogue in my previous uh work
  • 00:14:58
    where working with the uh kuun Focus
  • 00:15:01
    project so we had done a lot of that and
  • 00:15:04
    so we were
  • 00:15:07
    doing a lot with that I'm sorry a lot
  • 00:15:10
    with that so it just made a simple
  • 00:15:12
    transition to take a lot of that
  • 00:15:14
    knowledge and apply it to
  • 00:15:16
    this
  • 00:15:18
    and also on in 2304 we were um Reviving
  • 00:15:23
    edu my wife is the uh Project Lead for
  • 00:15:27
    that so uh we took upon ourselves to do
  • 00:15:31
    that but we also needed some way to
  • 00:15:33
    install and uninstall meta packages for
  • 00:15:36
    uh different age groups so we did the
  • 00:15:41
    same
  • 00:15:42
    thing and created that but we also made
  • 00:15:45
    the utility able to change the look and
  • 00:15:49
    feel based on the age group that was
  • 00:15:52
    there as well um and uh we may be able
  • 00:15:56
    to make this able to to customize per
  • 00:16:00
    user in the future so say you have a uh
  • 00:16:05
    5-year-old or 4-year-old in preschool a
  • 00:16:08
    uh 10-year-old in elementary school or
  • 00:16:12
    pre primary school and a uh 12-year-old
  • 00:16:15
    in middle school or uh or uh secondary
  • 00:16:20
    school so you can have one user
  • 00:16:23
    configured for Prim preschool one user
  • 00:16:26
    conf configured for primary one
  • 00:16:28
    configured for secondary overall look
  • 00:16:31
    and feel and have different package
  • 00:16:33
    groups um and we also have a way to hide
  • 00:16:37
    and show and I'll get to that in a
  • 00:16:39
    minute as well to that in a minute as
  • 00:16:41
    well for a B Studio we also have the
  • 00:16:44
    abuna studio audio configuration program
  • 00:16:48
    which uh was initially built to
  • 00:16:52
    configure the Qui pipar Quantum and in
  • 00:16:55
    20304 at the time we were well in 20
  • 00:17:00
    3.10 there I had made a command line
  • 00:17:03
    utility to make to uh do that in 20304
  • 00:17:07
    but again this is where I was like I
  • 00:17:09
    made a command line utility and I didn't
  • 00:17:12
    expose it to the users the end users so
  • 00:17:16
    I was just like okay I need a front end
  • 00:17:19
    so I made a um I made it for
  • 00:17:23
    2310 and the lo and behold feature
  • 00:17:26
    creepe
  • 00:17:27
    happened so so I created it for I
  • 00:17:31
    created this initially to be able to
  • 00:17:34
    control the the quantum which is the
  • 00:17:36
    buffer and Sample
  • 00:17:38
    rate and um then I added the ability to
  • 00:17:43
    start and stop
  • 00:17:46
    um the uh start and stop Jack the Jack
  • 00:17:50
    pipe wire interface so that people could
  • 00:17:53
    use Jack on its
  • 00:17:54
    own if you don't know what this is see
  • 00:17:57
    me afterwards and then I found out uh
  • 00:18:01
    and then 2404 came around and we decided
  • 00:18:04
    to start and stop a dummy audio
  • 00:18:06
    interface for people who want route
  • 00:18:08
    their audio so that didn't interfere
  • 00:18:10
    with other
  • 00:18:11
    things and then for
  • 00:18:14
    24.10 because we stopped using the low
  • 00:18:16
    latency kernel be able to change start
  • 00:18:20
    change the kernel boot parameters so
  • 00:18:23
    that low latency could be configured on
  • 00:18:25
    the fly or or not really on the fly but
  • 00:18:27
    low latency be started or configured and
  • 00:18:31
    then as you rebooted it could be either
  • 00:18:34
    a generic kernel or running on the low
  • 00:18:37
    latency parameters and you can see that
  • 00:18:39
    in the lower window lower window
  • 00:18:42
    there so and this is all being done the
  • 00:18:47
    the top one just gives you the menu
  • 00:18:50
    selection and then the bottom one there
  • 00:18:51
    that will actually write a uh a uh
  • 00:18:57
    grub drop file configuration for the
  • 00:19:03
    defaults for back to edubuntu for the
  • 00:19:07
    menu
  • 00:19:07
    Administration what this will do was
  • 00:19:10
    this is this will hide each checked um
  • 00:19:15
    desktop file will be hidden from not
  • 00:19:18
    administrator users what this does is
  • 00:19:21
    this scans the uh user share
  • 00:19:24
    applications and the snap applications
  • 00:19:27
    for desktop
  • 00:19:30
    files checks for what is already hidden
  • 00:19:34
    in that other directory which is in user
  • 00:19:37
    share edun to
  • 00:19:41
    Applications
  • 00:19:42
    then figures out
  • 00:19:46
    well and because because that's the
  • 00:19:49
    directory is hidden for uh not not
  • 00:19:53
    administrators it will then
  • 00:19:56
    overwrite and create desktop files with
  • 00:20:01
    desktop entry no
  • 00:20:03
    display equals true for in that edge
  • 00:20:08
    into applications folder which comes
  • 00:20:10
    very last in the path
  • 00:20:13
    for uh the non administrator users and
  • 00:20:18
    it sees that desktop file and hides it
  • 00:20:22
    from the users so they don't see it in
  • 00:20:24
    the application overview for Gnome or if
  • 00:20:27
    even if they were running a desktop
  • 00:20:29
    environment they wouldn't see it in
  • 00:20:30
    their
  • 00:20:31
    menu so and that can't be changed by the
  • 00:20:35
    non-administrator users because they
  • 00:20:36
    would need a
  • 00:20:37
    password uh they would need to be able
  • 00:20:40
    to basically hack it and you know You'
  • 00:20:42
    you can't really do that very easily
  • 00:20:45
    so that's what we are doing with zenity
  • 00:20:48
    and the code for this I wanted to show
  • 00:20:51
    you the code but I'm having a lot of
  • 00:20:53
    difficulty with that so let me see
  • 00:21:06
    so I'll do a Bo to Studio installer real
  • 00:21:09
    quick I am starting to run out of
  • 00:21:14
    time so here's a Bo Studio
  • 00:21:20
    installer and as you can see I defined
  • 00:21:22
    my functions first lots of shell check
  • 00:21:25
    disables because I shell check you know
  • 00:21:28
    oh oh any questions came up here let me
  • 00:21:32
    go ahead and move this oh it's
  • 00:21:36
    not you know what because I'm a nice
  • 00:21:42
    guy I'll just kill
  • 00:21:47
    that I'll unify my outputs so I can
  • 00:21:49
    actually see what I'm
  • 00:21:55
    doing all right
  • 00:21:59
    so you can see here I uh Define my
  • 00:22:01
    functions first I have a recursive for
  • 00:22:04
    just use for
  • 00:22:06
    debugging we'll go down here and this is
  • 00:22:09
    the auto package remove
  • 00:22:12
    function now we use Q app batch in here
  • 00:22:15
    that's the only cute app we actually use
  • 00:22:17
    for
  • 00:22:18
    it we do this slape thing because it
  • 00:22:21
    takes a little while to build the array
  • 00:22:24
    that
  • 00:22:25
    actually creates the menu that you see
  • 00:22:29
    at first in Ubuntu Studio installer and
  • 00:22:32
    this is true for edubuntu installer as
  • 00:22:34
    well and it is declaring an array of
  • 00:22:39
    packages we want to look at and
  • 00:22:42
    examine and then creates a creates a
  • 00:22:44
    table
  • 00:22:46
    here
  • 00:22:47
    and this these two lines here are a bug
  • 00:22:50
    I need to remove those and um looks like
  • 00:22:53
    I'm going to be filing an SRU
  • 00:22:56
    tomorrow um
  • 00:22:59
    so then it comes up with and you can see
  • 00:23:01
    the zenity command here and it does it
  • 00:23:03
    inside a subshell because what we're
  • 00:23:05
    doing is we're creating a
  • 00:23:08
    variable and it is creating that
  • 00:23:11
    variable from the output of this command
  • 00:23:14
    and then it is taking the array that we
  • 00:23:18
    just built based on all of this junk
  • 00:23:21
    that we just did here building this
  • 00:23:24
    array and we're building this array
  • 00:23:26
    based on whether or not we're getting an
  • 00:23:29
    error here from D package minus s to
  • 00:23:32
    test whether or not that meta package is
  • 00:23:35
    actually
  • 00:23:37
    installed and if it's installed it's
  • 00:23:40
    going to come back with an error if it's
  • 00:23:42
    or it's going to not come back with an
  • 00:23:44
    error if it's in if it is not installed
  • 00:23:46
    it'll come back with an error and then
  • 00:23:47
    we have a false and that will help us
  • 00:23:50
    build this table and it will come up
  • 00:23:52
    with the actual
  • 00:23:55
    application so we'll go ahead and write
  • 00:23:57
    it real quick
  • 00:24:08
    so here's Q batch running real
  • 00:24:11
    quick now it does this just because it
  • 00:24:14
    takes a little while to build that table
  • 00:24:16
    and here we go this is what it looks
  • 00:24:19
    like now I can uncheck and recheck or
  • 00:24:23
    what have you I don't have the music
  • 00:24:25
    education bundle here but that's okay
  • 00:24:28
    just wanted to give you guys kind of a
  • 00:24:30
    idea of where we're at so far I don't
  • 00:24:33
    actually want to do anything right now
  • 00:24:35
    because that could be you know changing
  • 00:24:37
    my
  • 00:24:38
    system you can kind of see what we're
  • 00:24:41
    doing here now there is a little bit
  • 00:24:44
    here where it has to kind of compare the
  • 00:24:46
    output
  • 00:24:48
    of the selected package here create a
  • 00:24:53
    create an array out of it and then
  • 00:24:57
    compare that
  • 00:24:59
    to what was checked before and figure
  • 00:25:01
    out what was unchecked or what was
  • 00:25:03
    checked figure out what was added and
  • 00:25:06
    subtracted and it has
  • 00:25:08
    to do a comparison and then it will
  • 00:25:11
    figure out what it needs to install or
  • 00:25:13
    uninstall based on that and it's it's
  • 00:25:16
    very tricky to get bash to do that so if
  • 00:25:19
    you ever want to figure out this code
  • 00:25:20
    you can look on Launchpad Ubuntu
  • 00:25:22
    studio-h installer and the code is all
  • 00:25:25
    there you're more than welcome to look
  • 00:25:27
    there
  • 00:25:30
    so and it gives people a whole lot more
  • 00:25:33
    information that way next thing I want
  • 00:25:36
    to look at I'm going to discard my
  • 00:25:38
    changes because that would be bad to
  • 00:25:42
    change um we'll look at audio
  • 00:25:53
    config and this is one of those things
  • 00:25:55
    where it has to run self- recursively
  • 00:25:56
    too in order to um actually it runs this
  • 00:26:00
    as part of a user system D
  • 00:26:04
    file which um starts at login in order
  • 00:26:08
    to load some pulse
  • 00:26:11
    audio uh modules in order to start and
  • 00:26:14
    stop that dummy audio module that I was
  • 00:26:18
    talking
  • 00:26:19
    about then there's
  • 00:26:21
    um the uh Quantum settings that I was
  • 00:26:25
    talking about which are all right here
  • 00:26:29
    then there's we're going to write those
  • 00:26:31
    parameters upon Boot and it writes it
  • 00:26:34
    into an Etsy file so Etsy config
  • 00:26:38
    file
  • 00:26:41
    um here is where it's just checking to
  • 00:26:44
    see if whether or not the user is
  • 00:26:47
    configured by default to be able to do
  • 00:26:49
    it and whether or not they're in the
  • 00:26:51
    audio group and of course we've always
  • 00:26:53
    got the classic bail out whether or not
  • 00:26:56
    there is an error if there's an error
  • 00:26:58
    and it will just bail out and say
  • 00:27:00
    there's a problem in which case they can
  • 00:27:02
    always contact
  • 00:27:04
    support and it looks like I'm about out
  • 00:27:07
    of time so I'm going to take this time
  • 00:27:09
    we are actually moving on to break I
  • 00:27:11
    believe so if you do have any
  • 00:27:16
    questions I guess yes go
  • 00:27:21
    ahead sadly so here's the problem right
  • 00:27:25
    localization is very hard to do in Bash
  • 00:27:28
    so um as far as localization goes I'm
  • 00:27:31
    still working on the ability to do that
  • 00:27:35
    um however it's not out of the realm of
  • 00:27:39
    possibility
  • 00:27:41
    um is something that I have spoken to
  • 00:27:44
    people last year in at at The Summit in
  • 00:27:46
    R about and I am very much interested in
  • 00:27:50
    figuring out how to do and I failed to
  • 00:27:52
    take notes at the time so here we are
  • 00:27:56
    still without localization one year
  • 00:27:57
    later I do apologize I wish I could get
  • 00:28:00
    some localization done on
  • 00:28:06
    that any other questions
  • 00:28:16
    yes um so you can actually install any
  • 00:28:19
    of this and it's available in the
  • 00:28:22
    repositories and have all of the
  • 00:28:24
    benefits of those available to installs
  • 00:28:27
    for instance if if you install a bu
  • 00:28:28
    Studio installer you'll get configured
  • 00:28:31
    right away and then you can pick and
  • 00:28:32
    choose what applications or meta
  • 00:28:36
    packages you want Straight From A B
  • 00:28:37
    Studio
  • 00:28:46
    installer yes
  • 00:28:51
    Mike this is obviously a way to gete
  • 00:29:07
    guel
  • 00:29:19
    line you know I really don't have a
  • 00:29:22
    guideline for that but people have been
  • 00:29:23
    coming to me with uh some other that
  • 00:29:28
    they have mocked up and um so we're kind
  • 00:29:32
    of in the review process on those for
  • 00:29:34
    like um configuration audio
  • 00:29:36
    configuration there has been a uh a
  • 00:29:39
    gentleman who has come to me with a
  • 00:29:40
    mockup for what he would like to we
  • 00:29:43
    would like to do and taking it to the
  • 00:29:45
    next level with P cute so there's
  • 00:29:48
    potential there as well so taking it to
  • 00:29:51
    the next level so
  • 00:29:52
    we're so there's potential to you know
  • 00:29:56
    this is like a stepping stone to taking
  • 00:29:58
    it to the next St Next Step so yeah
  • 00:30:03
    there's like I'm saying this is just
  • 00:30:06
    giving
  • 00:30:07
    it a first step into making it a bigger
  • 00:30:11
    gooey if you ever get to that far now my
  • 00:30:13
    problem is I can only code and
  • 00:30:21
    Bash better than I'm sorry better than
  • 00:30:24
    no yeah some gooey is better than no
  • 00:30:26
    gooey absolutely
  • 00:30:33
    any other
  • 00:30:35
    questions all
  • 00:30:37
    right thanks everyone
  • 00:30:40
    [Applause]
Tags
  • Ubuntu Studio
  • Zenity
  • GUI tools
  • Linux development
  • User accessibility
  • Fedora critique
  • Bash scripting
  • Localization
  • Audio configuration
  • Developer tools