The regular GNOME session ships with three options: * GNOME * GNOME on Wayland (available when GDM starts in X11) * GNOME on Xorg (available when GDM starts in Wayland) The main GNOME session is set up so it works to match how GDM starts, so GNOME is on Wayland if GDM is (or GNOME is on X11 if GDM is). For GNOME Classic, we are missing this setup, so port this behavior over from the GNOME session setup. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/195>
120 lines
3.8 KiB
Meson
120 lines
3.8 KiB
Meson
session_desktop_base = 'gnome-classic'
|
|
|
|
session_desktops = [
|
|
session_desktop_base,
|
|
session_desktop_base + '-xorg',
|
|
session_desktop_base + '-wayland',
|
|
]
|
|
|
|
foreach name: session_desktops
|
|
session_desktop = name + '.desktop'
|
|
if name.endswith('-xorg')
|
|
session_instdir = xsessiondir
|
|
elif name.endswith('-wayland')
|
|
session_instdir = wlsessiondir
|
|
else
|
|
# FIXME: The same target can not be copied into two directories.
|
|
# There is a workaround in meson/session-post-install.py until proper
|
|
# solution arises:
|
|
# https://github.com/mesonbuild/meson/issues/2416
|
|
session_instdir = xsessiondir
|
|
#session_instdir = [ xesssiondir, wlsessiondir ]
|
|
endif
|
|
i18n.merge_file('',
|
|
input: session_desktop + '.in',
|
|
output: session_desktop,
|
|
po_dir: '../po',
|
|
install: true,
|
|
install_dir: session_instdir,
|
|
type: 'desktop'
|
|
)
|
|
endforeach
|
|
|
|
classic_uuids = []
|
|
foreach e : classic_extensions
|
|
classic_uuids += e + uuid_suffix
|
|
endforeach
|
|
|
|
mode_conf = configuration_data()
|
|
mode_conf.set('CLASSIC_EXTENSIONS', '"' + '", "'.join(classic_uuids) + '"')
|
|
|
|
mode_file = 'classic.json'
|
|
configure_file(
|
|
input: mode_file + '.in',
|
|
output: mode_file,
|
|
configuration: mode_conf,
|
|
install_dir: modedir
|
|
)
|
|
|
|
theme_sources = files(
|
|
'gnome-shell-sass/_colors.scss',
|
|
'gnome-shell-sass/_common.scss',
|
|
'gnome-shell-sass/_drawing.scss',
|
|
'gnome-shell-sass/_high-contrast-colors.scss',
|
|
'gnome-shell-sass/_widgets.scss',
|
|
'gnome-shell-sass/widgets/_a11y.scss',
|
|
'gnome-shell-sass/widgets/_app-grid.scss',
|
|
'gnome-shell-sass/widgets/_base.scss',
|
|
'gnome-shell-sass/widgets/_buttons.scss',
|
|
'gnome-shell-sass/widgets/_calendar.scss',
|
|
'gnome-shell-sass/widgets/_check-box.scss',
|
|
'gnome-shell-sass/widgets/_corner-ripple.scss',
|
|
'gnome-shell-sass/widgets/_dash.scss',
|
|
'gnome-shell-sass/widgets/_dialogs.scss',
|
|
'gnome-shell-sass/widgets/_entries.scss',
|
|
'gnome-shell-sass/widgets/_hotplug.scss',
|
|
'gnome-shell-sass/widgets/_ibus-popup.scss',
|
|
'gnome-shell-sass/widgets/_keyboard.scss',
|
|
'gnome-shell-sass/widgets/_login-dialog.scss',
|
|
'gnome-shell-sass/widgets/_looking-glass.scss',
|
|
'gnome-shell-sass/widgets/_message-list.scss',
|
|
'gnome-shell-sass/widgets/_misc.scss',
|
|
'gnome-shell-sass/widgets/_network-dialog.scss',
|
|
'gnome-shell-sass/widgets/_notifications.scss',
|
|
'gnome-shell-sass/widgets/_osd.scss',
|
|
'gnome-shell-sass/widgets/_overview.scss',
|
|
'gnome-shell-sass/widgets/_panel.scss',
|
|
'gnome-shell-sass/widgets/_popovers.scss',
|
|
'gnome-shell-sass/widgets/_screen-shield.scss',
|
|
'gnome-shell-sass/widgets/_scrollbars.scss',
|
|
'gnome-shell-sass/widgets/_search-entry.scss',
|
|
'gnome-shell-sass/widgets/_search-results.scss',
|
|
'gnome-shell-sass/widgets/_slider.scss',
|
|
'gnome-shell-sass/widgets/_switcher-popup.scss',
|
|
'gnome-shell-sass/widgets/_switches.scss',
|
|
'gnome-shell-sass/widgets/_tiled-previews.scss',
|
|
'gnome-shell-sass/widgets/_window-picker.scss',
|
|
'gnome-shell-sass/widgets/_workspace-switcher.scss',
|
|
'gnome-shell-sass/widgets/_workspace-thumbnails.scss'
|
|
)
|
|
|
|
theme_data = [
|
|
'calendar-today.svg',
|
|
'classic-process-working.svg',
|
|
'classic-toggle-off-intl.svg',
|
|
'classic-toggle-off-us.svg',
|
|
'classic-toggle-on-intl.svg',
|
|
'classic-toggle-on-us.svg',
|
|
'gnome-classic-high-contrast.css'
|
|
]
|
|
|
|
stylesheet = 'gnome-classic.css'
|
|
if fs.exists(stylesheet)
|
|
install_data(stylesheet, install_dir: themedir)
|
|
else
|
|
sassc = find_program('sassc', required: true)
|
|
custom_target(stylesheet,
|
|
input: fs.replace_suffix(stylesheet, '.scss'),
|
|
output: stylesheet,
|
|
depend_files: theme_sources,
|
|
command: [sassc, '-a', '@INPUT@', '@OUTPUT@'],
|
|
install: true,
|
|
install_dir: themedir
|
|
)
|
|
endif
|
|
|
|
install_data(theme_data, install_dir: themedir)
|
|
|
|
classic_override = '00_org.gnome.shell.extensions.classic.gschema.override'
|
|
install_data(classic_override, install_dir: schemadir)
|