...
 
Commits (593)
build/
subprojects/libdazzle/
stages:
- test
- review
include: 'https://gitlab.gnome.org/GNOME/citemplates/raw/master/flatpak/flatpak_ci_initiative.yml'
variables:
# Replace with your preferred file name of the resulting Flatpak bundle
BUNDLE: "epiphany-git.flatpak"
BUNDLE: 'epiphany-git.flatpak'
flatpak:
image: registry.gitlab.gnome.org/gnome/gnome-runtime-images/gnome:master
stage: test
variables:
# Replace with your manifest path
MANIFEST_PATH: "org.gnome.Epiphany.json"
RUNTIME_REPO: "https://sdk.gnome.org/gnome-nightly.flatpakrepo"
# Replace with your application name, as written in the manifest
FLATPAK_MODULE: "epiphany"
# Make sure to keep this in sync with the Flatpak manifest, all arguments
# are passed except the config-args because we build it ourselves
MESON_ARGS: "-Dunit_tests=true"
DBUS_ID: "org.gnome.Epiphany"
script:
- flatpak-builder --stop-at=${FLATPAK_MODULE} app ${MANIFEST_PATH}
# Make sure to keep this in sync with the Flatpak manifest, all arguments
# are passed except the config-args because we build it ourselves
- flatpak build app meson --prefix=/app ${MESON_ARGS} _build
- flatpak build app ninja -C _build install
- flatpak-builder --finish-only --repo=repo app ${MANIFEST_PATH}
# Generate a Flatpak bundle
- flatpak build-bundle repo ${BUNDLE} --runtime-repo=${RUNTIME_REPO} ${DBUS_ID}
# Run automatic tests inside the Flatpak env
- xvfb-run -a -s "-screen 0 1024x768x24" flatpak build app ninja -C _build test
artifacts:
paths:
- ${BUNDLE}
- _build/meson-logs/meson-log.txt
- _build/meson-logs/testlog.txt
expire_in: 30 days
cache:
paths:
- .flatpak-builder/cache
extends: '.flatpak'
variables:
MANIFEST_PATH: 'org.gnome.Epiphany.json'
RUNTIME_REPO: 'https://sdk.gnome.org/gnome-nightly.flatpakrepo'
FLATPAK_MODULE: 'epiphany'
MESON_ARGS: '-Dprofile=Devel -Dunit_tests=enabled --werror'
APP_ID: 'org.gnome.Epiphany.Devel'
review:
stage: review
dependencies:
- flatpak
script:
- echo "Generating flatpak deployment"
artifacts:
paths:
- ${BUNDLE}
expire_in: 30 days
environment:
name: review/$CI_COMMIT_REF_NAME
url: https://gitlab.gnome.org/$CI_PROJECT_PATH/-/jobs/$CI_JOB_ID/artifacts/raw/${BUNDLE}
on_stop: stop_review
except:
- master@GNOME/epiphany
- tags
dependencies:
- 'flatpak'
extends: '.review'
stop_review:
stage: review
script:
- echo "Stopping flatpak deployment"
when: manual
environment:
name: review/$CI_COMMIT_REF_NAME
action: stop
except:
- master@GNOME/epiphany
- tags
\ No newline at end of file
extends: '.stop_review'
[submodule "subprojects/libhandy"]
path = subprojects/libhandy
url = https://source.puri.sm/Librem5/libhandy.git
......@@ -3,34 +3,29 @@ very short, so please read it before reporting your issue.
For tips for hacking on Epiphany, see the HACKING.md file.
# Submitting an Issue Report?
# Software versions
Thanks for reporting your problem with Epiphany.
## Software versions
Please include the following in your report:
Please include the following in your issue report:
* Epiphany version
* WebKitGTK+ version
* WebKitGTK version
* Operating system and version
Check the About dialog if you're not sure what Epiphany or WebKitGTK+ versions
Check the About dialog if you're not sure what Epiphany or WebKitGTK versions
you have.
## Web Content Bugs
# Web Content Bugs
This is the **wrong place** to report bugs with web content (e.g. incorrect page
rendering, broken JavaScript, problems with video playback, font issues, network
issues, web inspector issues, or generally anything at all wrong with a
website). These problems should all be reported directly on
[WebKit Bugzilla](https://bugs.webkit.org) instead. The Epiphany developers are
also WebKit developers, and we will see your WebKit bug reports so long as you
are careful to select the WebKitGTK+ Bugzilla component when reporting the
issue. Don't forget! Please also add the `[GTK]` prefix to the title of your
bug.
[WebKit Bugzilla](https://bugs.webkit.org) instead. Be careful to select the
WebKitGTK Bugzilla component when reporting the issue to ensure the right
developers see your bug report. Don't forget! Please also add the `[GTK]` prefix
to the title of your bug.
In general, only problems with the GTK+ user interface around the web content
In general, only problems with the GTK user interface around the web content
view (e.g. menus, preferences dialog, window chrome, history, bookmarks, tabs)
or Epiphany features (e.g. Firefox Sync, adblocker, password manager, web apps)
should be reported on Epiphany's GitLab issue tracker.
......@@ -41,7 +36,7 @@ or WebKit is responsible for a bug. If we suspect an issue reported on the
Epiphany issue tracker is actually a WebKit bug, we will close it and ask you to
report the issue on WebKit Bugzilla instead.
## Crashes
# Crashes
If Epiphany crashed, then we really need a backtrace taken in gdb with `bt full`
in order to solve the problem. Be sure to install the necessary debuginfo
......
......@@ -16,7 +16,8 @@ need to stick to in order to get your patch accepted:
* Use K&R style for the braces.
* No braces for one line control clauses.
* No braces for one line control clauses except when another clause in the
chain contains more than one line.
* Callback functions have a suffix _cb.
......@@ -40,6 +41,10 @@ need to stick to in order to get your patch accepted:
* There's no space between a type cast and the variable name: Right:
`(int *)foo`. Wrong: `(int*) foo`.
* Avoid explicit comparisons against TRUE, FALSE, and NULL. Right:
`if (!condition)`, `if (!pointer)`, `if (integer == 0)`. Wrong:
`if (condition == FALSE)`, `if (pointer == NULL)`, `if (!integer)`.
# Code Structure
## Layering
......@@ -94,14 +99,14 @@ or more tabs, and each tab is an `EphyEmbed`. That's worth repeating: an
`EphyWebView` (subclass of `WebKitWebView`). This is the object that actually
displays the web page, where all the web browser magic happens.
## Important WebKitGTK+ Objects
## Important WebKitGTK Objects
WebKitGTK+ is a WebKit port that provides a GTK+ API wrapper around WebKit.
WebKitGTK is a WebKit port that provides a GTK API wrapper around WebKit.
WebKit is really nice. It encapsulates 95% of the complexity of building a web
browser, like the JavaScript engine, HTML layout engine, and actually rendering
the webpage. Epiphany only has to deal with the remaining 5%. The most important
WebKitGTK+ objects are:
WebKitGTK objects are:
* `WebKitWebView` (superclass of `EphyWebView`). Displays the web.
* `WebKitWebContext`, a global object that manages shared state among web views.
......@@ -113,9 +118,9 @@ expects a `WebKitWebContext`. Do not use WebKit's default `WebKitWebContext`;
that is, do not pass `NULL` to any `WebKitWebContext *` parameter, and do not
use `webkit_web_context_get_default()`.
There is separate documentation for the [main WebKitGTK+ API](https://webkitgtk.org/reference/webkit2gtk/unstable/index.html),
for the [WebKitGTK+ DOM API](https://webkitgtk.org/reference/webkitdomgtk/unstable/index.html),
and for the [WebKitGTK+ JavaScriptCore API](https://webkitgtk.org/reference/jsc-glib/unstable/index.html).
There is separate documentation for the [main WebKitGTK API](https://webkitgtk.org/reference/webkit2gtk/unstable/index.html),
for the [WebKitGTK DOM API](https://webkitgtk.org/reference/webkitdomgtk/unstable/index.html),
and for the [WebKitGTK JavaScriptCore API](https://webkitgtk.org/reference/jsc-glib/unstable/index.html).
## Modern WebKit Process Architecture
......@@ -127,7 +132,7 @@ several subprocesses:
* One WebKitNetworkProcess, which handles most network requests
* One or zero WebKitDatabaseProcesses, which handles IndexedDB
In WebKitGTK+, by default each WebKitWebView shares the same WebKitWebProcess.
In WebKitGTK, by default each WebKitWebView shares the same WebKitWebProcess.
This can reduce overall resource usage, but it results in a less-stable browser
as a crash in one tab will crash all other tabs, and the effects of memory leaks
are greatly amplified. So Epiphany runs a separate WebKitWebProcess for each
......
3.33.3 - June 14, 2019
======================
- More fixes for web app migration (#713)
- More password manager fixes
- Add mobile user agent setting
3.33.2 - June 6, 2019
=====================
- Fix password manager for pages in iframes (#25, #26)
- Search engines now have favicons in address bar dropdown (#128)
- Allow searching for open tabs with address bar (#153)
- Show error message for moved or deleted downloads (#155)
- Fix preferences language button sensitivity (#279)
- Continue downloads in background when last window is closed (#322)
- Add custom error page for missing files when loading file URIs (#444)
- Add visual feedback for importing Firefox bookmarks (#484)
- Fix crash opening preferences dialog in weird locales (#545)
- Fix manage additional URLs web apps preference (#558)
- Fix downloading blob URIs in web apps (#593)
- Add search match counter (#639)
- Pages popover should not exceed window size in X11 (#656)
- Fix HTTP auth dialog losing focus when switching tabs (#750)
- Fix tab order reversing in session if tab is pinned (#777)
- Fix issues with ordering of pinned tabs (#780)
- Pinned tabs should not have a close button in tabs popover (#792)
- Add tooltips to items in address bar (#807)
- Log message to inspector console when adblocker blocks a resource
- New redesigned cookies dialog
3.33.1 - May 2, 2019
====================
- Change Tech Preview app ID to org.gnome.Epiphany.Devel (#20)
- Improve tab order when opening links in new tabs (#49)
- Use elementary-style headerbar icons in Pantheon (#67)
- Remember zoom state for file URIs (#102)
- Prompt to set as default browser (#112)
- Add preference to ask where to save downloads (#147)
- Fix yellow search highlight disappearing when repeating search (#166)
- Allow pinning tabs (#248)
- Expose saving pages as HTML or PNGs in addition to MHTML (#259, #412)
- Warn user when closing window with multiple tabs (#276)
- Comprehensively update user help (#293)
- Add preference to always start in incognito mode (#300)
- Add open in new incognito window to web app context menu (#313)
- Allow setting per-site permissions from security popover (#331, #467)
- Allow writing HTTP and HTTPS URLs without slashes (#377)
- Fix tab list alignment with tabs not on top (#456)
- Fix low-resolution overview thumbnails in hidpi (#605)
- Add Ctrl+Enter shortcut to prepend www. and append .com to URL (#645)
- Always show tabs bar (#650)
- Incognito mode landing page is now adaptive (#653)
- Add drop shadow to icon in about:web (#654)
- Add empty state to about:applications (#663)
- Keep URL entry centered (#666)
- Fix icons overlapping with URL entry in right-to-left locales (#686)
- Adjust margins of suggestions popover (#692)
- Allow Ctrl+click to open new tab in back/forward lists (#727)
- Remove process model and process count settings (Spectre mitigation)
- Use page instead of popover for mobile tab menu (Christopher Davis)
- Always try saved HTTP auth credentials before prompting user
- Use WebKit's code for processing punycode and IDN
- Add swipe gesture to keyboard shortcuts dialog
- Update reader mode to latest readibility.js
- libdazzle is now required as a system dependency
3.32.2 - May 2, 2019
====================
- Fix remembering printer settings (#138)
- Fix fuzzy incognito mode icon in hidpi (#257)
- Add search button and allow type to search on history dialog (#632)
- Fix critical deleting URLs from history dialog (#691)
- Fix crash changing reader mode preferences (#706)
- Fix many actions being disabled by mistake in incognito mode (#724)
- Fix password manager asking to remember passwords when disabled (#725)
- Close history dialog on Escape (#728)
- Fix crash during Safe Browsing update (#736)
- Unfullscreen automatically when web process crashes (#752)
- Fix markup appearing in search provider results
- Fix a search provider crash
- Fix password manager crash on certain websites
- Fix password manager autofill when form has no username
- Fix tab bar context menu reopen closed tab action crash and sensitivity
- Fix websites opening file choosers under flatpak
- Fix searching for bookmarks in top bar
3.32.1.2 - March 21, 2019
=========================
- Recreate Safe Browsing database when it might be corrupted (#57)
- Update libdazzle subproject to improve compatibility with new meson versions (#699)
3.32.1.1 - March 20, 2019
=========================
- Really bring back libdazzle subproject, for 3.32 branch only (#699)
3.32.1 - March 20, 2019
=======================
- Switch to WebKit's two-finger back/forward swipe gesture (Alexander Mikhaylenko)
- Fix search highlight disappearing when repeating search (#166)
- Fix pages without title always appearing first in address bar dropdown (#579)
- Bring back libdazzle subproject for 3.32 branch only (#699)
- Fix new web apps being saved in wrong place under certain circumstances (!224)
- Fix web process settings being saved in the wrong place (!224)
3.32.0 - March 11, 2019
=======================
Major changes since 3.30:
- Redesigned address bar dropdown with new dazzling
- Redesigned open tabs menu, now displays tab favicons and allows closing tabs
- Greatly improved adaptive mode support for small displays
- Three-finger swipe touchpad gesture now available for back/forward navigation
- Automation mode, for running WebDriver tests (useful for website developers)
Changes since 3.31.92:
- Fix preferences dialog crash
- Fix password manager crash on 32-bit systems
- Bump to libhandy 0.0.9 (Adrien Plazas)
3.31.92 - March 4, 2019
=======================
- Add animation when download completes (#629)
- New tab popover should close tabs on middle-click (#643)
- Fix context menu in history dialog (#651)
- Add separators to tab bar context menu (#652)
- Fix crash in mouse gesture controller (#679)
- Disable safe browsing test by default (#684)
- Improve reliability of password form detection
- Fix encoding dialog (Arnaud B.)
- Restore unsafe process model and process count settings for 3.32 branch only
- Change -Dunit_tests meson option to feature rather than bool type
- Require system libdazzle and recent GTK 3.24
- Build libhandy as static lib (Jeremy Bicha)
- Bundle newer libhandy to fix i18n (Adrien Plazas)
- Fix licence in appstream metadata to GPLv3+
3.31.91 - February 18, 2019
===========================
- Fix test failure when not installed (#675)
- libhandy and libdazzle now use git submodules (#676)
- Improve tab bar style in incognito mode (Alexander Mikhaylenko)
3.31.90 - February 4, 2019
==========================
- Hide new tab button in app mode (#19)
- Move all stored data to appropriate locations (#182, #477, Patrick Griffis)
- Middle-click on new tab button now loads URL from clipboard (#203)
- Animate to web app in GNOME shell overview after installing (#206)
- Fix next/previous accelerators in right-to-left locales (#239)
- Rename "New tab page" homepage option to "Most visited pages" (#394)
- Animate downloads button instead of intrusively opening popover (#395)
- New three-finger swipe gesture for back/forward navigation (#435)
- Don't close menu when changing zoom (#462)
- Fix zoom in internal pages (#539)
- Fix some tests (#617)
- Fix crash setting web app title without hostname (#618)
- "Search the Web" -> "Search the web" (#635)
- Tab menu is now a featureful popover (#647, Adrien Plazas)
- Remove PDF support for now, not stable yet (#659)
- New shortcuts for reload bypassing cache and reader mode (#661)
- Fix crashes caused by password manager rework (Patrick Griffis)
- Fix crash when $XDG_CURRENT_DESKTOP is undefined (Adrian Perez de Castro)
- Make find toolbar adaptive (Adrien Plazas)
- Make bookmarks import dialog adaptive (Adrien Plazas)
- Add tab menu for narrow mode (Adrien Plazas)
- Many CSS style improvements (Alexander Mikhaylenko)
- Fix too-tall switch in search engines dialog (Alexander Mikhaylenko)
- Remove process model and process count settings (Spectre mitigation)
- New design for security popover, appropriate for small screens
- Remove all deprecated settings and associated migrators
- Add setting to configure hardware acceleration policy
- Fix modified form submission warning
- Fix opening downloads under flatpak
3.31.4 - January 7, 2019
========================
- Add default zoom level option to preferences dialog (#8)
- Double click on reader mode icon should not maximize window (#44)
- Move new tab button to start of the header bar, always (#69, #447)
- Hide Help and About when running in Pantheon (#71, #72)
- Reenable address bar DNS prefetch (#79)
- Add hidden setting to keep window open on Ctrl+W (#80)
- Fix file extension when saving a View Source page (#98)
- Add reload all tabs to tab context menu (#118)
- Remember last upload/download directory (#133)
- Highlight matching text in address bar dropdown (#164)
- History dialog should respect desktop 12/24 hour clock setting (#197)
- Add reload tab and reopen closed tab to tab context menu (#199, #226)
- Convert all hostnames to lowercase (#230)
- Add support for viewing PDFs using libevince (#264)
- Add application manager to window menu (#267)
- Fix passwords dialog expanding after deleting password (#285)
- Hide various menu items from app mode (#309)
- Remove MIME type restrictions (#310)
- Remove broken bookmarks command line options (#338)
- Reenable some tests that were broken (#341, #419, #494)
- Open in new tab when middle clicking homepage button (#368)
- Monitor for changes to user CSS file (#370)
- Fix Ctrl+Shift+Page[Up,Down] (#399)
- Remove obsolete shortcuts documentation (#407)
- 127.0.0.1 and ::1 are now always considered secure (#410)
- Floating status bar no longer blocks clicks (#428)
- Add experimental support for mouse gestures (#430)
- Allow search the web context menu item in text fields (#438)
- Improve documentation of command line options (#440)
- Allow more zoom levels (#492)
- Adopt standard behavior for clicks with modifier keys pressed (#493)
- Add preference to disable smooth scrolling (#577, Sharaz Ali)
- Use /etc/os-release to set distributor name (#586)
- Fix remote inspector (#600, Loïc Yhuel)
- Alt-number tab switching can no longer be intercepted (#606)
- Fix crash after bookmark sync (#612)
- Add --automation-mode, for control by WebKitWebDriver
- Use libhandy for improved narrow mode (Adrien Plazas)
- Make history and encoding dialogs responsive
- Don't show new fullscreen header bar for fullscreen videos
- Move copy/search items to the top of the context menu (Jonathan Kang)
3.31.3 - December 10, 2018
==========================
- Improve padding in bookmarks view (#496, Apostol Bakalov)
- Do not show progress bar on empty new tabs (#574)
- Fix crash storing password on paypal.com (#575)
- Add column spacing to encoding dialog grid (#576)
- Fix suggestion entry not closing after Paste & Go (#581)
- Fix suggestion entry reopening after closed with Escape (#582)
- Tags with empty labels are no longer allowed in bookmarks (#585, Aral Balkan)
- Fix freeze when closing window or tabs when secondary process is hung (#587)
- Fix crash when web view has not loaded anything yet (#590)
- Temporarily disable hardware accelerated page rendering (#595)
- Stop lowercasing spellcheck and Accept-Langs locales
- Locales on language selection dialog are now displayed translated
- Locales on language selection dialog are no longer limited
- Several miscellaneous code improvements (Thomas An)
3.31.2 - November 11, 2018
==========================
......
......@@ -131,7 +131,7 @@ make sense, but they should always be carefully-considered.
We target nontechnical users by design. This happens to be 90% of the user
population. Technical details should not exposed in the interface.
We target web users, not web developers. A few geek-oriented feautures, like the
We target web users, not web developers. A few geek-oriented features, like the
web inspector, are welcome so long as they are non-obtrusive.
# Website
......@@ -142,4 +142,4 @@ very much content there.
# Contact Us
The recommended way to contact us is via the Epiphany mailing list
<epiphany-list@gnome.org>.
\ No newline at end of file
<epiphany-list@gnome.org>.
Some TODO items, in no particular order:
- Remove all use of slice allocator
- Rename all classes that lack the Ephy namespace
- Use g_signal_emit instead of g_signal_emit_by_name
- Use GDK_EVENT_PROPAGATE/GDK_EVENT_STOP.
- Use G_SOURCE_CONTINUE/G_SOURCE_REMOVE.
- Name all timeout and idle sources
- Replace constructor functions with constructed functions
- Use g_clear_object/g_clear_pointer in dispose/finalize
- Use g_clear_object/g_clear_pointer in dispose (and finalize?)
- Use g_clear_weak_pointer and g_clear_handle_id
- Replace dispose with finalize wherever possible
- Use GtkBuilder instead of declaring the UIs with C
- Use g_autofree/g_autoptr where possible
- Write out foo == NULL instead of !foo where possible
- We practically don't test any part of Epiphany, change that (how do
you test UI code? There's like 3 or 4 frameworks for this, pick one?
What does Chrome do?)
.\" Epiphany manpage.
.\" Copyright © 2006 GNOME Foundation, Inc.
.\" Copyright © 2006-2019 GNOME Foundation, Inc.
.\"
.TH EPIPHANY "1" "2018-01-23" "GNOME" ""
.TH EPIPHANY "1" "January 2019"
.SH NAME
epiphany \- simple to use web browser for GNOME
epiphany \- a simple, clean, beautiful view of the web
.SH SYNOPSIS
.B epiphany
[\fIOPTION\fR...] [url]
.SH DESCRIPTION
Help options
.TP
-?, \fB\-\-help\fR
Show help options
.PP
Application options
.TP
\fB\-n\fR, \fB\-\-new\-tab\fR
Open a new tab in an existing
browser window
\fBepiphany\fR is the codename of GNOME Web, the web browser designed for the
GNOME desktop and elementary OS. It offers a simple, clean, beautiful view of
the web featuring first-class GNOME and Pantheon desktop integration, using
WebKitGTK for web rendering.
.SH OPTIONS
.TP
\fB\-\-new\-window\fR
Open a new browser window
.TP
\fB\-\-import\-bookmarks\fR=\fIFILE\fR
Import bookmarks from the given file
Open a new browser window instead of a new tab
.TP
\fB\-l\fR, \fB\-\-load\-session\fR=\fIFILE\fR
Load the given session file
Load the given session state file
.TP
\fB\-t\fR, \fB\-\-add\-bookmark\fR=\fIURL\fR
Add a bookmark
\fB\-i\fR, \fB\-\-incognito\-mode\fR
Start an instance with user data read-only
.TP
\fB\-p\fR, \fB\-\-private\-instance\fR
Start a private instance (temporary profile directory, not private browsing mode)
Start a private instance with separate user data
.TP
\fB\-a\fR, \fB\-\-application\-mode\fR[=\fIBASENAME\fR]
Start a private instance in web application mode (requires passing either desktop file basename or
.B \-\-profile)
.TP
\fB\-\-incognito\-mode\fR
Start a private instance in incognito mode
\fB\-\-automation\-mode\fR
Start a private instance for WebDriver control
.TP
\fB\-\-profile\fR=\fIFILE\fR
Profile directory to use in the private instance
Custom profile directory for private instance (optional)
.TP
-?, \fB\-\-help\fR
Show help options
.TP
\fB\-\-version\fR
Show version
......@@ -46,4 +45,6 @@ Show version
Epiphany has a comprehensive help system. Run the browser
and select \fBHelp\fR from the menu.
.SH AUTHOR
Written by Marco Pesenti Gritti, Christian Persch and others.
Written by Marco Pesenti Gritti (in memoriam), Christian Persch, Xan Lopez,
Carlos Garcia Campos, Claudio Saavedra, Michael Catanzaro, Jan-Michael Brummer,
and many others.
install_subdir('icons/hicolor',
install_dir: join_paths(datadir, 'icons')
po_dir = join_paths(meson.source_root(), 'po')
icondir = join_paths('icons', 'hicolor', 'scalable', 'apps')
install_data(
join_paths(icondir, 'org.gnome.Epiphany.svg'),
install_dir: join_paths(datadir, icondir),
rename: '@0@.svg'.format(application_id)
)
icondir = join_paths('icons', 'hicolor', 'symbolic', 'apps')
install_data(
join_paths(icondir, 'org.gnome.Epiphany-symbolic.svg'),
install_dir: join_paths(datadir, icondir),
rename: '@0@-symbolic.svg'.format(application_id)
)
i18n.merge_file('desktop-file',
input: 'org.gnome.Epiphany.desktop.in',
output: 'org.gnome.Epiphany.desktop',
desktop_conf = configuration_data()
desktop_conf.set('icon', application_id)
desktop = i18n.merge_file(
'desktop',
input: configure_file(
input: files('org.gnome.Epiphany.desktop.in.in'),
output: 'org.gnome.Epiphany.desktop.in',
configuration: desktop_conf
),
output: '@0@.desktop'.format(application_id),
install: true,
install_dir: join_paths(datadir, 'applications'),
po_dir: '../po',
install_dir: desktopdir,
po_dir: po_dir,
type: 'desktop'
)
i18n.merge_file('appdata-file',
input: 'org.gnome.Epiphany.appdata.xml.in',
output: 'org.gnome.Epiphany.appdata.xml',
appdata_conf = configuration_data()
appdata_conf.set('appid', application_id)
appdata = i18n.merge_file(
'appdata',
input: configure_file(
input: files('org.gnome.Epiphany.appdata.xml.in.in'),
output: 'org.gnome.Epiphany.appdata.xml.in',
configuration: appdata_conf
),
output: '@0@.appdata.xml'.format(application_id),
install: true,
install_dir: join_paths(datadir, 'metainfo'),
po_dir: '../po'
po_dir: po_dir
)
appstream_util = find_program('appstream-util', required: false)
# We need three custom_target() calls because Meson doesn't have very
# good support for GSettings yet. First, generate our GSettings enums
......@@ -62,17 +89,24 @@ install_data('org.gnome.epiphany.gschema.xml',
install_dir: join_paths(datadir, 'glib-2.0', 'schemas')
)
serviceconf = configuration_data()
serviceconf.set('libexecdir', libexecdir)
service_conf = configuration_data()
service_conf.set('appid', application_id)
service_conf.set('libexecdir', libexecdir)
configure_file(
input: 'org.gnome.Epiphany.SearchProvider.service.in',
output: 'org.gnome.Epiphany.SearchProvider.service',
configuration: serviceconf,
install: true,
install_dir: join_paths(datadir, 'dbus-1', 'services')
output: '@0@.SearchProvider.service'.format(application_id),
configuration: service_conf,
install_dir: servicedir
)
install_data('org.gnome.Epiphany.search-provider.ini',
install_dir: join_paths(datadir, 'gnome-shell', 'search-providers')
search_provider_conf = configuration_data()
search_provider_conf.set('appid', application_id)
search_provider_conf.set('profile', profile != '' ? '/' + profile : '')
configure_file(
configuration: search_provider_conf,
input: files('org.gnome.Epiphany.SearchProvider.ini.in'),
install_dir: join_paths(datadir, 'gnome-shell', 'search-providers'),
output: '@0@.SearchProvider.ini'.format(application_id)
)
bookmarksconf = configuration_data()
......@@ -81,8 +115,28 @@ configure_file(
input: 'default-bookmarks.rdf.in',
output: 'default-bookmarks.rdf',
configuration: bookmarksconf,
install: true,
install_dir: pkgdatadir
)
install_man('epiphany.1')
desktop_file_validate = find_program('desktop-file-validate', required: false)
if desktop_file_validate.found()
test(
'validate-desktop',
desktop_file_validate,
args: [
desktop.full_path()
]
)
endif
appstream_util = find_program('appstream-util', required: false)
if appstream_util.found()
test(
'validate-appdata', appstream_util,
args: [
'validate-relax', appdata.full_path()
]
)
endif
[Shell Search Provider]
DesktopId=@appid@.desktop
BusName=@appid@.SearchProvider
ObjectPath=/org/gnome/Epiphany@profile@/SearchProvider
Version=2
[D-BUS Service]
Name=org.gnome.Epiphany.SearchProvider
Name=@appid@.SearchProvider
Exec=@libexecdir@/epiphany-search-provider
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2013, 2015 Epiphany contributors -->
<!-- Copyright 2013, 2015, 2019 Epiphany contributors -->
<component type="desktop">
<id>org.gnome.Epiphany.desktop</id>
<id>@appid@.desktop</id>
<metadata_license>CC0-1.0</metadata_license>
<name>GNOME Web</name>
<summary>Web browser for GNOME</summary>
......@@ -33,9 +33,9 @@
</kudos>
<project_group>GNOME</project_group>
<compulsory_for_desktop>GNOME</compulsory_for_desktop>
<project_license>GPL-2.0+</project_license>
<project_license>GPL-3.0+</project_license>
<developer_name>The GNOME Project</developer_name>
<url type="bugtracker">https://bugzilla.gnome.org/enter_bug.cgi?product=epiphany</url>
<url type="bugtracker">https://gitlab.gnome.org/GNOME/epiphany/issues</url>
<url type="donation">http://www.gnome.org/friends/</url>
<url type="help">https://help.gnome.org/users/epiphany/stable/</url>
<url type="translate">https://wiki.gnome.org/TranslationProject</url>
......@@ -43,4 +43,7 @@
<provides>
<id>epiphany.desktop</id>
</provides>
<releases>
<release date="2019-03-22" version="3.32.1.2"/>
</releases>
</component>
......@@ -9,7 +9,7 @@ StartupNotify=true
Terminal=false
Type=Application
# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
Icon=org.gnome.Epiphany
Icon=@icon@
Categories=Network;GNOME;GTK;WebBrowser;
MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;multipart/related;application/x-mimearchive;message/rfc822;
Actions=new-window;Incognito;
......
[Shell Search Provider]
DesktopId=org.gnome.Epiphany.desktop
BusName=org.gnome.Epiphany.SearchProvider
ObjectPath=/org/gnome/Epiphany/SearchProvider
Version=2
......@@ -17,11 +17,6 @@
<summary>Home page</summary>
<description>Address of the user’s home page.</description>
</key>
<key type="s" name="keyword-search-url">
<default>'https://duckduckgo.com/?q=%s&amp;t=epiphany'</default>
<summary>URL Search</summary>
<description>DEPRECATED: This key is deprecated and ignored. Use /org/gnome/epiphany/search-engines instead.</description>
</key>
<key type="s" name="default-search-engine">
<default>'DuckDuckGo'</default>
<summary>Default search engine.</summary>
......@@ -38,39 +33,14 @@
<summary>Default search engines.</summary>
<description>List of the default search engines. It is an array in which each search engine is described by a name, an address, and a bang (shortcut).</description>
</key>
<key type="s" name="user-agent">
<default>''</default>
<summary>User agent</summary>
<description>
String that will be used as user agent, to identify the browser to the web servers.
DEPRECATED: This key is deprecated and ignored. Use /org/gnome/epiphany/web/user-agent instead.
</description>
</key>
<key type="b" name="new-windows-in-tabs">
<default>true</default>
<summary>Force new windows to be opened in tabs</summary>
<description>Force new window requests to be opened in tabs instead of using a new window.</description>
</key>
<key type="b" name="remember-passwords">
<default>true</default>
<summary>Remember passwords</summary>
<description>
Whether to store and prefill passwords in websites.
DEPRECATED: This key is deprecated and ignored. Use /org/gnome/epiphany/web/remember-passwords instead.
</description>
</key>
<key type="b" name="warn-on-close-unsubmitted-data">
<default>true</default>
</key>
<key type="b" name="enable-smooth-scrolling">
<default>false</default>
<summary>Enable smooth scrolling</summary>
<description>
DEPRECATED: This key is deprecated and ignored. Use /org/gnome/epiphany/web/enable-smooth-scrolling instead.
</description>
</key>
<key type="b" name="internal-view-source">
<default>true</default>
<summary>Don’t use an external application to view page source.</summary>
......@@ -85,26 +55,25 @@
<summary>Whether to delay loading of tabs that are not immediately visible on session restore</summary>
<description>When this option is set to true, tabs will not start loading until the user switches to them, upon session restore.</description>
</key>
<key name="process-model" enum="org.gnome.Epiphany.EphyPrefsProcessModel">
<default>'one-secondary-process-per-web-view'</default>
<summary>Process model</summary>
<description>This option allows to set the process model used. Use “shared-secondary-process” to use a single web process shared by all the tabs and “one-secondary-process-per-web-view” to use a different web process for each tab.</description>
</key>
<key type="u" name="max-processes">
<default>0</default>
<summary>Maximum number of web processes created at the same time when using “one-secondary-process-per-web-view” model</summary>
<description>This option sets a limit to the number of web processes that will be used at the same time for the “one-secondary-process-per-web-view” model. The default value is “0” and means no limit.</description>
</key>
<key type="as" name="adblock-filters">
<default>['https://easylist.to/easylist/easylist.txt', 'https://easylist.to/easylist/easyprivacy.txt']</default>
<summary>List of adblock filters</summary>
<description>List of URLs with filter rules to be used by the adblock.</description>
</key>
<key type="b" name="ask-for-default">
<default>true</default>
<summary>Whether to ask for setting browser as default</summary>
<description>When this option is set to true, browser will ask for being default if it is not already set.</description>
</key>
<key type="b" name="start-in-incognito-mode">
<default>false</default>
<summary>Start in incognito mode</summary>
<description>When this option is set to true, browser will always start in incognito mode</description>
</key>
</schema>
<schema path="/org/gnome/epiphany/ui/" id="org.gnome.Epiphany.ui">
<key type="b" name="expand-tabs-bar">
<default>true</default>
<default>false</default>
<summary>Expand tabs size to fill the available space on the tabs bar.</summary>
<description>If enabled the tabs will expand to use the entire available space in the tabs bar.</description>
</key>
......@@ -114,10 +83,15 @@
<description>Controls where the tabs bar is shown. Possible values are “top” (the default), “bottom”, “left” (vertical tabs with bar on the left) and “right” (vertical tabs with bar on the right).</description>
</key>
<key name="tabs-bar-visibility-policy" enum="org.gnome.Epiphany.EphyPrefsUITabsBarVisibilityPolicy">
<default>'more-than-one'</default>
<default>'always'</default>
<summary>The visibility policy for the tabs bar.</summary>
<description>Controls when the tabs bar is shown. Possible values are “always” (the tabs bar is always shown), “more-than-one” (the tabs bar is only shown if there’s two or more tabs) and “never” (the tabs bar is never shown).</description>
</key>
<key type="b" name="keep-window-open">
<default>false</default>
<summary>Keep window open when closing last tab</summary>
<description>If enabled application window is kept open when closing the last tab.</description>
</key>
</schema>
<schema path="/org/gnome/epiphany/reader/" id="org.gnome.Epiphany.reader">
<key name="font-style" enum="org.gnome.Epiphany.EphyPrefsReaderFontStyle">
......@@ -169,7 +143,7 @@
<key type="s" name="default-encoding">
<default>'iso-8859-1'</default>
<summary>Default encoding</summary>
<description>Default encoding. Accepted values are the ones WebKitGTK+ can understand.</description>
<description>Default encoding. Accepted values are the ones WebKitGTK can understand.</description>
</key>
<key type="as" name="language">
<default>['system']</default>
......@@ -210,10 +184,15 @@
<summary>User agent</summary>
<description>String that will be used as user agent, to identify the browser to the web servers.</description>
</key>
<key type="b" name="mobile-user-agent">
<default>false</default>
<summary>Mobile user agent</summary>
<description>Whether to present a mobile user agent. If the user agent is overridden, this will have no effect.</description>
</key>
<key type="b" name="do-not-track">
<default>true</default>
<summary>Do Not Track</summary>
<description>Enables DNT headers and tracking query parameter removal. Note that when changing this setting from the preferences dialog, the adblock-filters setting will additionally be updated to add/remove EasyPrivacy filters.</description>
<description>Enables tracking query parameter removal. Note that when changing this setting from the preferences dialog, the adblock-filters setting will additionally be updated to add/remove EasyPrivacy filters.</description>
</key>
<key type="b" name="enable-adblock">
<default>true</default>
......@@ -249,6 +228,31 @@
<summary>Enable autosearch</summary>
<description>Whether to automatically search the web when something that does not look like a URL is entered in the address bar. If this setting is disabled, everything will be loaded as a URL unless a search engine is explicitly selected from the dropdown menu.</description>
</key>
<key type="b" name="enable-mouse-gestures">
<default>false</default>
<summary>Enable mouse gesture</summary>
<description>Whether to enable mouse gestures. Mouse gestures are based on Opera’s behaviour and are activated using the middle mouse button + gesture.</description>
</key>
<key type="s" name="last-upload-directory">
<default>''</default>
<summary>Last upload directory</summary>
<description>Keep track of last upload directory</description>
</key>
<key type="s" name="last-download-directory">
<default>''</default>
<summary>Last download directory</summary>
<description>Keep track of last download directory</description>
</key>
<key name="hardware-acceleration-policy" enum="org.gnome.Epiphany.EphyPrefsWebHardwareAccelerationPolicy">
<default>'never'</default>
<summary>Hardware acceleration policy</summary>
<description>Whether to enable hardware acceleration. Possible values are “on-demand”, “always”, and “never”. Hardware acceleration may be required to achieve acceptable performance on embedded devices, but increases memory usage requirements and could expose severe hardware-specific graphics driver bugs. When the policy is “on-demand”, hardware acceleration will be used only when required to display 3D transforms.</description>
</key>
<key type="b" name="ask-on-download">
<default>false</default>
<summary>Always ask for download directory</summary>
<description>Whether to present a directory chooser dialog for every download.</description>
</key>
</schema>
<schema id="org.gnome.Epiphany.webapp">
<key type="as" name="additional-urls">
......@@ -394,93 +398,6 @@
<description>The timestamp at which last open tabs sync was made.</description>
</key>
</schema>
<schema path="/org/gnome/Epiphany/sync/" id="org.gnome.Epiphany.sync.DEPRECATED">
<key type="s" name="sync-user">
<default>''</default>
<summary>Currently signed in sync user</summary>
<description>DEPRECATED: This key is deprecated and ignored. Use /org/gnome/epiphany/sync/ instead.</description>
</key>
<key type="x" name="sync-time">
<default>0</default>
<summary>Last sync timestamp</summary>
<description>DEPRECATED: This key is deprecated and ignored. Use /org/gnome/epiphany/sync/ instead.</description>
</key>
<key type="s" name="sync-device-id">
<default>''</default>
<summary>Sync device ID</summary>
<description>DEPRECATED: This key is deprecated and ignored. Use /org/gnome/epiphany/sync/ instead.</description>
</key>
<key type="s" name="sync-device-name">
<default>''</default>
<summary>Sync device name</summary>
<description>DEPRECATED: This key is deprecated and ignored. Use /org/gnome/epiphany/sync/ instead.</description>
</key>
<key type="u" name="sync-frequency">
<default>30</default>
<summary>The sync frequency in minutes</summary>
<description>DEPRECATED: This key is deprecated and ignored. Use /org/gnome/epiphany/sync/ instead.</description>
</key>
<key type="b" name="sync-with-firefox">
<default>true</default>
<summary>Sync data with Firefox</summary>
<description>DEPRECATED: This key is deprecated and ignored. Use /org/gnome/epiphany/sync/ instead.</description>
</key>
<key type="b" name="sync-bookmarks-enabled">
<default>false</default>
<summary>Enable bookmarks sync</summary>
<description>DEPRECATED: This key is deprecated and ignored. Use /org/gnome/epiphany/sync/ instead.</description>
</key>
<key type="d" name="sync-bookmarks-time">
<default>0</default>
<summary>Bookmarks sync timestamp</summary>
<description>DEPRECATED: This key is deprecated and ignored. Use /org/gnome/epiphany/sync/ instead.</description>
</key>
<key type="b" name="sync-bookmarks-initial">
<default>true</default>
<summary>Initial sync or normal sync</summary>
<description>DEPRECATED: This key is deprecated and ignored. Use /org/gnome/epiphany/sync/ instead.</description>
</key>
<key type="b" name="sync-passwords-enabled">
<default>false</default>
<summary>Enable passwords sync</summary>
<description>DEPRECATED: This key is deprecated and ignored. Use /org/gnome/epiphany/sync/ instead.</description>
</key>
<key type="d" name="sync-passwords-time">
<default>0</default>
<summary>Passwords sync timestamp</summary>
<description>DEPRECATED: This key is deprecated and ignored. Use /org/gnome/epiphany/sync/ instead.</description>
</key>
<key type="b" name="sync-passwords-initial">
<default>true</default>
<summary>Initial sync or normal sync</summary>
<description>DEPRECATED: This key is deprecated and ignored. Use /org/gnome/epiphany/sync/ instead.</description>
</key>
<key type="b" name="sync-history-enabled">
<default>false</default>
<summary>Enable history sync</summary>
<description>DEPRECATED: This key is deprecated and ignored. Use /org/gnome/epiphany/sync/ instead.</description>
</key>
<key type="d" name="sync-history-time">
<default>0</default>
<summary>History sync timestamp</summary>
<description>DEPRECATED: This key is deprecated and ignored. Use /org/gnome/epiphany/sync/ instead.</description>
</key>
<key type="b" name="sync-history-initial">
<default>true</default>
<summary>Initial sync or normal sync</summary>
<description>DEPRECATED: This key is deprecated and ignored. Use /org/gnome/epiphany/sync/ instead.</description>
</key>
<key type="b" name="sync-open-tabs-enabled">
<default>false</default>
<summary>Enable open tabs sync</summary>
<description>DEPRECATED: This key is deprecated and ignored. Use /org/gnome/epiphany/sync/ instead.</description>
</key>
<key type="d" name="sync-open-tabs-time">
<default>0</default>
<summary>Open tabs sync timestamp</summary>
<description>DEPRECATED: This key is deprecated and ignored. Use /org/gnome/epiphany/sync/ instead.</description>
</key>
</schema>
<enum id="org.gnome.Epiphany.Permission">
<value nick="undecided" value="-1"/>
<value nick="deny" value="0"/>
......@@ -512,5 +429,10 @@
<summary>Decision to apply when webcam permission is requested for this host</summary>
<description>This option is used to save whether a given host has been given permission to access the user’s webcam. The “undecided” default means the browser needs to ask the user for permission, while “allow” and “deny” tell it to automatically make the decision upon request.</description>
</key>
<key name="advertisement-permission" enum="org.gnome.Epiphany.Permission">
<default>'undecided'</default>
<summary>Decision to apply when advertisement permission is requested for this host</summary>
<description>This option is used to save whether a given host has been given permission to allow advertisements. The “undecided” default means the browser global setting is used, while “allow” and “deny” tell it to automatically make the decision upon request.</description>
</key>
</schema>
</schemalist>
#!/bin/sh
# aim for a size of 1200x675, but wmctrl doesn't seem to take into account
# the size of the window borders
wmctrl -x -r epiphany.Epiphany -e 0,-1,-1,1224,700
# Aim for a size of 1280x720, but wmctrl doesn't seem to take into account
# the size of the window borders, 52x52. Note: must be run under X11.
wmctrl -x -r epiphany.Epiphany -e 0,-1,-1,1332,772
wmctrl -x -a epiphany.Epiphany
data/screenshot.png

237 KB | W: | H:

data/screenshot.png

219 KB | W: | H:

data/screenshot.png
data/screenshot.png
data/screenshot.png
data/screenshot.png
  • 2-up
  • Swipe
  • Onion skin
This diff is collapsed.
/*
* Copyright (c) 2011 Red Hat, Inc.
* Copyright (c) 2013 Ignacio Casal Quinteiro
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation; either version 2 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 Lesser General Public
* License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*
* Author: Cosimo Cecchi <cosimoc@redhat.com>
*
*/
#ifndef __GD_TAGGED_ENTRY_H__
#define __GD_TAGGED_ENTRY_H__
#include <glib-object.h>
#include <gtk/gtk.h>
G_BEGIN_DECLS
#define GD_TYPE_TAGGED_ENTRY gd_tagged_entry_get_type()
#define GD_TAGGED_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GD_TYPE_TAGGED_ENTRY, GdTaggedEntry))
#define GD_TAGGED_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GD_TYPE_TAGGED_ENTRY, GdTaggedEntryClass))
#define GD_IS_TAGGED_ENTRY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GD_TYPE_TAGGED_ENTRY))
#define GD_IS_TAGGED_ENTRY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GD_TYPE_TAGGED_ENTRY))
#define GD_TAGGED_ENTRY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GD_TYPE_TAGGED_ENTRY, GdTaggedEntryClass))
typedef struct _GdTaggedEntry GdTaggedEntry;
typedef struct _GdTaggedEntryClass GdTaggedEntryClass;
typedef struct _GdTaggedEntryPrivate GdTaggedEntryPrivate;
typedef struct _GdTaggedEntryTag GdTaggedEntryTag;
typedef struct _GdTaggedEntryTagClass GdTaggedEntryTagClass;
typedef struct _GdTaggedEntryTagPrivate GdTaggedEntryTagPrivate;
struct _GdTaggedEntry
{
GtkSearchEntry parent;
GdTaggedEntryPrivate *priv;
};
struct _GdTaggedEntryClass
{
GtkSearchEntryClass parent_class;
};
#define GD_TYPE_TAGGED_ENTRY_TAG gd_tagged_entry_tag_get_type()
#define GD_TAGGED_ENTRY_TAG(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GD_TYPE_TAGGED_ENTRY_TAG, GdTaggedEntryTag))
#define GD_TAGGED_ENTRY_TAG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GD_TYPE_TAGGED_ENTRY_TAG, GdTaggedEntryTagClass))
#define GD_IS_TAGGED_ENTRY_TAG(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GD_TYPE_TAGGED_ENTRY_TAG))
#define GD_IS_TAGGED_ENTRY_TAG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GD_TYPE_TAGGED_ENTRY_TAG))
#define GD_TAGGED_ENTRY_TAG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GD_TYPE_TAGGED_ENTRY_TAG, GdTaggedEntryTagClass))
struct _GdTaggedEntryTag
{
GObject parent;
GdTaggedEntryTagPrivate *priv;
};
struct _GdTaggedEntryTagClass
{
GObjectClass parent_class;
};
GType gd_tagged_entry_get_type (void) G_GNUC_CONST;
GdTaggedEntry *gd_tagged_entry_new (void);
void gd_tagged_entry_set_tag_button_visible (GdTaggedEntry *self,
gboolean visible);
gboolean gd_tagged_entry_get_tag_button_visible (GdTaggedEntry *self);
gboolean gd_tagged_entry_insert_tag (GdTaggedEntry *self,
GdTaggedEntryTag *tag,
gint position);
gboolean gd_tagged_entry_add_tag (GdTaggedEntry *self,
GdTaggedEntryTag *tag);
gboolean gd_tagged_entry_remove_tag (GdTaggedEntry *self,
GdTaggedEntryTag *tag);
GType gd_tagged_entry_tag_get_type (void) G_GNUC_CONST;
GdTaggedEntryTag *gd_tagged_entry_tag_new (const gchar *label);
void gd_tagged_entry_tag_set_label (GdTaggedEntryTag *tag,
const gchar *label);
const gchar *gd_tagged_entry_tag_get_label (GdTaggedEntryTag *tag);
void gd_tagged_entry_tag_set_has_close_button (GdTaggedEntryTag *tag,
gboolean has_close_button);
gboolean gd_tagged_entry_tag_get_has_close_button (GdTaggedEntryTag *tag);
void gd_tagged_entry_tag_set_style (GdTaggedEntryTag *tag,
const gchar *style);
const gchar *gd_tagged_entry_tag_get_style (GdTaggedEntryTag *tag);
gboolean gd_tagged_entry_tag_get_area (GdTaggedEntryTag *tag,
cairo_rectangle_int_t *rect);
G_END_DECLS
#endif /* __GD_TAGGED_ENTRY_H__ */
......@@ -31,7 +31,6 @@
#include "ephy-settings.h"
#include "ephy-smaps.h"
#include "ephy-snapshot-service.h"
#include "ephy-vcs-version.h"
#include "ephy-web-app-utils.h"
#include <gio/gio.h>
......@@ -163,10 +162,10 @@ ephy_about_handler_handle_about (EphyAboutHandler *handler,
char *version;
GtkIconInfo *icon_info;
version = g_strdup_printf (_("Version %s"), VCSVERSION);
version = g_strdup_printf (_("Version %s"), VERSION);
icon_info = gtk_icon_theme_lookup_icon (gtk_icon_theme_get_default (),
"org.gnome.Epiphany",
APPLICATION_ID,
256,
GTK_ICON_LOOKUP_FORCE_SVG);
......@@ -175,7 +174,7 @@ ephy_about_handler_handle_about (EphyAboutHandler *handler,
"<link href=\""EPHY_PAGE_TEMPLATE_ABOUT_CSS "\" rel=\"stylesheet\" type=\"text/css\">"
"</head><body>"
"<div class=\"dialog\">"
"<img src=\"file://%s\"/>"
"<img id=\"about-icon\" src=\"file://%s\"/>"
"<h1 id=\"about-title\">%s</h1>"
"<h2 id=\"about-subtitle\">%s</h2>"
"<p id=\"about-tagline\">%s</p>"
......@@ -192,7 +191,7 @@ ephy_about_handler_handle_about (EphyAboutHandler *handler,
#endif
version,
_("A simple, clean, beautiful view of the web"),
"WebKitGTK+", webkit_get_major_version (), webkit_get_minor_version (), webkit_get_micro_version ());
"WebKitGTK", webkit_get_major_version (), webkit_get_minor_version (), webkit_get_micro_version ());
g_free (version);
if (icon_info)
g_object_unref (icon_info);
......@@ -237,41 +236,68 @@ handle_applications_finished_cb (EphyAboutHandler *handler,
GList *applications, *p;
data_str = g_string_new (NULL);
g_string_append_printf (data_str, "<html><head><title>%s</title>"
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />"
"<link href=\""EPHY_PAGE_TEMPLATE_ABOUT_CSS "\" rel=\"stylesheet\" type=\"text/css\">"
"<script>"
" function deleteWebApp(appID) {"
" window.webkit.messageHandlers.aboutApps.postMessage(appID);"
" var row = document.getElementById(appID);"
" row.parentNode.removeChild(row);"
" }"
"</script>"
"</head><body class=\"applications-body\"><h1>%s</h1>"
"<p>%s</p>",
_("Applications"),
_("Applications"),
_("List of installed web applications"));
g_string_append (data_str, "<table>");
applications = g_task_propagate_pointer (G_TASK (result), NULL);
for (p = applications; p; p = p->next) {
EphyWebApplication *app = (EphyWebApplication *)p->data;
if (g_list_length (applications) > 0) {
g_string_append_printf (data_str, "<html><head><title>%s</title>"
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />"
"<link href=\""EPHY_PAGE_TEMPLATE_ABOUT_CSS "\" rel=\"stylesheet\" type=\"text/css\">"
"<script>"
" function deleteWebApp(appID) {"
" window.webkit.messageHandlers.aboutApps.postMessage(appID);"
" var row = document.getElementById(appID);"
" row.parentNode.removeChild(row);"
" }"
"</script>"
"</head><body class=\"applications-body\"><h1>%s</h1>"
"<p>%s</p>",
_("Applications"),
_("Applications"),
_("List of installed web applications"));
g_string_append (data_str, "<table>");
for (p = applications; p; p = p->next) {
EphyWebApplication *app = (EphyWebApplication *)p->data;
g_string_append_printf (data_str,
"<tbody><tr id =\"%s\">"
"<td class=\"icon\"><img width=64 height=64 src=\"file://%s\"></img></td>"
"<td class=\"data\"><div class=\"appname\">%s</div><div class=\"appurl\">%s</div></td>"
"<td class=\"input\"><input type=\"button\" value=\"%s\" onclick=\"deleteWebApp('%s');\"></td>"
"<td class=\"date\">%s <br /> %s</td></tr></tbody>",
app->id, app->icon_url, app->name, app->url, _("Delete"), app->id,
/* Note for translators: this refers to the installation date. */
_("Installed on:"), app->install_date);
}
g_string_append (data_str, "</table></body></html>");
} else {
g_autoptr(GtkIconInfo) icon_info = NULL;
g_autofree gchar *icon = g_strconcat ("application-x-addon-symbolic", NULL);
g_string_append_printf (data_str, "<html><head><title>%s</title>"
"<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />"
"<link href=\""EPHY_PAGE_TEMPLATE_ABOUT_CSS "\" rel=\"stylesheet\" type=\"text/css\">"
"</head><body class=\"applications-body\">",
_("Applications"));
icon_info = gtk_icon_theme_lookup_icon (gtk_icon_theme_get_default (),
icon,
128,
0);
g_string_append_printf (data_str,
"<tbody><tr id =\"%s\">"
"<td class=\"icon\"><img width=64 height=64 src=\"file://%s\"></img></td>"
"<td class=\"data\"><div class=\"appname\">%s</div><div class=\"appurl\">%s</div></td>"
"<td class=\"input\"><input type=\"button\" value=\"%s\" onclick=\"deleteWebApp('%s');\"></td>"
"<td class=\"date\">%s <br /> %s</td></tr></tbody>",
app->id, app->icon_url, app->name, app->url, _("Delete"), app->id,
/* Note for translators: this refers to the installation date. */
_("Installed on:"), app->install_date);
" <div id=\"overview\" class=\"overview-empty\">\n"
" <img src=\"file://%s\"/>\n"
" <div><h1>%s</h1></div>\n"
" <div><p>%s</p></div>\n"
" </div>\n"
"</body></html>\n",
icon_info ? gtk_icon_info_get_filename (icon_info) : "",
/* Displayed when opening applications without any installed web apps. */
_("Applications"), _("You can add your favorite website by clicking <b>Install Site as Web Application…</b> within page menu."));
}
g_string_append (data_str, "</table></body></html>");
ephy_web_application_free_application_list (applications);
data_length = data_str->len;
......@@ -343,9 +369,10 @@ history_service_query_urls_cb (EphyHistoryService *history,
if (g_list_length (urls) == 0 || !success) {
GtkIconInfo *icon_info;
g_autofree gchar *icon = g_strconcat (APPLICATION_ID, "-symbolic", NULL);
icon_info = gtk_icon_theme_lookup_icon (gtk_icon_theme_get_default (),
"org.gnome.Epiphany-symbolic",
icon,
128,
0);
g_string_append_printf (data_str,
......@@ -373,7 +400,7 @@ history_service_query_urls_cb (EphyHistoryService *history,
snapshot = ephy_snapshot_service_lookup_cached_snapshot_path (snapshot_service, url->url);
if