1diff --git a/graphviz/backend/dot_command.py b/graphviz/backend/dot_command.py
2index 3a62a85..a38bb9b 100644
3--- a/graphviz/backend/dot_command.py
4+++ b/graphviz/backend/dot_command.py
5@@ -9,7 +9,7 @@ from .. import parameters
6
7 __all__ = ['DOT_BINARY', 'command']
8
9-DOT_BINARY = pathlib.Path('dot')
10+DOT_BINARY = pathlib.Path('@graphviz@/bin/dot')
11
12
13 def command(engine: str, format_: str, *,
14diff --git a/graphviz/backend/unflattening.py b/graphviz/backend/unflattening.py
15index a386b8c..883cdc6 100644
16--- a/graphviz/backend/unflattening.py
17+++ b/graphviz/backend/unflattening.py
18@@ -11,7 +11,7 @@ from . import execute
19
20 __all__ = ['UNFLATTEN_BINARY', 'unflatten']
21
22-UNFLATTEN_BINARY = pathlib.Path('unflatten')
23+UNFLATTEN_BINARY = pathlib.Path('@graphviz@/bin/unflatten')
24
25
26 @_tools.deprecate_positional_args(supported_number=1)
27diff --git a/graphviz/backend/viewing.py b/graphviz/backend/viewing.py
28index fde74a6..6f29b68 100644
29--- a/graphviz/backend/viewing.py
30+++ b/graphviz/backend/viewing.py
31@@ -55,7 +55,7 @@ def view_darwin(filepath: typing.Union[os.PathLike, str], *,
32 def view_unixoid(filepath: typing.Union[os.PathLike, str], *,
33 quiet: bool) -> None:
34 """Open filepath in the user's preferred application (linux, freebsd)."""
35- cmd = ['xdg-open', filepath]
36+ cmd = ['@xdgutils@/bin/xdg-open', filepath]
37 log.debug('view: %r', cmd)
38 kwargs = {'stderr': subprocess.DEVNULL} if quiet else {}
39 subprocess.Popen(cmd, **kwargs)
40diff --git a/tests/_common.py b/tests/_common.py
41index edc1309..42d730c 100644
42--- a/tests/_common.py
43+++ b/tests/_common.py
44@@ -14,9 +14,9 @@ __all__ = ['EXPECTED_DOT_BINARY',
45 'as_cwd',
46 'check_startupinfo', 'StartupinfoMatcher']
47
48-EXPECTED_DOT_BINARY = pathlib.Path('dot')
49+EXPECTED_DOT_BINARY = pathlib.Path('@graphviz@/bin/dot')
50
51-EXPECTED_UNFLATTEN_BINARY = pathlib.Path('unflatten')
52+EXPECTED_UNFLATTEN_BINARY = pathlib.Path('@graphviz@/bin/unflatten')
53
54 EXPECTED_DEFAULT_ENGINE = 'dot'
55
56diff --git a/tests/backend/test_execute.py b/tests/backend/test_execute.py
57index 2cb853a..8093dfe 100644
58--- a/tests/backend/test_execute.py
59+++ b/tests/backend/test_execute.py
60@@ -15,6 +15,7 @@ def empty_path(monkeypatch):
61 monkeypatch.setenv('PATH', '')
62
63
64+@pytest.mark.skip(reason='empty $PATH has no effect')
65 @pytest.mark.usefixtures('empty_path')
66 @pytest.mark.parametrize(
67 'func, args',
68diff --git a/tests/backend/test_viewing.py b/tests/backend/test_viewing.py
69index 59a23d5..f73f905 100644
70--- a/tests/backend/test_viewing.py
71+++ b/tests/backend/test_viewing.py
72@@ -26,6 +26,6 @@ def test_view_mocked(mocker, mock_platform, mock_popen, mock_startfile, quiet):
73 if mock_platform == 'darwin':
74 mock_popen.assert_called_once_with(['open', 'nonfilepath'], **kwargs)
75 elif mock_platform in ('linux', 'freebsd'):
76- mock_popen.assert_called_once_with(['xdg-open', 'nonfilepath'], **kwargs)
77+ mock_popen.assert_called_once_with(['@xdgutils@/bin/xdg-open', 'nonfilepath'], **kwargs)
78 else:
79 raise RuntimeError