diff options
| author | Christopher R. Nelson <christopher.nelson@languidnights.com> | 2026-07-21 11:44:41 -0400 |
|---|---|---|
| committer | Christopher R. Nelson <christopher.nelson@languidnights.com> | 2026-07-21 11:44:41 -0400 |
| commit | 5ff1fbe175af17fbb808c5ea942f465a932da3af (patch) | |
| tree | b6a26b4b7e896e5ed5d85a5003c4d176ed5c8e9e | |
| parent | 7e8472e1e2a0b39746ef86c041d56b92bab5a6b7 (diff) | |
Drop the "er-" prefix throughout: module/atom names, filenames,
socket paths, and docs. It was an implementation detail, not part
of the app's identity.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
| -rw-r--r-- | README.md | 20 | ||||
| -rwxr-xr-x | bin/xdg_pipe_menu_menu (renamed from bin/er_xdg_pipe_menu_menu) | 4 | ||||
| -rw-r--r-- | include/xdg_pipe_menu.hrl (renamed from include/er_xdg_pipe_menu.hrl) | 0 | ||||
| -rw-r--r-- | rebar.config | 2 | ||||
| -rw-r--r-- | src/xdg_pipe_menu.app.src (renamed from src/er_xdg_pipe_menu.app.src) | 4 | ||||
| -rw-r--r-- | src/xdg_pipe_menu_app.erl (renamed from src/er_xdg_pipe_menu_app.erl) | 6 | ||||
| -rw-r--r-- | src/xdg_pipe_menu_cache.erl (renamed from src/er_xdg_pipe_menu_cache.erl) | 12 | ||||
| -rw-r--r-- | src/xdg_pipe_menu_cli.erl (renamed from src/er_xdg_pipe_menu_cli.erl) | 6 | ||||
| -rw-r--r-- | src/xdg_pipe_menu_desktop_entry.erl (renamed from src/er_xdg_pipe_menu_desktop_entry.erl) | 4 | ||||
| -rw-r--r-- | src/xdg_pipe_menu_renderer.erl (renamed from src/er_xdg_pipe_menu_renderer.erl) | 4 | ||||
| -rw-r--r-- | src/xdg_pipe_menu_scanner.erl (renamed from src/er_xdg_pipe_menu_scanner.erl) | 2 | ||||
| -rw-r--r-- | src/xdg_pipe_menu_socket.erl (renamed from src/er_xdg_pipe_menu_socket.erl) | 12 | ||||
| -rw-r--r-- | src/xdg_pipe_menu_sup.erl (renamed from src/er_xdg_pipe_menu_sup.erl) | 10 | ||||
| -rw-r--r-- | src/xdg_pipe_menu_watcher.erl (renamed from src/er_xdg_pipe_menu_watcher.erl) | 16 | ||||
| -rw-r--r-- | test/xdg_pipe_menu_cache_tests.erl (renamed from test/er_xdg_pipe_menu_cache_tests.erl) | 20 | ||||
| -rw-r--r-- | test/xdg_pipe_menu_desktop_entry_tests.erl (renamed from test/er_xdg_pipe_menu_desktop_entry_tests.erl) | 44 | ||||
| -rw-r--r-- | test/xdg_pipe_menu_renderer_tests.erl (renamed from test/er_xdg_pipe_menu_renderer_tests.erl) | 26 | ||||
| -rw-r--r-- | test/xdg_pipe_menu_scanner_tests.erl (renamed from test/er_xdg_pipe_menu_scanner_tests.erl) | 18 | ||||
| -rw-r--r-- | test/xdg_pipe_menu_socket_tests.erl (renamed from test/er_xdg_pipe_menu_socket_tests.erl) | 14 | ||||
| -rw-r--r-- | test/xdg_pipe_menu_watcher_tests.erl (renamed from test/er_xdg_pipe_menu_watcher_tests.erl) | 14 |
20 files changed, 119 insertions, 119 deletions
@@ -1,4 +1,4 @@ -er_xdg_pipe_menu +xdg_pipe_menu ===== Openbox pipemenu generator from XDG .desktop files @@ -20,37 +20,37 @@ Running locally The app is a long-running daemon: it scans your XDG application directories once at startup, caches the rendered menu in memory, and serves it over a Unix domain socket at -`$XDG_RUNTIME_DIR/er_xdg_pipe_menu.sock` (falling back to -`/tmp/er_xdg_pipe_menu-$USER.sock` if `XDG_RUNTIME_DIR` isn't set), +`$XDG_RUNTIME_DIR/xdg_pipe_menu.sock` (falling back to +`/tmp/xdg_pipe_menu-$USER.sock` if `XDG_RUNTIME_DIR` isn't set), rebuilding the cache whenever a watched `.desktop` file changes. For a quick manual run (e.g. while developing): - $ rebar3 shell --eval "application:ensure_all_started(er_xdg_pipe_menu)." + $ rebar3 shell --eval "application:ensure_all_started(xdg_pipe_menu)." To have it start automatically with your session, add a systemd -user unit, e.g. `~/.config/systemd/user/er-xdg-pipe-menu.service`: +user unit, e.g. `~/.config/systemd/user/xdg-pipe-menu.service`: [Unit] Description=XDG pipe menu daemon [Service] - WorkingDirectory=/path/to/er-xdg-pipe-menu - ExecStart=/usr/bin/rebar3 shell --eval "application:ensure_all_started(er_xdg_pipe_menu)." + WorkingDirectory=/path/to/xdg-pipe-menu + ExecStart=/usr/bin/rebar3 shell --eval "application:ensure_all_started(xdg_pipe_menu)." Restart=on-failure [Install] WantedBy=default.target -then enable it with `systemctl --user enable --now er-xdg-pipe-menu`. +then enable it with `systemctl --user enable --now xdg-pipe-menu`. Openbox itself doesn't talk to the socket directly -- it invokes -`bin/er_xdg_pipe_menu_menu` as the pipe menu command, which connects +`bin/xdg_pipe_menu_menu` as the pipe menu command, which connects to the daemon's socket and prints whatever comes back (or, if the daemon isn't running, falls back to scanning/rendering inline so the menu still works). Point a pipe menu at it in `~/.config/openbox/menu.xml`: - <menu id="apps" label="Applications" execute="/path/to/er-xdg-pipe-menu/bin/er_xdg_pipe_menu_menu" /> + <menu id="apps" label="Applications" execute="/path/to/xdg-pipe-menu/bin/xdg_pipe_menu_menu" /> The script resolves its own location to find the compiled code, so it works from an absolute path as long as the repo's `_build` diff --git a/bin/er_xdg_pipe_menu_menu b/bin/xdg_pipe_menu_menu index 32a9bd9..a120a9f 100755 --- a/bin/er_xdg_pipe_menu_menu +++ b/bin/xdg_pipe_menu_menu @@ -3,12 +3,12 @@ %% Openbox pipe menu entry point. Tries the running daemon's Unix %% socket first; falls back to an inline scan+parse+render if it -%% isn't reachable. See src/er_xdg_pipe_menu_cli.erl for the logic -- +%% isn't reachable. See src/xdg_pipe_menu_cli.erl for the logic -- %% this script only wires up the code path to the compiled app. main(Args) -> add_code_paths(), - er_xdg_pipe_menu_cli:main(Args). + xdg_pipe_menu_cli:main(Args). add_code_paths() -> ScriptDir = filename:dirname(filename:absname(escript:script_name())), diff --git a/include/er_xdg_pipe_menu.hrl b/include/xdg_pipe_menu.hrl index 6d50b8d..6d50b8d 100644 --- a/include/er_xdg_pipe_menu.hrl +++ b/include/xdg_pipe_menu.hrl diff --git a/rebar.config b/rebar.config index 25a5a33..9071343 100644 --- a/rebar.config +++ b/rebar.config @@ -3,5 +3,5 @@ {shell, [ %% {config, "config/sys.config"}, - {apps, [er_xdg_pipe_menu]} + {apps, [xdg_pipe_menu]} ]}. diff --git a/src/er_xdg_pipe_menu.app.src b/src/xdg_pipe_menu.app.src index 4ba8103..0d0d7d6 100644 --- a/src/er_xdg_pipe_menu.app.src +++ b/src/xdg_pipe_menu.app.src @@ -1,8 +1,8 @@ -{application, er_xdg_pipe_menu, [ +{application, xdg_pipe_menu, [ {description, "Openbox pipemenu generator from XDG .desktop files"}, {vsn, "0.1.0"}, {registered, []}, - {mod, {er_xdg_pipe_menu_app, []}}, + {mod, {xdg_pipe_menu_app, []}}, {applications, [ kernel, stdlib, diff --git a/src/er_xdg_pipe_menu_app.erl b/src/xdg_pipe_menu_app.erl index 1880de8..7401a03 100644 --- a/src/er_xdg_pipe_menu_app.erl +++ b/src/xdg_pipe_menu_app.erl @@ -1,16 +1,16 @@ %%%------------------------------------------------------------------- -%% @doc er_xdg_pipe_menu public API +%% @doc xdg_pipe_menu public API %% @end %%%------------------------------------------------------------------- --module(er_xdg_pipe_menu_app). +-module(xdg_pipe_menu_app). -behaviour(application). -export([start/2, stop/1]). start(_StartType, _StartArgs) -> - er_xdg_pipe_menu_sup:start_link(). + xdg_pipe_menu_sup:start_link(). stop(_State) -> ok. diff --git a/src/er_xdg_pipe_menu_cache.erl b/src/xdg_pipe_menu_cache.erl index a71526e..0e10fea 100644 --- a/src/er_xdg_pipe_menu_cache.erl +++ b/src/xdg_pipe_menu_cache.erl @@ -8,7 +8,7 @@ %% @end %%%------------------------------------------------------------------- --module(er_xdg_pipe_menu_cache). +-module(xdg_pipe_menu_cache). -behaviour(gen_server). @@ -33,24 +33,24 @@ invalidate() -> %% no-daemon fallback, without going through the gen_server at all. -spec build([file:filename_all()]) -> binary(). build(Dirs) -> - Files = er_xdg_pipe_menu_scanner:find_desktop_files(Dirs), + Files = xdg_pipe_menu_scanner:find_desktop_files(Dirs), Entries = lists:filtermap(fun parse/1, Files), - er_xdg_pipe_menu_renderer:render(Entries). + xdg_pipe_menu_renderer:render(Entries). parse(File) -> - case er_xdg_pipe_menu_desktop_entry:parse_file(File) of + case xdg_pipe_menu_desktop_entry:parse_file(File) of {ok, Entry} -> {true, Entry}; {error, _} -> false end. init([]) -> - {ok, build(er_xdg_pipe_menu_scanner:data_dirs())}. + {ok, build(xdg_pipe_menu_scanner:data_dirs())}. handle_call(get_menu, _From, Menu) -> {reply, Menu, Menu}. handle_cast(invalidate, _Menu) -> - {noreply, build(er_xdg_pipe_menu_scanner:data_dirs())}. + {noreply, build(xdg_pipe_menu_scanner:data_dirs())}. handle_info(_Info, State) -> {noreply, State}. diff --git a/src/er_xdg_pipe_menu_cli.erl b/src/xdg_pipe_menu_cli.erl index 92ac715..aa2f98a 100644 --- a/src/er_xdg_pipe_menu_cli.erl +++ b/src/xdg_pipe_menu_cli.erl @@ -7,7 +7,7 @@ %% @end %%%------------------------------------------------------------------- --module(er_xdg_pipe_menu_cli). +-module(xdg_pipe_menu_cli). -export([main/1]). @@ -18,12 +18,12 @@ main(_Args) -> Menu = case from_daemon() of {ok, Bin} -> Bin; - error -> er_xdg_pipe_menu_cache:build(er_xdg_pipe_menu_scanner:data_dirs()) + error -> xdg_pipe_menu_cache:build(xdg_pipe_menu_scanner:data_dirs()) end, io:put_chars(Menu). from_daemon() -> - Path = er_xdg_pipe_menu_socket:socket_path(), + Path = xdg_pipe_menu_socket:socket_path(), case gen_tcp:connect({local, Path}, 0, [binary, {active, false}], ?CONNECT_TIMEOUT_MS) of {ok, Socket} -> Result = recv_all(Socket, []), diff --git a/src/er_xdg_pipe_menu_desktop_entry.erl b/src/xdg_pipe_menu_desktop_entry.erl index 9a71013..62adaf1 100644 --- a/src/er_xdg_pipe_menu_desktop_entry.erl +++ b/src/xdg_pipe_menu_desktop_entry.erl @@ -9,9 +9,9 @@ %% @end %%%------------------------------------------------------------------- --module(er_xdg_pipe_menu_desktop_entry). +-module(xdg_pipe_menu_desktop_entry). --include("er_xdg_pipe_menu.hrl"). +-include("xdg_pipe_menu.hrl"). -export([parse_file/1, parse/1]). diff --git a/src/er_xdg_pipe_menu_renderer.erl b/src/xdg_pipe_menu_renderer.erl index f89d868..c94fe83 100644 --- a/src/er_xdg_pipe_menu_renderer.erl +++ b/src/xdg_pipe_menu_renderer.erl @@ -12,9 +12,9 @@ %% @end %%%------------------------------------------------------------------- --module(er_xdg_pipe_menu_renderer). +-module(xdg_pipe_menu_renderer). --include("er_xdg_pipe_menu.hrl"). +-include("xdg_pipe_menu.hrl"). -export([render/1]). diff --git a/src/er_xdg_pipe_menu_scanner.erl b/src/xdg_pipe_menu_scanner.erl index 131b4f6..44c0a59 100644 --- a/src/er_xdg_pipe_menu_scanner.erl +++ b/src/xdg_pipe_menu_scanner.erl @@ -12,7 +12,7 @@ %% @end %%%------------------------------------------------------------------- --module(er_xdg_pipe_menu_scanner). +-module(xdg_pipe_menu_scanner). -export([data_dirs/0, find_desktop_files/0, find_desktop_files/1]). diff --git a/src/er_xdg_pipe_menu_socket.erl b/src/xdg_pipe_menu_socket.erl index 1bcca91..1bfde52 100644 --- a/src/er_xdg_pipe_menu_socket.erl +++ b/src/xdg_pipe_menu_socket.erl @@ -2,12 +2,12 @@ %% @doc Serves the cached menu over a Unix domain socket. %% %% Connecting to the socket *is* the request: each accepted connection -%% is handed the current `er_xdg_pipe_menu_cache:get_menu/0' binary and +%% is handed the current `xdg_pipe_menu_cache:get_menu/0' binary and %% closed. There is no request payload to parse. %% @end %%%------------------------------------------------------------------- --module(er_xdg_pipe_menu_socket). +-module(xdg_pipe_menu_socket). -export([start_link/0, socket_path/0]). -export([init/1]). @@ -18,15 +18,15 @@ start_link() -> -spec socket_path() -> file:filename_all(). socket_path() -> - case application:get_env(er_xdg_pipe_menu, socket_path) of + case application:get_env(xdg_pipe_menu, socket_path) of {ok, Path} -> Path; undefined -> default_socket_path() end. default_socket_path() -> case env("XDG_RUNTIME_DIR") of - undefined -> filename:join("/tmp", "er_xdg_pipe_menu-" ++ os:getenv("USER", "unknown") ++ ".sock"); - Dir -> filename:join(Dir, "er_xdg_pipe_menu.sock") + undefined -> filename:join("/tmp", "xdg_pipe_menu-" ++ os:getenv("USER", "unknown") ++ ".sock"); + Dir -> filename:join(Dir, "xdg_pipe_menu.sock") end. env(Name) -> @@ -62,5 +62,5 @@ accept_loop(Listen) -> end. serve(Socket) -> - gen_tcp:send(Socket, er_xdg_pipe_menu_cache:get_menu()), + gen_tcp:send(Socket, xdg_pipe_menu_cache:get_menu()), gen_tcp:close(Socket). diff --git a/src/er_xdg_pipe_menu_sup.erl b/src/xdg_pipe_menu_sup.erl index 1916c0b..a4d2828 100644 --- a/src/er_xdg_pipe_menu_sup.erl +++ b/src/xdg_pipe_menu_sup.erl @@ -1,9 +1,9 @@ %%%------------------------------------------------------------------- -%% @doc er_xdg_pipe_menu top level supervisor. +%% @doc xdg_pipe_menu top level supervisor. %% @end %%%------------------------------------------------------------------- --module(er_xdg_pipe_menu_sup). +-module(xdg_pipe_menu_sup). -behaviour(supervisor). @@ -32,9 +32,9 @@ init([]) -> period => 10 }, ChildSpecs = [ - #{id => er_xdg_pipe_menu_cache, start => {er_xdg_pipe_menu_cache, start_link, []}}, - #{id => er_xdg_pipe_menu_watcher, start => {er_xdg_pipe_menu_watcher, start_link, []}}, - #{id => er_xdg_pipe_menu_socket, start => {er_xdg_pipe_menu_socket, start_link, []}} + #{id => xdg_pipe_menu_cache, start => {xdg_pipe_menu_cache, start_link, []}}, + #{id => xdg_pipe_menu_watcher, start => {xdg_pipe_menu_watcher, start_link, []}}, + #{id => xdg_pipe_menu_socket, start => {xdg_pipe_menu_socket, start_link, []}} ], {ok, {SupFlags, ChildSpecs}}. diff --git a/src/er_xdg_pipe_menu_watcher.erl b/src/xdg_pipe_menu_watcher.erl index d8c407d..64fb2c6 100644 --- a/src/er_xdg_pipe_menu_watcher.erl +++ b/src/xdg_pipe_menu_watcher.erl @@ -2,7 +2,7 @@ %% @doc Watches the XDG application directories for changes. %% %% Starts one `fs' (native inotify) watch per existing directory -%% returned by `er_xdg_pipe_menu_scanner:data_dirs/0' and subscribes +%% returned by `xdg_pipe_menu_scanner:data_dirs/0' and subscribes %% to its file events. On any event, a debounce timer is (re)started; %% once it fires with no further events in the window, the menu cache %% is invalidated so the next request gets a freshly rebuilt menu. @@ -13,7 +13,7 @@ %% @end %%%------------------------------------------------------------------- --module(er_xdg_pipe_menu_watcher). +-module(xdg_pipe_menu_watcher). -behaviour(gen_server). @@ -28,12 +28,12 @@ start_link() -> init([]) -> warn_if_inotifywait_missing(), - Dirs = [D || D <- er_xdg_pipe_menu_scanner:data_dirs(), filelib:is_dir(D)], + Dirs = [D || D <- xdg_pipe_menu_scanner:data_dirs(), filelib:is_dir(D)], lists:foreach(fun watch/1, lists:zip(lists:seq(1, length(Dirs)), Dirs)), {ok, #{timer => undefined}}. watch({Index, Dir}) -> - Name = list_to_atom("er_xdg_pipe_menu_fs_" ++ integer_to_list(Index)), + Name = list_to_atom("xdg_pipe_menu_fs_" ++ integer_to_list(Index)), case fs:start_link(Name, Dir) of {ok, _Pid} -> fs:subscribe(Name); {error, Reason} -> log_watch_failure(Dir, Reason) @@ -46,7 +46,7 @@ warn_if_inotifywait_missing() -> case os:find_executable("inotifywait") of false -> error_logger:warning_msg( - "er_xdg_pipe_menu_watcher: 'inotifywait' not found on PATH " + "xdg_pipe_menu_watcher: 'inotifywait' not found on PATH " "(install inotify-tools) -- desktop file changes won't be " "picked up until the daemon is restarted~n", [] @@ -57,7 +57,7 @@ warn_if_inotifywait_missing() -> log_watch_failure(Dir, Reason) -> error_logger:warning_msg( - "er_xdg_pipe_menu_watcher: failed to watch ~p: ~p~n", [Dir, Reason] + "xdg_pipe_menu_watcher: failed to watch ~p: ~p~n", [Dir, Reason] ). handle_call(_Request, _From, State) -> @@ -69,7 +69,7 @@ handle_cast(_Msg, State) -> handle_info({_Pid, {fs, file_event}, {_Path, _Events}}, State) -> {noreply, reset_debounce(State)}; handle_info(debounce_fire, State) -> - er_xdg_pipe_menu_cache:invalidate(), + xdg_pipe_menu_cache:invalidate(), {noreply, State#{timer => undefined}}; handle_info(_Info, State) -> {noreply, State}. @@ -82,4 +82,4 @@ reset_debounce(#{timer := Timer} = State) -> State#{timer => erlang:send_after(debounce_ms(), self(), debounce_fire)}. debounce_ms() -> - application:get_env(er_xdg_pipe_menu, debounce_ms, ?DEFAULT_DEBOUNCE_MS). + application:get_env(xdg_pipe_menu, debounce_ms, ?DEFAULT_DEBOUNCE_MS). diff --git a/test/er_xdg_pipe_menu_cache_tests.erl b/test/xdg_pipe_menu_cache_tests.erl index a1d1440..4b9dfbb 100644 --- a/test/er_xdg_pipe_menu_cache_tests.erl +++ b/test/xdg_pipe_menu_cache_tests.erl @@ -1,18 +1,18 @@ --module(er_xdg_pipe_menu_cache_tests). +-module(xdg_pipe_menu_cache_tests). -include_lib("eunit/include/eunit.hrl"). build_renders_entries_from_dir_test() -> Dir = mk_tmp_dir(), write_desktop(Dir, "foo.desktop", "Foo", "foo"), - Menu = er_xdg_pipe_menu_cache:build([Dir]), + Menu = xdg_pipe_menu_cache:build([Dir]), ok = rm_rf(Dir), ?assert(binary:match(Menu, <<"Foo">>) =/= nomatch). build_groups_by_category_test() -> Dir = mk_tmp_dir(), write_desktop(Dir, "foo.desktop", "Foo", "foo", "Utility"), - Menu = er_xdg_pipe_menu_cache:build([Dir]), + Menu = xdg_pipe_menu_cache:build([Dir]), ok = rm_rf(Dir), ?assert(binary:match(Menu, <<"label=\"Utility\"">>) =/= nomatch). @@ -23,7 +23,7 @@ build_skips_hidden_entries_test() -> filename:join(Dir, "hidden.desktop"), <<"[Desktop Entry]\nName=Hidden\nExec=hidden\nNoDisplay=true\n">> ), - Menu = er_xdg_pipe_menu_cache:build([Dir]), + Menu = xdg_pipe_menu_cache:build([Dir]), ok = rm_rf(Dir), ?assert(binary:match(Menu, <<"Visible">>) =/= nomatch), ?assertEqual(nomatch, binary:match(Menu, <<"Hidden">>)). @@ -32,7 +32,7 @@ build_skips_unparseable_files_without_failing_test() -> Dir = mk_tmp_dir(), write_desktop(Dir, "good.desktop", "Good", "good"), ok = file:write_file(filename:join(Dir, "bad.desktop"), <<"[Desktop Entry]\nExec=bad\n">>), - Menu = er_xdg_pipe_menu_cache:build([Dir]), + Menu = xdg_pipe_menu_cache:build([Dir]), ok = rm_rf(Dir), ?assert(binary:match(Menu, <<"Good">>) =/= nomatch). @@ -41,7 +41,7 @@ build_skips_missing_dirs_test() -> <<"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<openbox_pipe_menu>\n" "</openbox_pipe_menu>\n">>, - er_xdg_pipe_menu_cache:build(["/does-not-exist"]) + xdg_pipe_menu_cache:build(["/does-not-exist"]) ). gen_server_serves_and_invalidates_test() -> @@ -52,13 +52,13 @@ gen_server_serves_and_invalidates_test() -> with_env( [{"XDG_DATA_HOME", Root}, {"XDG_DATA_DIRS", "/does-not-exist-eunit"}], fun() -> - {ok, Pid} = er_xdg_pipe_menu_cache:start_link(), - Menu1 = er_xdg_pipe_menu_cache:get_menu(), + {ok, Pid} = xdg_pipe_menu_cache:start_link(), + Menu1 = xdg_pipe_menu_cache:get_menu(), ?assert(binary:match(Menu1, <<"Foo">>) =/= nomatch), write_desktop(AppDir, "bar.desktop", "Bar", "bar"), - ok = er_xdg_pipe_menu_cache:invalidate(), - Menu2 = er_xdg_pipe_menu_cache:get_menu(), + ok = xdg_pipe_menu_cache:invalidate(), + Menu2 = xdg_pipe_menu_cache:get_menu(), stop(Pid), ?assert(binary:match(Menu2, <<"Bar">>) =/= nomatch) end diff --git a/test/er_xdg_pipe_menu_desktop_entry_tests.erl b/test/xdg_pipe_menu_desktop_entry_tests.erl index bcea976..a55cd67 100644 --- a/test/er_xdg_pipe_menu_desktop_entry_tests.erl +++ b/test/xdg_pipe_menu_desktop_entry_tests.erl @@ -1,7 +1,7 @@ --module(er_xdg_pipe_menu_desktop_entry_tests). +-module(xdg_pipe_menu_desktop_entry_tests). -include_lib("eunit/include/eunit.hrl"). --include("er_xdg_pipe_menu.hrl"). +-include("xdg_pipe_menu.hrl"). basic_entry_test() -> Bin = << @@ -15,7 +15,7 @@ basic_entry_test() -> {ok, #desktop_entry{ name = <<"Firefox">>, exec = <<"firefox">>, icon = <<"firefox">>, categories = [], hidden = false }}, - er_xdg_pipe_menu_desktop_entry:parse(Bin) + xdg_pipe_menu_desktop_entry:parse(Bin) ). icon_is_optional_test() -> @@ -26,7 +26,7 @@ icon_is_optional_test() -> >>, ?assertEqual( {ok, #desktop_entry{name = <<"Foo">>, exec = <<"foo">>, icon = undefined, categories = [], hidden = false}}, - er_xdg_pipe_menu_desktop_entry:parse(Bin) + xdg_pipe_menu_desktop_entry:parse(Bin) ). categories_are_split_on_semicolon_test() -> @@ -36,12 +36,12 @@ categories_are_split_on_semicolon_test() -> "Exec=foo\n" "Categories=Utility;Development;\n" >>, - {ok, Entry} = er_xdg_pipe_menu_desktop_entry:parse(Bin), + {ok, Entry} = xdg_pipe_menu_desktop_entry:parse(Bin), ?assertEqual([<<"Utility">>, <<"Development">>], Entry#desktop_entry.categories). categories_is_empty_list_when_absent_test() -> Bin = <<"[Desktop Entry]\nName=Foo\nExec=foo\n">>, - {ok, Entry} = er_xdg_pipe_menu_desktop_entry:parse(Bin), + {ok, Entry} = xdg_pipe_menu_desktop_entry:parse(Bin), ?assertEqual([], Entry#desktop_entry.categories). repeated_category_separators_are_ignored_test() -> @@ -51,16 +51,16 @@ repeated_category_separators_are_ignored_test() -> "Exec=foo\n" "Categories=Utility;;Development\n" >>, - {ok, Entry} = er_xdg_pipe_menu_desktop_entry:parse(Bin), + {ok, Entry} = xdg_pipe_menu_desktop_entry:parse(Bin), ?assertEqual([<<"Utility">>, <<"Development">>], Entry#desktop_entry.categories). missing_name_test() -> Bin = <<"[Desktop Entry]\nExec=foo\n">>, - ?assertEqual({error, missing_name}, er_xdg_pipe_menu_desktop_entry:parse(Bin)). + ?assertEqual({error, missing_name}, xdg_pipe_menu_desktop_entry:parse(Bin)). missing_exec_test() -> Bin = <<"[Desktop Entry]\nName=Foo\n">>, - ?assertEqual({error, missing_exec}, er_xdg_pipe_menu_desktop_entry:parse(Bin)). + ?assertEqual({error, missing_exec}, xdg_pipe_menu_desktop_entry:parse(Bin)). ignores_other_groups_test() -> Bin = << @@ -74,7 +74,7 @@ ignores_other_groups_test() -> >>, ?assertEqual( {ok, #desktop_entry{name = <<"Foo">>, exec = <<"foo">>, icon = undefined, categories = [], hidden = false}}, - er_xdg_pipe_menu_desktop_entry:parse(Bin) + xdg_pipe_menu_desktop_entry:parse(Bin) ). ignores_comments_and_blank_lines_test() -> @@ -89,7 +89,7 @@ ignores_comments_and_blank_lines_test() -> >>, ?assertEqual( {ok, #desktop_entry{name = <<"Foo">>, exec = <<"foo">>, icon = undefined, categories = [], hidden = false}}, - er_xdg_pipe_menu_desktop_entry:parse(Bin) + xdg_pipe_menu_desktop_entry:parse(Bin) ). strips_multiple_field_codes_test() -> @@ -100,7 +100,7 @@ strips_multiple_field_codes_test() -> >>, ?assertEqual( {ok, #desktop_entry{name = <<"Foo">>, exec = <<"foo --flag">>, icon = undefined, categories = [], hidden = false}}, - er_xdg_pipe_menu_desktop_entry:parse(Bin) + xdg_pipe_menu_desktop_entry:parse(Bin) ). literal_percent_is_unescaped_test() -> @@ -113,39 +113,39 @@ literal_percent_is_unescaped_test() -> {ok, #desktop_entry{ name = <<"Foo">>, exec = <<"foo --progress=%">>, icon = undefined, categories = [], hidden = false }}, - er_xdg_pipe_menu_desktop_entry:parse(Bin) + xdg_pipe_menu_desktop_entry:parse(Bin) ). unescapes_value_test() -> Bin = <<"[Desktop Entry]\nName=Foo\\sBar\nExec=foo\n">>, ?assertEqual( {ok, #desktop_entry{name = <<"Foo Bar">>, exec = <<"foo">>, icon = undefined, categories = [], hidden = false}}, - er_xdg_pipe_menu_desktop_entry:parse(Bin) + xdg_pipe_menu_desktop_entry:parse(Bin) ). no_display_is_hidden_test() -> Bin = <<"[Desktop Entry]\nName=Foo\nExec=foo\nNoDisplay=true\n">>, - {ok, Entry} = er_xdg_pipe_menu_desktop_entry:parse(Bin), + {ok, Entry} = xdg_pipe_menu_desktop_entry:parse(Bin), ?assertEqual(true, Entry#desktop_entry.hidden). hidden_key_is_hidden_test() -> Bin = <<"[Desktop Entry]\nName=Foo\nExec=foo\nHidden=true\n">>, - {ok, Entry} = er_xdg_pipe_menu_desktop_entry:parse(Bin), + {ok, Entry} = xdg_pipe_menu_desktop_entry:parse(Bin), ?assertEqual(true, Entry#desktop_entry.hidden). non_application_type_is_hidden_test() -> Bin = <<"[Desktop Entry]\nName=Foo\nExec=foo\nType=Link\n">>, - {ok, Entry} = er_xdg_pipe_menu_desktop_entry:parse(Bin), + {ok, Entry} = xdg_pipe_menu_desktop_entry:parse(Bin), ?assertEqual(true, Entry#desktop_entry.hidden). application_type_is_not_hidden_test() -> Bin = <<"[Desktop Entry]\nName=Foo\nExec=foo\nType=Application\n">>, - {ok, Entry} = er_xdg_pipe_menu_desktop_entry:parse(Bin), + {ok, Entry} = xdg_pipe_menu_desktop_entry:parse(Bin), ?assertEqual(false, Entry#desktop_entry.hidden). missing_type_is_not_hidden_test() -> Bin = <<"[Desktop Entry]\nName=Foo\nExec=foo\n">>, - {ok, Entry} = er_xdg_pipe_menu_desktop_entry:parse(Bin), + {ok, Entry} = xdg_pipe_menu_desktop_entry:parse(Bin), ?assertEqual(false, Entry#desktop_entry.hidden). false_values_are_not_hidden_test() -> @@ -157,13 +157,13 @@ false_values_are_not_hidden_test() -> "Hidden=false\n" "Type=Application\n" >>, - {ok, Entry} = er_xdg_pipe_menu_desktop_entry:parse(Bin), + {ok, Entry} = xdg_pipe_menu_desktop_entry:parse(Bin), ?assertEqual(false, Entry#desktop_entry.hidden). parse_file_test() -> Path = filename:join(test_tmp_dir(), "eunit-desktop-entry-test.desktop"), ok = file:write_file(Path, <<"[Desktop Entry]\nName=Foo\nExec=foo\n">>), - Result = er_xdg_pipe_menu_desktop_entry:parse_file(Path), + Result = xdg_pipe_menu_desktop_entry:parse_file(Path), ok = file:delete(Path), ?assertEqual( {ok, #desktop_entry{name = <<"Foo">>, exec = <<"foo">>, icon = undefined, categories = [], hidden = false}}, @@ -173,7 +173,7 @@ parse_file_test() -> parse_file_missing_test() -> ?assertEqual( {error, enoent}, - er_xdg_pipe_menu_desktop_entry:parse_file("/nonexistent/does-not-exist.desktop") + xdg_pipe_menu_desktop_entry:parse_file("/nonexistent/does-not-exist.desktop") ). test_tmp_dir() -> diff --git a/test/er_xdg_pipe_menu_renderer_tests.erl b/test/xdg_pipe_menu_renderer_tests.erl index 7273625..6d632cf 100644 --- a/test/er_xdg_pipe_menu_renderer_tests.erl +++ b/test/xdg_pipe_menu_renderer_tests.erl @@ -1,8 +1,8 @@ --module(er_xdg_pipe_menu_renderer_tests). +-module(xdg_pipe_menu_renderer_tests). -include_lib("eunit/include/eunit.hrl"). -include_lib("xmerl/include/xmerl.hrl"). --include("er_xdg_pipe_menu.hrl"). +-include("xdg_pipe_menu.hrl"). entry(Name, Exec, Icon) -> entry(Name, Exec, Icon, []). @@ -20,11 +20,11 @@ empty_list_renders_empty_menu_test() -> <<"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<openbox_pipe_menu>\n" "</openbox_pipe_menu>\n">>, - er_xdg_pipe_menu_renderer:render([]) + xdg_pipe_menu_renderer:render([]) ). single_entry_with_icon_test() -> - Rendered = er_xdg_pipe_menu_renderer:render([ + Rendered = xdg_pipe_menu_renderer:render([ entry(<<"Firefox">>, <<"firefox">>, <<"firefox">>, [<<"Network">>]) ]), ?assertEqual( @@ -42,7 +42,7 @@ single_entry_with_icon_test() -> ). entry_without_icon_omits_icon_attr_test() -> - Rendered = er_xdg_pipe_menu_renderer:render([ + Rendered = xdg_pipe_menu_renderer:render([ entry(<<"Foo">>, <<"foo">>, undefined, [<<"Utility">>]) ]), ?assertEqual( @@ -60,7 +60,7 @@ entry_without_icon_omits_icon_attr_test() -> ). entries_without_categories_go_in_other_submenu_test() -> - Rendered = er_xdg_pipe_menu_renderer:render([entry(<<"Foo">>, <<"foo">>, undefined)]), + Rendered = xdg_pipe_menu_renderer:render([entry(<<"Foo">>, <<"foo">>, undefined)]), ?assertEqual( <<"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<openbox_pipe_menu>\n" @@ -80,13 +80,13 @@ hidden_entries_are_dropped_test() -> entry(<<"Visible">>, <<"visible">>, undefined, [<<"Utility">>]), entry(<<"Invisible">>, <<"invisible">>, undefined, [<<"Utility">>], true) ], - Rendered = er_xdg_pipe_menu_renderer:render(Entries), + Rendered = xdg_pipe_menu_renderer:render(Entries), ?assertNot(binary:match(Rendered, <<"Invisible">>) =/= nomatch), ?assert(binary:match(Rendered, <<"Visible">>) =/= nomatch). hidden_entry_leaves_no_empty_submenu_test() -> Entries = [entry(<<"Invisible">>, <<"invisible">>, undefined, [<<"Utility">>], true)], - Rendered = er_xdg_pipe_menu_renderer:render(Entries), + Rendered = xdg_pipe_menu_renderer:render(Entries), ?assertNot(binary:match(Rendered, <<"Utility">>) =/= nomatch). entries_are_sorted_case_insensitively_within_a_submenu_test() -> @@ -95,7 +95,7 @@ entries_are_sorted_case_insensitively_within_a_submenu_test() -> entry(<<"Alpha">>, <<"alpha">>, undefined, [<<"Utility">>]), entry(<<"beta">>, <<"beta">>, undefined, [<<"Utility">>]) ], - Rendered = er_xdg_pipe_menu_renderer:render(Entries), + Rendered = xdg_pipe_menu_renderer:render(Entries), Positions = [ element(1, binary:match(Rendered, <<"label=\"Alpha\"">>)), element(1, binary:match(Rendered, <<"label=\"beta\"">>)), @@ -109,7 +109,7 @@ submenus_are_sorted_case_insensitively_test() -> entry(<<"Alpha App">>, <<"alpha">>, undefined, [<<"Alpha">>]), entry(<<"Beta App">>, <<"beta">>, undefined, [<<"beta">>]) ], - Rendered = er_xdg_pipe_menu_renderer:render(Entries), + Rendered = xdg_pipe_menu_renderer:render(Entries), Positions = [ element(1, binary:match(Rendered, <<"label=\"Alpha\"">>)), element(1, binary:match(Rendered, <<"label=\"beta\"">>)), @@ -119,7 +119,7 @@ submenus_are_sorted_case_insensitively_test() -> entry_with_multiple_categories_appears_in_each_submenu_test() -> Entries = [entry(<<"Foo">>, <<"foo">>, undefined, [<<"Utility">>, <<"Development">>])], - Rendered = er_xdg_pipe_menu_renderer:render(Entries), + Rendered = xdg_pipe_menu_renderer:render(Entries), {Doc, _Rest} = xmerl_scan:string(binary_to_list(Rendered)), Menus = [E || E = #xmlElement{name = menu} <- Doc#xmlElement.content], ?assertEqual([<<"Development">>, <<"Utility">>], lists:sort([menu_id(M) || M <- Menus])), @@ -133,7 +133,7 @@ escapes_special_characters_test() -> <<"icon\"&<>">>, [<<"Foo & <Bar>">>] ), - Rendered = er_xdg_pipe_menu_renderer:render([Entry]), + Rendered = xdg_pipe_menu_renderer:render([Entry]), ?assertEqual( <<"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" "<openbox_pipe_menu>\n" @@ -153,7 +153,7 @@ output_is_well_formed_xml_test() -> entry(<<"Firefox">>, <<"firefox">>, <<"firefox">>, [<<"Network">>]), entry(<<"Foo & Bar">>, <<"foo">>, undefined, [<<"Network">>]) ], - Rendered = er_xdg_pipe_menu_renderer:render(Entries), + Rendered = xdg_pipe_menu_renderer:render(Entries), {Doc, _Rest} = xmerl_scan:string(binary_to_list(Rendered)), ?assertEqual(openbox_pipe_menu, Doc#xmlElement.name), Menus = [E || E = #xmlElement{name = menu} <- Doc#xmlElement.content], diff --git a/test/er_xdg_pipe_menu_scanner_tests.erl b/test/xdg_pipe_menu_scanner_tests.erl index 3f93496..fa321ad 100644 --- a/test/er_xdg_pipe_menu_scanner_tests.erl +++ b/test/xdg_pipe_menu_scanner_tests.erl @@ -1,4 +1,4 @@ --module(er_xdg_pipe_menu_scanner_tests). +-module(xdg_pipe_menu_scanner_tests). -include_lib("eunit/include/eunit.hrl"). @@ -12,7 +12,7 @@ data_dirs_defaults_test() -> "/usr/local/share/applications", "/usr/share/applications" ], - er_xdg_pipe_menu_scanner:data_dirs() + xdg_pipe_menu_scanner:data_dirs() ) end ). @@ -27,7 +27,7 @@ data_dirs_honors_xdg_data_home_test() -> "/usr/local/share/applications", "/usr/share/applications" ], - er_xdg_pipe_menu_scanner:data_dirs() + xdg_pipe_menu_scanner:data_dirs() ) end ). @@ -46,7 +46,7 @@ data_dirs_honors_xdg_data_dirs_test() -> "/opt/flatpak/share/applications", "/var/lib/flatpak/exports/share/applications" ], - er_xdg_pipe_menu_scanner:data_dirs() + xdg_pipe_menu_scanner:data_dirs() ) end ). @@ -61,7 +61,7 @@ data_dirs_treats_empty_as_unset_test() -> "/usr/local/share/applications", "/usr/share/applications" ], - er_xdg_pipe_menu_scanner:data_dirs() + xdg_pipe_menu_scanner:data_dirs() ) end ). @@ -72,7 +72,7 @@ data_dirs_ignores_empty_segments_in_xdg_data_dirs_test() -> fun() -> ?assertEqual( ["/home/testuser/.local/share/applications", "/a/applications", "/b/applications"], - er_xdg_pipe_menu_scanner:data_dirs() + xdg_pipe_menu_scanner:data_dirs() ) end ). @@ -83,7 +83,7 @@ data_dirs_skips_data_home_without_xdg_data_home_or_home_test() -> fun() -> ?assertEqual( ["/usr/local/share/applications", "/usr/share/applications"], - er_xdg_pipe_menu_scanner:data_dirs() + xdg_pipe_menu_scanner:data_dirs() ) end ). @@ -96,7 +96,7 @@ find_desktop_files_recurses_and_skips_missing_dirs_test() -> ok = file:write_file(filename:join(SubDir, "nested.desktop"), <<"[Desktop Entry]\n">>), ok = file:write_file(filename:join(Root, "not-a-desktop-file.txt"), <<"ignore me">>), Missing = filename:join(Root, "does-not-exist"), - Found = er_xdg_pipe_menu_scanner:find_desktop_files([Root, Missing]), + Found = xdg_pipe_menu_scanner:find_desktop_files([Root, Missing]), ok = rm_rf(Root), ?assertEqual( lists:sort([filename:join(Root, "top.desktop"), filename:join(SubDir, "nested.desktop")]), @@ -104,7 +104,7 @@ find_desktop_files_recurses_and_skips_missing_dirs_test() -> ). find_desktop_files_empty_for_no_dirs_test() -> - ?assertEqual([], er_xdg_pipe_menu_scanner:find_desktop_files([])). + ?assertEqual([], xdg_pipe_menu_scanner:find_desktop_files([])). %% -- helpers ---------------------------------------------------------------- diff --git a/test/er_xdg_pipe_menu_socket_tests.erl b/test/xdg_pipe_menu_socket_tests.erl index 08a4b56..91cd3e4 100644 --- a/test/er_xdg_pipe_menu_socket_tests.erl +++ b/test/xdg_pipe_menu_socket_tests.erl @@ -1,4 +1,4 @@ --module(er_xdg_pipe_menu_socket_tests). +-module(xdg_pipe_menu_socket_tests). -include_lib("eunit/include/eunit.hrl"). @@ -10,19 +10,19 @@ serves_the_cached_menu_test() -> SockPath = filename:join( test_tmp_dir(), "eunit-socket-" ++ integer_to_list(erlang:unique_integer([positive])) ), - PrevSockPath = application:get_env(er_xdg_pipe_menu, socket_path), - application:set_env(er_xdg_pipe_menu, socket_path, SockPath), + PrevSockPath = application:get_env(xdg_pipe_menu, socket_path), + application:set_env(xdg_pipe_menu, socket_path, SockPath), with_env( [{"XDG_DATA_HOME", Root}, {"XDG_DATA_DIRS", "/does-not-exist-eunit"}], fun() -> - {ok, CachePid} = er_xdg_pipe_menu_cache:start_link(), - {ok, SocketPid} = er_xdg_pipe_menu_socket:start_link(), + {ok, CachePid} = xdg_pipe_menu_cache:start_link(), + {ok, SocketPid} = xdg_pipe_menu_socket:start_link(), {ok, Conn} = gen_tcp:connect({local, SockPath}, 0, [binary, {active, false}], 1000), Received = recv_all(Conn, []), gen_tcp:close(Conn), - Expected = er_xdg_pipe_menu_cache:get_menu(), + Expected = xdg_pipe_menu_cache:get_menu(), stop(SocketPid), stop(CachePid), ?assertEqual(Expected, Received), @@ -31,7 +31,7 @@ serves_the_cached_menu_test() -> ), _ = file:delete(SockPath), ok = rm_rf(Root), - restore_env(er_xdg_pipe_menu, socket_path, PrevSockPath). + restore_env(xdg_pipe_menu, socket_path, PrevSockPath). %% -- helpers ---------------------------------------------------------------- diff --git a/test/er_xdg_pipe_menu_watcher_tests.erl b/test/xdg_pipe_menu_watcher_tests.erl index 6754f24..cca5cc2 100644 --- a/test/er_xdg_pipe_menu_watcher_tests.erl +++ b/test/xdg_pipe_menu_watcher_tests.erl @@ -1,4 +1,4 @@ --module(er_xdg_pipe_menu_watcher_tests). +-module(xdg_pipe_menu_watcher_tests). -include_lib("eunit/include/eunit.hrl"). @@ -11,26 +11,26 @@ debounced_event_invalidates_cache_test() -> AppDir = filename:join(Root, "applications"), ok = file:make_dir(AppDir), write_desktop(AppDir, "foo.desktop", "Foo", "foo"), - PrevDebounce = application:get_env(er_xdg_pipe_menu, debounce_ms), - application:set_env(er_xdg_pipe_menu, debounce_ms, 20), + PrevDebounce = application:get_env(xdg_pipe_menu, debounce_ms), + application:set_env(xdg_pipe_menu, debounce_ms, 20), with_env( [{"XDG_DATA_HOME", Root}, {"XDG_DATA_DIRS", "/does-not-exist-eunit"}], fun() -> - {ok, CachePid} = er_xdg_pipe_menu_cache:start_link(), - {ok, WatcherPid} = er_xdg_pipe_menu_watcher:start_link(), + {ok, CachePid} = xdg_pipe_menu_cache:start_link(), + {ok, WatcherPid} = xdg_pipe_menu_watcher:start_link(), write_desktop(AppDir, "bar.desktop", "Bar", "bar"), WatcherPid ! {self(), {fs, file_event}, {"dummy", [modified]}}, timer:sleep(100), - Menu = er_xdg_pipe_menu_cache:get_menu(), + Menu = xdg_pipe_menu_cache:get_menu(), stop(WatcherPid), stop(CachePid), ?assert(binary:match(Menu, <<"Bar">>) =/= nomatch) end ), ok = rm_rf(Root), - restore_env(er_xdg_pipe_menu, debounce_ms, PrevDebounce). + restore_env(xdg_pipe_menu, debounce_ms, PrevDebounce). %% -- helpers ---------------------------------------------------------------- |
