Index: Makefile ================================================================== --- Makefile +++ Makefile @@ -61,10 +61,16 @@ src: cd .. && pax -wvJf streamtuner2/streamtuner2-$(VERSION).src.txz \ streamtuner2/*.{py,png,desktop} streamtuner2/channels/*.{py,png} \ streamtuner2/{bundle/,contrib/,help/,gtk3.xml.gz,NEWS,READ,PACK,PKG,CRED,Make,bin,.zip}* +snap: pyz + cp streamtuner2-*.pyz streamtuner2.pyz + zip snapcraft.zip streamtuner2.pyz + version read ./st2.py write:_raw_ dev/snapcraft.yaml + snapcraft + # test .deb contents check: dpkg-deb -c streamtuner2*deb dpkg-deb -I streamtuner2*deb rpm -qpil *rpm ADDED dev/snapcraft.yaml Index: dev/snapcraft.yaml ================================================================== --- dev/snapcraft.yaml +++ dev/snapcraft.yaml @@ -0,0 +1,101 @@ +# Terrible idea. Snap isn't very fit to harbour python desktop apps. +# Bloats up the whole package to 65MB (from 450K). The pyz→zip roundtrip +# is also fairly redundant. + +name: streamtuner2 +version: 2.2.1+2020-05 +summary: Directory browser for internet radio, audio and video streams +description: | + Streamtuner2 is a GUI for browsing internet radio directories, + music collections, and video services - grouped by genres or + categories. It runs your preferred audio player or streamripper + for recording. + | + This SNAP package is just for testing. The DEB or PYZ are significantly + smaller and faster to install. +icon: ./icon.png +grade: stable +base: core18 +confinement: strict + +parts: + + # pull in python2 + libs + python: + plugin: python + python-version: python2 + python-packages: [requests,pyquery,lxml,six,urllib3,pillow] + after: [desktop-gtk2] + stage-packages: + - python-gtk2 + + # use prepared pyz in zip + st2: + plugin: dump + source: snapcraft.zip + source-type: zip + + # https://forum.snapcraft.io/t/gtk2-applications/13508 + # + # This part installs the `desktop-launch` script which initialises desktop + # features such as fonts, themes and the XDG environment. It also installs + # the GTK2 runtime libraries. + # + # It is copied straight from the snapcraft desktop helpers project. Please + # periodically check the source for updates and copy the changes. + # https://github.com/ubuntu/snapcraft-desktop-helpers/blob/master/snapcraft.yaml + # + desktop-gtk2: + source: https://github.com/ubuntu/snapcraft-desktop-helpers.git + source-subdir: gtk + plugin: make + make-parameters: ["FLAVOR=gtk2"] + build-packages: + - build-essential + - libgtk2.0-dev + stage-packages: + - libxkbcommon0 # XKB_CONFIG_ROOT + - ttf-ubuntu-font-family + - dmz-cursor-theme + - light-themes + - adwaita-icon-theme + - gnome-themes-standard + - shared-mime-info + - libgtk2.0-0 + - libgdk-pixbuf2.0-0 + - libglib2.0-bin + - libgtk2.0-bin + - unity-gtk2-module + - locales-all + - libappindicator1 + - xdg-user-dirs + - ibus-gtk + - libibus-1.0-5 + +apps: + pyz: + command: desktop-launch $SNAP/streamtuner2.pyz + plugs: + - x11 + - home + - network + - desktop # needed for a lot of gtk3 and glib interaction with the host system + - desktop-legacy # needed for accessibility tools IIRC + +plugs: + gtk-2-engines: + interface: content + target: $SNAP/lib/gtk-2.0 + default-provider: gtk2-common-themes + gtk-2-themes: + interface: content + target: $SNAP/data-dir/themes + default-provider: gtk-common-themes + icon-themes: + interface: content + target: $SNAP/data-dir/icons + default-provider: gtk-common-themes + sound-themes: + interface: content + target: $SNAP/data-dir/sounds + default-provider: gtk-common-themes Index: st2.py ================================================================== --- st2.py +++ st2.py @@ -2,11 +2,11 @@ # encoding: UTF-8 # api: python # type: application # title: streamtuner2 # description: Directory browser for internet radio, audio and video streams -# version: 2.2.1 +# version: 2.2.1+2020-05 # state: stable # author: Mario Salzer # license: Public Domain # url: http://freshcode.club/projects/streamtuner2 # config: @@ -254,10 +254,11 @@ if conf.window_title: uikit.do(self.update_title) # if first selected, load current category # (run in thread, to make it look speedy on first startup) self.thread(self.channel().first_show) + log.UI("channel_switch done.") # Invoked from the menu instead, uses module name instead of numeric tab id def channel_switch_by_name(self, name): self.notebook_channels.set_current_page(self.channel_names.index(name))