@@ -30,6 +30,7 @@ UsrGrp-Manager-TUI (Users/Groups Manager TUI)
3030 - [ Status] ( #status )
3131 - [ Quick Start] ( #quick-start )
3232- [ Environment Setup] ( #environment-setup )
33+ - [ Configuration] ( #configuration )
3334- [ Prerequisites] ( #prerequisites )
3435- [ Installation Details] ( #installation-details )
3536- [ Project Structure] ( #project-structure )
@@ -51,10 +52,10 @@ Keyboard‑driven terminal app to view and manage users and groups. Browse accou
5152Linux‑focused. Written in Rust.
5253
5354### Screenshot
54- ![ TUI screenshot] ( example-images/v0.2.0-release .png )
55+ ![ TUI screenshot] ( example-images/Release_v0.3.0 .png )
5556
5657### Demo
57- ![ TUI GIF] ( example-images/usrgrp-manager-v0.2.0-sample.gif )
58+ ![ TUI GIF] ( example-example- images/usrgrp-manager-v0.2.0-sample.gif )
5859
5960### Status
6061Alpha. Read‑only browsing is safe; write operations require privileges and are still limited.
@@ -90,11 +91,18 @@ After installation:
9091usrgrp-manager
9192```
9293
93- ## Optional: set logging level
94+ ## Configuration
95+
96+ - Logging level:
9497``` bash
9598USRGRP_MANAGER_LOG=info # or debug, trace
9699```
97100
101+ - Sudo group name (for sudo membership checks):
102+ ``` bash
103+ export UGM_SUDO_GROUP=sudo # defaults to 'wheel' if unset
104+ ```
105+
98106
99107## Environment Setup
100108
@@ -117,6 +125,11 @@ USRGRP_MANAGER_LOG=info # or debug, trace
117125- Logging: set ` USRGRP_MANAGER_LOG=info|debug|trace ` (default: ` info ` )
118126- Feature flags: ` file-parse ` exists, but enumeration currently parses ` /etc/passwd ` and ` /etc/group ` by default.
119127
128+ ### Upgrade Notes (v0.3.0)
129+
130+ - ` Ctrl+Tab ` pane toggling was removed; use ` Shift+Tab ` .
131+ - Use ` Shift+K ` to toggle the keybindings side panel.
132+
120133### Install from AUR
121134
122135- usrgrp-manager-git: latest development version from the main branch
@@ -170,14 +183,21 @@ src/
170183
171184- Quit: ` q `
172185- Switch tab: ` Tab ` (Users ↔ Groups)
173- - Users tab focus: ` Shift+Tab ` toggles Users list ↔ Member‑of list
186+ - Users tab focus: ` Shift+Tab ` toggles Users list ↔ Member‑of list
174187- Move: ` ↑/k ` , ` ↓/j `
175188- Page: ` ←/h ` (previous page), ` →/l ` (next page)
176189- Search: ` / ` to start, type query, ` Enter ` to apply, ` Esc ` to cancel
190+ - Filter dialog example:
191+
192+ ![ Filter users] ( example-images/Release_v0.3.0_filters.png )
177193- Open actions on selection: ` Enter `
178194- In popups: ` ↑/k ` , ` ↓/j ` , ` PageUp ` , ` PageDown ` , ` Enter ` , ` Esc `
179195
196+ - Toggle keybindings panel: ` Shift+K `
197+ - Help: ` ? `
198+
180199- New user: ` n ` (toggle "Create home" with ` Space ` )
200+ - Pane toggle change: ` Ctrl+Tab ` was removed; use ` Shift+Tab ` instead
181201- Delete confirmation: ` Space ` toggles "Also delete home"
182202- Password: Actions → Modify → Password
183203 - Set/change: masked input with confirm; toggle "must change at next login" with ` Space ` ; select Submit and press ` Enter `
@@ -187,7 +207,14 @@ src/
187207
188208- Users tab
189209 - Table of users (from ` /etc/passwd ` ), selection, paging
190- - Detail pane: UID, GID, name, home, shell
210+ - Detail pane (expanded):
211+ - Identity: UID, primary GID, and primary group name
212+ - Home: path, existence, and octal permissions (e.g., 755)
213+ - Shell: validity (in ` /etc/shells ` ) and interactivity (` nologin ` /` false ` detection)
214+ - Password status: locked, no_password, expired; last change and expiry (days since epoch)
215+ - Sudo membership: whether the user is in the configured sudo group
216+ - SSH: count of entries in ` ~/.ssh/authorized_keys ` (best‑effort)
217+ - Processes: current number of processes owned by the user (best‑effort)
191218 - Member‑of pane: primary and supplementary groups
192219 - Create user (` useradd ` ; optional ` -m ` to create home)
193220 - Delete user (` userdel ` ; optional ` -r ` to remove home)
@@ -201,14 +228,34 @@ src/
201228 - Change full name (GECOS, ` usermod -c ` )
202229 - Change login shell (pick from ` /etc/shells ` , ` usermod -s ` )
203230
231+ - Examples:
232+
233+ ![ Actions menu] ( example-images/Release_v0.3.0_User_actions.png )
234+
235+ ![ Modify user] ( example-images/Release_v0.3.0_User_mod.png )
236+
237+ ![ Modify details] ( example-images/Release_v0.3.0_User_mod_details.png )
238+
239+ ![ Remove user from groups] ( example-images/Release_v0.3.0_Remove_UserFromGroups.png )
240+
204241- Groups tab
205242 - Table of groups (from ` /etc/group ` ), selection, paging
206- - Detail pane and members list
243+ - Detail pane (expanded):
244+ - Classification: GID and whether it's a system or user group
245+ - Membership: counts of primary vs secondary members; preview of top‑N names
246+ - Orphan detection: flags listed secondary members not present in users
247+ - Distributions: shell interactivity, UID class (system <1000 vs user ≥1000), account status
248+ - Privilege: indicates if this is the sudo‑capable group
249+ - Change proxy: ` /etc/group ` mtime (days since epoch) as a rough change indicator
207250 - Actions:
208251 - Create group (` groupadd ` )
209252 - Delete group (` groupdel ` )
210253 - Modify members (add/remove users)
211254
255+ - Example:
256+
257+ ![ Modify groups] ( example-images/Release_v0.3.0_Modify_Groups.png )
258+
212259- Search
213260 - Simple substring filter for Users and Groups tabs
214261
218265- Write actions call system tools and require appropriate privileges (root or sudo): ` usermod ` , ` gpasswd ` , ` groupadd ` , ` groupdel ` , ` useradd ` , ` userdel ` , ` chpasswd ` , ` chage ` .
219266- User deletion is implemented with confirmation and optional home removal.
220267
268+ - Some account fields (password status, last change/expiry) rely on best‑effort reads of ` /etc/shadow ` ; these may be unavailable without sufficient privileges.
269+ - SSH key counting and process counts are best‑effort and can vary across environments.
270+
221271## Tests
222272
223273- Run all tests: ` cargo test ` (Tests run while building the project automatically)
0 commit comments