dmenu-desktoponly-20240811-475d809.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
dmenu-desktoponly-20240811-475d809.diff (2786B)
---
1 From fada397413584331798a1a9b8703a10110450889 Mon Sep 17 00:00:00 2001
2 From: Robert Bilski <robert@rbilski.com>
3 Date: Sun, 4 Aug 2024 22:07:35 +0200
4 Subject: [PATCH] Handle .desktop files
5
6 Retrieve files from applications/ and open them using gtk-launch
7 ---
8 Makefile | 8 ++++++--
9 dmenu_path_desktop | 18 ++++++++++++++++++
10 dmenu_run_desktop | 2 ++
11 3 files changed, 26 insertions(+), 2 deletions(-)
12 create mode 100755 dmenu_path_desktop
13 create mode 100755 dmenu_run_desktop
14
15 diff --git a/Makefile b/Makefile
16 index 458c524..f157bb1 100644
17 --- a/Makefile
18 +++ b/Makefile
19 @@ -28,7 +28,7 @@ clean:
20 dist: clean
21 mkdir -p dmenu-$(VERSION)
22 cp LICENSE Makefile README arg.h config.def.h config.mk dmenu.1\
23 - drw.h util.h dmenu_path dmenu_run stest.1 $(SRC)\
24 + drw.h util.h dmenu_path dmenu_path_desktop dmenu_run dmenu_run_desktop stest.1 $(SRC)\
25 dmenu-$(VERSION)
26 tar -cf dmenu-$(VERSION).tar dmenu-$(VERSION)
27 gzip dmenu-$(VERSION).tar
28 @@ -36,10 +36,12 @@ dist: clean
29
30 install: all
31 mkdir -p $(DESTDIR)$(PREFIX)/bin
32 - cp -f dmenu dmenu_path dmenu_run stest $(DESTDIR)$(PREFIX)/bin
33 + cp -f dmenu dmenu_path dmenu_path_desktop dmenu_run dmenu_run_desktop stest $(DESTDIR)$(PREFIX)/bin
34 chmod 755 $(DESTDIR)$(PREFIX)/bin/dmenu
35 chmod 755 $(DESTDIR)$(PREFIX)/bin/dmenu_path
36 + chmod 755 $(DESTDIR)$(PREFIX)/bin/dmenu_path_desktop
37 chmod 755 $(DESTDIR)$(PREFIX)/bin/dmenu_run
38 + chmod 755 $(DESTDIR)$(PREFIX)/bin/dmenu_run_desktop
39 chmod 755 $(DESTDIR)$(PREFIX)/bin/stest
40 mkdir -p $(DESTDIR)$(MANPREFIX)/man1
41 sed "s/VERSION/$(VERSION)/g" < dmenu.1 > $(DESTDIR)$(MANPREFIX)/man1/dmenu.1
42 @@ -50,7 +52,9 @@ install: all
43 uninstall:
44 rm -f $(DESTDIR)$(PREFIX)/bin/dmenu\
45 $(DESTDIR)$(PREFIX)/bin/dmenu_path\
46 + $(DESTDIR)$(PREFIX)/bin/dmenu_path_desktop\
47 $(DESTDIR)$(PREFIX)/bin/dmenu_run\
48 + $(DESTDIR)$(PREFIX)/bin/dmenu_run_desktop\
49 $(DESTDIR)$(PREFIX)/bin/stest\
50 $(DESTDIR)$(MANPREFIX)/man1/dmenu.1\
51 $(DESTDIR)$(MANPREFIX)/man1/stest.1
52 diff --git a/dmenu_path_desktop b/dmenu_path_desktop
53 new file mode 100755
54 index 0000000..5ff74b3
55 --- /dev/null
56 +++ b/dmenu_path_desktop
57 @@ -0,0 +1,18 @@
58 +#!/bin/sh
59 +
60 +cachedir="${XDG_CACHE_HOME:-"$HOME/.cache"}"
61 +cache="$cachedir/dmenu_run_desktop"
62 +
63 +[ ! -e "$cachedir" ] && mkdir -p "$cachedir"
64 +
65 +dirs=""
66 +IFS=:
67 +for dir in "${XDG_DATA_DIRS:-"/usr/local/share:/usr/share"}"; do
68 + dirs="${dirs}:${dir}/applications"
69 +done;
70 +
71 +if stest -dqr -n "$cache" $PATH; then
72 + stest -fl $dirs | grep -v 'mimeinfo.cache' | sed 's/\.[^./]*$//' | sort -u | tee "$cache"
73 +else
74 + cat "$cache"
75 +fi
76 diff --git a/dmenu_run_desktop b/dmenu_run_desktop
77 new file mode 100755
78 index 0000000..a90aceb
79 --- /dev/null
80 +++ b/dmenu_run_desktop
81 @@ -0,0 +1,2 @@
82 +#!/bin/sh
83 +dmenu_path_desktop | dmenu "$@" | xargs gtk-launch &
84 --
85 2.46.0
86