Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
6617565
Port build system and executable binaries
Dev10-sys Jun 26, 2026
0e8e4b4
Port core base classes and data models
Dev10-sys Jun 26, 2026
4976237
Implement GTK4 CSS stylesheet ported from sugar-artwork
Dev10-sys Jun 26, 2026
4061798
Port desktop activities and favorites views
Dev10-sys Jun 26, 2026
0fd5607
Port desktop home screen and spatial layouts
Dev10-sys Jun 26, 2026
c3085c3
Port desktop views and toolbars
Dev10-sys Jun 26, 2026
26b7e4c
Port Frame edge trays and toolbars
Dev10-sys Jun 26, 2026
03410aa
Port Frame clipboard and notification systems
Dev10-sys Jun 26, 2026
31a6475
Port Journal core views and lists
Dev10-sys Jun 26, 2026
3714d45
Port Journal models and action palettes
Dev10-sys Jun 26, 2026
b860295
Migrate Journal toolbars and search entries
Dev10-sys Jun 26, 2026
c26dd43
Port network, language and keyboard settings
Dev10-sys Jun 26, 2026
9d4fa80
Port backup and about sections
Dev10-sys Jun 26, 2026
71bea2a
Port remaining control panel modules
Dev10-sys Jun 26, 2026
3d94fbb
Migrate device icons and trays
Dev10-sys Jun 26, 2026
e1ca387
Port global keybinding handlers
Dev10-sys Jun 26, 2026
1fa8382
Port context menus and source view components
Dev10-sys Jun 26, 2026
9a19839
Port view toolbars and modal dialogs to GTK4
Dev10-sys Jun 26, 2026
0bd4aca
Port introduction wizard and pickers to GTK4
Dev10-sys Jun 26, 2026
d8380ae
Migrate Control Panel base classes and GUI
Dev10-sys Jun 26, 2026
3e348a6
Port webservices and test suite to GTK4
Dev10-sys Jun 26, 2026
3cbb3c3
Port utility modules and downloader to GTK4
Dev10-sys Jun 26, 2026
88d70d9
gtk4: resolve Wayland runtime behavior, window destruction, and UI st…
Dev10-sys Aug 3, 2026
e8a61c9
Fix GTK4 widget methods, review feedback and Wayland compositor cleanup
Dev10-sys Aug 7, 2026
9b7eeb3
desktop: update activities list cell rendering and icon styling
Dev10-sys Aug 9, 2026
f84a2d5
jarabe: fix Wayland activity launch, window focus and frame animation
Dev10-sys Aug 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion autogen.sh
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,4 @@ intltoolize --force
autoreconf -i

cd "$olddir"
"$srcdir/configure" --enable-maintainer-mode "$@" --disable-python-byte-compile
"$srcdir/configure" --enable-maintainer-mode "$@"
2 changes: 2 additions & 0 deletions bin/sugar-backlight-setup
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ import os
import sys
from functools import cmp_to_key

import gi
gi.require_version('GUdev', '1.0')
from gi.repository import GUdev


Expand Down
3 changes: 3 additions & 0 deletions bin/sugar-control-panel
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.

import sys
import gi

gi.require_version('Gtk', '4.0')

from jarabe import config

Expand Down
31 changes: 16 additions & 15 deletions bin/sugar-erase-bundle
Original file line number Diff line number Diff line change
@@ -1,27 +1,28 @@
#!/usr/bin/env python3
import os
import sys
import argparse

from dbus.mainloop.glib import DBusGMainLoop
DBusGMainLoop(set_as_default=True)

from jarabe.model import bundleregistry


def cmd_help():
print('Usage: sugar-erase-bundle bundle_id [...] \n\n\
Erase activity bundles\n')
def main():
parser = argparse.ArgumentParser(description="Erase activity bundles")
parser.add_argument("bundles", nargs="+", metavar="bundle_id",
help="Activity bundles to erase")
args = parser.parse_args()

registry = bundleregistry.get_registry()

if len(sys.argv) < 2:
cmd_help()
exit(2)
for name in args.bundles:
bundle = registry.get_bundle(name)
if not bundle:
print('Cannot find %s bundle.' % name)
continue

registry.uninstall(bundle, delete_profile=True)

for name in sys.argv[1:]:
registry = bundleregistry.get_registry()
bundle = registry.get_bundle(name)
if not bundle:
print('Cannot find %s bundle.' % name)
continue

registry.uninstall(bundle, delete_profile=True)
if __name__ == '__main__':
main()
29 changes: 15 additions & 14 deletions bin/sugar-install-bundle
Original file line number Diff line number Diff line change
@@ -1,28 +1,29 @@
#!/usr/bin/env python3
import argparse
import os
import sys

from sugar4.bundle.activitybundle import ActivityBundle

from dbus.mainloop.glib import DBusGMainLoop
DBusGMainLoop(set_as_default=True)


def cmd_help():
print('Usage: sugar-install-bundle activitybundle.xo [...] \n\n\
Install activity bundles\n')
def main():
parser = argparse.ArgumentParser(description="Install activity bundles")
parser.add_argument("bundles", nargs="+", metavar="activitybundle.xo",
help="Activity bundles to install")
args = parser.parse_args()

for name in args.bundles:
bundle = ActivityBundle(name)
path = bundle.install()

if len(sys.argv) < 2:
cmd_help()
sys.exit(2)
# make sure that the BundleRegistry will add this bundle
# by triggering a GFileMonitor ATTRIBUTE_CHANGED event.
os.utime(path, None)

for name in sys.argv[1:]:
bundle = ActivityBundle(name)
path = bundle.install()
print("%s: '%s' installed." % (parser.prog, name))

# make sure that the BundleRegistry will add this bundle
# by triggering a GFileMonitor ATTRIBUTE_CHANGED event.
os.utime(path, None)

print("%s: '%s' installed." % (sys.argv[0], name))
if __name__ == '__main__':
main()
14 changes: 11 additions & 3 deletions bin/sugar-launch
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ import sys
import dbus
import argparse

import gi
gi.require_version('Gtk', '4.0')

from dbus.mainloop.glib import DBusGMainLoop
DBusGMainLoop(set_as_default=True)

Expand Down Expand Up @@ -72,8 +75,8 @@ def _get_interpreter(exec_file):
if not abs_path:
return exec_file

f = open(abs_path)
line = f.readline(100)
with open(abs_path) as f:
line = f.readline(100)
if line.startswith('#!'):
cmds = line[2:].strip().split(' ')
cmds.append(abs_path)
Expand All @@ -92,5 +95,10 @@ if args.debug:
cmd_args.extend(_get_interpreter(act_args.pop(0)))
cmd_args.extend(act_args)

env = activityfactory.get_environment(activity)
if 'WAYLAND_DISPLAY' in os.environ:
env['WAYLAND_DISPLAY'] = os.environ['WAYLAND_DISPLAY']
env['GDK_BACKEND'] = 'wayland'

os.chdir(str(activity.get_path()))
os.execvpe(cmd_args[0], cmd_args, activityfactory.get_environment(activity))
os.execvpe(cmd_args[0], cmd_args, env)
8 changes: 2 additions & 6 deletions bin/sugar.in
Original file line number Diff line number Diff line change
Expand Up @@ -32,12 +32,8 @@ if test -z "$SUGAR_ACTIVITIES_HIDDEN"; then
export SUGAR_ACTIVITIES_HIDDEN="$sugardatadir/activities.hidden"
fi

export GTK2_RC_FILES="@prefix@/share/sugar/data/sugar-$SUGAR_SCALING.gtkrc"

if ! test -f "$GTK2_RC_FILES"; then
echo "sugar: ERROR: Gtk theme for scaling $SUGAR_SCALING not available in path $GTK2_RC_FILES"
exit 1
fi
export GDK_BACKEND="wayland"
export GTK_THEME="Sugar"

# Set default language
export LANG="${LANG:-en_US.utf8}"
Expand Down
4 changes: 2 additions & 2 deletions configure.ac
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
AC_INIT([Sugar],[0.121],[],[sugar])

AC_PREREQ([2.59])
AC_PREREQ([2.72])

AC_CONFIG_MACRO_DIR([m4])
AC_CONFIG_SRCDIR([configure.ac])
Expand All @@ -25,7 +25,7 @@ AC_SUBST([GETTEXT_PACKAGE])
AM_GLIB_GNU_GETTEXT

AC_ARG_ENABLE(update-mimedb,
AC_HELP_STRING([--disable-update-mimedb],
AS_HELP_STRING([--disable-update-mimedb],
[disable the update-mime-database after install [default=no]]),,
enable_update_mimedb=yes)
AM_CONDITIONAL(ENABLE_UPDATE_MIMEDB, test x$enable_update_mimedb = xyes)
Expand Down
4 changes: 3 additions & 1 deletion data/icons/Makefile.am
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ sugar_DATA = \
module-network.svg \
module-power.svg \
module-updater.svg \
module-webaccount.svg
module-webaccount.svg \
list-add.svg \
list-remove.svg

EXTRA_DIST = $(sugar_DATA)
5 changes: 2 additions & 3 deletions extensions/cpsection/aboutcomputer/model.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Copyright (C) 2008 One Laptop Per Child
# Copyright (C) 2008 One Laptop Per Child
#
# 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
Expand Down Expand Up @@ -27,7 +27,6 @@
from jarabe import config
from jarabe.model.network import get_wireless_interfaces


_OFW_TREE = '/ofw'
_PROC_TREE = '/proc/device-tree'
_DMI_DIRECTORY = '/sys/class/dmi/id'
Expand Down Expand Up @@ -234,7 +233,7 @@ def _read_file(path):

def get_license():
license_file = os.path.join(config.data_path, 'GPLv3')
lang = os.environ['LANG']
lang = os.environ.get('LANG', 'en_US.UTF-8')
if lang.endswith('UTF-8'):
lang = lang[:-6]

Expand Down
Loading