Subject: [PATCH] Add tool-bar icons to package-menu-mode

From: Elijah Gabe Pérez <[email-masked]>
Date: Mon, 26 May 2025 21:04:25 -0600

>From e22c6a89de354e4ef0328609b409b8ec08f52671 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?El=C3=ADas=20Gabriel=20P=C3=A9rez?= <[email-masked]>
Date: Sun, 25 May 2025 09:55:03 -0600
Subject: [PATCH] Add tool-bar icons to package-menu-mode (bug#78601)

* etc/images/package-menu/README:
* etc/images/package-menu/package-delete.xpm:
* etc/images/package-menu/package-execute.xpm:
* etc/images/package-menu/package-info.xpm:
* etc/images/package-menu/package-install.xpm:
* etc/images/package-menu/package-unmark.xpm:
* etc/images/package-menu/package-url.xpm:
* etc/images/package-menu/package-delete.pbm:
* etc/images/package-menu/package-execute.pbm:
* etc/images/package-menu/package-info.pbm:
* etc/images/package-menu/package-install.pbm:
* etc/images/package-menu/package-unmark.pbm:
* etc/images/package-menu/package-url.pbm: New files
* lisp/emacs-lisp/package.el (package-menu--tool-bar-map): New
variable.
(package-menu-mode): Set package-menu tool-bar-map.
---
 etc/images/package-menu/README              |  11 ++
 etc/images/package-menu/package-delete.pbm  | Bin 0 -> 125 bytes
 etc/images/package-menu/package-delete.xpm  | 115 +++++++++++
 etc/images/package-menu/package-execute.pbm | Bin 0 -> 125 bytes
 etc/images/package-menu/package-execute.xpm |  68 +++++++
 etc/images/package-menu/package-info.pbm    | Bin 0 -> 125 bytes
 etc/images/package-menu/package-info.xpm    |  90 +++++++++
 etc/images/package-menu/package-install.pbm | Bin 0 -> 125 bytes
 etc/images/package-menu/package-install.xpm | 120 ++++++++++++
 etc/images/package-menu/package-unmark.pbm  | Bin 0 -> 125 bytes
 etc/images/package-menu/package-unmark.xpm  | 100 ++++++++++
 etc/images/package-menu/package-url.pbm     | Bin 0 -> 125 bytes
 etc/images/package-menu/package-url.xpm     | 200 ++++++++++++++++++++
 lisp/emacs-lisp/package.el                  |  34 ++++
 14 files changed, 738 insertions(+)
 create mode 100644 etc/images/package-menu/README
 create mode 100644 etc/images/package-menu/package-delete.pbm
 create mode 100644 etc/images/package-menu/package-delete.xpm
 create mode 100644 etc/images/package-menu/package-execute.pbm
 create mode 100644 etc/images/package-menu/package-execute.xpm
 create mode 100644 etc/images/package-menu/package-info.pbm
 create mode 100644 etc/images/package-menu/package-info.xpm
 create mode 100644 etc/images/package-menu/package-install.pbm
 create mode 100644 etc/images/package-menu/package-install.xpm
 create mode 100644 etc/images/package-menu/package-unmark.pbm
 create mode 100644 etc/images/package-menu/package-unmark.xpm
 create mode 100644 etc/images/package-menu/package-url.pbm
 create mode 100644 etc/images/package-menu/package-url.xpm

diff --git a/etc/images/package-menu/README b/etc/images/package-menu/README
new file mode 100644
index 00000000000..eed0a110cf5
--- /dev/null
+++ b/etc/images/package-menu/README
@@ -0,0 +1,11 @@
+COPYRIGHT AND LICENSE INFORMATION FOR IMAGE FILES -*- coding: utf-8 -*-
+
+The following icons were created by Elías Gabriel Pérez <[email-masked]>
+based on package-x-generic icon from GNOME 2.x.
+Copyright (C) 2025 Free Software Foundation, Inc.
+License: GNU General Public License version 3 or later (see COPYING)
+
+  package-delete.pbm package-delete.xpm package-execute.pbm
+  package-execute.xpm package-info.pbm package-info.xpm
+  package-install.pbm package-install.xpm package-unmark.pbm
+  package-unmark.xpm package-url.pbm package-url.xpm
diff --git a/etc/images/package-menu/package-delete.pbm b/etc/images/package-menu/package-delete.pbm
new file mode 100644
index 0000000000000000000000000000000000000000..bf071c0f4e1893a88f849689347863ed869d6546
GIT binary patch
literal 125
zcmWGA;Zjy`E=o--Nlj5ms#I|I^bJrbOD!tS%+FIW)-%vEQ3&w!RVc_QP1nuL<1#W)
zFf!p{V5neV`@_KckAeL^13NPVJ2U_P{~V0}IN1Jhuvc)fPvBq>z=in#e_((C0O+e4
AqW}N^

literal 0
HcmV?d00001

diff --git a/etc/images/package-menu/package-delete.xpm b/etc/images/package-menu/package-delete.xpm
new file mode 100644
index 00000000000..a8b2cbacf8e
--- /dev/null
+++ b/etc/images/package-menu/package-delete.xpm
@@ -0,0 +1,115 @@
+/* XPM */
+static char *dummy[]={
+"24 24 88 2",
+"Qt c None",
+".a c None",
+".b c None",
+".# c None",
+".D c #6a4206",
+".E c #6c470a",
+"#v c #764800",
+"#u c #7d510a",
+".c c #813f40",
+".B c #825307",
+".A c #85570c",
+".d c #8f5902",
+".y c #9a691a",
+".x c #9b6b1c",
+".K c #b28235",
+".I c #b2833b",
+".J c #b38338",
+".e c #b93e3e",
+".L c #bd8a3e",
+".C c #c29147",
+".s c #c2a473",
+".M c #c89548",
+".X c #cf9640",
+".W c #cf9641",
+".Y c #cf9740",
+".Z c #cf9741",
+".z c #cfa462",
+".Q c #d0b78b",
+"#b c #d19b4a",
+".2 c #d29a46",
+".0 c #d29b46",
+".3 c #d29b47",
+".V c #d29e50",
+".T c #d29e51",
+".U c #d29f51",
+".S c #d29f52",
+".1 c #d39b46",
+"#k c #d4a04e",
+".w c #d4b078",
+".5 c #d59f4c",
+".H c #d5ae74",
+".6 c #d69f4c",
+"#n c #d7a354",
+".4 c #d7b074",
+"#a c #d8a352",
+"#o c #d8a354",
+".8 c #d8a452",
+"## c #d9a351",
+".9 c #d9a352",
+"#. c #d9a452",
+"#c c #dab47b",
+".P c #dbc6a6",
+"#i c #dca757",
+"#h c #dca758",
+"#e c #dca857",
+"#g c #dca858",
+"#j c #dda757",
+"#f c #dda857",
+".7 c #ddb77e",
+".O c #ddccaf",
+".F c #dfb677",
+"#l c #dfbb83",
+".t c #e1bb81",
+".N c #e1c9a3",
+"#d c #e3be87",
+"#p c #e3c08a",
+"#t c #e5cba0",
+".R c #e5ceab",
+".f c #e6d4b7",
+".r c #e7d7be",
+"#m c #e8c792",
+".G c #e8c797",
+".u c #ebdbc2",
+"#s c #eccd9d",
+"#r c #eccd9e",
+".m c #ecfaeb",
+"#q c #eed5ac",
+".v c #efe4d2",
+".g c #f0fbf0",
+".q c #f5efe4",
+".j c #f8fdf8",
+".o c #f9fdf8",
+".n c #f9fdf9",
+".i c #fafefa",
+".h c #fcfefc",
+".p c #fdfefd",
+".l c #fefefe",
+".k c #ffffff",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.a.b.c.c.c.cQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.d.dQt.c.e.e.e.e.cQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.d.f.c.e.e.e.e.e.e.cQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.d.c.e.e.e.e.e.e.e.e.c",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.d.c.e.g.h.i.j.k.l.e.c",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.d.c.e.m.n.i.o.k.p.e.c",
+"QtQtQtQt.d.d.d.d.d.d.d.d.d.d.c.e.e.e.e.e.e.e.e.c",
+"QtQtQtQt.d.q.q.q.q.q.q.q.r.s.t.c.e.e.e.e.e.e.cQt",
+"QtQtQtQt.d.q.u.u.u.u.u.v.w.x.y.t.c.e.e.e.e.cQtQt",
+"QtQtQtQt.d.q.u.u.u.u.u.v.z.A.B.A.t.c.c.c.cQtQtQt",
+"QtQtQtQt.d.u.q.q.q.q.q.q.C.D.D.E.E.F.G.dQtQtQtQt",
+"QtQtQtQt.d.H.I.J.K.L.L.M.N.O.P.P.P.Q.R.dQtQtQtQt",
+"QtQtQtQt.d.H.S.T.U.V.V.V.V.V.V.V.V.V.H.dQtQtQtQt",
+"QtQtQtQt.d.H.W.X.W.X.X.Y.Y.Z.Y.Z.X.Z.H.dQtQtQtQt",
+"QtQtQtQt.d.H.0.1.1.0.2.3.0.2.0.3.0.3.H.dQtQtQtQt",
+"QtQtQtQt.d.4.5.6.6.6.6.5.6.6.6.5.6.5.H.dQtQtQtQt",
+"QtQtQtQt.d.7.8.9#.#.#.#.##.8#a##.9#b#c.dQtQtQtQt",
+"QtQtQtQt.d#d#e#f#g#e#f#g#e#g#h#i#j#k#l.dQtQtQtQt",
+"QtQtQtQt.d#m#n#n#o#n#o#n#n#o#n#o#n#o#p.dQtQtQtQt",
+"QtQtQtQt.d#q#r#r#r#r#r#r#r#r#r#r#s#r#t.dQtQtQtQt",
+"QtQtQtQt#u.d.d.d.d.d.d.d.d.d.d.d.d.d.d#vQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"};
diff --git a/etc/images/package-menu/package-execute.pbm b/etc/images/package-menu/package-execute.pbm
new file mode 100644
index 0000000000000000000000000000000000000000..da0e6a7172792454dd72a4f63c01dab12c06bd05
GIT binary patch
literal 125
zcmWGA;Zjy`E=o--Nlj5ms#I|I^bJrbOD!tS%+FIW)-%vEQ3&w!RVc_QP1nuL<1#W)
zFf!p{zycH)7z!8|7BDk9Ff}<ax->9qHZV+NU}$DwaAII^V_;BWV9;S;kU-H10Hfy=
Aod5s;

literal 0
HcmV?d00001

diff --git a/etc/images/package-menu/package-execute.xpm b/etc/images/package-menu/package-execute.xpm
new file mode 100644
index 00000000000..d011aab5424
--- /dev/null
+++ b/etc/images/package-menu/package-execute.xpm
@@ -0,0 +1,68 @@
+/* XPM */
+static char *dummy[]={
+"24 24 41 1",
+". c None",
+"i c #002a0a",
+"a c #00390d",
+"# c #003c0e",
+"c c #004310",
+"o c #005213",
+"j c #133f13",
+"e c #1a3b1a",
+"l c #2d392d",
+"L c #485c46",
+"t c #587055",
+"v c #5b9159",
+"y c #5d905b",
+"D c #63a261",
+"x c #67af67",
+"C c #67af68",
+"H c #6b8868",
+"K c #6ba368",
+"q c #6d9d6c",
+"n c #6fae6e",
+"s c #6faf6f",
+"h c #70a770",
+"G c #75af74",
+"k c #77a676",
+"J c #7db17b",
+"F c #82b881",
+"M c #89ba88",
+"f c #8aba88",
+"b c #8bbb8c",
+"A c #93be92",
+"I c #9dc39d",
+"z c #9fc59d",
+"p c #a8cba6",
+"d c #abd0ac",
+"g c #b4d5b4",
+"B c #b5d1b5",
+"u c #b8d6b8",
+"E c #bbd6ba",
+"m c #cbdfcb",
+"r c #d0e4d0",
+"w c #d4e4d4",
+"........................",
+"........................",
+"........................",
+"........................",
+"........................",
+"........................",
+"..................#.....",
+".................###....",
+"................ab#.....",
+"......cc.......ade......",
+"......cfc.....aghi......",
+".......jkc...lmni.......",
+".......opqc.crsti.......",
+"........ouvcwxyi........",
+"........ozABCDti........",
+".........oEFGHi.........",
+".........oIJKLi.........",
+"..........oMHi..........",
+"..........oHLi..........",
+"...........ii...........",
+"........................",
+"........................",
+"........................",
+"........................"};
diff --git a/etc/images/package-menu/package-info.pbm b/etc/images/package-menu/package-info.pbm
new file mode 100644
index 0000000000000000000000000000000000000000..cab934785585620c61ab16ecea0e1e8cc33754a1
GIT binary patch
literal 125
zcmWGA;Zjy`E=o--Nlj5ms#I|I^bJrbOD!tS%+FIW)-%vEQ3&w!RVc_QP1nuL<1#W)
zFf!p{U|?WiV_;xqU|?xrU`b$LG2s6rz`-EE!6v}LF2KRS078rpIG8_hFdJ|%7;rE=
S;9xia7C*p$-~dQF7ytn9iWmO?

literal 0
HcmV?d00001

diff --git a/etc/images/package-menu/package-info.xpm b/etc/images/package-menu/package-info.xpm
new file mode 100644
index 00000000000..a1b134da053
--- /dev/null
+++ b/etc/images/package-menu/package-info.xpm
@@ -0,0 +1,90 @@
+/* XPM */
+static char *dummy[]={
+"24 24 63 1",
+". c None",
+"8 c #7d510a",
+"z c #825307",
+"y c #85570c",
+"# c #8f5902",
+"b c #97610b",
+"v c #9a691a",
+"u c #9b6b1c",
+"F c #b28235",
+"D c #b2833b",
+"E c #b38338",
+"h c #b47e2b",
+"f c #b98330",
+"G c #bd8a3e",
+"e c #be8835",
+"B c #bf7200",
+"A c #c29147",
+"n c #c2a473",
+"i c #c48e3b",
+"H c #c89548",
+"g c #ca9442",
+"P c #cf9640",
+"O c #cf9641",
+"x c #cfa462",
+"p c #d19b4a",
+"Q c #d29b46",
+"M c #d29e50",
+"K c #d29e51",
+"L c #d29f51",
+"J c #d29f52",
+"R c #d39b46",
+"t c #d4b078",
+"T c #d59f4c",
+"C c #d5ae74",
+"U c #d69f4c",
+"d c #d6b584",
+"3 c #d7a354",
+"S c #d7b074",
+"4 c #d8a354",
+"W c #d8a452",
+"j c #d9a352",
+"X c #d9a452",
+"Z c #dca857",
+"1 c #dca858",
+"0 c #dda857",
+"V c #ddb77e",
+"w c #dfbc88",
+"o c #e1bb81",
+"Y c #e3be87",
+"5 c #e58900",
+"k c #e6d2b5",
+"a c #e6d4b7",
+"m c #e7d7be",
+"2 c #e8c792",
+"q c #e8c797",
+"c c #e9cc9f",
+"r c #ebdbc2",
+"7 c #eccd9e",
+"6 c #eed5ac",
+"s c #efe4d2",
+"I c #f59b14",
+"l c #f5efe4",
+"N c #ffffff",
+"........................",
+".............##.........",
+".............#ab........",
+".............#cdb.......",
+".............#cedb#.....",
+".............#cfgdb#....",
+"....##########chijk#....",
+"....#lllllllmnogipq#....",
+"....#lrrrrrstuvoppw#....",
+"....#lrrrrrsxyzyojq#....",
+"....#rllllllABBBBBBBB...",
+"....#CDEFGGHBIIIIIIIIB..",
+"....#CJKLMMBIIINNNNIIIB.",
+"....#COPOPBIIINNNNNNIIIB",
+"....#CQRRQBIIINNIINNIIIB",
+"....#STUUUBIIIIIIINNIIIB",
+"....#VWjXXBIIIIINNNIIIIB",
+"....#YZ01ZBIIIIINNIIIIIB",
+"....#23343BIIIII55555IIB",
+"....#67777BIIII5NN5555IB",
+"....8#####BIII55NN55555B",
+"...........B5555555555B.",
+"............B55555555B..",
+".............BBBBBBBB..."};
diff --git a/etc/images/package-menu/package-install.pbm b/etc/images/package-menu/package-install.pbm
new file mode 100644
index 0000000000000000000000000000000000000000..6c015cd58b0595d0c0c4b6acc861fd8698231082
GIT binary patch
literal 125
zcmWGA;Zjy`E=o--Nlj5ms#I|I^bJrbOD!tS%+FIW)-%vEQ3&w!RVc_QP1nuL<1#W)
zFf!p{V5neVYhhqDVqi05VEfC!_Lu*kAqS%o2U`mVdj$vk1P%rPT!{bw2L>1b0BkK7
AZvX%Q

literal 0
HcmV?d00001

diff --git a/etc/images/package-menu/package-install.xpm b/etc/images/package-menu/package-install.xpm
new file mode 100644
index 00000000000..4e8a5dd2b7c
--- /dev/null
+++ b/etc/images/package-menu/package-install.xpm
@@ -0,0 +1,120 @@
+/* XPM */
+static char *dummy[]={
+"24 24 93 2",
+"Qt c None",
+".a c None",
+".b c None",
+".# c None",
+".c c #346a33",
+".e c #5bb159",
+".I c #6a4206",
+".J c #6c470a",
+"#A c #764800",
+"#z c #7d510a",
+".G c #825307",
+".F c #85570c",
+".d c #8f5902",
+".D c #9a691a",
+".C c #9b6b1c",
+".P c #b28235",
+".N c #b2833b",
+".O c #b38338",
+".Q c #bd8a3e",
+".H c #c29147",
+".w c #c2a473",
+".R c #c89548",
+".2 c #cf9640",
+".1 c #cf9641",
+".3 c #cf9740",
+".4 c #cf9741",
+".E c #cfa462",
+".V c #d0b78b",
+"#g c #d19b4a",
+".7 c #d29a46",
+".5 c #d29b46",
+".8 c #d29b47",
+".0 c #d29e50",
+".Y c #d29e51",
+".Z c #d29f51",
+".X c #d29f52",
+".6 c #d39b46",
+"#p c #d4a04e",
+".B c #d4b078",
+"#. c #d59f4c",
+".M c #d5ae74",
+"## c #d69f4c",
+"#s c #d7a354",
+".9 c #d7b074",
+"#f c #d8a352",
+"#t c #d8a354",
+"#b c #d8a452",
+"#e c #d9a351",
+"#c c #d9a352",
+"#d c #d9a452",
+"#h c #dab47b",
+".U c #dbc6a6",
+"#n c #dca757",
+"#m c #dca758",
+"#j c #dca857",
+"#l c #dca858",
+"#o c #dda757",
+"#k c #dda857",
+"#a c #ddb77e",
+".T c #ddccaf",
+".K c #dfb677",
+"#q c #dfbb83",
+".x c #e1bb81",
+".S c #e1c9a3",
+"#i c #e3be87",
+"#u c #e3c08a",
+"#y c #e5cba0",
+".W c #e5ceab",
+".f c #e6d4b7",
+".v c #e7d7be",
+"#r c #e8c792",
+".L c #e8c797",
+".z c #ebdbc2",
+".g c #ebf9ea",
+"#x c #eccd9d",
+"#w c #eccd9e",
+".p c #ecfaeb",
+".y c #ecfaec",
+"#v c #eed5ac",
+".A c #efe4d2",
+".k c #f0fbf0",
+".t c #f3fcf3",
+".u c #f5efe4",
+".h c #f5fcf5",
+".i c #f8fdf8",
+".r c #f9fdf8",
+".q c #f9fdf9",
+".m c #fafefa",
+".j c #fbfefb",
+".l c #fcfefc",
+".s c #fdfefd",
+".o c #fefefe",
+".n c #ffffff",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQt.#.a.b.c.c.c.cQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.d.dQt.c.e.e.e.e.cQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.d.f.c.e.e.g.h.e.e.cQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.d.c.e.e.e.i.j.e.e.e.c",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.d.c.e.k.l.m.i.n.o.e.c",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.d.c.e.p.q.m.r.n.s.e.c",
+"QtQtQtQt.d.d.d.d.d.d.d.d.d.d.c.e.e.e.t.h.e.e.e.c",
+"QtQtQtQt.d.u.u.u.u.u.u.u.v.w.x.c.e.e.k.y.e.e.cQt",
+"QtQtQtQt.d.u.z.z.z.z.z.A.B.C.D.x.c.e.e.e.e.cQtQt",
+"QtQtQtQt.d.u.z.z.z.z.z.A.E.F.G.F.x.c.c.c.cQtQtQt",
+"QtQtQtQt.d.z.u.u.u.u.u.u.H.I.I.J.J.K.L.dQtQtQtQt",
+"QtQtQtQt.d.M.N.O.P.Q.Q.R.S.T.U.U.U.V.W.dQtQtQtQt",
+"QtQtQtQt.d.M.X.Y.Z.0.0.0.0.0.0.0.0.0.M.dQtQtQtQt",
+"QtQtQtQt.d.M.1.2.1.2.2.3.3.4.3.4.2.4.M.dQtQtQtQt",
+"QtQtQtQt.d.M.5.6.6.5.7.8.5.7.5.8.5.8.M.dQtQtQtQt",
+"QtQtQtQt.d.9#.#########.#######.###..M.dQtQtQtQt",
+"QtQtQtQt.d#a#b#c#d#d#d#d#e#b#f#e#c#g#h.dQtQtQtQt",
+"QtQtQtQt.d#i#j#k#l#j#k#l#j#l#m#n#o#p#q.dQtQtQtQt",
+"QtQtQtQt.d#r#s#s#t#s#t#s#s#t#s#t#s#t#u.dQtQtQtQt",
+"QtQtQtQt.d#v#w#w#w#w#w#w#w#w#w#w#x#w#y.dQtQtQtQt",
+"QtQtQtQt#z.d.d.d.d.d.d.d.d.d.d.d.d.d.d#AQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt"};
diff --git a/etc/images/package-menu/package-unmark.pbm b/etc/images/package-menu/package-unmark.pbm
new file mode 100644
index 0000000000000000000000000000000000000000..a166f1901dbfcf3b19488ba85511de4b0dc2833c
GIT binary patch
literal 125
zcmWGA;Zjy`E=o--Nlj5ms#I|I^bJrbOD!tS%+FIW)-%vEQ3&w!RVc_QP1nuL<1#W)
zFf!p{U|?WiV_;xqU|?xrU`b$LG2s6rz`-EE!6v}LF2KP)0mSD24?;YQXo&w0BLfd3
K0|z4m|9=4Cpcfhd

literal 0
HcmV?d00001

diff --git a/etc/images/package-menu/package-unmark.xpm b/etc/images/package-menu/package-unmark.xpm
new file mode 100644
index 00000000000..9d7e119c529
--- /dev/null
+++ b/etc/images/package-menu/package-unmark.xpm
@@ -0,0 +1,100 @@
+/* XPM */
+static char *dummy[]={
+"24 24 73 2",
+"Qt c None",
+".T c #333333",
+".B c #6a4206",
+".C c #6c470a",
+"#g c #7d510a",
+".z c #825307",
+".y c #85570c",
+".# c #8f5902",
+".b c #97610b",
+".v c #9a691a",
+".u c #9b6b1c",
+".H c #b28235",
+".F c #b2833b",
+".G c #b38338",
+".1 c #b3b3b3",
+".h c #b47e2b",
+".f c #b98330",
+".I c #bd8a3e",
+".e c #be8835",
+".A c #c29147",
+".n c #c2a473",
+".i c #c48e3b",
+".J c #c89548",
+".g c #ca9442",
+".V c #cf9640",
+".U c #cf9641",
+".W c #cf9740",
+".x c #cfa462",
+".N c #d0b78b",
+".p c #d19b4a",
+".Z c #d29a46",
+".X c #d29b46",
+".0 c #d29b47",
+".S c #d29e50",
+".Q c #d29e51",
+".R c #d29f51",
+".P c #d29f52",
+".Y c #d39b46",
+".t c #d4b078",
+".4 c #d59f4c",
+".E c #d5ae74",
+".5 c #d69f4c",
+".d c #d6b584",
+"#c c #d7a354",
+".3 c #d7b074",
+"#d c #d8a354",
+".7 c #d8a452",
+".j c #d9a352",
+".8 c #d9a452",
+".M c #dbc6a6",
+"#. c #dca857",
+"#a c #dca858",
+"## c #dda857",
+".6 c #ddb77e",
+".L c #ddccaf",
+".D c #dfb677",
+".w c #dfbc88",
+".o c #e1bb81",
+".K c #e1c9a3",
+".9 c #e3be87",
+".O c #e5ceab",
+".k c #e6d2b5",
+".a c #e6d4b7",
+".m c #e7d7be",
+"#b c #e8c792",
+".q c #e8c797",
+".c c #e9cc9f",
+".r c #ebdbc2",
+"#f c #eccd9e",
+"#e c #eed5ac",
+".s c #efe4d2",
+".l c #f5efe4",
+".2 c #ffffff",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.#.#QtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.#.a.bQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.d.bQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.e.d.b.#QtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.g.d.b.#QtQtQtQt",
+"QtQtQtQt.#.#.#.#.#.#.#.#.#.#.c.h.i.j.k.#QtQtQtQt",
+"QtQtQtQt.#.l.l.l.l.l.l.l.m.n.o.g.i.p.q.#QtQtQtQt",
+"QtQtQtQt.#.l.r.r.r.r.r.s.t.u.v.o.p.p.w.#QtQtQtQt",
+"QtQtQtQt.#.l.r.r.r.r.r.s.x.y.z.y.o.j.q.#QtQtQtQt",
+"QtQtQtQt.#.r.l.l.l.l.l.l.A.B.B.C.C.D.q.#QtQtQtQt",
+"QtQtQtQt.#.E.F.G.H.I.I.J.K.L.M.M.M.N.O.#QtQtQtQt",
+"QtQtQtQt.#.E.P.Q.R.S.S.S.T.T.T.T.T.T.T.T.T.T.T.T",
+"QtQtQtQt.#.E.U.V.U.V.V.W.T.T.T.T.T.T.T.T.T.T.T.T",
+"QtQtQtQt.#.E.X.Y.Y.X.Z.0.T.T.1.1.1.1.1.1.1.1.2.T",
+"QtQtQtQt.#.3.4.5.5.5.5.4.T.T.1.1.1.1.1.1.1.1.2.T",
+"QtQtQtQt.#.6.7.j.8.8.8.8.T.T.1.1.1.1.1.1.1.1.2.T",
+"QtQtQtQt.#.9#.###a#.###a.T.T.1.1.1.1.1.1.1.1.2.T",
+"QtQtQtQt.##b#c#c#d#c#d#c.T.T.1.1.1.1.1.1.1.1.2.T",
+"QtQtQtQt.##e#f#f#f#f#f#f.T.T.1.1.1.1.1.1.1.1.2.T",
+"QtQtQtQt#g.#.#.#.#.#.#.#.T.T.1.1.1.1.1.1.1.1.2.T",
+"QtQtQtQtQtQtQtQtQtQtQtQt.T.T.1.2.2.2.2.2.2.2.2.T",
+"QtQtQtQtQtQtQtQtQtQtQtQt.T.1.2.2.2.2.2.2.2.2.2.T",
+"QtQtQtQtQtQtQtQtQtQtQtQt.T.T.T.T.T.T.T.T.T.T.T.T"};
diff --git a/etc/images/package-menu/package-url.pbm b/etc/images/package-menu/package-url.pbm
new file mode 100644
index 0000000000000000000000000000000000000000..97d5d6048335fa23dc53f0ae450bfa237e118393
GIT binary patch
literal 125
zcmWGA;Zjy`E=o--Nlj5ms#I|I^bJrbOD!tS%+FIW)-%vEQ3&w!RVc_QP1nuL<1#W)
zFf!p{U|?WiV_;xqU|?xrU`b$LG2s6rz`-EE!6v}LF2KP)0mNqb!@<DD!NAPH!OX$I
Y$ict}V(>8Y|2@pW|DA#T9|Q9r0M5G@jQ{`u

literal 0
HcmV?d00001

diff --git a/etc/images/package-menu/package-url.xpm b/etc/images/package-menu/package-url.xpm
new file mode 100644
index 00000000000..b5df57ca39f
--- /dev/null
+++ b/etc/images/package-menu/package-url.xpm
@@ -0,0 +1,200 @@
+/* XPM */
+static char *dummy[]={
+"24 24 173 2",
+"Qt c None",
+"aD c #14293d",
+"#B c #183046",
+"aQ c #1b3c5c",
+"aP c #1e4061",
+"#P c #21384d",
+"aH c #214364",
+"aN c #22415f",
+"aO c #224465",
+"ai c #294763",
+"aG c #294b6c",
+"aC c #2a3e51",
+"at c #2a4d6d",
+"aL c #2c3c49",
+"ar c #2e4e6c",
+".Z c #2f506f",
+"aK c #365168",
+"aj c #365a7b",
+"ax c #375876",
+"aw c #395c7b",
+"av c #40607e",
+"aM c #4e687e",
+"aE c #506d87",
+".Y c #53728d",
+"aF c #567187",
+".X c #575f65",
+"aI c #577690",
+".V c #5a6267",
+".W c #5d6368",
+"au c #607d96",
+"#A c #627583",
+"#8 c #637a8c",
+"#q c #666357",
+"#F c #687885",
+".B c #6a4206",
+".C c #6c470a",
+"al c #6d8aa2",
+"aB c #6e8ca4",
+"#U c #708492",
+"aJ c #7390a6",
+"am c #7693ab",
+"an c #7794ab",
+"as c #7d510a",
+"#4 c #7d98ad",
+"#9 c #7d9ab2",
+".4 c #7f7a6a",
+"aa c #7f9bb3",
+".z c #825307",
+"#e c #827d6f",
+"#. c #828e99",
+".y c #85570c",
+"aq c #87a3b8",
+"#m c #8997a1",
+"ay c #89a4b8",
+"a. c #8aa5ba",
+"#V c #8ca9be",
+"ak c #8ea9bd",
+".# c #8f5902",
+"#O c #8fa7b9",
+"a# c #91acc0",
+"#W c #92adc1",
+"aA c #95acbd",
+"ap c #95aec0",
+".U c #967d54",
+"ab c #96b1c5",
+".b c #97610b",
+"af c #99b3c6",
+".v c #9a691a",
+".u c #9b6b1c",
+"ac c #9fb7c8",
+"ao c #9fb8ca",
+"#3 c #a0b9cb",
+"ad c #a1b9cb",
+"#X c #a2bcce",
+"ae c #a4bdcf",
+"#2 c #a6bfd0",
+"#1 c #a8c0d1",
+"#0 c #a9c0cf",
+"az c #a9c1d2",
+"#M c #abc0d0",
+"#N c #abc1d2",
+"#H c #afc7d7",
+"#Z c #b1c9d7",
+".H c #b28235",
+".F c #b2833b",
+"#L c #b2cbdb",
+".G c #b38338",
+"#Y c #b3ccdd",
+".h c #b47e2b",
+".5 c #b6c2cb",
+"#K c #b7d0df",
+".f c #b98330",
+"#r c #bbc8d1",
+"#I c #bbd5e5",
+"#v c #bcd5e5",
+".I c #bd8a3e",
+".9 c #bdcbd6",
+"#u c #bdd5e5",
+"#J c #bdd6e6",
+".e c #be8835",
+"#G c #bed0dd",
+"#w c #bed5e3",
+"#z c #bfd1de",
+".3 c #c08d3e",
+"#d c #c18e40",
+".A c #c29147",
+".n c #c2a473",
+"#i c #c2d7e6",
+".i c #c48e3b",
+".T c #c4934b",
+"#x c #c4d5e1",
+"#j c #c5d7e4",
+"#t c #c6dae8",
+".J c #c89548",
+"#y c #c8d8e4",
+".g c #ca9442",
+"#f c #cad4db",
+"#h c #cbdde9",
+".8 c #cedce7",
+".1 c #cf9640",
+".0 c #cf9641",
+".2 c #cf9740",
+".x c #cfa462",
+".N c #d0b78b",
+".p c #d19b4a",
+"#b c #d29a46",
+"## c #d29b46",
+"#c c #d29b47",
+".S c #d29e50",
+".Q c #d29e51",
+".R c #d29f51",
+".P c #d29f52",
+"#a c #d39b46",
+".t c #d4b078",
+"#o c #d59f4c",
+".E c #d5ae74",
+"#p c #d69f4c",
+".d c #d6b584",
+"#l c #d6e3ed",
+"#6 c #d7a354",
+"#n c #d7b074",
+"#k c #d7e4ed",
+"#7 c #d8a354",
+"#D c #d8a452",
+".j c #d9a352",
+"#E c #d9a452",
+".M c #dbc6a6",
+"#R c #dca857",
+"#T c #dca858",
+"#s c #dce9f1",
+"#S c #dda857",
+"#C c #ddb77e",
+".L c #ddccaf",
+"#g c #ddeaf2",
+".6 c #dee8ef",
+".D c #dfb677",
+".w c #dfbc88",
+".o c #e1bb81",
+".K c #e1c9a3",
+".7 c #e1edf5",
+"#Q c #e3be87",
+".O c #e5ceab",
+".k c #e6d2b5",
+".a c #e6d4b7",
+".m c #e7d7be",
+"#5 c #e8c792",
+".q c #e8c797",
+".c c #e9cc9f",
+".r c #ebdbc2",
+"ah c #eccd9e",
+"ag c #eed5ac",
+".s c #efe4d2",
+".l c #f5efe4",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.#.#QtQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.#.a.bQtQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.d.bQtQtQtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.e.d.b.#QtQtQtQtQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQt.#.c.f.g.d.b.#QtQtQtQt",
+"QtQtQtQt.#.#.#.#.#.#.#.#.#.#.c.h.i.j.k.#QtQtQtQt",
+"QtQtQtQt.#.l.l.l.l.l.l.l.m.n.o.g.i.p.q.#QtQtQtQt",
+"QtQtQtQt.#.l.r.r.r.r.r.s.t.u.v.o.p.p.w.#QtQtQtQt",
+"QtQtQtQt.#.l.r.r.r.r.r.s.x.y.z.y.o.j.q.#QtQtQtQt",
+"QtQtQtQt.#.r.l.l.l.l.l.l.A.B.B.C.C.D.q.#QtQtQtQt",
+"QtQtQtQt.#.E.F.G.H.I.I.J.K.L.M.M.M.N.O.#QtQtQtQt",
+"QtQtQtQt.#.E.P.Q.R.S.S.S.S.S.T.U.V.W.X.Y.Y.ZQtQt",
+"QtQtQtQt.#.E.0.1.0.1.1.2.2.3.4.5.6.7.8.9#..Y.ZQt",
+"QtQtQtQt.#.E###a#a###b#c#d#e#f#g#h#i#j#k#l#m.Y.Z",
+"QtQtQtQt.##n#o#p#p#p#p#o#q#r#s#t#u#v#w#x#y#z#A#B",
+"QtQtQtQt.##C#D.j#E#E#E#E#F#G#H#I#J#K#v#L#M#N#O#P",
+"QtQtQtQt.##Q#R#S#T#R#S#T#U#V#W#X#Y#Z#0#1#2#3#4#P",
+"QtQtQtQt.##5#6#6#7#6#7#6#8#9a.a#aaabacadaeaf.Y#P",
+"QtQtQtQt.#agahahahahahahaiajakalamanao#3apaqar#P",
+"QtQtQtQtas.#.#.#.#.#.#.#aiatauavawaxayazaAaBar#P",
+"QtQtQtQtQtQtQtQtQtQtQtQtaCaDaEaFaGaH.ZaIaJaKai#P",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtaCaLaMaNaOaPaQ#P#P#BQt",
+"QtQtQtQtQtQtQtQtQtQtQtQtQtQtaCaC#P#P#P#P#B#BQtQt"};
diff --git a/lisp/emacs-lisp/package.el b/lisp/emacs-lisp/package.el
index 82fcf439a11..77c6c675594 100644
--- a/lisp/emacs-lisp/package.el
+++ b/lisp/emacs-lisp/package.el
@@ -3221,6 +3221,39 @@ package-menu--new-package-list
 (defvar package-menu--transaction-status nil
   "Mode-line status of ongoing package transaction.")
 
+(defvar package-menu--tool-bar-map
+  (let ((map (make-sparse-keymap)))
+    (tool-bar-local-item-from-menu
+     #'package-menu-execute "package-menu/package-execute"
+     map package-menu-mode-map)
+    (define-key-after map [separator-1] menu-bar-separator)
+    (tool-bar-local-item-from-menu
+     #'package-menu-mark-unmark "package-menu/package-unmark"
+     map package-menu-mode-map)
+    (tool-bar-local-item-from-menu
+     #'package-menu-mark-install "package-menu/package-install"
+     map package-menu-mode-map)
+    (tool-bar-local-item-from-menu
+     #'package-menu-mark-delete "package-menu/package-delete"
+     map package-menu-mode-map)
+    (tool-bar-local-item-from-menu
+     #'package-menu-describe-package "package-menu/package-info"
+     map package-menu-mode-map)
+    (tool-bar-local-item-from-menu
+     #'package-browse-url "package-menu/package-url"
+     map package-menu-mode-map)
+    (define-key-after map [separator-2] menu-bar-separator)
+    (tool-bar-local-item
+     "search" 'isearch-forward 'search map
+     :help "Search" :vert-only t)
+    (tool-bar-local-item-from-menu
+     #'revert-buffer "refresh"
+     map package-menu-mode-map)
+    (tool-bar-local-item-from-menu
+     #'quit-window "close"
+     map package-menu-mode-map)
+    map))
+
 (define-derived-mode package-menu-mode tabulated-list-mode "Package Menu"
   "Major mode for browsing a list of packages.
 The most useful commands here are:
@@ -3236,6 +3269,7 @@ package-menu-mode
   (setq mode-line-process '((package--downloads-in-progress ":Loading")
                             (package-menu--transaction-status
                              package-menu--transaction-status)))
+  (setq-local tool-bar-map package-menu--tool-bar-map)
   (setq tabulated-list-format
         `[("Package" ,package-name-column-width package-menu--name-predicate)
           ("Version" ,package-version-column-width package-menu--version-predicate)
-- 
2.49.0

-- 
                                          - E.G via GNU Emacs and Org.