summaryrefslogtreecommitdiff
path: root/config/nvim-1/undo/%home%coast%Projects%py%dmenu.py
blob: d5ce864640c3a13dddacf825b0ad79601b2fe0c5 (plain)
ofshex dumpascii
0000 56 69 6d 9f 55 6e 44 6f e5 00 03 7b 9f 39 c5 d9 e9 8f 27 64 9c 7c 98 ae f8 1f 63 62 bb 6a 1c ce Vim.UnDo...{.9....'d.|....cb.j..
0020 83 1b 92 39 6f 53 7e ae 8f 88 77 00 00 00 a1 00 00 00 14 20 20 20 20 22 2d 70 22 2c 20 22 6c 61 ...9oS~...w............"-p",."la
0040 75 6e 63 68 3a 22 2c 00 00 00 12 00 00 00 0b 00 00 00 01 00 00 00 0c 00 00 00 00 00 00 00 0c 00 unch:",.........................
0060 00 00 0c 00 00 00 0c 00 00 00 00 69 a1 15 7e 04 01 00 00 00 0d 00 5f d0 00 00 00 00 00 00 00 02 ...........i..~......._.........
0080 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 03 00 00 ................................
00a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
00e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
01c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 ................................
01e0 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 76 00 00 00 00 00 00 00 00 69 a1 13 a1 04 01 .................v........i.....
0200 00 00 00 02 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 ................................
0220 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 .............5..................
0240 00 00 00 00 00 98 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d4 0e 00 ................................
0260 00 00 00 00 00 35 81 5f d0 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 .....5._........................
0280 01 00 00 00 04 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
02e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0300 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0320 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0340 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0360 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
0380 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
03e0 00 00 00 00 00 00 00 00 00 00 00 69 a1 14 0d 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 02 ...........i....................
0400 00 00 00 00 00 00 00 99 00 00 00 16 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70 79 74 68 6f ............#!/usr/bin/env.pytho
0420 6e 33 00 00 00 00 00 00 00 09 69 6d 70 6f 72 74 20 6f 73 00 00 00 11 69 6d 70 6f 72 74 20 73 75 n3........import.os....import.su
0440 62 70 72 6f 63 65 73 73 00 00 00 0a 69 6d 70 6f 72 74 20 73 79 73 00 00 00 18 66 72 6f 6d 20 70 bprocess....import.sys....from.p
0460 61 74 68 6c 69 62 20 69 6d 70 6f 72 74 20 50 61 74 68 00 00 00 00 00 00 00 00 00 00 00 0e 44 4d athlib.import.Path............DM
0480 45 4e 55 5f 41 52 47 53 20 3d 20 5b 00 00 00 0c 20 20 20 20 22 64 6d 65 6e 75 22 2c 00 00 00 1a ENU_ARGS.=.[........"dmenu",....
04a0 20 20 20 20 22 2d 66 6e 22 2c 20 22 46 69 72 61 20 43 6f 64 65 2d 31 30 22 2c 00 00 00 15 20 20 ...."-fn",."Fira.Code-10",......
04c0 20 20 22 2d 6e 62 22 2c 20 22 23 31 65 31 65 31 65 22 2c 00 00 00 15 20 20 20 20 22 2d 6e 66 22 .."-nb",."#1e1e1e",........"-nf"
04e0 2c 20 22 23 63 63 63 63 63 63 22 2c 00 00 00 15 20 20 20 20 22 2d 73 62 22 2c 20 22 23 32 34 37 ,."#cccccc",........"-sb",."#247
0500 32 63 38 22 2c 00 00 00 15 20 20 20 20 22 2d 73 66 22 2c 20 22 23 65 35 65 35 65 35 22 2c 00 00 2c8",........"-sf",."#e5e5e5",..
0520 00 0f 20 20 20 20 22 2d 6c 22 2c 20 22 31 30 22 2c 00 00 00 14 20 20 20 20 22 2d 70 22 2c 20 22 ......"-l",."10",........"-p",."
0540 6c 61 75 6e 63 68 3a 22 2c 00 00 00 01 5d 00 00 00 00 00 00 00 10 44 45 53 4b 54 4f 50 5f 44 49 launch:",....]........DESKTOP_DI
0560 52 53 20 3d 20 5b 00 00 00 2e 20 20 20 20 50 61 74 68 2e 68 6f 6d 65 28 29 20 2f 20 22 2e 6c 6f RS.=.[........Path.home()./.".lo
0580 63 61 6c 2f 73 68 61 72 65 2f 61 70 70 6c 69 63 61 74 69 6f 6e 73 22 2c 00 00 00 24 20 20 20 20 cal/share/applications",...$....
05a0 50 61 74 68 28 22 2f 75 73 72 2f 73 68 61 72 65 2f 61 70 70 6c 69 63 61 74 69 6f 6e 73 22 29 2c Path("/usr/share/applications"),
05c0 00 00 00 2a 20 20 20 20 50 61 74 68 28 22 2f 75 73 72 2f 6c 6f 63 61 6c 2f 73 68 61 72 65 2f 61 ...*....Path("/usr/local/share/a
05e0 70 70 6c 69 63 61 74 69 6f 6e 73 22 29 2c 00 00 00 01 5d 00 00 00 00 00 00 00 3a 46 49 45 4c 44 pplications"),....].......:FIELD
0600 5f 43 4f 44 45 5f 53 54 52 49 50 20 3d 20 73 74 72 2e 6d 61 6b 65 74 72 61 6e 73 28 22 22 2c 20 _CODE_STRIP.=.str.maketrans("",.
0620 22 22 2c 20 22 25 66 46 75 55 64 44 6e 4e 69 63 6b 76 6d 22 29 00 00 00 4a 49 4e 56 41 4c 49 44 "",."%fFuUdDnNickvm")...JINVALID
0640 5f 45 58 45 43 5f 50 52 45 46 49 58 45 53 20 3d 20 28 22 77 69 6e 65 22 2c 20 22 77 73 63 72 69 _EXEC_PREFIXES.=.("wine",."wscri
0660 70 74 22 2c 20 22 72 75 6e 64 6c 6c 33 32 22 2c 20 22 77 69 6e 68 6c 70 33 32 22 2c 20 22 68 68 pt",."rundll32",."winhlp32",."hh
0680 20 22 29 00 00 00 00 00 00 00 00 00 00 00 23 64 65 66 20 70 61 72 73 65 5f 64 65 73 6b 74 6f 70 .")...........#def.parse_desktop
06a0 5f 66 69 6c 65 28 70 61 74 68 3a 20 50 61 74 68 29 3a 00 00 00 07 20 20 20 20 22 22 22 00 00 00 _file(path:.Path):........"""...
06c0 4b 20 20 20 20 52 65 74 75 72 6e 73 20 28 6e 61 6d 65 2c 20 65 78 65 63 5f 63 6d 64 29 20 6f 72 K....Returns.(name,.exec_cmd).or
06e0 20 28 4e 6f 6e 65 2c 20 4e 6f 6e 65 29 20 69 66 20 74 68 65 20 66 69 6c 65 20 73 68 6f 75 6c 64 .(None,.None).if.the.file.should
0700 20 62 65 20 73 6b 69 70 70 65 64 2e 00 00 00 57 20 20 20 20 48 61 6e 64 6c 65 73 3a 20 4e 6f 44 .be.skipped....W....Handles:.NoD
0720 69 73 70 6c 61 79 3d 74 72 75 65 2c 20 48 69 64 64 65 6e 3d 74 72 75 65 2c 20 6d 69 73 73 69 6e isplay=true,.Hidden=true,.missin
0740 67 20 4e 61 6d 65 2f 45 78 65 63 2c 20 66 69 65 6c 64 20 63 6f 64 65 73 2c 20 65 6e 76 20 77 72 g.Name/Exec,.field.codes,.env.wr
0760 61 70 70 65 72 73 2e 00 00 00 07 20 20 20 20 22 22 22 00 00 00 0e 20 20 20 20 70 72 6f 70 73 20 appers........."""........props.
0780 3d 20 7b 7d 00 00 00 1c 20 20 20 20 69 6e 5f 64 65 73 6b 74 6f 70 5f 65 6e 74 72 79 20 3d 20 46 =.{}........in_desktop_entry.=.F
07a0 61 6c 73 65 00 00 00 00 00 00 00 08 20 20 20 20 74 72 79 3a 00 00 00 40 20 20 20 20 20 20 20 20 alse............try:...@........
07c0 77 69 74 68 20 70 61 74 68 2e 6f 70 65 6e 28 65 6e 63 6f 64 69 6e 67 3d 22 75 74 66 2d 38 22 2c with.path.open(encoding="utf-8",
07e0 20 65 72 72 6f 72 73 3d 22 72 65 70 6c 61 63 65 22 29 20 61 73 20 66 3a 00 00 00 1a 20 20 20 20 .errors="replace").as.f:........
0800 20 20 20 20 20 20 20 20 66 6f 72 20 6c 69 6e 65 20 69 6e 20 66 3a 00 00 00 28 20 20 20 20 20 20 ........for.line.in.f:...(......
0820 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 20 3d 20 6c 69 6e 65 2e 72 73 74 72 69 70 28 22 5c 6e ..........line.=.line.rstrip("\n
0840 22 29 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6c 69 6e 65 2e 73 74 ")...(................if.line.st
0860 61 72 74 73 77 69 74 68 28 22 5b 22 29 3a 00 00 00 40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 artswith("["):...@..............
0880 20 20 20 20 20 20 69 6e 5f 64 65 73 6b 74 6f 70 5f 65 6e 74 72 79 20 3d 20 6c 69 6e 65 20 3d 3d ......in_desktop_entry.=.line.==
08a0 20 22 5b 44 65 73 6b 74 6f 70 20 45 6e 74 72 79 5d 22 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 ."[Desktop.Entry]"..............
08c0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 00 00 00 3b 20 20 20 20 20 20 20 20 20 20 ..........continue...;..........
08e0 20 20 20 20 20 20 69 66 20 6e 6f 74 20 69 6e 5f 64 65 73 6b 74 6f 70 5f 65 6e 74 72 79 20 6f 72 ......if.not.in_desktop_entry.or
0900 20 22 3d 22 20 6e 6f 74 20 69 6e 20 6c 69 6e 65 3a 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 ."=".not.in.line:...............
0920 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 00 00 00 33 20 20 20 20 20 20 20 20 20 20 20 .........continue...3...........
0940 20 20 20 20 20 6b 65 79 2c 20 5f 2c 20 76 61 6c 75 65 20 3d 20 6c 69 6e 65 2e 70 61 72 74 69 74 .....key,._,.value.=.line.partit
0960 69 6f 6e 28 22 3d 22 29 00 00 00 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 20 ion("=")...!................key.
0980 3d 20 6b 65 79 2e 73 74 72 69 70 28 29 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 =.key.strip()...$...............
09a0 20 69 66 20 6b 65 79 20 6e 6f 74 20 69 6e 20 70 72 6f 70 73 3a 00 00 00 2e 20 20 20 20 20 20 20 .if.key.not.in.props:...........
09c0 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 70 73 5b 6b 65 79 5d 20 3d 20 76 61 6c 75 65 2e .............props[key].=.value.
09e0 73 74 72 69 70 28 29 00 00 00 13 20 20 20 20 65 78 63 65 70 74 20 4f 53 45 72 72 6f 72 3a 00 00 strip()........except.OSError:..
0a00 00 19 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e 6f 6e 65 00 00 00 00 00 ..........return.None,.None.....
0a20 00 00 34 20 20 20 20 69 66 20 70 72 6f 70 73 2e 67 65 74 28 22 4e 6f 44 69 73 70 6c 61 79 22 2c ..4....if.props.get("NoDisplay",
0a40 20 22 22 29 2e 6c 6f 77 65 72 28 29 20 3d 3d 20 22 74 72 75 65 22 3a 00 00 00 19 20 20 20 20 20 ."").lower().==."true":.........
0a60 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e 6f 6e 65 00 00 00 31 20 20 20 20 69 66 20 70 ...return.None,.None...1....if.p
0a80 72 6f 70 73 2e 67 65 74 28 22 48 69 64 64 65 6e 22 2c 20 22 22 29 2e 6c 6f 77 65 72 28 29 20 3d rops.get("Hidden",."").lower().=
0aa0 3d 20 22 74 72 75 65 22 3a 00 00 00 19 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 =."true":............return.None
0ac0 2c 20 4e 6f 6e 65 00 00 00 2e 20 20 20 20 69 66 20 70 72 6f 70 73 2e 67 65 74 28 22 54 79 70 65 ,.None........if.props.get("Type
0ae0 22 2c 20 22 22 29 20 21 3d 20 22 41 70 70 6c 69 63 61 74 69 6f 6e 22 3a 00 00 00 19 20 20 20 20 ",."").!=."Application":........
0b00 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e 6f 6e 65 00 00 00 00 00 00 00 1c 20 20 20 ....return.None,.None...........
0b20 20 6e 61 6d 65 20 3d 20 70 72 6f 70 73 2e 67 65 74 28 22 4e 61 6d 65 22 29 00 00 00 20 20 20 20 .name.=.props.get("Name").......
0b40 20 65 78 65 63 5f 72 61 77 20 3d 20 70 72 6f 70 73 2e 67 65 74 28 22 45 78 65 63 22 29 00 00 00 .exec_raw.=.props.get("Exec")...
0b60 00 00 00 00 20 20 20 20 20 69 66 20 6e 6f 74 20 6e 61 6d 65 20 6f 72 20 6e 6f 74 20 65 78 65 63 .........if.not.name.or.not.exec
0b80 5f 72 61 77 3a 00 00 00 19 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e 6f _raw:............return.None,.No
0ba0 6e 65 00 00 00 00 00 00 00 23 20 20 20 20 65 78 65 63 5f 63 6d 64 20 3d 20 63 6c 65 61 6e 5f 65 ne.......#....exec_cmd.=.clean_e
0bc0 78 65 63 28 65 78 65 63 5f 72 61 77 29 00 00 00 00 00 00 00 14 20 20 20 20 69 66 20 6e 6f 74 20 xec(exec_raw)............if.not.
0be0 65 78 65 63 5f 63 6d 64 3a 00 00 00 19 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 exec_cmd:............return.None
0c00 2c 20 4e 6f 6e 65 00 00 00 00 00 00 00 1c 20 20 20 20 6c 6f 77 65 72 20 3d 20 65 78 65 63 5f 63 ,.None............lower.=.exec_c
0c20 6d 64 2e 6c 6f 77 65 72 28 29 00 00 00 3f 20 20 20 20 69 66 20 61 6e 79 28 6c 6f 77 65 72 2e 73 md.lower()...?....if.any(lower.s
0c40 74 61 72 74 73 77 69 74 68 28 70 29 20 66 6f 72 20 70 20 69 6e 20 49 4e 56 41 4c 49 44 5f 45 58 tartswith(p).for.p.in.INVALID_EX
0c60 45 43 5f 50 52 45 46 49 58 45 53 29 3a 00 00 00 19 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 EC_PREFIXES):............return.
0c80 4e 6f 6e 65 2c 20 4e 6f 6e 65 00 00 00 00 00 00 00 3a 20 20 20 20 74 65 72 6d 69 6e 61 6c 20 3d None,.None.......:....terminal.=
0ca0 20 70 72 6f 70 73 2e 67 65 74 28 22 54 65 72 6d 69 6e 61 6c 22 2c 20 22 22 29 2e 6c 6f 77 65 72 .props.get("Terminal",."").lower
0cc0 28 29 20 3d 3d 20 22 74 72 75 65 22 00 00 00 10 20 20 20 20 69 66 20 74 65 72 6d 69 6e 61 6c 3a ().==."true"........if.terminal:
0ce0 00 00 00 32 20 20 20 20 20 20 20 20 74 65 72 6d 20 3d 20 6f 73 2e 65 6e 76 69 72 6f 6e 2e 67 65 ...2........term.=.os.environ.ge
0d00 74 28 22 54 45 52 4d 49 4e 41 4c 22 2c 20 22 78 74 65 72 6d 22 29 00 00 00 2a 20 20 20 20 20 20 t("TERMINAL",."xterm")...*......
0d20 20 20 65 78 65 63 5f 63 6d 64 20 3d 20 66 22 7b 74 65 72 6d 7d 20 2d 65 20 7b 65 78 65 63 5f 63 ..exec_cmd.=.f"{term}.-e.{exec_c
0d40 6d 64 7d 22 00 00 00 00 00 00 00 19 20 20 20 20 72 65 74 75 72 6e 20 6e 61 6d 65 2c 20 65 78 65 md}"............return.name,.exe
0d60 63 5f 63 6d 64 00 00 00 00 00 00 00 00 00 00 00 25 64 65 66 20 63 6c 65 61 6e 5f 65 78 65 63 28 c_cmd...........%def.clean_exec(
0d80 65 78 65 63 5f 72 61 77 3a 20 73 74 72 29 20 2d 3e 20 73 74 72 3a 00 00 00 1d 20 20 20 20 74 6f exec_raw:.str).->.str:........to
0da0 6b 65 6e 73 20 3d 20 65 78 65 63 5f 72 61 77 2e 73 70 6c 69 74 28 29 00 00 00 10 20 20 20 20 63 kens.=.exec_raw.split()........c
0dc0 6c 65 61 6e 65 64 20 3d 20 5b 5d 00 00 00 18 20 20 20 20 66 6f 72 20 74 6f 6b 65 6e 20 69 6e 20 leaned.=.[]........for.token.in.
0de0 74 6f 6b 65 6e 73 3a 00 00 00 4c 20 20 20 20 20 20 20 20 69 66 20 74 6f 6b 65 6e 2e 73 74 61 72 tokens:...L........if.token.star
0e00 74 73 77 69 74 68 28 22 25 22 29 20 61 6e 64 20 6c 65 6e 28 74 6f 6b 65 6e 29 20 3d 3d 20 32 20 tswith("%").and.len(token).==.2.
0e20 61 6e 64 20 74 6f 6b 65 6e 5b 31 5d 2e 69 73 61 6c 70 68 61 28 29 3a 00 00 00 14 20 20 20 20 20 and.token[1].isalpha():.........
0e40 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 00 00 00 1d 20 20 20 20 20 20 20 20 63 6c 65 61 6e .......continue............clean
0e60 65 64 2e 61 70 70 65 6e 64 28 74 6f 6b 65 6e 29 00 00 00 24 20 20 20 20 72 65 74 75 72 6e 20 22 ed.append(token)...$....return."
0e80 20 22 2e 6a 6f 69 6e 28 63 6c 65 61 6e 65 64 29 2e 73 74 72 69 70 28 29 00 00 00 00 00 00 00 00 .".join(cleaned).strip()........
0ea0 00 00 00 13 64 65 66 20 63 6f 6c 6c 65 63 74 5f 61 70 70 73 28 29 3a 00 00 00 0d 20 20 20 20 61 ....def.collect_apps():........a
0ec0 70 70 73 20 3d 20 7b 7d 00 00 00 22 20 20 20 20 66 6f 72 20 64 69 72 65 63 74 6f 72 79 20 69 6e pps.=.{}..."....for.directory.in
0ee0 20 44 45 53 4b 54 4f 50 5f 44 49 52 53 3a 00 00 00 22 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 .DESKTOP_DIRS:..."........if.not
0f00 20 64 69 72 65 63 74 6f 72 79 2e 69 73 5f 64 69 72 28 29 3a 00 00 00 14 20 20 20 20 20 20 20 20 .directory.is_dir():............
0f20 20 20 20 20 63 6f 6e 74 69 6e 75 65 00 00 00 40 20 20 20 20 20 20 20 20 66 6f 72 20 64 65 73 6b ....continue...@........for.desk
0f40 74 6f 70 5f 66 69 6c 65 20 69 6e 20 73 6f 72 74 65 64 28 64 69 72 65 63 74 6f 72 79 2e 67 6c 6f top_file.in.sorted(directory.glo
0f60 62 28 22 2a 2e 64 65 73 6b 74 6f 70 22 29 29 3a 00 00 00 38 20 20 20 20 20 20 20 20 20 20 20 20 b("*.desktop")):...8............
0f80 6e 61 6d 65 2c 20 63 6d 64 20 3d 20 70 61 72 73 65 5f 64 65 73 6b 74 6f 70 5f 66 69 6c 65 28 64 name,.cmd.=.parse_desktop_file(d
0fa0 65 73 6b 74 6f 70 5f 66 69 6c 65 29 00 00 00 31 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e esktop_file)...1............if.n
0fc0 61 6d 65 20 61 6e 64 20 63 6d 64 20 61 6e 64 20 6e 61 6d 65 20 6e 6f 74 20 69 6e 20 61 70 70 73 ame.and.cmd.and.name.not.in.apps
0fe0 3a 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 70 70 73 5b 6e 61 6d 65 5d 20 :....................apps[name].
1000 3d 20 63 6d 64 00 00 00 0f 20 20 20 20 72 65 74 75 72 6e 20 61 70 70 73 00 00 00 00 00 00 00 00 =.cmd........return.apps........
1020 00 00 00 32 64 65 66 20 72 75 6e 5f 64 6d 65 6e 75 28 61 70 70 5f 6e 61 6d 65 73 3a 20 6c 69 73 ...2def.run_dmenu(app_names:.lis
1040 74 5b 73 74 72 5d 29 20 2d 3e 20 73 74 72 20 7c 20 4e 6f 6e 65 3a 00 00 00 49 20 20 20 20 6e 61 t[str]).->.str.|.None:...I....na
1060 6d 65 73 5f 69 6e 70 75 74 20 3d 20 22 5c 6e 22 2e 6a 6f 69 6e 28 73 6f 72 74 65 64 28 61 70 70 mes_input.=."\n".join(sorted(app
1080 5f 6e 61 6d 65 73 2c 20 6b 65 79 3d 73 74 72 2e 63 61 73 65 66 6f 6c 64 29 29 2e 65 6e 63 6f 64 _names,.key=str.casefold)).encod
10a0 65 28 29 00 00 00 08 20 20 20 20 74 72 79 3a 00 00 00 20 20 20 20 20 20 20 20 20 72 65 73 75 6c e()........try:............resul
10c0 74 20 3d 20 73 75 62 70 72 6f 63 65 73 73 2e 72 75 6e 28 00 00 00 17 20 20 20 20 20 20 20 20 20 t.=.subprocess.run(.............
10e0 20 20 20 44 4d 45 4e 55 5f 41 52 47 53 2c 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 69 6e ...DMENU_ARGS,................in
1100 70 75 74 3d 6e 61 6d 65 73 5f 69 6e 70 75 74 2c 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 put=names_input,................
1120 63 61 70 74 75 72 65 5f 6f 75 74 70 75 74 3d 54 72 75 65 2c 00 00 00 09 20 20 20 20 20 20 20 20 capture_output=True,............
1140 29 00 00 00 1d 20 20 20 20 65 78 63 65 70 74 20 46 69 6c 65 4e 6f 74 46 6f 75 6e 64 45 72 72 6f )........except.FileNotFoundErro
1160 72 3a 00 00 00 32 20 20 20 20 20 20 20 20 73 79 73 2e 65 78 69 74 28 22 65 72 72 6f 72 3a 20 64 r:...2........sys.exit("error:.d
1180 6d 65 6e 75 20 6e 6f 74 20 66 6f 75 6e 64 20 69 6e 20 50 41 54 48 22 29 00 00 00 00 00 00 00 1e menu.not.found.in.PATH")........
11a0 20 20 20 20 69 66 20 72 65 73 75 6c 74 2e 72 65 74 75 72 6e 63 6f 64 65 20 21 3d 20 30 3a 00 00 ....if.result.returncode.!=.0:..
11c0 00 13 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 00 00 00 00 00 00 00 29 20 20 20 ..........return.None.......)...
11e0 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 2e 73 74 64 6f 75 74 2e 64 65 63 6f 64 65 28 29 2e 73 .return.result.stdout.decode().s
1200 74 72 69 70 28 29 00 00 00 00 00 00 00 00 00 00 00 15 64 65 66 20 6c 61 75 6e 63 68 28 63 6d 64 trip()............def.launch(cmd
1220 3a 20 73 74 72 29 3a 00 00 00 15 20 20 20 20 73 75 62 70 72 6f 63 65 73 73 2e 50 6f 70 65 6e 28 :.str):........subprocess.Popen(
1240 00 00 00 0c 20 20 20 20 20 20 20 20 63 6d 64 2c 00 00 00 13 20 20 20 20 20 20 20 20 73 68 65 6c ............cmd,............shel
1260 6c 3d 54 72 75 65 2c 00 00 00 21 20 20 20 20 20 20 20 20 73 74 64 69 6e 3d 73 75 62 70 72 6f 63 l=True,...!........stdin=subproc
1280 65 73 73 2e 44 45 56 4e 55 4c 4c 2c 00 00 00 22 20 20 20 20 20 20 20 20 73 74 64 6f 75 74 3d 73 ess.DEVNULL,..."........stdout=s
12a0 75 62 70 72 6f 63 65 73 73 2e 44 45 56 4e 55 4c 4c 2c 00 00 00 22 20 20 20 20 20 20 20 20 73 74 ubprocess.DEVNULL,..."........st
12c0 64 65 72 72 3d 73 75 62 70 72 6f 63 65 73 73 2e 44 45 56 4e 55 4c 4c 2c 00 00 00 1f 20 20 20 20 derr=subprocess.DEVNULL,........
12e0 20 20 20 20 73 74 61 72 74 5f 6e 65 77 5f 73 65 73 73 69 6f 6e 3d 54 72 75 65 2c 00 00 00 05 20 ....start_new_session=True,.....
1300 20 20 20 29 00 00 00 00 00 00 00 00 00 00 00 0b 64 65 66 20 6d 61 69 6e 28 29 3a 00 00 00 19 20 ...)............def.main():.....
1320 20 20 20 61 70 70 73 20 3d 20 63 6f 6c 6c 65 63 74 5f 61 70 70 73 28 29 00 00 00 00 00 00 00 10 ...apps.=.collect_apps()........
1340 20 20 20 20 69 66 20 6e 6f 74 20 61 70 70 73 3a 00 00 00 30 20 20 20 20 20 20 20 20 73 79 73 2e ....if.not.apps:...0........sys.
1360 65 78 69 74 28 22 65 72 72 6f 72 3a 20 6e 6f 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 66 6f 75 exit("error:.no.applications.fou
1380 6e 64 22 29 00 00 00 00 00 00 00 2b 20 20 20 20 73 65 6c 65 63 74 65 64 20 3d 20 72 75 6e 5f 64 nd").......+....selected.=.run_d
13a0 6d 65 6e 75 28 6c 69 73 74 28 61 70 70 73 2e 6b 65 79 73 28 29 29 29 00 00 00 00 00 00 00 14 20 menu(list(apps.keys())).........
13c0 20 20 20 69 66 20 6e 6f 74 20 73 65 6c 65 63 74 65 64 3a 00 00 00 0e 20 20 20 20 20 20 20 20 72 ...if.not.selected:............r
13e0 65 74 75 72 6e 00 00 00 00 00 00 00 1c 20 20 20 20 63 6d 64 20 3d 20 61 70 70 73 2e 67 65 74 28 eturn............cmd.=.apps.get(
1400 73 65 6c 65 63 74 65 64 29 00 00 00 0f 20 20 20 20 69 66 20 6e 6f 74 20 63 6d 64 3a 00 00 00 3d selected)........if.not.cmd:...=
1420 20 20 20 20 20 20 20 20 73 79 73 2e 65 78 69 74 28 66 22 65 72 72 6f 72 3a 20 6e 6f 20 63 6f 6d ........sys.exit(f"error:.no.com
1440 6d 61 6e 64 20 66 6f 75 6e 64 20 66 6f 72 20 27 7b 73 65 6c 65 63 74 65 64 7d 27 22 29 00 00 00 mand.found.for.'{selected}'")...
1460 00 00 00 00 0f 20 20 20 20 6c 61 75 6e 63 68 28 63 6d 64 29 00 00 00 00 00 00 00 00 00 00 00 1a .........launch(cmd)............
1480 69 66 20 5f 5f 6e 61 6d 65 5f 5f 20 3d 3d 20 22 5f 5f 6d 61 69 6e 5f 5f 22 3a 00 00 00 0a 20 20 if.__name__.==."__main__":......
14a0 20 20 6d 61 69 6e 28 29 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 99 00 00 00 00 00 00 00 ..main()5.......................
14c0 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 d5 0e 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ................................
14e0 35 81 5f d0 00 00 00 02 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 01 00 00 00 00 5._.............................
1500 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
15e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1600 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1640 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1660 00 00 00 00 00 00 69 a1 14 0e 04 01 00 00 00 04 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 ......i.........................
1680 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 .........................5......
16a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 9d 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 ................................
16c0 00 00 00 00 00 00 00 00 00 4b 0f 00 00 00 00 00 00 35 81 5f d0 00 00 00 03 00 00 00 05 00 00 00 .........K.......5._............
16e0 00 00 00 00 00 00 00 00 04 00 00 00 01 00 00 00 04 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 ................................
1700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
17e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1800 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1820 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
1840 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 a1 14 32 04 01 00 00 00 .......................i..2.....
1860 00 00 f5 18 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 9e 00 00 00 16 23 21 2f 75 73 72 2f 62 ........................#!/usr/b
1880 69 6e 2f 65 6e 76 20 70 79 74 68 6f 6e 33 00 00 00 00 00 00 00 09 69 6d 70 6f 72 74 20 6f 73 00 in/env.python3........import.os.
18a0 00 00 11 69 6d 70 6f 72 74 20 73 75 62 70 72 6f 63 65 73 73 00 00 00 0a 69 6d 70 6f 72 74 20 73 ...import.subprocess....import.s
18c0 79 73 00 00 00 18 66 72 6f 6d 20 70 61 74 68 6c 69 62 20 69 6d 70 6f 72 74 20 50 61 74 68 00 00 ys....from.pathlib.import.Path..
18e0 00 00 00 00 00 00 00 00 00 0e 44 4d 45 4e 55 5f 41 52 47 53 20 3d 20 5b 00 00 00 0c 20 20 20 20 ..........DMENU_ARGS.=.[........
1900 22 64 6d 65 6e 75 22 2c 00 00 00 1a 20 20 20 20 22 2d 66 6e 22 2c 20 22 46 69 72 61 20 43 6f 64 "dmenu",........"-fn",."Fira.Cod
1920 65 2d 31 30 22 2c 00 00 00 15 20 20 20 20 22 2d 6e 62 22 2c 20 22 23 31 65 31 65 31 65 22 2c 00 e-10",........"-nb",."#1e1e1e",.
1940 00 00 15 20 20 20 20 22 2d 6e 66 22 2c 20 22 23 63 63 63 63 63 63 22 2c 00 00 00 15 20 20 20 20 ......."-nf",."#cccccc",........
1960 22 2d 73 62 22 2c 20 22 23 32 34 37 32 63 38 22 2c 00 00 00 15 20 20 20 20 22 2d 73 66 22 2c 20 "-sb",."#2472c8",........"-sf",.
1980 22 23 65 35 65 35 65 35 22 2c 00 00 00 0f 20 20 20 20 22 2d 6c 22 2c 20 22 31 30 22 2c 00 00 00 "#e5e5e5",........"-l",."10",...
19a0 14 20 20 20 20 22 2d 70 22 2c 20 22 6c 61 75 6e 63 68 3a 22 2c 00 00 00 01 5d 00 00 00 00 00 00 ....."-p",."launch:",....]......
19c0 00 10 44 45 53 4b 54 4f 50 5f 44 49 52 53 20 3d 20 5b 00 00 00 2e 20 20 20 20 50 61 74 68 2e 68 ..DESKTOP_DIRS.=.[........Path.h
19e0 6f 6d 65 28 29 20 2f 20 22 2e 6c 6f 63 61 6c 2f 73 68 61 72 65 2f 61 70 70 6c 69 63 61 74 69 6f ome()./.".local/share/applicatio
1a00 6e 73 22 2c 00 00 00 24 20 20 20 20 50 61 74 68 28 22 2f 75 73 72 2f 73 68 61 72 65 2f 61 70 70 ns",...$....Path("/usr/share/app
1a20 6c 69 63 61 74 69 6f 6e 73 22 29 2c 00 00 00 2a 20 20 20 20 50 61 74 68 28 22 2f 75 73 72 2f 6c lications"),...*....Path("/usr/l
1a40 6f 63 61 6c 2f 73 68 61 72 65 2f 61 70 70 6c 69 63 61 74 69 6f 6e 73 22 29 2c 00 00 00 01 5d 00 ocal/share/applications"),....].
1a60 00 00 00 00 00 00 4a 49 4e 56 41 4c 49 44 5f 45 58 45 43 5f 50 52 45 46 49 58 45 53 20 3d 20 28 ......JINVALID_EXEC_PREFIXES.=.(
1a80 22 77 69 6e 65 22 2c 20 22 77 73 63 72 69 70 74 22 2c 20 22 72 75 6e 64 6c 6c 33 32 22 2c 20 22 "wine",."wscript",."rundll32",."
1aa0 77 69 6e 68 6c 70 33 32 22 2c 20 22 68 68 20 22 29 00 00 00 00 00 00 00 00 00 00 00 23 64 65 66 winhlp32",."hh.")...........#def
1ac0 20 70 61 72 73 65 5f 64 65 73 6b 74 6f 70 5f 66 69 6c 65 28 70 61 74 68 3a 20 50 61 74 68 29 3a .parse_desktop_file(path:.Path):
1ae0 00 00 00 07 20 20 20 20 22 22 22 00 00 00 4b 20 20 20 20 52 65 74 75 72 6e 73 20 28 6e 61 6d 65 ........"""...K....Returns.(name
1b00 2c 20 65 78 65 63 5f 63 6d 64 29 20 6f 72 20 28 4e 6f 6e 65 2c 20 4e 6f 6e 65 29 20 69 66 20 74 ,.exec_cmd).or.(None,.None).if.t
1b20 68 65 20 66 69 6c 65 20 73 68 6f 75 6c 64 20 62 65 20 73 6b 69 70 70 65 64 2e 00 00 00 57 20 20 he.file.should.be.skipped....W..
1b40 20 20 48 61 6e 64 6c 65 73 3a 20 4e 6f 44 69 73 70 6c 61 79 3d 74 72 75 65 2c 20 48 69 64 64 65 ..Handles:.NoDisplay=true,.Hidde
1b60 6e 3d 74 72 75 65 2c 20 6d 69 73 73 69 6e 67 20 4e 61 6d 65 2f 45 78 65 63 2c 20 66 69 65 6c 64 n=true,.missing.Name/Exec,.field
1b80 20 63 6f 64 65 73 2c 20 65 6e 76 20 77 72 61 70 70 65 72 73 2e 00 00 00 07 20 20 20 20 22 22 22 .codes,.env.wrappers........."""
1ba0 00 00 00 0e 20 20 20 20 70 72 6f 70 73 20 3d 20 7b 7d 00 00 00 1c 20 20 20 20 69 6e 5f 64 65 73 ........props.=.{}........in_des
1bc0 6b 74 6f 70 5f 65 6e 74 72 79 20 3d 20 46 61 6c 73 65 00 00 00 00 00 00 00 08 20 20 20 20 74 72 ktop_entry.=.False............tr
1be0 79 3a 00 00 00 40 20 20 20 20 20 20 20 20 77 69 74 68 20 70 61 74 68 2e 6f 70 65 6e 28 65 6e 63 y:...@........with.path.open(enc
1c00 6f 64 69 6e 67 3d 22 75 74 66 2d 38 22 2c 20 65 72 72 6f 72 73 3d 22 72 65 70 6c 61 63 65 22 29 oding="utf-8",.errors="replace")
1c20 20 61 73 20 66 3a 00 00 00 1a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6c 69 6e 65 20 69 .as.f:................for.line.i
1c40 6e 20 66 3a 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 20 3d 20 6c n.f:...(................line.=.l
1c60 69 6e 65 2e 72 73 74 72 69 70 28 22 5c 6e 22 29 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 ine.rstrip("\n")...(............
1c80 20 20 20 20 69 66 20 6c 69 6e 65 2e 73 74 61 72 74 73 77 69 74 68 28 22 5b 22 29 3a 00 00 00 40 ....if.line.startswith("["):...@
1ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 5f 64 65 73 6b 74 6f 70 5f 65 ....................in_desktop_e
1cc0 6e 74 72 79 20 3d 20 6c 69 6e 65 20 3d 3d 20 22 5b 44 65 73 6b 74 6f 70 20 45 6e 74 72 79 5d 22 ntry.=.line.==."[Desktop.Entry]"
1ce0 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 ........................continue
1d00 00 00 00 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 69 6e 5f 64 65 ...;................if.not.in_de
1d20 73 6b 74 6f 70 5f 65 6e 74 72 79 20 6f 72 20 22 3d 22 20 6e 6f 74 20 69 6e 20 6c 69 6e 65 3a 00 sktop_entry.or."=".not.in.line:.
1d40 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 00 .......................continue.
1d60 00 00 33 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2c 20 5f 2c 20 76 61 6c 75 65 ..3................key,._,.value
1d80 20 3d 20 6c 69 6e 65 2e 70 61 72 74 69 74 69 6f 6e 28 22 3d 22 29 00 00 00 21 20 20 20 20 20 20 .=.line.partition("=")...!......
1da0 20 20 20 20 20 20 20 20 20 20 6b 65 79 20 3d 20 6b 65 79 2e 73 74 72 69 70 28 29 00 00 00 24 20 ..........key.=.key.strip()...$.
1dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6b 65 79 20 6e 6f 74 20 69 6e 20 70 72 6f ...............if.key.not.in.pro
1de0 70 73 3a 00 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 70 73 ps:........................props
1e00 5b 6b 65 79 5d 20 3d 20 76 61 6c 75 65 2e 73 74 72 69 70 28 29 00 00 00 13 20 20 20 20 65 78 63 [key].=.value.strip()........exc
1e20 65 70 74 20 4f 53 45 72 72 6f 72 3a 00 00 00 19 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e ept.OSError:............return.N
1e40 6f 6e 65 2c 20 4e 6f 6e 65 00 00 00 00 00 00 00 34 20 20 20 20 69 66 20 70 72 6f 70 73 2e 67 65 one,.None.......4....if.props.ge
1e60 74 28 22 4e 6f 44 69 73 70 6c 61 79 22 2c 20 22 22 29 2e 6c 6f 77 65 72 28 29 20 3d 3d 20 22 74 t("NoDisplay",."").lower().==."t
1e80 72 75 65 22 3a 00 00 00 19 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e 6f rue":............return.None,.No
1ea0 6e 65 00 00 00 31 20 20 20 20 69 66 20 70 72 6f 70 73 2e 67 65 74 28 22 48 69 64 64 65 6e 22 2c ne...1....if.props.get("Hidden",
1ec0 20 22 22 29 2e 6c 6f 77 65 72 28 29 20 3d 3d 20 22 74 72 75 65 22 3a 00 00 00 19 20 20 20 20 20 ."").lower().==."true":.........
1ee0 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e 6f 6e 65 00 00 00 2e 20 20 20 20 69 66 20 70 ...return.None,.None........if.p
1f00 72 6f 70 73 2e 67 65 74 28 22 54 79 70 65 22 2c 20 22 22 29 20 21 3d 20 22 41 70 70 6c 69 63 61 rops.get("Type",."").!=."Applica
1f20 74 69 6f 6e 22 3a 00 00 00 19 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e tion":............return.None,.N
1f40 6f 6e 65 00 00 00 00 00 00 00 1c 20 20 20 20 6e 61 6d 65 20 3d 20 70 72 6f 70 73 2e 67 65 74 28 one............name.=.props.get(
1f60 22 4e 61 6d 65 22 29 00 00 00 20 20 20 20 20 65 78 65 63 5f 72 61 77 20 3d 20 70 72 6f 70 73 2e "Name")........exec_raw.=.props.
1f80 67 65 74 28 22 45 78 65 63 22 29 00 00 00 00 00 00 00 20 20 20 20 20 69 66 20 6e 6f 74 20 6e 61 get("Exec")............if.not.na
1fa0 6d 65 20 6f 72 20 6e 6f 74 20 65 78 65 63 5f 72 61 77 3a 00 00 00 19 20 20 20 20 20 20 20 20 72 me.or.not.exec_raw:............r
1fc0 65 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e 6f 6e 65 00 00 00 00 00 00 00 23 20 20 20 20 65 78 65 63 eturn.None,.None.......#....exec
1fe0 5f 63 6d 64 20 3d 20 63 6c 65 61 6e 5f 65 78 65 63 28 65 78 65 63 5f 72 61 77 29 00 00 00 00 00 _cmd.=.clean_exec(exec_raw).....
2000 00 00 14 20 20 20 20 69 66 20 6e 6f 74 20 65 78 65 63 5f 63 6d 64 3a 00 00 00 19 20 20 20 20 20 .......if.not.exec_cmd:.........
2020 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e 6f 6e 65 00 00 00 00 00 00 00 1c 20 20 20 20 ...return.None,.None............
2040 6c 6f 77 65 72 20 3d 20 65 78 65 63 5f 63 6d 64 2e 6c 6f 77 65 72 28 29 00 00 00 3f 20 20 20 20 lower.=.exec_cmd.lower()...?....
2060 69 66 20 61 6e 79 28 6c 6f 77 65 72 2e 73 74 61 72 74 73 77 69 74 68 28 70 29 20 66 6f 72 20 70 if.any(lower.startswith(p).for.p
2080 20 69 6e 20 49 4e 56 41 4c 49 44 5f 45 58 45 43 5f 50 52 45 46 49 58 45 53 29 3a 00 00 00 19 20 .in.INVALID_EXEC_PREFIXES):.....
20a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e 6f 6e 65 00 00 00 00 00 00 00 3a .......return.None,.None.......:
20c0 20 20 20 20 74 65 72 6d 69 6e 61 6c 20 3d 20 70 72 6f 70 73 2e 67 65 74 28 22 54 65 72 6d 69 6e ....terminal.=.props.get("Termin
20e0 61 6c 22 2c 20 22 22 29 2e 6c 6f 77 65 72 28 29 20 3d 3d 20 22 74 72 75 65 22 00 00 00 10 20 20 al",."").lower().==."true"......
2100 20 20 69 66 20 74 65 72 6d 69 6e 61 6c 3a 00 00 00 32 20 20 20 20 20 20 20 20 74 65 72 6d 20 3d ..if.terminal:...2........term.=
2120 20 6f 73 2e 65 6e 76 69 72 6f 6e 2e 67 65 74 28 22 54 45 52 4d 49 4e 41 4c 22 2c 20 22 78 74 65 .os.environ.get("TERMINAL",."xte
2140 72 6d 22 29 00 00 00 2a 20 20 20 20 20 20 20 20 65 78 65 63 5f 63 6d 64 20 3d 20 66 22 7b 74 65 rm")...*........exec_cmd.=.f"{te
2160 72 6d 7d 20 2d 65 20 7b 65 78 65 63 5f 63 6d 64 7d 22 00 00 00 00 00 00 00 19 20 20 20 20 72 65 rm}.-e.{exec_cmd}"............re
2180 74 75 72 6e 20 6e 61 6d 65 2c 20 65 78 65 63 5f 63 6d 64 00 00 00 00 00 00 00 00 00 00 00 25 64 turn.name,.exec_cmd...........%d
21a0 65 66 20 63 6c 65 61 6e 5f 65 78 65 63 28 65 78 65 63 5f 72 61 77 3a 20 73 74 72 29 20 2d 3e 20 ef.clean_exec(exec_raw:.str).->.
21c0 73 74 72 3a 00 00 00 1d 20 20 20 20 74 6f 6b 65 6e 73 20 3d 20 65 78 65 63 5f 72 61 77 2e 73 70 str:........tokens.=.exec_raw.sp
21e0 6c 69 74 28 29 00 00 00 10 20 20 20 20 63 6c 65 61 6e 65 64 20 3d 20 5b 5d 00 00 00 18 20 20 20 lit()........cleaned.=.[].......
2200 20 66 6f 72 20 74 6f 6b 65 6e 20 69 6e 20 74 6f 6b 65 6e 73 3a 00 00 00 4c 20 20 20 20 20 20 20 .for.token.in.tokens:...L.......
2220 20 69 66 20 74 6f 6b 65 6e 2e 73 74 61 72 74 73 77 69 74 68 28 22 25 22 29 20 61 6e 64 20 6c 65 .if.token.startswith("%").and.le
2240 6e 28 74 6f 6b 65 6e 29 20 3d 3d 20 32 20 61 6e 64 20 74 6f 6b 65 6e 5b 31 5d 2e 69 73 61 6c 70 n(token).==.2.and.token[1].isalp
2260 68 61 28 29 3a 00 00 00 14 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 00 00 00 ha():................continue...
2280 1d 20 20 20 20 20 20 20 20 63 6c 65 61 6e 65 64 2e 61 70 70 65 6e 64 28 74 6f 6b 65 6e 29 00 00 .........cleaned.append(token)..
22a0 00 24 20 20 20 20 72 65 74 75 72 6e 20 22 20 22 2e 6a 6f 69 6e 28 63 6c 65 61 6e 65 64 29 2e 73 .$....return.".".join(cleaned).s
22c0 74 72 69 70 28 29 00 00 00 00 00 00 00 00 00 00 00 13 64 65 66 20 63 6f 6c 6c 65 63 74 5f 61 70 trip()............def.collect_ap
22e0 70 73 28 29 3a 00 00 00 13 20 20 20 20 73 65 65 6e 5f 73 74 65 6d 73 20 3d 20 7b 7d 00 00 00 22 ps():........seen_stems.=.{}..."
2300 20 20 20 20 66 6f 72 20 64 69 72 65 63 74 6f 72 79 20 69 6e 20 44 45 53 4b 54 4f 50 5f 44 49 52 ....for.directory.in.DESKTOP_DIR
2320 53 3a 00 00 00 22 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 64 69 72 65 63 74 6f 72 79 2e 69 S:..."........if.not.directory.i
2340 73 5f 64 69 72 28 29 3a 00 00 00 14 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 s_dir():................continue
2360 00 00 00 40 20 20 20 20 20 20 20 20 66 6f 72 20 64 65 73 6b 74 6f 70 5f 66 69 6c 65 20 69 6e 20 ...@........for.desktop_file.in.
2380 73 6f 72 74 65 64 28 64 69 72 65 63 74 6f 72 79 2e 67 6c 6f 62 28 22 2a 2e 64 65 73 6b 74 6f 70 sorted(directory.glob("*.desktop
23a0 22 29 29 3a 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 73 74 65 6d 20 3d 20 64 65 73 6b 74 ")):...$............stem.=.deskt
23c0 6f 70 5f 66 69 6c 65 2e 73 74 65 6d 00 00 00 26 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 op_file.stem...&............if.s
23e0 74 65 6d 20 6e 6f 74 20 69 6e 20 73 65 65 6e 5f 73 74 65 6d 73 3a 00 00 00 2f 20 20 20 20 20 20 tem.not.in.seen_stems:.../......
2400 20 20 20 20 20 20 20 20 20 20 73 65 65 6e 5f 73 74 65 6d 73 5b 73 74 65 6d 5d 20 3d 20 64 65 73 ..........seen_stems[stem].=.des
2420 6b 74 6f 70 5f 66 69 6c 65 00 00 00 00 00 00 00 0d 20 20 20 20 61 70 70 73 20 3d 20 7b 7d 00 00 ktop_file............apps.=.{}..
2440 00 2c 20 20 20 20 66 6f 72 20 64 65 73 6b 74 6f 70 5f 66 69 6c 65 20 69 6e 20 73 65 65 6e 5f 73 .,....for.desktop_file.in.seen_s
2460 74 65 6d 73 2e 76 61 6c 75 65 73 28 29 3a 00 00 00 34 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 tems.values():...4........name,.
2480 63 6d 64 20 3d 20 70 61 72 73 65 5f 64 65 73 6b 74 6f 70 5f 66 69 6c 65 28 64 65 73 6b 74 6f 70 cmd.=.parse_desktop_file(desktop
24a0 5f 66 69 6c 65 29 00 00 00 2d 20 20 20 20 20 20 20 20 69 66 20 6e 61 6d 65 20 61 6e 64 20 63 6d _file)...-........if.name.and.cm
24c0 64 20 61 6e 64 20 6e 61 6d 65 20 6e 6f 74 20 69 6e 20 61 70 70 73 3a 00 00 00 1c 20 20 20 20 20 d.and.name.not.in.apps:.........
24e0 20 20 20 20 20 20 20 61 70 70 73 5b 6e 61 6d 65 5d 20 3d 20 63 6d 64 00 00 00 0f 20 20 20 20 72 .......apps[name].=.cmd........r
2500 65 74 75 72 6e 20 61 70 70 73 00 00 00 00 00 00 00 00 00 00 00 32 64 65 66 20 72 75 6e 5f 64 6d eturn.apps...........2def.run_dm
2520 65 6e 75 28 61 70 70 5f 6e 61 6d 65 73 3a 20 6c 69 73 74 5b 73 74 72 5d 29 20 2d 3e 20 73 74 72 enu(app_names:.list[str]).->.str
2540 20 7c 20 4e 6f 6e 65 3a 00 00 00 49 20 20 20 20 6e 61 6d 65 73 5f 69 6e 70 75 74 20 3d 20 22 5c .|.None:...I....names_input.=."\
2560 6e 22 2e 6a 6f 69 6e 28 73 6f 72 74 65 64 28 61 70 70 5f 6e 61 6d 65 73 2c 20 6b 65 79 3d 73 74 n".join(sorted(app_names,.key=st
2580 72 2e 63 61 73 65 66 6f 6c 64 29 29 2e 65 6e 63 6f 64 65 28 29 00 00 00 08 20 20 20 20 74 72 79 r.casefold)).encode()........try
25a0 3a 00 00 00 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 73 75 62 70 72 6f 63 65 73 73 :............result.=.subprocess
25c0 2e 72 75 6e 28 00 00 00 17 20 20 20 20 20 20 20 20 20 20 20 20 44 4d 45 4e 55 5f 41 52 47 53 2c .run(................DMENU_ARGS,
25e0 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 70 75 74 3d 6e 61 6d 65 73 5f 69 6e 70 75 ................input=names_inpu
2600 74 2c 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 70 74 75 72 65 5f 6f 75 74 70 75 74 t,................capture_output
2620 3d 54 72 75 65 2c 00 00 00 09 20 20 20 20 20 20 20 20 29 00 00 00 1d 20 20 20 20 65 78 63 65 70 =True,............)........excep
2640 74 20 46 69 6c 65 4e 6f 74 46 6f 75 6e 64 45 72 72 6f 72 3a 00 00 00 32 20 20 20 20 20 20 20 20 t.FileNotFoundError:...2........
2660 73 79 73 2e 65 78 69 74 28 22 65 72 72 6f 72 3a 20 64 6d 65 6e 75 20 6e 6f 74 20 66 6f 75 6e 64 sys.exit("error:.dmenu.not.found
2680 20 69 6e 20 50 41 54 48 22 29 00 00 00 00 00 00 00 1e 20 20 20 20 69 66 20 72 65 73 75 6c 74 2e .in.PATH")............if.result.
26a0 72 65 74 75 72 6e 63 6f 64 65 20 21 3d 20 30 3a 00 00 00 13 20 20 20 20 20 20 20 20 72 65 74 75 returncode.!=.0:............retu
26c0 72 6e 20 4e 6f 6e 65 00 00 00 00 00 00 00 29 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 rn.None.......)....return.result
26e0 2e 73 74 64 6f 75 74 2e 64 65 63 6f 64 65 28 29 2e 73 74 72 69 70 28 29 00 00 00 00 00 00 00 00 .stdout.decode().strip()........
2700 00 00 00 15 64 65 66 20 6c 61 75 6e 63 68 28 63 6d 64 3a 20 73 74 72 29 3a 00 00 00 15 20 20 20 ....def.launch(cmd:.str):.......
2720 20 73 75 62 70 72 6f 63 65 73 73 2e 50 6f 70 65 6e 28 00 00 00 0c 20 20 20 20 20 20 20 20 63 6d .subprocess.Popen(............cm
2740 64 2c 00 00 00 13 20 20 20 20 20 20 20 20 73 68 65 6c 6c 3d 54 72 75 65 2c 00 00 00 21 20 20 20 d,............shell=True,...!...
2760 20 20 20 20 20 73 74 64 69 6e 3d 73 75 62 70 72 6f 63 65 73 73 2e 44 45 56 4e 55 4c 4c 2c 00 00 .....stdin=subprocess.DEVNULL,..
2780 00 22 20 20 20 20 20 20 20 20 73 74 64 6f 75 74 3d 73 75 62 70 72 6f 63 65 73 73 2e 44 45 56 4e ."........stdout=subprocess.DEVN
27a0 55 4c 4c 2c 00 00 00 22 20 20 20 20 20 20 20 20 73 74 64 65 72 72 3d 73 75 62 70 72 6f 63 65 73 ULL,..."........stderr=subproces
27c0 73 2e 44 45 56 4e 55 4c 4c 2c 00 00 00 1f 20 20 20 20 20 20 20 20 73 74 61 72 74 5f 6e 65 77 5f s.DEVNULL,............start_new_
27e0 73 65 73 73 69 6f 6e 3d 54 72 75 65 2c 00 00 00 05 20 20 20 20 29 00 00 00 00 00 00 00 00 00 00 session=True,........)..........
2800 00 0b 64 65 66 20 6d 61 69 6e 28 29 3a 00 00 00 19 20 20 20 20 61 70 70 73 20 3d 20 63 6f 6c 6c ..def.main():........apps.=.coll
2820 65 63 74 5f 61 70 70 73 28 29 00 00 00 00 00 00 00 10 20 20 20 20 69 66 20 6e 6f 74 20 61 70 70 ect_apps()............if.not.app
2840 73 3a 00 00 00 30 20 20 20 20 20 20 20 20 73 79 73 2e 65 78 69 74 28 22 65 72 72 6f 72 3a 20 6e s:...0........sys.exit("error:.n
2860 6f 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 66 6f 75 6e 64 22 29 00 00 00 00 00 00 00 2b 20 20 o.applications.found").......+..
2880 20 20 73 65 6c 65 63 74 65 64 20 3d 20 72 75 6e 5f 64 6d 65 6e 75 28 6c 69 73 74 28 61 70 70 73 ..selected.=.run_dmenu(list(apps
28a0 2e 6b 65 79 73 28 29 29 29 00 00 00 00 00 00 00 14 20 20 20 20 69 66 20 6e 6f 74 20 73 65 6c 65 .keys()))............if.not.sele
28c0 63 74 65 64 3a 00 00 00 0e 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 00 00 00 00 00 00 00 1c 20 cted:............return.........
28e0 20 20 20 63 6d 64 20 3d 20 61 70 70 73 2e 67 65 74 28 73 65 6c 65 63 74 65 64 29 00 00 00 0f 20 ...cmd.=.apps.get(selected).....
2900 20 20 20 69 66 20 6e 6f 74 20 63 6d 64 3a 00 00 00 3d 20 20 20 20 20 20 20 20 73 79 73 2e 65 78 ...if.not.cmd:...=........sys.ex
2920 69 74 28 66 22 65 72 72 6f 72 3a 20 6e 6f 20 63 6f 6d 6d 61 6e 64 20 66 6f 75 6e 64 20 66 6f 72 it(f"error:.no.command.found.for
2940 20 27 7b 73 65 6c 65 63 74 65 64 7d 27 22 29 00 00 00 00 00 00 00 0f 20 20 20 20 6c 61 75 6e 63 .'{selected}'")............launc
2960 68 28 63 6d 64 29 00 00 00 00 00 00 00 00 00 00 00 1a 69 66 20 5f 5f 6e 61 6d 65 5f 5f 20 3d 3d h(cmd)............if.__name__.==
2980 20 22 5f 5f 6d 61 69 6e 5f 5f 22 3a 00 00 00 0a 20 20 20 20 6d 61 69 6e 28 29 35 81 f5 18 00 00 ."__main__":........main()5.....
29a0 00 00 00 00 00 00 00 00 00 00 9e 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
29c0 00 00 4c 0f 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 04 00 00 00 06 00 00 ..L...............5._...........
29e0 00 00 00 00 00 00 00 00 00 05 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 ................................
2a00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 a1 14 32 04 01 00 00 ........................i..2....
2b60 00 06 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 ................................
2b80 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ...........5....................
2ba0 00 00 00 9e 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5d 0f 00 00 00 ...........................]....
2bc0 00 00 00 35 81 5f d0 00 00 00 05 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 06 00 00 00 01 00 ...5._..........................
2be0 00 00 04 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2c80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ca0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2cc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2ce0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
2d40 00 00 00 00 00 00 00 00 00 69 a1 14 7a 04 01 00 00 00 00 00 f5 18 00 00 00 00 00 00 00 02 00 00 .........i..z...................
2d60 00 00 00 00 00 9f 00 00 00 16 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 70 79 74 68 6f 6e 33 ..........#!/usr/bin/env.python3
2d80 00 00 00 00 00 00 00 09 69 6d 70 6f 72 74 20 6f 73 00 00 00 11 69 6d 70 6f 72 74 20 73 75 62 70 ........import.os....import.subp
2da0 72 6f 63 65 73 73 00 00 00 0a 69 6d 70 6f 72 74 20 73 79 73 00 00 00 18 66 72 6f 6d 20 70 61 74 rocess....import.sys....from.pat
2dc0 68 6c 69 62 20 69 6d 70 6f 72 74 20 50 61 74 68 00 00 00 00 00 00 00 00 00 00 00 0e 44 4d 45 4e hlib.import.Path............DMEN
2de0 55 5f 41 52 47 53 20 3d 20 5b 00 00 00 0c 20 20 20 20 22 64 6d 65 6e 75 22 2c 00 00 00 09 20 20 U_ARGS.=.[........"dmenu",......
2e00 20 20 22 2d 69 22 2c 00 00 00 1a 20 20 20 20 22 2d 66 6e 22 2c 20 22 46 69 72 61 20 43 6f 64 65 .."-i",........"-fn",."Fira.Code
2e20 2d 31 30 22 2c 00 00 00 15 20 20 20 20 22 2d 6e 62 22 2c 20 22 23 31 65 31 65 31 65 22 2c 00 00 -10",........"-nb",."#1e1e1e",..
2e40 00 15 20 20 20 20 22 2d 6e 66 22 2c 20 22 23 63 63 63 63 63 63 22 2c 00 00 00 15 20 20 20 20 22 ......"-nf",."#cccccc",........"
2e60 2d 73 62 22 2c 20 22 23 32 34 37 32 63 38 22 2c 00 00 00 15 20 20 20 20 22 2d 73 66 22 2c 20 22 -sb",."#2472c8",........"-sf",."
2e80 23 65 35 65 35 65 35 22 2c 00 00 00 0f 20 20 20 20 22 2d 6c 22 2c 20 22 31 30 22 2c 00 00 00 14 #e5e5e5",........"-l",."10",....
2ea0 20 20 20 20 22 2d 70 22 2c 20 22 6c 61 75 6e 63 68 3a 22 2c 00 00 00 01 5d 00 00 00 00 00 00 00 ...."-p",."launch:",....].......
2ec0 10 44 45 53 4b 54 4f 50 5f 44 49 52 53 20 3d 20 5b 00 00 00 2e 20 20 20 20 50 61 74 68 2e 68 6f .DESKTOP_DIRS.=.[........Path.ho
2ee0 6d 65 28 29 20 2f 20 22 2e 6c 6f 63 61 6c 2f 73 68 61 72 65 2f 61 70 70 6c 69 63 61 74 69 6f 6e me()./.".local/share/application
2f00 73 22 2c 00 00 00 24 20 20 20 20 50 61 74 68 28 22 2f 75 73 72 2f 73 68 61 72 65 2f 61 70 70 6c s",...$....Path("/usr/share/appl
2f20 69 63 61 74 69 6f 6e 73 22 29 2c 00 00 00 2a 20 20 20 20 50 61 74 68 28 22 2f 75 73 72 2f 6c 6f ications"),...*....Path("/usr/lo
2f40 63 61 6c 2f 73 68 61 72 65 2f 61 70 70 6c 69 63 61 74 69 6f 6e 73 22 29 2c 00 00 00 01 5d 00 00 cal/share/applications"),....]..
2f60 00 00 00 00 00 4a 49 4e 56 41 4c 49 44 5f 45 58 45 43 5f 50 52 45 46 49 58 45 53 20 3d 20 28 22 .....JINVALID_EXEC_PREFIXES.=.("
2f80 77 69 6e 65 22 2c 20 22 77 73 63 72 69 70 74 22 2c 20 22 72 75 6e 64 6c 6c 33 32 22 2c 20 22 77 wine",."wscript",."rundll32",."w
2fa0 69 6e 68 6c 70 33 32 22 2c 20 22 68 68 20 22 29 00 00 00 00 00 00 00 00 00 00 00 23 64 65 66 20 inhlp32",."hh.")...........#def.
2fc0 70 61 72 73 65 5f 64 65 73 6b 74 6f 70 5f 66 69 6c 65 28 70 61 74 68 3a 20 50 61 74 68 29 3a 00 parse_desktop_file(path:.Path):.
2fe0 00 00 07 20 20 20 20 22 22 22 00 00 00 4b 20 20 20 20 52 65 74 75 72 6e 73 20 28 6e 61 6d 65 2c ......."""...K....Returns.(name,
3000 20 65 78 65 63 5f 63 6d 64 29 20 6f 72 20 28 4e 6f 6e 65 2c 20 4e 6f 6e 65 29 20 69 66 20 74 68 .exec_cmd).or.(None,.None).if.th
3020 65 20 66 69 6c 65 20 73 68 6f 75 6c 64 20 62 65 20 73 6b 69 70 70 65 64 2e 00 00 00 57 20 20 20 e.file.should.be.skipped....W...
3040 20 48 61 6e 64 6c 65 73 3a 20 4e 6f 44 69 73 70 6c 61 79 3d 74 72 75 65 2c 20 48 69 64 64 65 6e .Handles:.NoDisplay=true,.Hidden
3060 3d 74 72 75 65 2c 20 6d 69 73 73 69 6e 67 20 4e 61 6d 65 2f 45 78 65 63 2c 20 66 69 65 6c 64 20 =true,.missing.Name/Exec,.field.
3080 63 6f 64 65 73 2c 20 65 6e 76 20 77 72 61 70 70 65 72 73 2e 00 00 00 07 20 20 20 20 22 22 22 00 codes,.env.wrappers.........""".
30a0 00 00 0e 20 20 20 20 70 72 6f 70 73 20 3d 20 7b 7d 00 00 00 1c 20 20 20 20 69 6e 5f 64 65 73 6b .......props.=.{}........in_desk
30c0 74 6f 70 5f 65 6e 74 72 79 20 3d 20 46 61 6c 73 65 00 00 00 00 00 00 00 08 20 20 20 20 74 72 79 top_entry.=.False............try
30e0 3a 00 00 00 40 20 20 20 20 20 20 20 20 77 69 74 68 20 70 61 74 68 2e 6f 70 65 6e 28 65 6e 63 6f :...@........with.path.open(enco
3100 64 69 6e 67 3d 22 75 74 66 2d 38 22 2c 20 65 72 72 6f 72 73 3d 22 72 65 70 6c 61 63 65 22 29 20 ding="utf-8",.errors="replace").
3120 61 73 20 66 3a 00 00 00 1a 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20 6c 69 6e 65 20 69 6e as.f:................for.line.in
3140 20 66 3a 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69 6e 65 20 3d 20 6c 69 .f:...(................line.=.li
3160 6e 65 2e 72 73 74 72 69 70 28 22 5c 6e 22 29 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 ne.rstrip("\n")...(.............
3180 20 20 20 69 66 20 6c 69 6e 65 2e 73 74 61 72 74 73 77 69 74 68 28 22 5b 22 29 3a 00 00 00 40 20 ...if.line.startswith("["):...@.
31a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 5f 64 65 73 6b 74 6f 70 5f 65 6e ...................in_desktop_en
31c0 74 72 79 20 3d 20 6c 69 6e 65 20 3d 3d 20 22 5b 44 65 73 6b 74 6f 70 20 45 6e 74 72 79 5d 22 00 try.=.line.==."[Desktop.Entry]".
31e0 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 00 .......................continue.
3200 00 00 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 69 6e 5f 64 65 73 ..;................if.not.in_des
3220 6b 74 6f 70 5f 65 6e 74 72 79 20 6f 72 20 22 3d 22 20 6e 6f 74 20 69 6e 20 6c 69 6e 65 3a 00 00 ktop_entry.or."=".not.in.line:..
3240 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 00 00 ......................continue..
3260 00 33 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2c 20 5f 2c 20 76 61 6c 75 65 20 .3................key,._,.value.
3280 3d 20 6c 69 6e 65 2e 70 61 72 74 69 74 69 6f 6e 28 22 3d 22 29 00 00 00 21 20 20 20 20 20 20 20 =.line.partition("=")...!.......
32a0 20 20 20 20 20 20 20 20 20 6b 65 79 20 3d 20 6b 65 79 2e 73 74 72 69 70 28 29 00 00 00 24 20 20 .........key.=.key.strip()...$..
32c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6b 65 79 20 6e 6f 74 20 69 6e 20 70 72 6f 70 ..............if.key.not.in.prop
32e0 73 3a 00 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 70 73 5b s:........................props[
3300 6b 65 79 5d 20 3d 20 76 61 6c 75 65 2e 73 74 72 69 70 28 29 00 00 00 13 20 20 20 20 65 78 63 65 key].=.value.strip()........exce
3320 70 74 20 4f 53 45 72 72 6f 72 3a 00 00 00 19 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f pt.OSError:............return.No
3340 6e 65 2c 20 4e 6f 6e 65 00 00 00 00 00 00 00 34 20 20 20 20 69 66 20 70 72 6f 70 73 2e 67 65 74 ne,.None.......4....if.props.get
3360 28 22 4e 6f 44 69 73 70 6c 61 79 22 2c 20 22 22 29 2e 6c 6f 77 65 72 28 29 20 3d 3d 20 22 74 72 ("NoDisplay",."").lower().==."tr
3380 75 65 22 3a 00 00 00 19 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e 6f 6e ue":............return.None,.Non
33a0 65 00 00 00 31 20 20 20 20 69 66 20 70 72 6f 70 73 2e 67 65 74 28 22 48 69 64 64 65 6e 22 2c 20 e...1....if.props.get("Hidden",.
33c0 22 22 29 2e 6c 6f 77 65 72 28 29 20 3d 3d 20 22 74 72 75 65 22 3a 00 00 00 19 20 20 20 20 20 20 "").lower().==."true":..........
33e0 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e 6f 6e 65 00 00 00 2e 20 20 20 20 69 66 20 70 72 ..return.None,.None........if.pr
3400 6f 70 73 2e 67 65 74 28 22 54 79 70 65 22 2c 20 22 22 29 20 21 3d 20 22 41 70 70 6c 69 63 61 74 ops.get("Type",."").!=."Applicat
3420 69 6f 6e 22 3a 00 00 00 19 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e 6f ion":............return.None,.No
3440 6e 65 00 00 00 00 00 00 00 1c 20 20 20 20 6e 61 6d 65 20 3d 20 70 72 6f 70 73 2e 67 65 74 28 22 ne............name.=.props.get("
3460 4e 61 6d 65 22 29 00 00 00 20 20 20 20 20 65 78 65 63 5f 72 61 77 20 3d 20 70 72 6f 70 73 2e 67 Name")........exec_raw.=.props.g
3480 65 74 28 22 45 78 65 63 22 29 00 00 00 00 00 00 00 20 20 20 20 20 69 66 20 6e 6f 74 20 6e 61 6d et("Exec")............if.not.nam
34a0 65 20 6f 72 20 6e 6f 74 20 65 78 65 63 5f 72 61 77 3a 00 00 00 19 20 20 20 20 20 20 20 20 72 65 e.or.not.exec_raw:............re
34c0 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e 6f 6e 65 00 00 00 00 00 00 00 23 20 20 20 20 65 78 65 63 5f turn.None,.None.......#....exec_
34e0 63 6d 64 20 3d 20 63 6c 65 61 6e 5f 65 78 65 63 28 65 78 65 63 5f 72 61 77 29 00 00 00 00 00 00 cmd.=.clean_exec(exec_raw)......
3500 00 14 20 20 20 20 69 66 20 6e 6f 74 20 65 78 65 63 5f 63 6d 64 3a 00 00 00 19 20 20 20 20 20 20 ......if.not.exec_cmd:..........
3520 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e 6f 6e 65 00 00 00 00 00 00 00 1c 20 20 20 20 6c ..return.None,.None............l
3540 6f 77 65 72 20 3d 20 65 78 65 63 5f 63 6d 64 2e 6c 6f 77 65 72 28 29 00 00 00 3f 20 20 20 20 69 ower.=.exec_cmd.lower()...?....i
3560 66 20 61 6e 79 28 6c 6f 77 65 72 2e 73 74 61 72 74 73 77 69 74 68 28 70 29 20 66 6f 72 20 70 20 f.any(lower.startswith(p).for.p.
3580 69 6e 20 49 4e 56 41 4c 49 44 5f 45 58 45 43 5f 50 52 45 46 49 58 45 53 29 3a 00 00 00 19 20 20 in.INVALID_EXEC_PREFIXES):......
35a0 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e 6f 6e 65 00 00 00 00 00 00 00 3a 20 ......return.None,.None.......:.
35c0 20 20 20 74 65 72 6d 69 6e 61 6c 20 3d 20 70 72 6f 70 73 2e 67 65 74 28 22 54 65 72 6d 69 6e 61 ...terminal.=.props.get("Termina
35e0 6c 22 2c 20 22 22 29 2e 6c 6f 77 65 72 28 29 20 3d 3d 20 22 74 72 75 65 22 00 00 00 10 20 20 20 l",."").lower().==."true".......
3600 20 69 66 20 74 65 72 6d 69 6e 61 6c 3a 00 00 00 32 20 20 20 20 20 20 20 20 74 65 72 6d 20 3d 20 .if.terminal:...2........term.=.
3620 6f 73 2e 65 6e 76 69 72 6f 6e 2e 67 65 74 28 22 54 45 52 4d 49 4e 41 4c 22 2c 20 22 78 74 65 72 os.environ.get("TERMINAL",."xter
3640 6d 22 29 00 00 00 2a 20 20 20 20 20 20 20 20 65 78 65 63 5f 63 6d 64 20 3d 20 66 22 7b 74 65 72 m")...*........exec_cmd.=.f"{ter
3660 6d 7d 20 2d 65 20 7b 65 78 65 63 5f 63 6d 64 7d 22 00 00 00 00 00 00 00 19 20 20 20 20 72 65 74 m}.-e.{exec_cmd}"............ret
3680 75 72 6e 20 6e 61 6d 65 2c 20 65 78 65 63 5f 63 6d 64 00 00 00 00 00 00 00 00 00 00 00 25 64 65 urn.name,.exec_cmd...........%de
36a0 66 20 63 6c 65 61 6e 5f 65 78 65 63 28 65 78 65 63 5f 72 61 77 3a 20 73 74 72 29 20 2d 3e 20 73 f.clean_exec(exec_raw:.str).->.s
36c0 74 72 3a 00 00 00 1d 20 20 20 20 74 6f 6b 65 6e 73 20 3d 20 65 78 65 63 5f 72 61 77 2e 73 70 6c tr:........tokens.=.exec_raw.spl
36e0 69 74 28 29 00 00 00 10 20 20 20 20 63 6c 65 61 6e 65 64 20 3d 20 5b 5d 00 00 00 18 20 20 20 20 it()........cleaned.=.[]........
3700 66 6f 72 20 74 6f 6b 65 6e 20 69 6e 20 74 6f 6b 65 6e 73 3a 00 00 00 4c 20 20 20 20 20 20 20 20 for.token.in.tokens:...L........
3720 69 66 20 74 6f 6b 65 6e 2e 73 74 61 72 74 73 77 69 74 68 28 22 25 22 29 20 61 6e 64 20 6c 65 6e if.token.startswith("%").and.len
3740 28 74 6f 6b 65 6e 29 20 3d 3d 20 32 20 61 6e 64 20 74 6f 6b 65 6e 5b 31 5d 2e 69 73 61 6c 70 68 (token).==.2.and.token[1].isalph
3760 61 28 29 3a 00 00 00 14 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 00 00 00 1d a():................continue....
3780 20 20 20 20 20 20 20 20 63 6c 65 61 6e 65 64 2e 61 70 70 65 6e 64 28 74 6f 6b 65 6e 29 00 00 00 ........cleaned.append(token)...
37a0 24 20 20 20 20 72 65 74 75 72 6e 20 22 20 22 2e 6a 6f 69 6e 28 63 6c 65 61 6e 65 64 29 2e 73 74 $....return.".".join(cleaned).st
37c0 72 69 70 28 29 00 00 00 00 00 00 00 00 00 00 00 13 64 65 66 20 63 6f 6c 6c 65 63 74 5f 61 70 70 rip()............def.collect_app
37e0 73 28 29 3a 00 00 00 13 20 20 20 20 73 65 65 6e 5f 73 74 65 6d 73 20 3d 20 7b 7d 00 00 00 22 20 s():........seen_stems.=.{}...".
3800 20 20 20 66 6f 72 20 64 69 72 65 63 74 6f 72 79 20 69 6e 20 44 45 53 4b 54 4f 50 5f 44 49 52 53 ...for.directory.in.DESKTOP_DIRS
3820 3a 00 00 00 22 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 64 69 72 65 63 74 6f 72 79 2e 69 73 :..."........if.not.directory.is
3840 5f 64 69 72 28 29 3a 00 00 00 14 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 00 _dir():................continue.
3860 00 00 40 20 20 20 20 20 20 20 20 66 6f 72 20 64 65 73 6b 74 6f 70 5f 66 69 6c 65 20 69 6e 20 73 ..@........for.desktop_file.in.s
3880 6f 72 74 65 64 28 64 69 72 65 63 74 6f 72 79 2e 67 6c 6f 62 28 22 2a 2e 64 65 73 6b 74 6f 70 22 orted(directory.glob("*.desktop"
38a0 29 29 3a 00 00 00 2c 20 20 20 20 20 20 20 20 20 20 20 20 73 74 65 6d 20 3d 20 64 65 73 6b 74 6f )):...,............stem.=.deskto
38c0 70 5f 66 69 6c 65 2e 73 74 65 6d 2e 6c 6f 77 65 72 28 29 00 00 00 26 20 20 20 20 20 20 20 20 20 p_file.stem.lower()...&.........
38e0 20 20 20 69 66 20 73 74 65 6d 20 6e 6f 74 20 69 6e 20 73 65 65 6e 5f 73 74 65 6d 73 3a 00 00 00 ...if.stem.not.in.seen_stems:...
3900 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 65 6e 5f 73 74 65 6d 73 5b 73 74 65 6d /................seen_stems[stem
3920 5d 20 3d 20 64 65 73 6b 74 6f 70 5f 66 69 6c 65 00 00 00 00 00 00 00 0d 20 20 20 20 61 70 70 73 ].=.desktop_file............apps
3940 20 3d 20 7b 7d 00 00 00 2c 20 20 20 20 66 6f 72 20 64 65 73 6b 74 6f 70 5f 66 69 6c 65 20 69 6e .=.{}...,....for.desktop_file.in
3960 20 73 65 65 6e 5f 73 74 65 6d 73 2e 76 61 6c 75 65 73 28 29 3a 00 00 00 34 20 20 20 20 20 20 20 .seen_stems.values():...4.......
3980 20 6e 61 6d 65 2c 20 63 6d 64 20 3d 20 70 61 72 73 65 5f 64 65 73 6b 74 6f 70 5f 66 69 6c 65 28 .name,.cmd.=.parse_desktop_file(
39a0 64 65 73 6b 74 6f 70 5f 66 69 6c 65 29 00 00 00 2d 20 20 20 20 20 20 20 20 69 66 20 6e 61 6d 65 desktop_file)...-........if.name
39c0 20 61 6e 64 20 63 6d 64 20 61 6e 64 20 6e 61 6d 65 20 6e 6f 74 20 69 6e 20 61 70 70 73 3a 00 00 .and.cmd.and.name.not.in.apps:..
39e0 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 61 70 70 73 5b 6e 61 6d 65 5d 20 3d 20 63 6d 64 00 00 ..............apps[name].=.cmd..
3a00 00 0f 20 20 20 20 72 65 74 75 72 6e 20 61 70 70 73 00 00 00 00 00 00 00 00 00 00 00 32 64 65 66 ......return.apps...........2def
3a20 20 72 75 6e 5f 64 6d 65 6e 75 28 61 70 70 5f 6e 61 6d 65 73 3a 20 6c 69 73 74 5b 73 74 72 5d 29 .run_dmenu(app_names:.list[str])
3a40 20 2d 3e 20 73 74 72 20 7c 20 4e 6f 6e 65 3a 00 00 00 49 20 20 20 20 6e 61 6d 65 73 5f 69 6e 70 .->.str.|.None:...I....names_inp
3a60 75 74 20 3d 20 22 5c 6e 22 2e 6a 6f 69 6e 28 73 6f 72 74 65 64 28 61 70 70 5f 6e 61 6d 65 73 2c ut.=."\n".join(sorted(app_names,
3a80 20 6b 65 79 3d 73 74 72 2e 63 61 73 65 66 6f 6c 64 29 29 2e 65 6e 63 6f 64 65 28 29 00 00 00 08 .key=str.casefold)).encode()....
3aa0 20 20 20 20 74 72 79 3a 00 00 00 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 73 75 62 ....try:............result.=.sub
3ac0 70 72 6f 63 65 73 73 2e 72 75 6e 28 00 00 00 17 20 20 20 20 20 20 20 20 20 20 20 20 44 4d 45 4e process.run(................DMEN
3ae0 55 5f 41 52 47 53 2c 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 70 75 74 3d 6e 61 6d U_ARGS,................input=nam
3b00 65 73 5f 69 6e 70 75 74 2c 00 00 00 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 70 74 75 72 65 es_input,................capture
3b20 5f 6f 75 74 70 75 74 3d 54 72 75 65 2c 00 00 00 09 20 20 20 20 20 20 20 20 29 00 00 00 1d 20 20 _output=True,............)......
3b40 20 20 65 78 63 65 70 74 20 46 69 6c 65 4e 6f 74 46 6f 75 6e 64 45 72 72 6f 72 3a 00 00 00 32 20 ..except.FileNotFoundError:...2.
3b60 20 20 20 20 20 20 20 73 79 73 2e 65 78 69 74 28 22 65 72 72 6f 72 3a 20 64 6d 65 6e 75 20 6e 6f .......sys.exit("error:.dmenu.no
3b80 74 20 66 6f 75 6e 64 20 69 6e 20 50 41 54 48 22 29 00 00 00 00 00 00 00 1e 20 20 20 20 69 66 20 t.found.in.PATH")............if.
3ba0 72 65 73 75 6c 74 2e 72 65 74 75 72 6e 63 6f 64 65 20 21 3d 20 30 3a 00 00 00 13 20 20 20 20 20 result.returncode.!=.0:.........
3bc0 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 00 00 00 00 00 00 00 29 20 20 20 20 72 65 74 75 72 6e ...return.None.......)....return
3be0 20 72 65 73 75 6c 74 2e 73 74 64 6f 75 74 2e 64 65 63 6f 64 65 28 29 2e 73 74 72 69 70 28 29 00 .result.stdout.decode().strip().
3c00 00 00 00 00 00 00 00 00 00 00 15 64 65 66 20 6c 61 75 6e 63 68 28 63 6d 64 3a 20 73 74 72 29 3a ...........def.launch(cmd:.str):
3c20 00 00 00 15 20 20 20 20 73 75 62 70 72 6f 63 65 73 73 2e 50 6f 70 65 6e 28 00 00 00 0c 20 20 20 ........subprocess.Popen(.......
3c40 20 20 20 20 20 63 6d 64 2c 00 00 00 13 20 20 20 20 20 20 20 20 73 68 65 6c 6c 3d 54 72 75 65 2c .....cmd,............shell=True,
3c60 00 00 00 21 20 20 20 20 20 20 20 20 73 74 64 69 6e 3d 73 75 62 70 72 6f 63 65 73 73 2e 44 45 56 ...!........stdin=subprocess.DEV
3c80 4e 55 4c 4c 2c 00 00 00 22 20 20 20 20 20 20 20 20 73 74 64 6f 75 74 3d 73 75 62 70 72 6f 63 65 NULL,..."........stdout=subproce
3ca0 73 73 2e 44 45 56 4e 55 4c 4c 2c 00 00 00 22 20 20 20 20 20 20 20 20 73 74 64 65 72 72 3d 73 75 ss.DEVNULL,..."........stderr=su
3cc0 62 70 72 6f 63 65 73 73 2e 44 45 56 4e 55 4c 4c 2c 00 00 00 1f 20 20 20 20 20 20 20 20 73 74 61 bprocess.DEVNULL,............sta
3ce0 72 74 5f 6e 65 77 5f 73 65 73 73 69 6f 6e 3d 54 72 75 65 2c 00 00 00 05 20 20 20 20 29 00 00 00 rt_new_session=True,........)...
3d00 00 00 00 00 00 00 00 00 0b 64 65 66 20 6d 61 69 6e 28 29 3a 00 00 00 19 20 20 20 20 61 70 70 73 .........def.main():........apps
3d20 20 3d 20 63 6f 6c 6c 65 63 74 5f 61 70 70 73 28 29 00 00 00 00 00 00 00 10 20 20 20 20 69 66 20 .=.collect_apps()............if.
3d40 6e 6f 74 20 61 70 70 73 3a 00 00 00 30 20 20 20 20 20 20 20 20 73 79 73 2e 65 78 69 74 28 22 65 not.apps:...0........sys.exit("e
3d60 72 72 6f 72 3a 20 6e 6f 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 20 66 6f 75 6e 64 22 29 00 00 00 rror:.no.applications.found")...
3d80 00 00 00 00 2b 20 20 20 20 73 65 6c 65 63 74 65 64 20 3d 20 72 75 6e 5f 64 6d 65 6e 75 28 6c 69 ....+....selected.=.run_dmenu(li
3da0 73 74 28 61 70 70 73 2e 6b 65 79 73 28 29 29 29 00 00 00 00 00 00 00 14 20 20 20 20 69 66 20 6e st(apps.keys()))............if.n
3dc0 6f 74 20 73 65 6c 65 63 74 65 64 3a 00 00 00 0e 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 00 00 ot.selected:............return..
3de0 00 00 00 00 00 1c 20 20 20 20 63 6d 64 20 3d 20 61 70 70 73 2e 67 65 74 28 73 65 6c 65 63 74 65 ..........cmd.=.apps.get(selecte
3e00 64 29 00 00 00 0f 20 20 20 20 69 66 20 6e 6f 74 20 63 6d 64 3a 00 00 00 3d 20 20 20 20 20 20 20 d)........if.not.cmd:...=.......
3e20 20 73 79 73 2e 65 78 69 74 28 66 22 65 72 72 6f 72 3a 20 6e 6f 20 63 6f 6d 6d 61 6e 64 20 66 6f .sys.exit(f"error:.no.command.fo
3e40 75 6e 64 20 66 6f 72 20 27 7b 73 65 6c 65 63 74 65 64 7d 27 22 29 00 00 00 00 00 00 00 0f 20 20 und.for.'{selected}'")..........
3e60 20 20 6c 61 75 6e 63 68 28 63 6d 64 29 00 00 00 00 00 00 00 00 00 00 00 1a 69 66 20 5f 5f 6e 61 ..launch(cmd)............if.__na
3e80 6d 65 5f 5f 20 3d 3d 20 22 5f 5f 6d 61 69 6e 5f 5f 22 3a 00 00 00 0a 20 20 20 20 6d 61 69 6e 28 me__.==."__main__":........main(
3ea0 29 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 9f 00 00 00 00 00 00 00 01 00 00 00 00 00 00 )5..............................
3ec0 00 00 00 00 00 00 00 00 00 5e 0f 00 00 00 00 00 00 01 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 .........^...............5._....
3ee0 06 00 00 00 08 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 01 00 00 00 00 00 00 00 00 ff ff ff ................................
3f00 ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3f20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3f40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3f60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3f80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3fa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3fc0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
3fe0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4000 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 ...............................i
4060 a1 14 7a 04 01 00 00 00 08 00 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 ..z.............................
4080 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 ..................5.............
40a0 00 00 00 00 00 00 00 00 00 00 a0 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
40c0 00 00 db 0f 00 00 00 00 00 00 35 81 5f d0 00 00 00 07 00 00 00 09 00 00 00 00 00 00 00 00 00 00 ..........5._...................
40e0 00 08 00 00 00 01 00 00 00 04 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4100 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4120 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4140 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4160 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4180 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
41a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
41c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
41e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4200 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4220 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
4240 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 a1 15 5f 04 01 00 00 00 00 00 f5 18 00 00 00 ................i.._............
4260 00 00 00 00 02 00 00 00 00 00 00 00 a1 00 00 00 16 23 21 2f 75 73 72 2f 62 69 6e 2f 65 6e 76 20 .................#!/usr/bin/env.
4280 70 79 74 68 6f 6e 33 00 00 00 00 00 00 00 09 69 6d 70 6f 72 74 20 6f 73 00 00 00 11 69 6d 70 6f python3........import.os....impo
42a0 72 74 20 73 75 62 70 72 6f 63 65 73 73 00 00 00 0a 69 6d 70 6f 72 74 20 73 79 73 00 00 00 18 66 rt.subprocess....import.sys....f
42c0 72 6f 6d 20 70 61 74 68 6c 69 62 20 69 6d 70 6f 72 74 20 50 61 74 68 00 00 00 00 00 00 00 00 00 rom.pathlib.import.Path.........
42e0 00 00 0e 44 4d 45 4e 55 5f 41 52 47 53 20 3d 20 5b 00 00 00 0c 20 20 20 20 22 64 6d 65 6e 75 22 ...DMENU_ARGS.=.[........"dmenu"
4300 2c 00 00 00 09 20 20 20 20 22 2d 69 22 2c 00 00 00 1a 20 20 20 20 22 2d 66 6e 22 2c 20 22 46 69 ,........"-i",........"-fn",."Fi
4320 72 61 20 43 6f 64 65 2d 31 30 22 2c 00 00 00 15 20 20 20 20 22 2d 6e 62 22 2c 20 22 23 31 65 31 ra.Code-10",........"-nb",."#1e1
4340 65 31 65 22 2c 00 00 00 15 20 20 20 20 22 2d 6e 66 22 2c 20 22 23 63 63 63 63 63 63 22 2c 00 00 e1e",........"-nf",."#cccccc",..
4360 00 15 20 20 20 20 22 2d 73 62 22 2c 20 22 23 32 34 37 32 63 38 22 2c 00 00 00 15 20 20 20 20 22 ......"-sb",."#2472c8",........"
4380 2d 73 66 22 2c 20 22 23 65 35 65 35 65 35 22 2c 00 00 00 0f 20 20 20 20 22 2d 6c 22 2c 20 22 31 -sf",."#e5e5e5",........"-l",."1
43a0 30 22 2c 00 00 00 14 20 20 20 20 22 2d 70 22 2c 20 22 6c 61 75 6e 63 68 3a 22 2c 00 00 00 01 5d 0",........"-p",."launch:",....]
43c0 00 00 00 00 00 00 00 10 44 45 53 4b 54 4f 50 5f 44 49 52 53 20 3d 20 5b 00 00 00 2e 20 20 20 20 ........DESKTOP_DIRS.=.[........
43e0 50 61 74 68 2e 68 6f 6d 65 28 29 20 2f 20 22 2e 6c 6f 63 61 6c 2f 73 68 61 72 65 2f 61 70 70 6c Path.home()./.".local/share/appl
4400 69 63 61 74 69 6f 6e 73 22 2c 00 00 00 44 20 20 20 20 50 61 74 68 2e 68 6f 6d 65 28 29 20 2f 20 ications",...D....Path.home()./.
4420 22 2e 6c 6f 63 61 6c 2f 73 68 61 72 65 2f 66 6c 61 74 70 61 6b 2f 65 78 70 6f 72 74 73 2f 73 68 ".local/share/flatpak/exports/sh
4440 61 72 65 2f 61 70 70 6c 69 63 61 74 69 6f 6e 73 22 2c 00 00 00 38 20 20 20 20 50 61 74 68 28 22 are/applications",...8....Path("
4460 2f 76 61 72 2f 6c 69 62 2f 66 6c 61 74 70 61 6b 2f 65 78 70 6f 72 74 73 2f 73 68 61 72 65 2f 61 /var/lib/flatpak/exports/share/a
4480 70 70 6c 69 63 61 74 69 6f 6e 73 22 29 2c 00 00 00 24 20 20 20 20 50 61 74 68 28 22 2f 75 73 72 pplications"),...$....Path("/usr
44a0 2f 73 68 61 72 65 2f 61 70 70 6c 69 63 61 74 69 6f 6e 73 22 29 2c 00 00 00 2a 20 20 20 20 50 61 /share/applications"),...*....Pa
44c0 74 68 28 22 2f 75 73 72 2f 6c 6f 63 61 6c 2f 73 68 61 72 65 2f 61 70 70 6c 69 63 61 74 69 6f 6e th("/usr/local/share/application
44e0 73 22 29 2c 00 00 00 01 5d 00 00 00 00 00 00 00 4a 49 4e 56 41 4c 49 44 5f 45 58 45 43 5f 50 52 s"),....].......JINVALID_EXEC_PR
4500 45 46 49 58 45 53 20 3d 20 28 22 77 69 6e 65 22 2c 20 22 77 73 63 72 69 70 74 22 2c 20 22 72 75 EFIXES.=.("wine",."wscript",."ru
4520 6e 64 6c 6c 33 32 22 2c 20 22 77 69 6e 68 6c 70 33 32 22 2c 20 22 68 68 20 22 29 00 00 00 00 00 ndll32",."winhlp32",."hh.").....
4540 00 00 00 00 00 00 23 64 65 66 20 70 61 72 73 65 5f 64 65 73 6b 74 6f 70 5f 66 69 6c 65 28 70 61 ......#def.parse_desktop_file(pa
4560 74 68 3a 20 50 61 74 68 29 3a 00 00 00 07 20 20 20 20 22 22 22 00 00 00 4b 20 20 20 20 52 65 74 th:.Path):........"""...K....Ret
4580 75 72 6e 73 20 28 6e 61 6d 65 2c 20 65 78 65 63 5f 63 6d 64 29 20 6f 72 20 28 4e 6f 6e 65 2c 20 urns.(name,.exec_cmd).or.(None,.
45a0 4e 6f 6e 65 29 20 69 66 20 74 68 65 20 66 69 6c 65 20 73 68 6f 75 6c 64 20 62 65 20 73 6b 69 70 None).if.the.file.should.be.skip
45c0 70 65 64 2e 00 00 00 57 20 20 20 20 48 61 6e 64 6c 65 73 3a 20 4e 6f 44 69 73 70 6c 61 79 3d 74 ped....W....Handles:.NoDisplay=t
45e0 72 75 65 2c 20 48 69 64 64 65 6e 3d 74 72 75 65 2c 20 6d 69 73 73 69 6e 67 20 4e 61 6d 65 2f 45 rue,.Hidden=true,.missing.Name/E
4600 78 65 63 2c 20 66 69 65 6c 64 20 63 6f 64 65 73 2c 20 65 6e 76 20 77 72 61 70 70 65 72 73 2e 00 xec,.field.codes,.env.wrappers..
4620 00 00 07 20 20 20 20 22 22 22 00 00 00 0e 20 20 20 20 70 72 6f 70 73 20 3d 20 7b 7d 00 00 00 1c ......."""........props.=.{}....
4640 20 20 20 20 69 6e 5f 64 65 73 6b 74 6f 70 5f 65 6e 74 72 79 20 3d 20 46 61 6c 73 65 00 00 00 00 ....in_desktop_entry.=.False....
4660 00 00 00 08 20 20 20 20 74 72 79 3a 00 00 00 40 20 20 20 20 20 20 20 20 77 69 74 68 20 70 61 74 ........try:...@........with.pat
4680 68 2e 6f 70 65 6e 28 65 6e 63 6f 64 69 6e 67 3d 22 75 74 66 2d 38 22 2c 20 65 72 72 6f 72 73 3d h.open(encoding="utf-8",.errors=
46a0 22 72 65 70 6c 61 63 65 22 29 20 61 73 20 66 3a 00 00 00 1a 20 20 20 20 20 20 20 20 20 20 20 20 "replace").as.f:................
46c0 66 6f 72 20 6c 69 6e 65 20 69 6e 20 66 3a 00 00 00 28 20 20 20 20 20 20 20 20 20 20 20 20 20 20 for.line.in.f:...(..............
46e0 20 20 6c 69 6e 65 20 3d 20 6c 69 6e 65 2e 72 73 74 72 69 70 28 22 5c 6e 22 29 00 00 00 28 20 20 ..line.=.line.rstrip("\n")...(..
4700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6c 69 6e 65 2e 73 74 61 72 74 73 77 69 74 68 ..............if.line.startswith
4720 28 22 5b 22 29 3a 00 00 00 40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e ("["):...@....................in
4740 5f 64 65 73 6b 74 6f 70 5f 65 6e 74 72 79 20 3d 20 6c 69 6e 65 20 3d 3d 20 22 5b 44 65 73 6b 74 _desktop_entry.=.line.==."[Deskt
4760 6f 70 20 45 6e 74 72 79 5d 22 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 op.Entry]"......................
4780 20 20 63 6f 6e 74 69 6e 75 65 00 00 00 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 ..continue...;................if
47a0 20 6e 6f 74 20 69 6e 5f 64 65 73 6b 74 6f 70 5f 65 6e 74 72 79 20 6f 72 20 22 3d 22 20 6e 6f 74 .not.in_desktop_entry.or."=".not
47c0 20 69 6e 20 6c 69 6e 65 3a 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 .in.line:.......................
47e0 20 63 6f 6e 74 69 6e 75 65 00 00 00 33 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 .continue...3................key
4800 2c 20 5f 2c 20 76 61 6c 75 65 20 3d 20 6c 69 6e 65 2e 70 61 72 74 69 74 69 6f 6e 28 22 3d 22 29 ,._,.value.=.line.partition("=")
4820 00 00 00 21 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 20 3d 20 6b 65 79 2e 73 74 ...!................key.=.key.st
4840 72 69 70 28 29 00 00 00 24 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6b 65 79 20 rip()...$................if.key.
4860 6e 6f 74 20 69 6e 20 70 72 6f 70 73 3a 00 00 00 2e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 not.in.props:...................
4880 20 20 20 20 20 70 72 6f 70 73 5b 6b 65 79 5d 20 3d 20 76 61 6c 75 65 2e 73 74 72 69 70 28 29 00 .....props[key].=.value.strip().
48a0 00 00 13 20 20 20 20 65 78 63 65 70 74 20 4f 53 45 72 72 6f 72 3a 00 00 00 19 20 20 20 20 20 20 .......except.OSError:..........
48c0 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e 6f 6e 65 00 00 00 00 00 00 00 34 20 20 20 20 69 ..return.None,.None.......4....i
48e0 66 20 70 72 6f 70 73 2e 67 65 74 28 22 4e 6f 44 69 73 70 6c 61 79 22 2c 20 22 22 29 2e 6c 6f 77 f.props.get("NoDisplay",."").low
4900 65 72 28 29 20 3d 3d 20 22 74 72 75 65 22 3a 00 00 00 19 20 20 20 20 20 20 20 20 72 65 74 75 72 er().==."true":............retur
4920 6e 20 4e 6f 6e 65 2c 20 4e 6f 6e 65 00 00 00 31 20 20 20 20 69 66 20 70 72 6f 70 73 2e 67 65 74 n.None,.None...1....if.props.get
4940 28 22 48 69 64 64 65 6e 22 2c 20 22 22 29 2e 6c 6f 77 65 72 28 29 20 3d 3d 20 22 74 72 75 65 22 ("Hidden",."").lower().==."true"
4960 3a 00 00 00 19 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e 6f 6e 65 00 00 :............return.None,.None..
4980 00 2e 20 20 20 20 69 66 20 70 72 6f 70 73 2e 67 65 74 28 22 54 79 70 65 22 2c 20 22 22 29 20 21 ......if.props.get("Type",."").!
49a0 3d 20 22 41 70 70 6c 69 63 61 74 69 6f 6e 22 3a 00 00 00 19 20 20 20 20 20 20 20 20 72 65 74 75 =."Application":............retu
49c0 72 6e 20 4e 6f 6e 65 2c 20 4e 6f 6e 65 00 00 00 00 00 00 00 1c 20 20 20 20 6e 61 6d 65 20 3d 20 rn.None,.None............name.=.
49e0 70 72 6f 70 73 2e 67 65 74 28 22 4e 61 6d 65 22 29 00 00 00 20 20 20 20 20 65 78 65 63 5f 72 61 props.get("Name")........exec_ra
4a00 77 20 3d 20 70 72 6f 70 73 2e 67 65 74 28 22 45 78 65 63 22 29 00 00 00 00 00 00 00 20 20 20 20 w.=.props.get("Exec")...........
4a20 20 69 66 20 6e 6f 74 20 6e 61 6d 65 20 6f 72 20 6e 6f 74 20 65 78 65 63 5f 72 61 77 3a 00 00 00 .if.not.name.or.not.exec_raw:...
4a40 19 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e 6f 6e 65 00 00 00 00 00 00 .........return.None,.None......
4a60 00 23 20 20 20 20 65 78 65 63 5f 63 6d 64 20 3d 20 63 6c 65 61 6e 5f 65 78 65 63 28 65 78 65 63 .#....exec_cmd.=.clean_exec(exec
4a80 5f 72 61 77 29 00 00 00 00 00 00 00 14 20 20 20 20 69 66 20 6e 6f 74 20 65 78 65 63 5f 63 6d 64 _raw)............if.not.exec_cmd
4aa0 3a 00 00 00 19 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e 6f 6e 65 00 00 :............return.None,.None..
4ac0 00 00 00 00 00 1c 20 20 20 20 6c 6f 77 65 72 20 3d 20 65 78 65 63 5f 63 6d 64 2e 6c 6f 77 65 72 ..........lower.=.exec_cmd.lower
4ae0 28 29 00 00 00 3f 20 20 20 20 69 66 20 61 6e 79 28 6c 6f 77 65 72 2e 73 74 61 72 74 73 77 69 74 ()...?....if.any(lower.startswit
4b00 68 28 70 29 20 66 6f 72 20 70 20 69 6e 20 49 4e 56 41 4c 49 44 5f 45 58 45 43 5f 50 52 45 46 49 h(p).for.p.in.INVALID_EXEC_PREFI
4b20 58 45 53 29 3a 00 00 00 19 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 2c 20 4e 6f XES):............return.None,.No
4b40 6e 65 00 00 00 00 00 00 00 3a 20 20 20 20 74 65 72 6d 69 6e 61 6c 20 3d 20 70 72 6f 70 73 2e 67 ne.......:....terminal.=.props.g
4b60 65 74 28 22 54 65 72 6d 69 6e 61 6c 22 2c 20 22 22 29 2e 6c 6f 77 65 72 28 29 20 3d 3d 20 22 74 et("Terminal",."").lower().==."t
4b80 72 75 65 22 00 00 00 10 20 20 20 20 69 66 20 74 65 72 6d 69 6e 61 6c 3a 00 00 00 32 20 20 20 20 rue"........if.terminal:...2....
4ba0 20 20 20 20 74 65 72 6d 20 3d 20 6f 73 2e 65 6e 76 69 72 6f 6e 2e 67 65 74 28 22 54 45 52 4d 49 ....term.=.os.environ.get("TERMI
4bc0 4e 41 4c 22 2c 20 22 78 74 65 72 6d 22 29 00 00 00 2a 20 20 20 20 20 20 20 20 65 78 65 63 5f 63 NAL",."xterm")...*........exec_c
4be0 6d 64 20 3d 20 66 22 7b 74 65 72 6d 7d 20 2d 65 20 7b 65 78 65 63 5f 63 6d 64 7d 22 00 00 00 00 md.=.f"{term}.-e.{exec_cmd}"....
4c00 00 00 00 19 20 20 20 20 72 65 74 75 72 6e 20 6e 61 6d 65 2c 20 65 78 65 63 5f 63 6d 64 00 00 00 ........return.name,.exec_cmd...
4c20 00 00 00 00 00 00 00 00 25 64 65 66 20 63 6c 65 61 6e 5f 65 78 65 63 28 65 78 65 63 5f 72 61 77 ........%def.clean_exec(exec_raw
4c40 3a 20 73 74 72 29 20 2d 3e 20 73 74 72 3a 00 00 00 1d 20 20 20 20 74 6f 6b 65 6e 73 20 3d 20 65 :.str).->.str:........tokens.=.e
4c60 78 65 63 5f 72 61 77 2e 73 70 6c 69 74 28 29 00 00 00 10 20 20 20 20 63 6c 65 61 6e 65 64 20 3d xec_raw.split()........cleaned.=
4c80 20 5b 5d 00 00 00 18 20 20 20 20 66 6f 72 20 74 6f 6b 65 6e 20 69 6e 20 74 6f 6b 65 6e 73 3a 00 .[]........for.token.in.tokens:.
4ca0 00 00 4c 20 20 20 20 20 20 20 20 69 66 20 74 6f 6b 65 6e 2e 73 74 61 72 74 73 77 69 74 68 28 22 ..L........if.token.startswith("
4cc0 25 22 29 20 61 6e 64 20 6c 65 6e 28 74 6f 6b 65 6e 29 20 3d 3d 20 32 20 61 6e 64 20 74 6f 6b 65 %").and.len(token).==.2.and.toke
4ce0 6e 5b 31 5d 2e 69 73 61 6c 70 68 61 28 29 3a 00 00 00 14 20 20 20 20 20 20 20 20 20 20 20 20 63 n[1].isalpha():................c
4d00 6f 6e 74 69 6e 75 65 00 00 00 1d 20 20 20 20 20 20 20 20 63 6c 65 61 6e 65 64 2e 61 70 70 65 6e ontinue............cleaned.appen
4d20 64 28 74 6f 6b 65 6e 29 00 00 00 24 20 20 20 20 72 65 74 75 72 6e 20 22 20 22 2e 6a 6f 69 6e 28 d(token)...$....return.".".join(
4d40 63 6c 65 61 6e 65 64 29 2e 73 74 72 69 70 28 29 00 00 00 00 00 00 00 00 00 00 00 13 64 65 66 20 cleaned).strip()............def.
4d60 63 6f 6c 6c 65 63 74 5f 61 70 70 73 28 29 3a 00 00 00 13 20 20 20 20 73 65 65 6e 5f 73 74 65 6d collect_apps():........seen_stem
4d80 73 20 3d 20 7b 7d 00 00 00 22 20 20 20 20 66 6f 72 20 64 69 72 65 63 74 6f 72 79 20 69 6e 20 44 s.=.{}..."....for.directory.in.D
4da0 45 53 4b 54 4f 50 5f 44 49 52 53 3a 00 00 00 22 20 20 20 20 20 20 20 20 69 66 20 6e 6f 74 20 64 ESKTOP_DIRS:..."........if.not.d
4dc0 69 72 65 63 74 6f 72 79 2e 69 73 5f 64 69 72 28 29 3a 00 00 00 14 20 20 20 20 20 20 20 20 20 20 irectory.is_dir():..............
4de0 20 20 63 6f 6e 74 69 6e 75 65 00 00 00 40 20 20 20 20 20 20 20 20 66 6f 72 20 64 65 73 6b 74 6f ..continue...@........for.deskto
4e00 70 5f 66 69 6c 65 20 69 6e 20 73 6f 72 74 65 64 28 64 69 72 65 63 74 6f 72 79 2e 67 6c 6f 62 28 p_file.in.sorted(directory.glob(
4e20 22 2a 2e 64 65 73 6b 74 6f 70 22 29 29 3a 00 00 00 2c 20 20 20 20 20 20 20 20 20 20 20 20 73 74 "*.desktop")):...,............st
4e40 65 6d 20 3d 20 64 65 73 6b 74 6f 70 5f 66 69 6c 65 2e 73 74 65 6d 2e 6c 6f 77 65 72 28 29 00 00 em.=.desktop_file.stem.lower()..
4e60 00 26 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 73 74 65 6d 20 6e 6f 74 20 69 6e 20 73 65 65 .&............if.stem.not.in.see
4e80 6e 5f 73 74 65 6d 73 3a 00 00 00 2f 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 65 6e n_stems:.../................seen
4ea0 5f 73 74 65 6d 73 5b 73 74 65 6d 5d 20 3d 20 64 65 73 6b 74 6f 70 5f 66 69 6c 65 00 00 00 00 00 _stems[stem].=.desktop_file.....
4ec0 00 00 0d 20 20 20 20 61 70 70 73 20 3d 20 7b 7d 00 00 00 2c 20 20 20 20 66 6f 72 20 64 65 73 6b .......apps.=.{}...,....for.desk
4ee0 74 6f 70 5f 66 69 6c 65 20 69 6e 20 73 65 65 6e 5f 73 74 65 6d 73 2e 76 61 6c 75 65 73 28 29 3a top_file.in.seen_stems.values():
4f00 00 00 00 34 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 63 6d 64 20 3d 20 70 61 72 73 65 5f 64 65 ...4........name,.cmd.=.parse_de
4f20 73 6b 74 6f 70 5f 66 69 6c 65 28 64 65 73 6b 74 6f 70 5f 66 69 6c 65 29 00 00 00 2d 20 20 20 20 sktop_file(desktop_file)...-....
4f40 20 20 20 20 69 66 20 6e 61 6d 65 20 61 6e 64 20 63 6d 64 20 61 6e 64 20 6e 61 6d 65 20 6e 6f 74 ....if.name.and.cmd.and.name.not
4f60 20 69 6e 20 61 70 70 73 3a 00 00 00 1c 20 20 20 20 20 20 20 20 20 20 20 20 61 70 70 73 5b 6e 61 .in.apps:................apps[na
4f80 6d 65 5d 20 3d 20 63 6d 64 00 00 00 0f 20 20 20 20 72 65 74 75 72 6e 20 61 70 70 73 00 00 00 00 me].=.cmd........return.apps....
4fa0 00 00 00 00 00 00 00 32 64 65 66 20 72 75 6e 5f 64 6d 65 6e 75 28 61 70 70 5f 6e 61 6d 65 73 3a .......2def.run_dmenu(app_names:
4fc0 20 6c 69 73 74 5b 73 74 72 5d 29 20 2d 3e 20 73 74 72 20 7c 20 4e 6f 6e 65 3a 00 00 00 49 20 20 .list[str]).->.str.|.None:...I..
4fe0 20 20 6e 61 6d 65 73 5f 69 6e 70 75 74 20 3d 20 22 5c 6e 22 2e 6a 6f 69 6e 28 73 6f 72 74 65 64 ..names_input.=."\n".join(sorted
5000 28 61 70 70 5f 6e 61 6d 65 73 2c 20 6b 65 79 3d 73 74 72 2e 63 61 73 65 66 6f 6c 64 29 29 2e 65 (app_names,.key=str.casefold)).e
5020 6e 63 6f 64 65 28 29 00 00 00 08 20 20 20 20 74 72 79 3a 00 00 00 20 20 20 20 20 20 20 20 20 72 ncode()........try:............r
5040 65 73 75 6c 74 20 3d 20 73 75 62 70 72 6f 63 65 73 73 2e 72 75 6e 28 00 00 00 17 20 20 20 20 20 esult.=.subprocess.run(.........
5060 20 20 20 20 20 20 20 44 4d 45 4e 55 5f 41 52 47 53 2c 00 00 00 1e 20 20 20 20 20 20 20 20 20 20 .......DMENU_ARGS,..............
5080 20 20 69 6e 70 75 74 3d 6e 61 6d 65 73 5f 69 6e 70 75 74 2c 00 00 00 20 20 20 20 20 20 20 20 20 ..input=names_input,............
50a0 20 20 20 20 63 61 70 74 75 72 65 5f 6f 75 74 70 75 74 3d 54 72 75 65 2c 00 00 00 09 20 20 20 20 ....capture_output=True,........
50c0 20 20 20 20 29 00 00 00 1d 20 20 20 20 65 78 63 65 70 74 20 46 69 6c 65 4e 6f 74 46 6f 75 6e 64 ....)........except.FileNotFound
50e0 45 72 72 6f 72 3a 00 00 00 32 20 20 20 20 20 20 20 20 73 79 73 2e 65 78 69 74 28 22 65 72 72 6f Error:...2........sys.exit("erro
5100 72 3a 20 64 6d 65 6e 75 20 6e 6f 74 20 66 6f 75 6e 64 20 69 6e 20 50 41 54 48 22 29 00 00 00 00 r:.dmenu.not.found.in.PATH")....
5120 00 00 00 1e 20 20 20 20 69 66 20 72 65 73 75 6c 74 2e 72 65 74 75 72 6e 63 6f 64 65 20 21 3d 20 ........if.result.returncode.!=.
5140 30 3a 00 00 00 13 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e 6f 6e 65 00 00 00 00 00 00 00 0:............return.None.......
5160 29 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 2e 73 74 64 6f 75 74 2e 64 65 63 6f 64 65 )....return.result.stdout.decode
5180 28 29 2e 73 74 72 69 70 28 29 00 00 00 00 00 00 00 00 00 00 00 15 64 65 66 20 6c 61 75 6e 63 68 ().strip()............def.launch
51a0 28 63 6d 64 3a 20 73 74 72 29 3a 00 00 00 15 20 20 20 20 73 75 62 70 72 6f 63 65 73 73 2e 50 6f (cmd:.str):........subprocess.Po
51c0 70 65 6e 28 00 00 00 0c 20 20 20 20 20 20 20 20 63 6d 64 2c 00 00 00 13 20 20 20 20 20 20 20 20 pen(............cmd,............
51e0 73 68 65 6c 6c 3d 54 72 75 65 2c 00 00 00 21 20 20 20 20 20 20 20 20 73 74 64 69 6e 3d 73 75 62 shell=True,...!........stdin=sub
5200 70 72 6f 63 65 73 73 2e 44 45 56 4e 55 4c 4c 2c 00 00 00 22 20 20 20 20 20 20 20 20 73 74 64 6f process.DEVNULL,..."........stdo
5220 75 74 3d 73 75 62 70 72 6f 63 65 73 73 2e 44 45 56 4e 55 4c 4c 2c 00 00 00 22 20 20 20 20 20 20 ut=subprocess.DEVNULL,..."......
5240 20 20 73 74 64 65 72 72 3d 73 75 62 70 72 6f 63 65 73 73 2e 44 45 56 4e 55 4c 4c 2c 00 00 00 1f ..stderr=subprocess.DEVNULL,....
5260 20 20 20 20 20 20 20 20 73 74 61 72 74 5f 6e 65 77 5f 73 65 73 73 69 6f 6e 3d 54 72 75 65 2c 00 ........start_new_session=True,.
5280 00 00 05 20 20 20 20 29 00 00 00 00 00 00 00 00 00 00 00 0b 64 65 66 20 6d 61 69 6e 28 29 3a 00 .......)............def.main():.
52a0 00 00 19 20 20 20 20 61 70 70 73 20 3d 20 63 6f 6c 6c 65 63 74 5f 61 70 70 73 28 29 00 00 00 00 .......apps.=.collect_apps()....
52c0 00 00 00 10 20 20 20 20 69 66 20 6e 6f 74 20 61 70 70 73 3a 00 00 00 30 20 20 20 20 20 20 20 20 ........if.not.apps:...0........
52e0 73 79 73 2e 65 78 69 74 28 22 65 72 72 6f 72 3a 20 6e 6f 20 61 70 70 6c 69 63 61 74 69 6f 6e 73 sys.exit("error:.no.applications
5300 20 66 6f 75 6e 64 22 29 00 00 00 00 00 00 00 2b 20 20 20 20 73 65 6c 65 63 74 65 64 20 3d 20 72 .found").......+....selected.=.r
5320 75 6e 5f 64 6d 65 6e 75 28 6c 69 73 74 28 61 70 70 73 2e 6b 65 79 73 28 29 29 29 00 00 00 00 00 un_dmenu(list(apps.keys())).....
5340 00 00 14 20 20 20 20 69 66 20 6e 6f 74 20 73 65 6c 65 63 74 65 64 3a 00 00 00 0e 20 20 20 20 20 .......if.not.selected:.........
5360 20 20 20 72 65 74 75 72 6e 00 00 00 00 00 00 00 1c 20 20 20 20 63 6d 64 20 3d 20 61 70 70 73 2e ...return............cmd.=.apps.
5380 67 65 74 28 73 65 6c 65 63 74 65 64 29 00 00 00 0f 20 20 20 20 69 66 20 6e 6f 74 20 63 6d 64 3a get(selected)........if.not.cmd:
53a0 00 00 00 3d 20 20 20 20 20 20 20 20 73 79 73 2e 65 78 69 74 28 66 22 65 72 72 6f 72 3a 20 6e 6f ...=........sys.exit(f"error:.no
53c0 20 63 6f 6d 6d 61 6e 64 20 66 6f 75 6e 64 20 66 6f 72 20 27 7b 73 65 6c 65 63 74 65 64 7d 27 22 .command.found.for.'{selected}'"
53e0 29 00 00 00 00 00 00 00 0f 20 20 20 20 6c 61 75 6e 63 68 28 63 6d 64 29 00 00 00 00 00 00 00 00 )............launch(cmd)........
5400 00 00 00 1a 69 66 20 5f 5f 6e 61 6d 65 5f 5f 20 3d 3d 20 22 5f 5f 6d 61 69 6e 5f 5f 22 3a 00 00 ....if.__name__.==."__main__":..
5420 00 0a 20 20 20 20 6d 61 69 6e 28 29 35 81 f5 18 00 00 00 00 00 00 00 00 00 00 00 00 a1 00 00 00 ......main()5...................
5440 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 dc 0f 00 00 00 00 00 00 01 00 00 00 ................................
5460 00 00 00 00 35 81 5f d0 00 00 00 08 00 00 00 0a 00 00 00 00 00 00 00 00 00 00 00 09 00 00 00 01 ....5._.........................
5480 00 00 00 00 00 00 00 00 ff ff ff ff 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
54a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
54c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
54e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5500 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5520 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5540 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5560 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5580 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
55a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
55c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
55e0 00 00 00 00 00 00 00 00 00 00 69 a1 15 60 04 01 00 00 00 0a 00 f5 18 00 00 00 00 00 00 00 00 00 ..........i..`..................
5600 00 00 00 00 00 00 01 00 00 00 00 f5 18 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 35 81 f5 .............................5..
5620 18 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 a0 00 00 00 0a 00 00 00 00 00 00 ................................
5640 00 00 00 00 00 00 00 00 00 00 00 00 00 db 0f 00 00 00 00 00 00 35 81 5f d0 00 00 00 09 00 00 00 .....................5._........
5660 0b 00 00 00 00 00 00 00 00 00 00 00 0a 00 00 00 0c 00 00 00 15 00 00 00 00 ff ff ff ff 00 01 00 ................................
5680 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
56a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
56c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
56e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5700 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5720 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5740 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5760 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5780 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
57a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
57c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 a1 15 6c 04 ...........................i..l.
57e0 01 00 00 00 0c 00 f5 18 00 00 00 0b 00 00 00 0d 00 00 00 a1 00 00 00 01 00 00 00 1a 20 20 20 20 ................................
5800 22 2d 66 6e 22 2c 20 22 46 69 72 61 20 43 6f 64 65 2d 31 30 22 2c 35 81 f5 18 00 00 00 00 0b 00 "-fn",."Fira.Code-10",5.........
5820 00 00 0c 00 00 00 00 00 00 00 09 00 00 00 00 00 00 00 17 00 00 00 8c 00 00 00 00 00 00 00 09 00 ................................
5840 00 00 00 00 00 00 17 00 00 00 00 00 00 00 35 81 5f d0 00 00 00 0a 00 00 00 0c 00 00 00 00 00 00 ..............5._...............
5860 00 00 00 00 00 0b 00 00 00 12 00 00 00 0b 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 ................................
5880 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
58a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
58c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
58e0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5900 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5920 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5940 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5960 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5980 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
59a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
59c0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 69 a1 15 7a 04 01 00 00 00 00 00 f5 ....................i..z........
59e0 18 00 00 00 11 00 00 00 13 00 00 00 a1 00 00 00 01 00 00 00 14 20 20 20 20 22 2d 70 22 2c 20 22 ........................."-p",."
5a00 6c 61 75 6e 63 68 3a 22 2c 35 81 f5 18 00 00 00 00 11 00 00 00 0b 00 00 00 00 00 00 00 01 00 00 launch:",5......................
5a20 00 00 00 00 00 01 00 00 00 1c 01 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 ................................
5a40 00 35 81 5f d0 00 00 00 0b 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0c 00 00 00 12 00 00 00 .5._............................
5a60 0b 00 00 00 00 ff ff ff ff 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5a80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5aa0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ac0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ae0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5b00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5b20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5b40 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5b60 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5b80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5ba0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................................
5bc0 00 00 00 00 00 00 00 69 a1 15 7d 04 01 00 00 00 0d 00 f5 18 00 00 00 11 00 00 00 13 00 00 00 a1 .......i..}.....................
5be0 00 00 00 01 00 00 00 14 20 20 20 20 22 2d 70 22 2c 20 22 6c 61 75 6e 63 68 3a 22 2c 35 81 f5 18 ............"-p",."launch:",5...
5c00 00 00 00 00 11 00 00 00 0b 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 1c 01 00 00 ................................
5c20 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 f5 18 00 00 00 00 11 00 00 00 0b 00 ................................
5c40 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 1c 01 00 00 00 00 00 00 01 00 00 00 00 00 ................................
5c60 00 00 01 00 00 00 00 00 00 00 f5 18 00 00 00 00 11 00 00 00 0b 00 00 00 00 00 00 00 01 00 00 00 ................................
5c80 00 00 00 00 01 00 00 00 1c 01 00 00 00 00 00 00 01 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 ................................
5ca0 35 81 e7 aa 5...