aboutsummaryrefslogtreecommitdiff
path: root/src/er_xdg_pipe_menu_cli.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/er_xdg_pipe_menu_cli.erl')
-rw-r--r--src/er_xdg_pipe_menu_cli.erl41
1 files changed, 0 insertions, 41 deletions
diff --git a/src/er_xdg_pipe_menu_cli.erl b/src/er_xdg_pipe_menu_cli.erl
deleted file mode 100644
index 92ac715..0000000
--- a/src/er_xdg_pipe_menu_cli.erl
+++ /dev/null
@@ -1,41 +0,0 @@
-%%%-------------------------------------------------------------------
-%% @doc Entry point invoked by Openbox as the pipe menu command.
-%%
-%% Tries the running daemon's Unix socket first for an instant,
-%% pre-rendered response; if the daemon isn't reachable, falls back to
-%% scanning, parsing and rendering inline so the menu still works.
-%% @end
-%%%-------------------------------------------------------------------
-
--module(er_xdg_pipe_menu_cli).
-
--export([main/1]).
-
--define(CONNECT_TIMEOUT_MS, 200).
--define(RECV_TIMEOUT_MS, 1000).
-
-main(_Args) ->
- Menu =
- case from_daemon() of
- {ok, Bin} -> Bin;
- error -> er_xdg_pipe_menu_cache:build(er_xdg_pipe_menu_scanner:data_dirs())
- end,
- io:put_chars(Menu).
-
-from_daemon() ->
- Path = er_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, []),
- gen_tcp:close(Socket),
- Result;
- {error, _Reason} ->
- error
- end.
-
-recv_all(Socket, Acc) ->
- case gen_tcp:recv(Socket, 0, ?RECV_TIMEOUT_MS) of
- {ok, Data} -> recv_all(Socket, [Data | Acc]);
- {error, closed} -> {ok, iolist_to_binary(lists:reverse(Acc))};
- {error, _Reason} -> error
- end.