Commit a0ae2707 authored by Gabriele Musco's avatar Gabriele Musco
Browse files

moved website to separate branch (remove master stuff)

parent 6e51ca5f
Pipeline #115246 passed with stage
in 22 seconds
include: 'https://gitlab.gnome.org/GNOME/citemplates/raw/master/flatpak/flatpak_ci_initiative.yml'
variables:
BUNDLE: "hydrapaper.flatpak"
flatpak:
image: 'registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:3.34'
variables:
MANIFEST_PATH: "dist/flatpak/org.gabmus.hydrapaper.json"
MESON_ARGS: "-Dprofile=Devel"
FLATPAK_MODULE: "hydrapaper"
RUNTIME_REPO: "https://flathub.org/repo/flathub.flatpakrepo"
APP_ID: "org.gabmus.hydrapaper"
extends: .flatpak
review:
stage: deploy
dependencies:
- 'flatpak'
extends: '.review'
stop_review:
stage: deploy
extends: '.stop_review'
pages:
stage: deploy
script:
......@@ -33,4 +8,4 @@ pages:
paths:
- public
only:
- master
- website
# <a href="https://gabmus.gitlab.io/HydraPaper"><img height="32" src="data/icons/org.gabmus.hydrapaper.svg" /> HydraPaper</a>
Wallpaper manager with multimonitor support
![screenshot](website/screenshots/mainwindow.png)
## Installing
[![Packaging status](https://repology.org/badge/vertical-allrepos/hydrapaper.svg)](https://repology.org/project/hydrapaper/versions)
HydraPaper officially supports the following desktop environments:
- GNOME 3
- MATE
- Budgie
### Flatpak universal package
[Install **Flatpak** by following the quick setup guide](https://flatpak.org/setup/).
Click the following button install HydraPaper from the Flathub store.
[![Get it on Flathub](https://raw.githubusercontent.com/flatpak-design-team/flathub-mockups/master/assets/download-button/download.svg?sanitize=true)](https://flathub.org/apps/details/org.gabmus.hydrapaper)
### Installing on Arch Linux/Antergos/Manjaro
You can find HydraPaper on AUR, as `hydrapaper-git` ([AUR page](https://aur.archlinux.org/packages/hydrapaper-git)).
### Installing on Fedora
[Fedora (official repo)](https://apps.fedoraproject.org/packages/hydrapaper): `sudo dnf install hydrapaper`
### Other distros
Your best bet is installing via Flatpak. [Check the instructions in the Flatpak section](#flatpak-universal-package).
Alternatively ou can either run HydraPaper without installing it (refer to the [Building for testing section](#building-for-testing)), or install it in your system (refer to the [Installing systemwide directly section](#build-and-install-systemwide-directly)).
## Building
HydraPaper has these dependencies:
- `python3` (>=3.5)
- `python-pillow`
- `libwnck3`
- `libhandy` (>=0.10)
- `gtk`
### Building for testing
This is the best practice to test HydraPaper without installing using meson and ninja.
#### First time
```bash
git clone https://gitlab.com/gabmus/hydrapaper
cd hydrapaper
mkdir builddir
cd builddir
meson ..
meson configure -Dprefix=$(pwd)/testdir
ninja install # This will actually install in hydrapaper/builddir/testdir
ninja run
```
#### Later on
```bash
cd hydrapaper/builddir
ninja install # This will actually install in hydrapaper/builddir/testdir
ninja run
```
### Building a Flatpak
*NOTE: these instructions could be out of date. Please use GNOME Builder to build and test Flatpaks easily.*
First install `flatpak` and `flatpak-builder` from your distro repository. Although it's not necessary, you may also want to install `gnome-software`.
Create a directory somewhere in your home, I suggest something like `~/hydrapaperflatpak`.
Either clone the whole HydraPaper repo (`git clone https://gitlab.com/gabmus/hydrapaper`) or just download the flatpak manifest file from this repo in `dist/flatpak/org.gabmus.hydrapaper.json`. In either case, put the files inside the directory you created before.
Run the following: `flatpak-builder --repo=repo hydrapaper $PATH_TO_MANIFEST` where `$PATH_TO_MANIFEST` is the path to the `org.gabmus.hydrapaper.json` flatpak manifest. If everything works correctly, this command should create two directories `repo` and `hydrapaper` with flatpak stuff inside of your present working directory (again, I suggest to run everything inside a specifically designated directory).
Now you'll be creating a flatpak bundle, so that you can install it and distribute it without messing with flatpak repos. To do this you run `flatpak build-bundle repo hydrapaper.flatpak org.gabmus.hydrapaper`. This will give you a hydrapaper.flatpak file inside your present working directory. To install it, either open it with `gnome-software` or run `flatpak install hydrapaper.flatpak`.
*Note: I am a just a beginner with flatpak, and probably some of the instructions I gave in this section of the readme are wrong or could be done better. If you know a better way of doing this, please don't hesitate to make a pull request or open an issue.*
### Build and install systemwide directly
**WARNING**: This approach is discouraged, since it will manually copy all the files in your system. **Uninstalling could be difficult and/or dangerous**.
But if you know what you're doing, here you go:
```bash
git clone https://gitlab.com/gabmus/hydrapaper
cd hydrapaper
mkdir builddir
cd builddir
meson ..
ninja install
```
#!@PYTHON@
# @projectname@
#
# Copyright (C) 2019 @authorfullname@ <@authoremail@>
#
# 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 Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# 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 gettext
import locale
sys.path.insert(1, '@pythondir@')
VERSION = '@VERSION@'
pkgdatadir = '@pkgdatadir@'
localedir = '@localedir@'
builddir = os.environ.get('MESON_BUILD_ROOT')
if builddir:
pkgdatadir = os.path.join(builddir, 'data')
os.environ['GSETTINGS_SCHEMA_DIR'] = pkgdatadir
sys.dont_write_bytecode = True
sys.path.insert(1, os.environ['MESON_SOURCE_ROOT'])
signal.signal(signal.SIGINT, signal.SIG_DFL)
# Why both locale and gettext?
# gettext works for the python part
# but not for the glade/xml files
# they need locale
# don't ask me, it's effin weird
# I copied this from uberwriter
locale.textdomain('hydrapaper')
locale.bindtextdomain('hydrapaper', localedir)
gettext.textdomain('hydrapaper')
gettext.bindtextdomain('hydrapaper', localedir)
if __name__ == '__main__':
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('Gdk', '3.0')
gi.require_version('Wnck', '3.0')
gi.require_version('Handy', '0.0')
from gi.repository import Gio
resource = Gio.Resource.load(os.path.join(pkgdatadir, '@appid@.gresource'))
resource._register()
from @projectname@ import __main__
__main__.main()
conf = configuration_data()
conf.set('VERSION', meson.project_version())
conf.set('localedir', join_paths(prefix, get_option('localedir')))
conf.set('pkgdatadir', pkgdatadir)
conf.set('PYTHON', python.find_python().path())
conf.set('pythondir', join_paths(prefix, pythondir))
conf.set('localedir', join_paths(prefix, localedir))
conf.set('projectname', meson.project_name())
conf.set('authorfullname', authorfullname)
conf.set('authoremail', authoremail)
conf.set('appid', '.'.join([domain, author, meson.project_name()]))
configure_file(
input: meson.project_name() + '.in',
output: meson.project_name(),
configuration: conf,
install: true,
install_dir: get_option('bindir')
)
myprogram = join_paths(meson.build_root(), 'bin', meson.project_name())
run_target('run',
command: [myprogram]
)
<svg width="16" height="16" version="1.1" viewBox="0 0 4.2333 4.2333" xmlns="http://www.w3.org/2000/svg"><g transform="translate(-118.61 -59.512)"><path transform="matrix(.26458 0 0 .26458 118.61 59.512)" d="m5.0938 0.13086c-1.645 0-3 1.355-3 3v3h-1c-0.554 0-1 0.446-1 1v3 3h2.6406l7.3594-7.1699v-2.8301c0-1.645-1.355-3-3-3h-2zm0 2h2c0.57101 0 1 0.429 1 1v3h-4v-3c0-0.571 0.42903-1 1-1z" color="#bebebe"/><path transform="matrix(.26458 0 0 .26458 118.61 59.512)" d="m8.9277 13.826c-5 0-5 1-5 1 0 1 1 1 1 1h8c0.99999 0 1-1 1-1s-2.5e-5 -1-5-1z" color="#bebebe"/><path transform="matrix(.26458 0 0 .26458 118.61 59.512)" d="m15.613 2.5098-1.6855 1.6641v5.6523c0 0.0554-0.02267 0.10335-0.03125 0.15625l-3.1992-2.6191-1.7207 1.6992 0.95117 0.76367-1.7344 0.0097656-3.0293 2.9902h7.7637c1.662 0 3-1.338 3-3v-6c0-0.47526-0.11934-0.91784-0.31445-1.3164z" color="#bebebe"/></g></svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="org.gabmus.hydrapaper-symbolic.svg"
inkscape:version="1.0alpha2 (5e8e0a6, 2019-09-01)"
id="svg2170"
version="1.1"
viewBox="0 0 4.2333333 4.2333335"
height="16"
width="16">
<defs
id="defs2164" />
<sodipodi:namedview
inkscape:snap-grids="true"
inkscape:object-paths="false"
inkscape:snap-smooth-nodes="false"
inkscape:snap-intersection-paths="false"
inkscape:snap-nodes="true"
inkscape:object-nodes="true"
inkscape:bbox-nodes="true"
inkscape:document-rotation="0"
inkscape:snap-bbox-midpoints="true"
inkscape:snap-bbox="true"
inkscape:window-maximized="1"
inkscape:window-y="0"
inkscape:window-x="0"
inkscape:window-height="1376"
inkscape:window-width="2560"
units="px"
showgrid="true"
inkscape:current-layer="layer1"
inkscape:document-units="px"
inkscape:cy="16.017391"
inkscape:cx="3.5916801"
inkscape:zoom="31.678384"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base">
<inkscape:grid
id="grid834"
type="xygrid" />
</sodipodi:namedview>
<metadata
id="metadata2167">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(0,-229.26665)"
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<g
id="g849">
<path
d="m 0.07648099,229.26619 c -0.0424,0 -0.0764810025,0.0377 -0.0764810025,0.0801 v 0.0176 0.16692 2.11667 0.093 0.0951 c 0,0.041 0.0358010025,0.0728 0.0764810025,0.0749 l 0.00155,0.002 h 0.00207 0.184485 0.2645833 v -0.52917 h -0.2645859 v -1.85208 H 3.175 v 0.26458 h 0.2645834 v -0.45268 c 5e-7,-0.0424 -0.037699,-0.0765 -0.080098,-0.0765 H 0.26458339 0.07803149 Z"
style="display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.00956654;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new;stop-opacity:1"
id="path853"
inkscape:connector-curvature="0" />
<g
style="fill:#000000"
id="g895"
transform="translate(0.79374992,0.264583)">
<path
inkscape:connector-curvature="0"
id="path886"
style="display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.00956654;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;marker:none;marker-start:none;marker-mid:none;marker-end:none;paint-order:normal;enable-background:new;stop-opacity:1"
d="m 0.07648076,229.79582 c -0.04239975,0 -0.0764809939697,0.0377 -0.0764809939697,0.0801 v 0.0176 0.16691 2.11667 0.093 0.0951 c 0,0.041 0.0358015639697,0.0728 0.0764809939697,0.0749 l 0.0015505,0.002 h 0.0020669 0.18448497 0.26458334 l 2.64583333,5.2e-4 h 0.184485 0.00207 l 0.00155,-0.002 c 0.040679,-0.002 0.076481,-0.0339 0.076481,-0.0749 v -0.0951 -0.093 -1.85208 -0.26459 -0.1881 c 5e-7,-0.0424 -0.037699,-0.0765 -0.080098,-0.0765 H 0.26458311 0.07803121 Z m 0.18810235,0.26458 H 3.1749998 v 5.2e-4 0.26407 1.58801 l -2.64583335,-5.1e-4 H 0.26458311 Z" />
<path
id="path888"
style="display:inline;opacity:1;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.191331;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;enable-background:new;stop-opacity:1"
d="m 1.0583331,232.70624 c -0.07653,0 -0.26458329,0.18806 -0.26458329,0.26459 H 2.6458332 c 0,-0.0765 -0.1880534,-0.26459 -0.2645834,-0.26459 z"
inkscape:connector-curvature="0"
sodipodi:nodetypes="ccccc" />
<rect
style="opacity:1;fill:#000000;fill-opacity:1;stroke-width:0.518001;paint-order:fill markers stroke"
id="rect890"
width="0.79375005"
height="0.5291667"
x="1.3229167"
y="232.44165" />
</g>
</g>
</g>
</svg>
This diff is collapsed.
app_id = '.'.join([
domain,
author,
meson.project_name()
])
app_id_aspath = '/'.join([
domain,
author,
meson.project_name()
])
desktop_conf = configuration_data()
desktop_conf.set('bindir', join_paths(prefix, bindir))
desktop_conf.set('prettyname', prettyname)
# .desktop comment now hardcoded for better i18n support
#desktop_conf.set('description', description)
desktop_conf.set('appid', app_id)
desktop_conf.set('projectname', meson.project_name())
desktop_file = configure_file(
input: app_id + '.desktop.in',
output: app_id + '.desktop.i18n.in',
#install: true,
#install_dir: join_paths(datadir, 'applications'),
configuration: desktop_conf
)
i18n.merge_file(
input: desktop_file,
output: app_id + '.desktop',
po_dir: '../po',
type: 'desktop',
install: true,
install_dir: join_paths(datadir, 'applications')
)
message('Looking for dependencies')
python_bin = python.find_python()
if not python_bin.found()
error('No valid python3 binary found')
else
message('Found python3 binary')
endif
dependency('glib-2.0')
dependency('gobject-introspection-1.0', version: '>=1.35.9')
dependency('gtk+-3.0', version :'>=3.20')
dbus_conf = configuration_data()
dbus_conf.set('bindir', join_paths(prefix, bindir))
dbus_conf.set('appid', app_id)
dbus_conf.set('projectname', meson.project_name())
configure_file(
input: app_id + '.service.in',
output: app_id + '.service',
configuration: dbus_conf,
install: true,
install_dir: join_paths(datadir, 'dbus-1/services')
)
gschema_conf = configuration_data()
gschema_conf.set('apppath', app_id_aspath)
gschema_conf.set('appid', app_id)
gschema_conf.set('projectname', meson.project_name())
configure_file(
input: app_id + '.gschema.xml.in',
output: app_id + '.gschema.xml',
configuration: gschema_conf,
install: true,
install_dir: join_paths(datadir, 'glib-2.0/schemas')
)
icondir = join_paths(datadir, 'icons/hicolor')
install_data(
'icons/'+app_id+'.svg',
install_dir: join_paths(icondir, 'scalable/apps')
)
install_data(
'icons/'+app_id+'-symbolic.svg',
install_dir: join_paths(icondir, 'symbolic/apps')
)
subdir('ui')
app_resources = gnome.compile_resources(app_id,
app_id + '.gresource.xml',
gresource_bundle: true,
dependencies: configure_file(
input: 'ui/aboutdialog.glade.in',
output: 'aboutdialog.glade',
configuration: glade_conf
),
install: true,
install_dir: pkgdatadir
)
app_settings = gnome.compile_schemas()
#appdata_conf = configuration_data()
#appdata_conf.set('authorfullname', authorfullname)
#appdata_conf.set('gitrepo', gitrepo)
#appdata_conf.set('website', website)
#appdata_conf.set('authoremail', authoremail)
#appdata_conf.set('prettyname', prettyname)
#appdata_conf.set('appid', app_id)
#appdata_conf.set('prettylicense', prettylicense)
#
#configure_file(
# input: appdata_file,
# output: app_id + '.appdata.xml.',
# configuration: appdata_conf,
# install: true,
# install_dir: join_paths(datadir, 'metainfo')
#)
i18n.merge_file(
input: app_id + '.appdata.xml.in',
output: app_id + '.appdata.xml',
po_dir: '../po',
install: true,
install_dir: join_paths(datadir, 'metainfo')
)
<?xml version="1.0" encoding="UTF-8"?>
<component type="desktop">
<id>org.gabmus.hydrapaper.desktop</id>
<name>HydraPaper</name>
<developer_name>Gabriele Musco</developer_name>
<summary>Wallpaper manager with multimonitor support</summary>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-3.0+</project_license>
<description>
<p>HydraPaper lets you set different wallpapers for each of your monitors in the GNOME desktop.</p>
<p>It works around this lack of functionality by automatically merging multiple wallpapers into one, and setting it as your wallpaper with the "Spanned" option.</p>
<p>HydraPaper also supports the MATE desktop, and should work on any desktop that is based on GNOME, like Budgie and Pantheon.</p>
</description>
<screenshots>
<screenshot type="default">
<image>https://gitlab.com/gabmus/hydrapaper/raw/master/website/screenshots/mainwindow.png</image>
</screenshot>
<screenshot>
<image>https://gitlab.com/gabmus/hydrapaper/raw/master/website/screenshots/folders.png</image>
</screenshot>
<screenshot>
<image>https://gitlab.com/gabmus/hydrapaper/raw/master/website/screenshots/favorites.png</image>
</screenshot>
<screenshot>
<image>https://gitlab.com/gabmus/hydrapaper/raw/master/website/screenshots/random.png</image>
</screenshot>
<screenshot>
<image>https://gitlab.com/gabmus/hydrapaper/raw/master/website/screenshots/preferences.png</image>
</screenshot>
</screenshots>
<url type="homepage">https://gabmus.gitlab.io/HydraPaper/</url>
<url type="bugtracker">https://gitlab.com/gabmus/hydrapaper/issues</url>
<update_contact>emaildigabry@gmail.com</update_contact>
<releases>
<release version="1.9.4" timestamp="1568137893">
<description>
<ul>
<li>Fixed conflict between desktop and lockscreen wallpapers</li>
</ul>
</description>
</release>
<release version="1.9.3" timestamp="1567757366">
<description>
<ul>
<li>Merged wallpapers aren't cached anymore. Just keep one and save lots of space</li>
</ul>
</description>
</release>
<release version="1.9.2" timestamp="1564647040">
<description>
<ul>
<li>Fixed path enable/disable bug</li>
</ul>
</description>
</release>
<release version="1.9.1" timestamp="1564647040">
<description>
<ul>
<li>Moved app menu to the far right</li>
<li>Added view switcher bar when window is too small</li>
</ul>
</description>
</release>
<release version="1.9" timestamp="1564647040">
<description>
<ul>
<li>Added option to set lockscreen wallpapers in GNOME</li>
</ul>
</description>
</release>
<release version="1.8" timestamp="1563213244">
<description>
<ul>
<li>Internationalization support and Italian translation</li>
<li>New widgets from Purism's libhandy</li>
<li>Removed animated spinner</li>
<li>Paths in folders view show only the folder name by default</li>
<li>New website</li>
</ul>
</description>
</release>
<release version="1.7.3" timestamp="1561993358">
<description>
<ul>
<li>Properly implemented MATE support</li>
<li>Added post-installation commands</li>
</ul>
</description>
</release>
<release version="1.7.2" timestamp="1561968407">
<description>
<ul>
<li>Fixing wrong import</li>
</ul>
</description>
</release>
<release version="1.7.1" timestamp="1561891346">
<description>
<ul>
<li>Fixed support for MATE under Flatpak</li>
</ul>
</description>
</release>
<release version="1.7" timestamp="1559744416">
<description>
<ul>
<li>New icon! Should be closer to GNOME HIG.</li>
<li>Exposed random wallpaper functionality from the in-app menu and desktop file</li>
</ul>
</description>
</release>
<release version="1.6" timestamp="1559574845">
<description>
<ul>
<li>Added random wallpaper functionality from command line with -r option</li>
</ul>
</description>
</release>
<release version="1.5.3" timestamp="1559461094">
<description>
<ul>
<li>Fixing startup error when added folders get deleted</li>
</ul>
</description>
</release>
<release version="1.5.2" timestamp="1553762223">
<description>
<ul>
<li>Get correct localized Pictures folder on first startup</li>
<li>App doesn't crash anymore if a folder doesn't exist</li>
</ul>
</description>
</release>
<release version="1.5.1" timestamp="1553698201">
<description>
<ul>
<li>Fixed wallpapers not hiding on startup</li>
</ul>
</description>
</release>
<release version="1.5" timestamp="1553675339">
<description>
<ul>
<li>Complete code refactoring</li>
<li>Made the whole build system more modular</li>
<li>Moved app menu to the headerbar</li>
<li>Initial support for keyboard shortcuts</li>
</ul>
</description>
</release>
<release version="1.4.2" timestamp="1549205990">
<description>
<ul>
<li>Fixed thumbnail creation for PNGs with alpha channel</li>
<li>Added option to clear cache</li>
<li>Various bug fixes and improvements</li>
</ul>
</description>
</release>
<release version="1.4.1" timestamp="1544269577">
<description>
<ul>
<li>Improved thumbnail generation and caching for better performance</li>
</ul>
</description>
</release>
<release version="1.4" timestamp="1541070602">
<description>