File lumina-desktop.spec of Package lumina-desktop

#
# spec file for package lumina-desktop
#
# Copyright (c) 2021 SUSE LLC
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via https://bugs.opensuse.org/
#


Name:           lumina-desktop
Version:        @SERVICE@
Release:        0
Summary:        A lightweight, portable desktop environment
License:        BSD-3-Clause
Group:          System/GUI/Other
URL:            https://github.com/trueos/lumina
Source0:        %{name}-%{version}.tar.xz
Source1:        %{name}.rpmlintrc
BuildRequires:  cmake
BuildRequires:  fdupes
BuildRequires:  gcc-c++
BuildRequires:  kf5-filesystem
BuildRequires:  libQt5Gui-private-headers-devel
BuildRequires:  libQt5PlatformSupport-private-headers-devel
BuildRequires:  pam-devel
BuildRequires:  pkgconfig
BuildRequires:  update-desktop-files
BuildRequires:  cmake(Qt5LinguistTools)
BuildRequires:  pkgconfig(Qt5Concurrent)
BuildRequires:  pkgconfig(Qt5Core) >= 5.10
BuildRequires:  pkgconfig(Qt5DBus)
BuildRequires:  pkgconfig(Qt5Gui)
BuildRequires:  pkgconfig(Qt5Multimedia)
BuildRequires:  pkgconfig(Qt5MultimediaWidgets)
BuildRequires:  pkgconfig(Qt5Network)
BuildRequires:  pkgconfig(Qt5PrintSupport)
BuildRequires:  pkgconfig(Qt5QuickWidgets)
BuildRequires:  pkgconfig(Qt5Svg)
BuildRequires:  pkgconfig(Qt5UiTools)
BuildRequires:  pkgconfig(Qt5Widgets)
BuildRequires:  pkgconfig(Qt5X11Extras)
BuildRequires:  pkgconfig(hunspell)
#uildRequires:  pkgconfig(phonon)
BuildRequires:  pkgconfig(phonon4qt5)
BuildRequires:  pkgconfig(x11)
BuildRequires:  pkgconfig(xcb-composite)
BuildRequires:  pkgconfig(xcb-damage)
BuildRequires:  pkgconfig(xcb-ewmh)
BuildRequires:  pkgconfig(xcb-icccm)
BuildRequires:  pkgconfig(xcb-image)
BuildRequires:  pkgconfig(xcb-keysyms)
BuildRequires:  pkgconfig(xcb-util)
BuildRequires:  pkgconfig(xcb-xinput)
BuildRequires:  pkgconfig(xcomposite)
BuildRequires:  pkgconfig(xcursor)
BuildRequires:  pkgconfig(xdamage)
BuildRequires:  pkgconfig(xrender)
Requires:       acpi
Requires:       alsa-utils
Requires:       fluxbox
Requires:       lumina-icon-theme
Requires:       lumina-search
Requires:       lumina-xconfig
Requires:       numlockx
Requires:       pavucontrol
Requires:       sysstat
Requires:       xbacklight
Requires:       xscreensaver
Recommends:     %{name}-lang
Recommends:     compton
Recommends:     fluxbox-styles-tenr
Recommends:     lumina-fileinfo
Recommends:     lumina-fm
Recommends:     lumina-screenshot
Recommends:     material-design-icon-theme
Suggests:       lumina-archiver
Suggests:       lumina-calculator
Suggests:       lumina-mediaplayer
Suggests:       lumina-pdf
Suggests:       lumina-photo
Suggests:       lumina-textedit
%if 0%{?suse_version} >= 1500
Requires(post): update-alternatives
Requires(postun): update-alternatives
%endif
PreReq:         permissions

%description
The Lumina Desktop Environment is a lightweight system interface
that is designed for use on any Unix-like operating system.

%lang_package

%package -n lumina-archiver
Summary:        Archiver for Lumina Desktop
License:        BSD-3-Clause
Group:          System/GUI/Other
Requires:       bsdtar
Requires:       tar
Requires(post): desktop-file-utils
Requires(postun): desktop-file-utils
Recommends:     bzip2
Recommends:     cpio
Recommends:     gzip
Recommends:     p7zip
Recommends:     rpm
Recommends:     sharutils
Recommends:     star
Recommends:     unar
Recommends:     unzip
Recommends:     xz
Recommends:     zip

%package -n lumina-fileinfo
Summary:        Desktop file editor for Lumina Desktop
License:        BSD-3-Clause
Group:          System/GUI/Other

%package -n lumina-fm
Summary:        File manager for Lumina Desktop
License:        BSD-3-Clause
Group:          System/GUI/Other
Requires(post): desktop-file-utils
Requires(postun): desktop-file-utils

%package -n lumina-mediaplayer
Summary:        Media player for Lumina Desktop
License:        BSD-3-Clause
Group:          System/GUI/Other
Requires:       pianobar
Requires(post): desktop-file-utils
Requires(postun): desktop-file-utils

%package -n lumina-photo
Summary:        Photo viewer for Lumina Desktop
License:        BSD-3-Clause
Group:          System/GUI/Other
Requires(post): desktop-file-utils
Requires(postun): desktop-file-utils

%package -n lumina-screenshot
Summary:        Screenshot utility for Lumina Desktop
License:        BSD-3-Clause
Group:          System/GUI/Other

%package -n lumina-search
Summary:        Search utility for Lumina Desktop
License:        BSD-3-Clause
Group:          System/GUI/Other

%package -n lumina-textedit
Summary:        Text editor for Lumina Desktop
License:        BSD-3-Clause
Group:          System/GUI/Other
Requires(post): desktop-file-utils
Requires(postun): desktop-file-utils

%package -n lumina-xconfig
Summary:        X server display configuration tool for Lumina Desktop
License:        BSD-3-Clause
Group:          System/GUI/Other
Requires:       xrandr

%package -n material-design-icon-theme
Summary:        New icon themes
License:        Apache-2.0
Group:          System/GUI/Other
BuildRequires:  hicolor-icon-theme
BuildArch:      noarch

%package -n lumina-icon-theme
Summary:        Lumina icon themes
License:        CC-BY-4.0
Group:          System/GUI/Other
BuildRequires:  hicolor-icon-theme
Recommends:     la-capitaine-icon-theme
BuildArch:      noarch

%description -n lumina-archiver
This package provides lumina-archiver.

%description -n lumina-fileinfo
This package provides lumina-fileinfo, which is an
advanced desktop file (menu) editor.

%description -n lumina-fm
This package provides lumina-fm, which is a simple file manager
with support for multiple view modes, tabbed browsing,
including an integrated slideshow-based picture viewer.

%description -n lumina-mediaplayer
This package provides lumina-mediaplayer.

%description -n lumina-photo
This package provides lumina-photo.

%description -n lumina-screenshot
This package provides lumina-screenshot, which is a simple
screenshot utility that allows to snapshot the whole desktop
or a single window after a configurable delay.

%description -n lumina-search
This package provides lumina-search, which is a simple
search utility that allows to search for applications or
files and directories in the home directory and launch
or open them.

%description -n lumina-textedit
This package provides lumina-textedit.

%description -n lumina-xconfig
This package provides lumina-xconfig, which is a simple
multi-head aware display configuration tool for configuring
the X server.

%description -n material-design-icon-theme
The "material-design-[light/dark]" themes are collections of ~800 SVG icons
(each) from the Google "material design" application icon theme plus some
of the "Templarian" additions to the material design icon pack.

%description -n lumina-icon-theme
Icons for the Lumina Desktop.

%prep
%setup -q
sed -i '/^OnlyShowIn/s/\(Lumina\)/X-\1/' src-qt5/*/lumina-*/lumina-{config,info,support}.desktop
sed -i '/Categories/d' src-qt5/*/lumina-*/lumina-support.desktop
sed -i 's/\(Icon=\).*/\1accessories-text-editor/' src-qt5/desktop-utils/lumina-textedit/lumina-textedit.desktop
sed -i 's/\(Icon=\).*/\1text-x-generic/' src-qt5/desktop-utils/lumina-fileinfo/lumina-fileinfo.desktop
sed -i 's/\(Icon=\).*/\1package-x-generic/' src-qt5/desktop-utils/lumina-archiver/lumina-archiver.desktop
sed -i '/MimeType=/s/$/;/' src-qt5/desktop-utils/lumina-archiver/lumina-archiver.desktop
sed -i 's/\(Type=\).*/\1XSession/' src-qt5/core/%{name}/Lumina-DE.desktop
sed -i 's/\(Icon=\).*/\1/' src-qt5/desktop-utils/lumina-mediaplayer/lumina-mediaplayer-pandora.desktop
sed -i '/session\.styleFile/s|usr/local|usr|' src-qt5/core/%{name}/fluxboxconf/fluxbox-init-rc
cp src-qt5/core/libLumina/LuminaOS-Debian.cpp src-qt5/core/libLumina/LuminaOS-openSUSE.cpp
sed -i 's|Debian GNU/Linux|openSUSE project|' src-qt5/core/libLumina/LuminaOS-openSUSE.cpp
sed -i 's|synaptic.desktop|YaST2/sw_single.desktop|' src-qt5/core/libLumina/LuminaOS-openSUSE.cpp
sed -i 's/\(-lXcursor\)/-lX11 \1/' src-qt5/core/lumina-theme-engine/src/lthemeengine-qtplugin/lthemeengine-qtplugin.pro
# KeyCode 133 = Super_L (xmodmap -pke)
sed -i '/--show-start/s/115/133/' src-qt5/core/lumina-desktop/fluxboxconf/fluxbox-keys
sed -i 's/\(perms\)/#\1/' src-qt5/core/lumina-checkpass/lumina-checkpass.pro

%build
%qmake5 \
      LINUX_DISTRO="openSUSE" \
      L_ETCDIR="%{_sysconfdir}" \
      L_MANDIR="%{_mandir}" \
      QMAKE_CFLAGS_ISYSTEM='' \
      QMAKE_CFLAGS+="%{optflags}" \
      QMAKE_CXXFLAGS+="%{optflags}" \
      PREFIX=%{_prefix} LIBPREFIX=%{_libdir} QT5LIBDIR=%{_libdir}/qt5 CONFIG+=WITH_I18N
%make_jobs

%install
%qmake5_install

%suse_update_desktop_file -r -G "File Manager" lumina-fm FileManager Utility Core Qt
%suse_update_desktop_file -r -G "Search" lumina-search Utility DesktopUtility
%suse_update_desktop_file -r -G "Screenshot" lumina-screenshot Utility DesktopUtility
%suse_update_desktop_file -r -G "Lumina Text Editor" lumina-textedit Utility TextEditor
%suse_update_desktop_file -r -G "Lumina Screen Configuration" lumina-xconfig Settings HardwareSettings
%suse_update_desktop_file -r -G "File Information" lumina-fileinfo System Filesystem
%suse_update_desktop_file -r -G "Lumina Archiver" lumina-archiver Utility Archiving
%suse_update_desktop_file -r -G "Lumina Theme Engine" lthemeengine Qt Settings DesktopSettings
%suse_update_desktop_file -r -G "Lumina Media Player" lumina-mediaplayer AudioVideo Video Player
%suse_update_desktop_file -r -G "Pandora Internet Radio" lumina-mediaplayer-pandora AudioVideo Video Player
%suse_update_desktop_file -r -G "Lumina Image Viewer" lumina-photo Graphics Viewer

%fdupes -s %{buildroot}%{_datadir}/%{name}/i18n
find %{buildroot}%{_datadir}/%{name}/i18n -type l -name "*.qm" -delete -print

for i in config desktop info open; do
    %find_lang lumina-$i %{name}.lang --with-qt
done
for i in $(find %{buildroot}%{_datadir}/%{name}/i18n -name '*fm*.qm' -or -name '*search*.qm' -or -name '*xconfig*.qm' | \
xargs basename -a | awk -F\_ '{print $1}' | awk -F\- '{print $2}' | uniq); do
    %find_lang lumina-$i lumina-$i.lang --with-qt
done
for i in archiver fileinfo mediap photo screenshot te; do
    %find_lang l-$i l-$i.lang --with-qt
done

rm -f %{buildroot}%{_datadir}/icons/material-design-*/LICENSE
rm -f %{buildroot}%{_datadir}/icons/lumina-icons/LICENSE
%fdupes -s %{buildroot}%{_datadir}/icons/material-design-dark
%fdupes -s %{buildroot}%{_datadir}/icons/material-design-light
%fdupes -s %{buildroot}%{_datadir}/icons/lumina-icons
%icon_theme_cache_create_ghost material-design-dark
%icon_theme_cache_create_ghost material-design-light
%icon_theme_cache_create_ghost lumina-icons

%if 0%{?suse_version} >= 1500
# for default-xsession
install -dm 0755 %{buildroot}%{_sysconfdir}/alternatives
touch %{buildroot}%{_sysconfdir}/alternatives/default-xsession.desktop
ln -s %{_sysconfdir}/alternatives/default-xsession.desktop %{buildroot}%{_datadir}/xsessions/default.desktop
%endif

%post
%if 0%{?suse_version} >= 1500
%{_sbindir}/update-alternatives --install %{_datadir}/xsessions/default.desktop \
  default-xsession.desktop %{_datadir}/xsessions/Lumina-DE.desktop 25
%endif
%set_permissions %{_sbindir}/lumina-checkpass

%postun
%if 0%{?suse_version} >= 1500
[ -f %{_datadir}/xsessions/Lumina-DE.desktop ] || %{_sbindir}/update-alternatives \
  --remove default-xsession.desktop %{_datadir}/xsessions/Lumina-DE.desktop
%endif

#%%verifyscript
#%%verify_permissions -e %%{_sbindir}/lumina-checkpass

%post -n lumina-archiver
%desktop_database_post

%post -n lumina-fm
%desktop_database_post

%post -n lumina-mediaplayer
%desktop_database_post

%post -n lumina-photo
%desktop_database_post

%post -n lumina-textedit
%desktop_database_post

%post -n material-design-icon-theme
%icon_theme_cache_post material-design-dark
%icon_theme_cache_post material-design-light

%post -n lumina-icon-theme
%icon_theme_cache_post lumina-icons

%postun -n lumina-archiver
%desktop_database_postun

%postun -n lumina-fm
%desktop_database_post

%postun -n lumina-mediaplayer
%desktop_database_post

%postun -n lumina-textedit
%desktop_database_post

%files
%license LICENSE
%doc DeveloperGuidelines.txt README.md ROADMAP luminaKeys.txt
%{_bindir}/lthemeengine*
%{_bindir}/lumina-config
%{_bindir}/%{name}
%{_bindir}/lumina-info
%{_bindir}/lumina-open
%{_bindir}/lumina-pingcursor
%{_bindir}/lumina-sudo
%{_bindir}/start-%{name}
#%%verify(not mode) %%attr(4755,root,root) %%{_sbindir}/lumina-checkpass
%config %{_sysconfdir}/luminaDesktop.conf.dist
%{_datadir}/applications/lthemeengine.desktop
%{_datadir}/applications/lumina-config.desktop
%{_datadir}/applications/lumina-info.desktop
%{_datadir}/applications/lumina-support.desktop
%{_datadir}/lthemeengine
%{_datadir}/icons/hicolor/scalable/apps/Lumina-DE.??g
%{_datadir}/xsessions/Lumina-DE.desktop
%if 0%{?suse_version} >= 1500
# for default-xsession
%ghost %{_sysconfdir}/alternatives/default-xsession.desktop
%{_datadir}/xsessions/default.desktop
%endif
%{_datadir}/%{name}
%{_mandir}/man?/lumina-config.?%{ext_man}
%{_mandir}/man?/%{name}.?%{ext_man}
%{_mandir}/man?/lumina-info.?%{ext_man}
%{_mandir}/man?/lumina-open.?%{ext_man}
%{_mandir}/man?/start-%{name}.?%{ext_man}
%dir %{_kf5_libdir}/qt5/plugins/platformthemes/
%{_kf5_libdir}/qt5/plugins/platformthemes/liblthemeengine.so
%dir %{_kf5_libdir}/qt5/plugins/styles/
%{_kf5_libdir}/qt5/plugins/styles/liblthemeengine-style.so
%exclude %{_datadir}/%{name}/i18n

%files lang -f %{name}.lang
%dir %{_datadir}/%{name}/i18n

%files -n lumina-archiver -f l-archiver.lang
%license LICENSE
%{_bindir}/lumina-archiver
%{_datadir}/applications/lumina-archiver.desktop
%{_mandir}/man?/lumina-archiver.?%{ext_man}

%files -n lumina-fileinfo -f l-fileinfo.lang
%license LICENSE
%{_bindir}/lumina-fileinfo
%{_datadir}/applications/lumina-fileinfo.desktop
%{_mandir}/man?/lumina-fileinfo.?%{ext_man}

%files -n lumina-fm -f lumina-fm.lang
%license LICENSE
%{_bindir}/lumina-fm
%{_datadir}/icons/hicolor/scalable/apps/Insight-FileManager.??g
%{_datadir}/applications/lumina-fm.desktop
%{_mandir}/man?/lumina-fm.?%{ext_man}

%files -n lumina-mediaplayer -f l-mediap.lang
%license LICENSE
%{_bindir}/lumina-mediaplayer
%{_datadir}/applications/lumina-mediaplayer*.desktop
%{_mandir}/man?/lumina-mediaplayer.?%{ext_man}

%files -n lumina-photo -f l-photo.lang
%license LICENSE
%{_bindir}/lumina-photo
%{_datadir}/applications/lumina-photo.desktop
%{_mandir}/man?/lumina-photo.?%{ext_man}

%files -n lumina-screenshot -f l-screenshot.lang
%license LICENSE
%{_bindir}/lumina-screenshot
%{_datadir}/applications/lumina-screenshot.desktop
%{_mandir}/man?/lumina-screenshot.?%{ext_man}

%files -n lumina-search -f lumina-search.lang
%license LICENSE
%{_bindir}/lumina-search
%{_datadir}/applications/lumina-search.desktop
%{_mandir}/man?/lumina-search.?%{ext_man}

%files -n lumina-textedit -f l-te.lang
%license LICENSE
%{_bindir}/lumina-textedit
%{_bindir}/lte
%{_datadir}/applications/lumina-textedit.desktop
%{_mandir}/man?/lumina-textedit.?%{ext_man}

%files -n lumina-xconfig
# -f lumina-xconfig.lang
%license LICENSE
%{_bindir}/lumina-xconfig
%{_datadir}/applications/lumina-xconfig.desktop
%{_mandir}/man?/lumina-xconfig.?%{ext_man}

%files -n material-design-icon-theme
%defattr(644,root,root,755)
%license icon-theme/material-design-dark/LICENSE
%{_datadir}/icons/material-design-*
%ghost %{_datadir}/icons/material-design-dark/icon-theme.cache
%ghost %{_datadir}/icons/material-design-light/icon-theme.cache

%files -n lumina-icon-theme
%defattr(644,root,root,755)
%license icon-theme/lumina-icons/LICENSE
%{_datadir}/icons/lumina-icons
%ghost %{_datadir}/icons/lumina-icons/icon-theme.cache

%changelog
openSUSE Build Service is sponsored by