| ofs | hex dump | ascii |
|---|
| 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... |