Compare commits
3 Commits
817f1b6000
...
fa034a1a6a
Author | SHA1 | Date | |
---|---|---|---|
fa034a1a6a | |||
dcc5b6c719 | |||
eca319e5e4 |
@ -50,9 +50,9 @@ ExifTool, resvg (unstable API, needs to be requested explicitly)
|
|||||||
$ meson compile
|
$ meson compile
|
||||||
|
|
||||||
Considering the vast amount of dynamically-linked dependencies, do not attempt
|
Considering the vast amount of dynamically-linked dependencies, do not attempt
|
||||||
direct installations. To test the program, help it find its custom thumbnailer:
|
direct installations via `ninja install`. To test the program:
|
||||||
|
|
||||||
$ PATH=$(pwd):$PATH ./fiv
|
$ meson devenv fiv
|
||||||
|
|
||||||
The lossless JPEG cropper is intended to be invoked from a context menu.
|
The lossless JPEG cropper is intended to be invoked from a context menu.
|
||||||
|
|
||||||
|
@ -94,6 +94,15 @@ rm -rf ~/.cache/thumbnails/wide-*
|
|||||||
|
|
||||||
<h2>Configuration</h2>
|
<h2>Configuration</h2>
|
||||||
|
|
||||||
|
<p>The few configuration options <i>fiv</i> has can be adjusted using
|
||||||
|
<i>dconf-editor</i> or <i>gsettings</i>.
|
||||||
|
|
||||||
|
<pre>
|
||||||
|
gsettings list-recursively name.janouch.fiv
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
<h3>Theming</h3>
|
||||||
|
|
||||||
<p>The standard means to adjust the looks of the program is through GTK+ 3 CSS.
|
<p>The standard means to adjust the looks of the program is through GTK+ 3 CSS.
|
||||||
As an example, to tightly pack browser items, put the following in your
|
As an example, to tightly pack browser items, put the following in your
|
||||||
<i>~/.config/gtk-3.0/gtk.css</i>:
|
<i>~/.config/gtk-3.0/gtk.css</i>:
|
||||||
|
@ -1220,6 +1220,7 @@ fiv_browser_scroll_event(GtkWidget *widget, GdkEventScroll *event)
|
|||||||
case GDK_SCROLL_SMOOTH:
|
case GDK_SCROLL_SMOOTH:
|
||||||
// On GDK/Wayland, the mouse wheel will typically create 1.5 deltas,
|
// On GDK/Wayland, the mouse wheel will typically create 1.5 deltas,
|
||||||
// after dividing a 15 degree click angle from libinput by 10.
|
// after dividing a 15 degree click angle from libinput by 10.
|
||||||
|
// (Noticed on Arch + Sway, cannot reproduce on Ubuntu 22.04.)
|
||||||
// On X11, as libinput(4) indicates, the delta will always be 1.0.
|
// On X11, as libinput(4) indicates, the delta will always be 1.0.
|
||||||
if ((delta += event->delta_y) <= -1)
|
if ((delta += event->delta_y) <= -1)
|
||||||
set_item_size(self, self->item_size + 1);
|
set_item_size(self, self->item_size + 1);
|
||||||
|
4
fiv-update-desktop-files.in
Executable file
4
fiv-update-desktop-files.in
Executable file
@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/sh -e
|
||||||
|
sed -i "s|^MimeType=.*|MimeType=$(
|
||||||
|
"${DESTDIR:+$DESTDIR/}"'@EXE@' --list-supported-media-types | tr '\n' ';'
|
||||||
|
)|" "${DESTDIR:+$DESTDIR/}"'@DESKTOP@'
|
@ -547,7 +547,9 @@ fiv_view_realize(GtkWidget *widget)
|
|||||||
//
|
//
|
||||||
// If GTK+'s OpenGL integration fails to deliver, we need to use the window
|
// If GTK+'s OpenGL integration fails to deliver, we need to use the window
|
||||||
// directly, sidestepping the toolkit entirely.
|
// directly, sidestepping the toolkit entirely.
|
||||||
if (GDK_IS_X11_WINDOW(window))
|
GSettings *settings = g_settings_new(PROJECT_NS PROJECT_NAME);
|
||||||
|
if (GDK_IS_X11_WINDOW(window) &&
|
||||||
|
g_settings_get_boolean(settings, "native-view-window"))
|
||||||
gdk_window_ensure_native(window);
|
gdk_window_ensure_native(window);
|
||||||
#endif // GDK_WINDOWING_X11
|
#endif // GDK_WINDOWING_X11
|
||||||
|
|
||||||
|
14
fiv.gschema.xml
Normal file
14
fiv.gschema.xml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<schemalist>
|
||||||
|
<schema path="/name/janouch/fiv/" id="name.janouch.fiv">
|
||||||
|
<key name='native-view-window' type='b'>
|
||||||
|
<default>true</default>
|
||||||
|
<summary>Use a native window for the view</summary>
|
||||||
|
<description>
|
||||||
|
On X11, using native GdkWindows enables use of 30-bit Visuals
|
||||||
|
(that is, 10 bits per channel), at the cost of disabling
|
||||||
|
double buffering.
|
||||||
|
</description>
|
||||||
|
</key>
|
||||||
|
</schema>
|
||||||
|
</schemalist>
|
56
meson.build
56
meson.build
@ -70,10 +70,12 @@ endif
|
|||||||
|
|
||||||
# XXX: https://github.com/mesonbuild/meson/issues/825
|
# XXX: https://github.com/mesonbuild/meson/issues/825
|
||||||
docdir = get_option('datadir') / 'doc' / meson.project_name()
|
docdir = get_option('datadir') / 'doc' / meson.project_name()
|
||||||
|
application_ns = 'name.janouch.'
|
||||||
|
|
||||||
conf = configuration_data()
|
conf = configuration_data()
|
||||||
conf.set_quoted('PROJECT_NAME', meson.project_name())
|
conf.set_quoted('PROJECT_NAME', meson.project_name())
|
||||||
conf.set_quoted('PROJECT_VERSION', meson.project_version())
|
conf.set_quoted('PROJECT_VERSION', meson.project_version())
|
||||||
|
conf.set_quoted('PROJECT_NS', application_ns)
|
||||||
conf.set_quoted('PROJECT_DOCDIR', get_option('prefix') / docdir)
|
conf.set_quoted('PROJECT_DOCDIR', get_option('prefix') / docdir)
|
||||||
conf.set('HAVE_JPEG_QS', libjpegqs.found())
|
conf.set('HAVE_JPEG_QS', libjpegqs.found())
|
||||||
conf.set('HAVE_LCMS2', lcms2.found())
|
conf.set('HAVE_LCMS2', lcms2.found())
|
||||||
@ -103,6 +105,7 @@ tiff_tables = custom_target('tiff-tables.h',
|
|||||||
capture : true,
|
capture : true,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
desktops = ['fiv.desktop', 'fiv-browse.desktop']
|
||||||
exe = executable('fiv', 'fiv.c', 'fiv-view.c', 'fiv-io.c', 'fiv-context-menu.c',
|
exe = executable('fiv', 'fiv.c', 'fiv-view.c', 'fiv-io.c', 'fiv-context-menu.c',
|
||||||
'fiv-browser.c', 'fiv-sidebar.c', 'fiv-thumbnail.c', 'xdg.c', resources,
|
'fiv-browser.c', 'fiv-sidebar.c', 'fiv-thumbnail.c', 'xdg.c', resources,
|
||||||
install : true,
|
install : true,
|
||||||
@ -113,14 +116,13 @@ if gdkpixbuf.found()
|
|||||||
dependencies : [dependencies, gdkpixbuf])
|
dependencies : [dependencies, gdkpixbuf])
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
desktops += 'fiv-jpegcrop.desktop'
|
||||||
jpegcrop = executable('fiv-jpegcrop', 'fiv-jpegcrop.c',
|
jpegcrop = executable('fiv-jpegcrop', 'fiv-jpegcrop.c',
|
||||||
install : true,
|
install : true,
|
||||||
dependencies : [
|
dependencies : [
|
||||||
dependency('gtk+-3.0'),
|
dependency('gtk+-3.0'),
|
||||||
dependency('libturbojpeg'),
|
dependency('libturbojpeg'),
|
||||||
])
|
])
|
||||||
install_data('fiv-jpegcrop.desktop',
|
|
||||||
install_dir : get_option('datadir') / 'applications')
|
|
||||||
|
|
||||||
if get_option('tools').enabled()
|
if get_option('tools').enabled()
|
||||||
# libjq 1.6 lacks a pkg-config file, and there is no release in sight.
|
# libjq 1.6 lacks a pkg-config file, and there is no release in sight.
|
||||||
@ -135,26 +137,40 @@ if get_option('tools').enabled()
|
|||||||
endforeach
|
endforeach
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# XXX: With gdk-pixbuf, this even depends on currently installed modules.
|
gsettings_schemas = ['fiv.gschema.xml']
|
||||||
if meson.is_cross_build()
|
install_data(gsettings_schemas,
|
||||||
install_data('fiv.desktop',
|
rename : [application_ns + gsettings_schemas[0]],
|
||||||
install_dir : get_option('datadir') / 'applications')
|
install_dir : get_option('datadir') / 'glib-2.0' / 'schemas')
|
||||||
else
|
|
||||||
# XXX: The exe path may not contain spaces--quoting is a bitch in Meson.
|
# For the purposes of development: make the program find its GSettings schemas.
|
||||||
desktop = custom_target('desktop',
|
gnome.compile_schemas(depend_files : files(gsettings_schemas))
|
||||||
output : 'fiv.desktop',
|
|
||||||
input : 'fiv.desktop',
|
if host_machine.system() != 'windows'
|
||||||
command : ['sh', '-c', '''awk '/^MimeType=/ { $0 = "MimeType=";
|
foreach desktop : desktops
|
||||||
while (((exe " --list-supported-media-types") | getline type) > 0)
|
install_data(desktop,
|
||||||
$0 = $0 type ";" } 1' "exe=$1" "$2"''', 'sh', exe, '@INPUT@'],
|
rename : application_ns + desktop,
|
||||||
capture : true,
|
install_dir : get_option('datadir') / 'applications')
|
||||||
install : true,
|
endforeach
|
||||||
install_dir : get_option('datadir') / 'applications',
|
|
||||||
)
|
# With gdk-pixbuf, fiv.desktop depends on currently installed modules;
|
||||||
|
# the package manager needs to be told to run this script as necessary.
|
||||||
|
dynamic_desktops = gdkpixbuf.found()
|
||||||
|
|
||||||
|
updater = configure_file(
|
||||||
|
input : 'fiv-update-desktop-files.in',
|
||||||
|
output : 'fiv-update-desktop-files',
|
||||||
|
configuration : {
|
||||||
|
'EXE' : get_option('prefix') / get_option('bindir') / exe.name(),
|
||||||
|
'DESKTOP' : get_option('prefix') / get_option('datadir') \
|
||||||
|
/ 'applications' / application_ns + 'fiv.desktop',
|
||||||
|
},
|
||||||
|
install : dynamic_desktops,
|
||||||
|
install_dir : get_option('bindir'))
|
||||||
|
if not meson.is_cross_build()
|
||||||
|
meson.add_install_script(updater, skip_if_destdir : dynamic_desktops)
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
install_data('fiv-browse.desktop',
|
|
||||||
install_dir : get_option('datadir') / 'applications')
|
|
||||||
install_data('fiv.svg',
|
install_data('fiv.svg',
|
||||||
install_dir : get_option('datadir') / 'icons/hicolor/scalable/apps')
|
install_dir : get_option('datadir') / 'icons/hicolor/scalable/apps')
|
||||||
install_subdir('docs', install_dir : docdir, strip_directory : true)
|
install_subdir('docs', install_dir : docdir, strip_directory : true)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user