add gui
parent
821ae2ff1c
commit
dec2f47b15
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg">
|
||||
<ellipse style="fill: rgb(221, 72, 20);" cx="250.444" cy="246.003" rx="214.92" ry="214.92"/>
|
||||
<g transform="matrix(1, 0, 0, 1, -119.704704, -266.193634)" id="layer1">
|
||||
<g transform="translate(925.8326,120.8762)" id="g3963">
|
||||
<g transform="matrix(2.269061, 0, 0, 2.269061, -671.41095, 251.059219)" style="fill: black; fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-miterlimit: 4;" id="g3771">
|
||||
<g style="fill:black;fill-opacity:1" id="g3773">
|
||||
<path d="M 86.068,0 C 61.466,0 56.851,35.041 70.691,35.041 C 84.529,35.041 110.671,0 86.068,0 z " style="fill-opacity: 1; fill: rgb(255, 255, 255);" id="path3775"/>
|
||||
<path d="M 45.217,30.699 C 52.586,31.149 60.671,2.577 46.821,4.374 C 32.976,6.171 37.845,30.249 45.217,30.699 z " style="fill-opacity: 1; fill: rgb(255, 255, 255);" id="path3777"/>
|
||||
<path d="M 11.445,48.453 C 16.686,46.146 12.12,23.581 3.208,29.735 C -5.7,35.89 6.204,50.759 11.445,48.453 z " style="fill-opacity: 1; fill: rgb(255, 255, 255);" id="path3779"/>
|
||||
<path d="M 26.212,36.642 C 32.451,35.37 32.793,9.778 21.667,14.369 C 10.539,18.961 19.978,37.916 26.212,36.642 L 26.212,36.642 z " style="fill-opacity: 1; fill: rgb(255, 255, 255);" id="path3781"/>
|
||||
<path d="M 58.791,93.913 C 59.898,102.367 52.589,106.542 45.431,101.092 C 22.644,83.743 83.16,75.088 79.171,51.386 C 75.86,31.712 15.495,37.769 8.621,68.553 C 3.968,89.374 27.774,118.26 52.614,118.26 C 64.834,118.26 78.929,107.226 81.566,93.248 C 83.58,82.589 57.867,86.86 58.791,93.913 L 58.791,93.913 z " style="fill-opacity: 1; fill: rgb(255, 255, 255);" id="path3783"/>
|
||||
</g>
|
||||
</g>
|
||||
<text x="-406.52405" y="527.92285" style="font-size: 25.8884px; font-style: normal; font-weight: normal; fill: black; fill-opacity: 1; stroke: none; stroke-width: 1pt; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; font-family: "Bitstream Vera Sans"; white-space: pre;" id="text3797"> </text>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.0 KiB |
@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg">
|
||||
<ellipse style="fill: rgb(221, 72, 20);" cx="250.444" cy="246.003" rx="214.92" ry="214.92"/>
|
||||
<g transform="matrix(1, 0, 0, 1, -119.704704, -266.193634)" id="layer1">
|
||||
<g transform="translate(925.8326,120.8762)" id="g3963">
|
||||
<g transform="matrix(2.269061, 0, 0, 2.269061, -671.41095, 251.059219)" style="fill: black; fill-opacity: 1; fill-rule: nonzero; stroke: none; stroke-miterlimit: 4;" id="g3771">
|
||||
<g style="fill:black;fill-opacity:1" id="g3773">
|
||||
<path d="M 86.068,0 C 61.466,0 56.851,35.041 70.691,35.041 C 84.529,35.041 110.671,0 86.068,0 z " style="fill-opacity: 1; fill: rgb(255, 255, 255);" id="path3775"/>
|
||||
<path d="M 45.217,30.699 C 52.586,31.149 60.671,2.577 46.821,4.374 C 32.976,6.171 37.845,30.249 45.217,30.699 z " style="fill-opacity: 1; fill: rgb(255, 255, 255);" id="path3777"/>
|
||||
<path d="M 11.445,48.453 C 16.686,46.146 12.12,23.581 3.208,29.735 C -5.7,35.89 6.204,50.759 11.445,48.453 z " style="fill-opacity: 1; fill: rgb(255, 255, 255);" id="path3779"/>
|
||||
<path d="M 26.212,36.642 C 32.451,35.37 32.793,9.778 21.667,14.369 C 10.539,18.961 19.978,37.916 26.212,36.642 L 26.212,36.642 z " style="fill-opacity: 1; fill: rgb(255, 255, 255);" id="path3781"/>
|
||||
<path d="M 58.791,93.913 C 59.898,102.367 52.589,106.542 45.431,101.092 C 22.644,83.743 83.16,75.088 79.171,51.386 C 75.86,31.712 15.495,37.769 8.621,68.553 C 3.968,89.374 27.774,118.26 52.614,118.26 C 64.834,118.26 78.929,107.226 81.566,93.248 C 83.58,82.589 57.867,86.86 58.791,93.913 L 58.791,93.913 z " style="fill-opacity: 1; fill: rgb(255, 255, 255);" id="path3783"/>
|
||||
</g>
|
||||
</g>
|
||||
<text x="-406.52405" y="527.92285" style="font-size: 25.8884px; font-style: normal; font-weight: normal; fill: black; fill-opacity: 1; stroke: none; stroke-width: 1pt; stroke-linecap: butt; stroke-linejoin: miter; stroke-opacity: 1; font-family: "Bitstream Vera Sans"; white-space: pre;" id="text3797"> </text>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 2.0 KiB |
@ -0,0 +1,13 @@
|
||||
application_id = 'pm.mirko.UbuntuSmoother'
|
||||
|
||||
scalable_dir = join_paths('hicolor', 'scalable', 'apps')
|
||||
install_data(
|
||||
join_paths(scalable_dir, ('@0@.svg').format(application_id)),
|
||||
install_dir: join_paths(get_option('datadir'), 'icons', scalable_dir)
|
||||
)
|
||||
|
||||
symbolic_dir = join_paths('hicolor', 'symbolic', 'apps')
|
||||
install_data(
|
||||
join_paths(symbolic_dir, ('@0@-symbolic.svg').format(application_id)),
|
||||
install_dir: join_paths(get_option('datadir'), 'icons', symbolic_dir)
|
||||
)
|
@ -0,0 +1,43 @@
|
||||
desktop_file = i18n.merge_file(
|
||||
input: 'pm.mirko.UbuntuSmoother.desktop.in',
|
||||
output: 'pm.mirko.UbuntuSmoother.desktop',
|
||||
type: 'desktop',
|
||||
po_dir: '../po',
|
||||
install: true,
|
||||
install_dir: join_paths(get_option('datadir'), 'applications')
|
||||
)
|
||||
|
||||
desktop_utils = find_program('desktop-file-validate', required: false)
|
||||
if desktop_utils.found()
|
||||
test('Validate desktop file', desktop_utils,
|
||||
args: [desktop_file]
|
||||
)
|
||||
endif
|
||||
|
||||
appstream_file = i18n.merge_file(
|
||||
input: 'pm.mirko.UbuntuSmoother.appdata.xml.in',
|
||||
output: 'pm.mirko.UbuntuSmoother.appdata.xml',
|
||||
po_dir: '../po',
|
||||
install: true,
|
||||
install_dir: join_paths(get_option('datadir'), 'appdata')
|
||||
)
|
||||
|
||||
appstream_util = find_program('appstream-util', required: false)
|
||||
if appstream_util.found()
|
||||
test('Validate appstream file', appstream_util,
|
||||
args: ['validate', appstream_file]
|
||||
)
|
||||
endif
|
||||
|
||||
install_data('pm.mirko.UbuntuSmoother.gschema.xml',
|
||||
install_dir: join_paths(get_option('datadir'), 'glib-2.0/schemas')
|
||||
)
|
||||
|
||||
compile_schemas = find_program('glib-compile-schemas', required: false)
|
||||
if compile_schemas.found()
|
||||
test('Validate schema file', compile_schemas,
|
||||
args: ['--strict', '--dry-run', meson.current_source_dir()]
|
||||
)
|
||||
endif
|
||||
|
||||
subdir('icons')
|
@ -0,0 +1,30 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<component type="desktop">
|
||||
<id>pm.mirko.UbuntuSmoother.desktop</id>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<project_license>GPL-3.0-only</project_license>
|
||||
<name translatable="no">Ubuntu Smoother</name>
|
||||
<summary>Tweak your Ubuntu Vanilla GNOME installation.</summary>
|
||||
<developer_name translatable="no">Mirko Brombin</developer_name>
|
||||
<description>
|
||||
<p>No description</p>
|
||||
</description>
|
||||
<screenshots></screenshots>
|
||||
<translation type="gettext">pm.mirko.UbuntuSmoother</translation>
|
||||
<content_rating type="oars-1.1"/>
|
||||
<recommends>
|
||||
<control>pointing</control>
|
||||
<control>keyboard</control>
|
||||
<control>touch</control>
|
||||
</recommends>
|
||||
<requires>
|
||||
<display_length compare="ge">768</display_length>
|
||||
</requires>
|
||||
<releases>
|
||||
<release version="1.0.1" date="2022-09-03">
|
||||
<description>
|
||||
<p>First release</p>
|
||||
</description>
|
||||
</release>
|
||||
</releases>
|
||||
</component>
|
@ -0,0 +1,8 @@
|
||||
[Desktop Entry]
|
||||
Name=Ubuntu Smoother
|
||||
Exec=ubuntu-smoother
|
||||
Icon=pm.mirko.UbuntuSmoother
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=GTK;
|
||||
StartupNotify=true
|
@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schemalist gettext-domain="ubuntu-smoother">
|
||||
<schema id="pm.mirko.UbuntuSmoother" path="/pm/mirko/UbuntuSmoother/">
|
||||
</schema>
|
||||
</schemalist>
|
@ -0,0 +1,21 @@
|
||||
project('pm.mirko.UbuntuSmoother',
|
||||
version: '0.0.1',
|
||||
meson_version: '>= 0.59.0',
|
||||
default_options: [ 'warning_level=2',
|
||||
'werror=false',
|
||||
],
|
||||
)
|
||||
|
||||
i18n = import('i18n')
|
||||
|
||||
gnome = import('gnome')
|
||||
|
||||
subdir('data')
|
||||
subdir('ubuntu_smoother')
|
||||
subdir('po')
|
||||
|
||||
gnome.post_install(
|
||||
glib_compile_schemas: true,
|
||||
gtk_update_icon_cache: true,
|
||||
update_desktop_database: true,
|
||||
)
|
@ -0,0 +1 @@
|
||||
i18n.gettext('ubuntu-smoother', preset: 'glib')
|
@ -0,0 +1,122 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<requires lib="gtk" version="4.0"/>
|
||||
<requires lib="libadwaita" version="1.0" />
|
||||
<template class="UbuntuSmootherWindow" parent="AdwApplicationWindow">
|
||||
<property name="default-width">800</property>
|
||||
<property name="default-height">600</property>
|
||||
<property name="title">Ubuntu Smoother</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="AdwHeaderBar">
|
||||
<property name="title_widget">
|
||||
<object class="AdwCarouselIndicatorDots">
|
||||
<property name="carousel">carousel</property>
|
||||
<property name="orientation">horizontal</property>
|
||||
</object>
|
||||
</property>
|
||||
<style>
|
||||
<class name="flat" />
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwCarousel" id="carousel">
|
||||
<property name="vexpand">True</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="allow_scroll_wheel">True</property>
|
||||
<property name="allow_mouse_drag">True</property>
|
||||
<property name="allow_long_swipes">True</property>
|
||||
<child>
|
||||
<object class="AdwStatusPage">
|
||||
<property name="icon-name">pm.mirko.UbuntuSmoother</property>
|
||||
<property name="title">Welcome!</property>
|
||||
<property name="description">Make your choices, this wizard will take care of everything.</property>
|
||||
<property name="halign">fill</property>
|
||||
<property name="valign">fill</property>
|
||||
<property name="hexpand">true</property>
|
||||
<child>
|
||||
<object class="GtkButton">
|
||||
<property name="label">Let's Start</property>
|
||||
<property name="halign">center</property>
|
||||
<style>
|
||||
<class name="pill" />
|
||||
<class name="suggested-action" />
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="orientation">vertical</property>
|
||||
<property name="vexpand">True</property>
|
||||
<property name="hexpand">True</property>
|
||||
<property name="valign">center</property>
|
||||
<child>
|
||||
<object class="AdwPreferencesPage">
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property name="title">How Will you Install the Software?</property>
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
<property name="title">Snap</property>
|
||||
<property name="subtitle">Will replace GNOME Software with Snap store if the only package manager.</property>
|
||||
<child>
|
||||
<object class="GtkSwitch">
|
||||
<property name="valign">center</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
<property name="title">Flatpak</property>
|
||||
<property name="subtitle">Will also configure the Flathub repository.</property>
|
||||
<child>
|
||||
<object class="GtkSwitch">
|
||||
<property name="valign">center</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="AdwPreferencesGroup">
|
||||
<property name="title">Extra</property>
|
||||
<child>
|
||||
<object class="AdwActionRow">
|
||||
<property name="title">Apport</property>
|
||||
<property name="subtitle">Do you want to keep the Bug Reporter utility?</property>
|
||||
<child>
|
||||
<object class="GtkSwitch">
|
||||
<property name="valign">center</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkButton">
|
||||
<property name="label">Save Changes</property>
|
||||
<property name="halign">center</property>
|
||||
<style>
|
||||
<class name="pill" />
|
||||
<class name="suggested-action" />
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</template>
|
||||
</interface>
|
@ -0,0 +1,70 @@
|
||||
# main.py
|
||||
#
|
||||
# Copyright 2022 mirkobrombin
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundationat version 3 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import sys
|
||||
import gi
|
||||
|
||||
gi.require_version('Gtk', '4.0')
|
||||
gi.require_version('Adw', '1')
|
||||
|
||||
from gi.repository import Gtk, Gio, Adw
|
||||
|
||||
from ubuntu_smoother.window import UbuntuSmootherWindow
|
||||
|
||||
|
||||
class UbuntuSmootherApplication(Adw.Application):
|
||||
"""The main application singleton class."""
|
||||
|
||||
def __init__(self):
|
||||
super().__init__(application_id='pm.mirko.UbuntuSmoother',
|
||||
flags=Gio.ApplicationFlags.FLAGS_NONE)
|
||||
self.create_action('quit', self.close, ['<primary>q'])
|
||||
|
||||
def do_activate(self):
|
||||
"""Called when the application is activated.
|
||||
|
||||
We raise the application's main window, creating it if
|
||||
necessary.
|
||||
"""
|
||||
win = self.props.active_window
|
||||
if not win:
|
||||
win = UbuntuSmootherWindow(application=self)
|
||||
win.present()
|
||||
|
||||
def create_action(self, name, callback, shortcuts=None):
|
||||
"""Add an application action.
|
||||
|
||||
Args:
|
||||
name: the name of the action
|
||||
callback: the function to be called when the action is
|
||||
activated
|
||||
shortcuts: an optional list of accelerators
|
||||
"""
|
||||
action = Gio.SimpleAction.new(name, None)
|
||||
action.connect("activate", callback)
|
||||
self.add_action(action)
|
||||
if shortcuts:
|
||||
self.set_accels_for_action(f"app.{name}", shortcuts)
|
||||
|
||||
def close(self, *args):
|
||||
"""Close the application."""
|
||||
self.quit()
|
||||
|
||||
|
||||
def main(version):
|
||||
"""The application's entry point."""
|
||||
app = UbuntuSmootherApplication()
|
||||
return app.run(sys.argv)
|
@ -0,0 +1,34 @@
|
||||
pkgdatadir = join_paths(get_option('prefix'), get_option('datadir'), meson.project_name())
|
||||
moduledir = join_paths(pkgdatadir, 'ubuntu_smoother')
|
||||
gnome = import('gnome')
|
||||
|
||||
gnome.compile_resources('ubuntu-smoother',
|
||||
'ubuntu-smoother.gresource.xml',
|
||||
gresource_bundle: true,
|
||||
install: true,
|
||||
install_dir: pkgdatadir,
|
||||
)
|
||||
|
||||
python = import('python')
|
||||
|
||||
conf = configuration_data()
|
||||
conf.set('PYTHON', python.find_installation('python3').path())
|
||||
conf.set('VERSION', meson.project_version())
|
||||
conf.set('localedir', join_paths(get_option('prefix'), get_option('localedir')))
|
||||
conf.set('pkgdatadir', pkgdatadir)
|
||||
|
||||
configure_file(
|
||||
input: 'ubuntu-smoother.in',
|
||||
output: 'ubuntu-smoother',
|
||||
configuration: conf,
|
||||
install: true,
|
||||
install_dir: get_option('bindir')
|
||||
)
|
||||
|
||||
ubuntu_smoother_sources = [
|
||||
'__init__.py',
|
||||
'main.py',
|
||||
'window.py',
|
||||
]
|
||||
|
||||
install_data(ubuntu_smoother_sources, install_dir: moduledir)
|
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<gresources>
|
||||
<gresource prefix="/pm/mirko/UbuntuSmoother">
|
||||
<file>gtk/window.ui</file>
|
||||
</gresource>
|
||||
</gresources>
|
@ -0,0 +1,43 @@
|
||||
#!@PYTHON@
|
||||
|
||||
# ubuntu-smoother.in
|
||||
#
|
||||
# Copyright 2022 mirkobrombin
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundationat version 3 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import os
|
||||
import sys
|
||||
import signal
|
||||
import locale
|
||||
import gettext
|
||||
|
||||
VERSION = '@VERSION@'
|
||||
pkgdatadir = '@pkgdatadir@'
|
||||
localedir = '@localedir@'
|
||||
|
||||
sys.path.insert(1, pkgdatadir)
|
||||
signal.signal(signal.SIGINT, signal.SIG_DFL)
|
||||
locale.bindtextdomain('ubuntu_smoother', localedir)
|
||||
locale.textdomain('ubuntu_smoother')
|
||||
gettext.install('ubuntu_smoother', localedir)
|
||||
|
||||
if __name__ == '__main__':
|
||||
import gi
|
||||
|
||||
from gi.repository import Gio
|
||||
resource = Gio.Resource.load(os.path.join(pkgdatadir, 'ubuntu-smoother.gresource'))
|
||||
resource._register()
|
||||
|
||||
from ubuntu_smoother import main
|
||||
sys.exit(main.main(VERSION))
|
@ -0,0 +1,25 @@
|
||||
# window.py
|
||||
#
|
||||
# Copyright 2022 mirkobrombin
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundationat version 3 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
from gi.repository import Gtk, Gio, Adw
|
||||
|
||||
|
||||
@Gtk.Template(resource_path='/pm/mirko/UbuntuSmoother/gtk/window.ui')
|
||||
class UbuntuSmootherWindow(Adw.ApplicationWindow):
|
||||
__gtype_name__ = 'UbuntuSmootherWindow'
|
||||
|
||||
def __init__(self, **kwargs):
|
||||
super().__init__(**kwargs)
|
Loading…
Reference in New Issue