@@ -63,6 +63,27 @@ def cli_args():
6363 return args
6464
6565
66+ def dmenu_pass (command , color ):
67+ """Check if dmenu passphrase patch is applied and return the correct command
68+ line arg list
69+
70+ Args: command - string
71+ color - obscure color string
72+ Returns: list or None
73+
74+ """
75+ if command != 'dmenu' :
76+ return None
77+ try :
78+ # Check for dmenu password patch
79+ dm_patch = b'P' in subprocess .run (["dmenu" , "-h" ],
80+ capture_output = True ,
81+ check = False ).stderr
82+ except FileNotFoundError :
83+ dm_patch = False
84+ return ["-P" ] if dm_patch else ["-nb" , color , "-nf" , color ]
85+
86+
6687def dmenu_cmd (num_lines , prompt = "Networks" , active_lines = None ):
6788 """Parse config.ini for menu options
6889
@@ -73,9 +94,11 @@ def dmenu_cmd(num_lines, prompt="Networks", active_lines=None):
7394 ["dmenu", "-l", "<num_lines>", "-p", "<prompt>", "-i"]
7495
7596 """
97+ # Create command string
7698 commands = {"dmenu" : ["-p" , str (prompt )],
7799 "rofi" : ["-dmenu" , "-p" , str (prompt ), "-l" , str (num_lines )],
78- "bemenu" : ["-p" , str (prompt )]}
100+ "bemenu" : ["-p" , str (prompt )],
101+ "wofi" : ["-p" , str (prompt )]}
79102 command = shlex .split (CONF .get ('dmenu' , 'dmenu_command' , fallback = "dmenu" ))
80103 command .extend (cli_args ())
81104 command .extend (commands .get (command [0 ], []))
@@ -87,17 +110,10 @@ def dmenu_cmd(num_lines, prompt="Networks", active_lines=None):
87110 obscure = CONF .getboolean ('dmenu_passphrase' , 'obscure' , fallback = False )
88111 if prompt == "Passphrase" and obscure is True :
89112 obscure_color = CONF .get ('dmenu_passphrase' , 'obscure_color' , fallback = '#222222' )
90- try :
91- # Check for dmenu password patch
92- dm_patch = b'P' in subprocess .run (["dmenu" , "-h" ],
93- capture_output = True ,
94- check = False ).stderr
95- except FileNotFoundError :
96- dm_patch = False
97- dmenu = ["-P" ] if dm_patch else ["-nb" , obscure_color , "-nf" , obscure_color ]
98- pass_prompts = {"dmenu" : dmenu ,
113+ pass_prompts = {"dmenu" : dmenu_pass (command [0 ], obscure_color ),
99114 "rofi" : ['-password' ],
100- "bemenu" : ['x' ]}
115+ "bemenu" : ['-x' ],
116+ "wofi" : ['-P' ]}
101117 command .extend (pass_prompts .get (command [0 ], []))
102118 return command
103119
0 commit comments