Skip to content

Commit 495ffa9

Browse files
committed
sidebar nicklist keybindings
1 parent d3fd499 commit 495ffa9

File tree

6 files changed

+77
-22
lines changed

6 files changed

+77
-22
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ Added:
88
- Settings to configure card and imagge preview dimensions
99
- Support for transparent background.
1010
- Settings to show nicklist in the sidebar together with the buflist (`sidebar.show_nicklist`, `sidebar.split`, `sidebar.buflist_space`, `sidebar.nicklist_space`)
11+
- Keybindings for toggling sidebar nicklist (made `toggle_nick_list` context-dependent, added `toggle_pane_nick_list` and `toggle_sidebar_nick_list`)
1112

1213
Fixed:
1314

book/src/configuration/keyboard.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,8 @@ Note you can disable a key bind by setting it to `"noop"` or `"none"`.
4343
| `leave_buffer` | Leave channel or close query | <kbd>⌘</kbd> + <kbd>shift</kbd> + <kbd>w</kbd> | <kbd>ctrl</kbd> + <kbd>shift</kbd> + <kbd>w</kbd> |
4444
| `mark_as_read` | Mark focused buffer as read | <kbd>⌘</kbd> + <kbd>shift</kbd> + <kbd>m</kbd> | <kbd>ctrl</kbd> + <kbd>shift</kbd> + <kbd>m</kbd> |
4545
| `toggle_nick_list` | Toggle nick list | <kbd>⌘</kbd> + <kbd>⌥</kbd> + <kbd>m</kbd> | <kbd>ctrl</kbd> + <kbd>alt</kbd> + <kbd>m</kbd> |
46+
| `toggle_buffer_nick_list` | Toggle nick list in buffer | None | None |
47+
| `toggle_sidebar_nick_list` | Toggle nick list in sidebar | None | None |
4648
| `toggle_topic` | Toggle topic | <kbd>⌘</kbd> + <kbd>⌥</kbd> + <kbd>t</kbd> | <kbd>ctrl</kbd> + <kbd>alt</kbd> + <kbd>t</kbd> |
4749
| `toggle_sidebar` | Toggle sidebar | <kbd>⌘</kbd> + <kbd>⌥</kbd> + <kbd>b</kbd> | <kbd>ctrl</kbd> + <kbd>alt</kbd> + <kbd>b</kbd> |
4850
| `toggle_fullscreen` | Toggle fullscreen | <kbd>⌘</kbd> + <kbd>ctrl</kbd> + <kbd>f</kbd> | <kbd>F11</kbd> |

data/src/config/keys.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ pub struct Keyboard {
1616
pub cycle_previous_buffer: KeyBind,
1717
pub leave_buffer: KeyBind,
1818
pub toggle_nick_list: KeyBind,
19+
pub toggle_buffer_nick_list: KeyBind,
20+
pub toggle_sidebar_nick_list: KeyBind,
1921
pub toggle_topic: KeyBind,
2022
pub toggle_sidebar: KeyBind,
2123
pub toggle_fullscreen: KeyBind,
@@ -51,6 +53,8 @@ impl Default for Keyboard {
5153
cycle_previous_buffer: KeyBind::cycle_previous_buffer(),
5254
leave_buffer: KeyBind::leave_buffer(),
5355
toggle_nick_list: KeyBind::toggle_nick_list(),
56+
toggle_buffer_nick_list: KeyBind::Unbind,
57+
toggle_sidebar_nick_list: KeyBind::Unbind,
5458
toggle_sidebar: KeyBind::toggle_sidebar(),
5559
toggle_topic: KeyBind::toggle_topic(),
5660
toggle_fullscreen: KeyBind::toggle_fullscreen(),
@@ -89,6 +93,14 @@ impl Keyboard {
8993
shortcut(self.cycle_previous_buffer.clone(), CyclePreviousBuffer),
9094
shortcut(self.leave_buffer.clone(), LeaveBuffer),
9195
shortcut(self.toggle_nick_list.clone(), ToggleNicklist),
96+
shortcut(
97+
self.toggle_buffer_nick_list.clone(),
98+
ToggleBufferNicklist,
99+
),
100+
shortcut(
101+
self.toggle_sidebar_nick_list.clone(),
102+
ToggleSidebarNicklist,
103+
),
92104
shortcut(self.toggle_topic.clone(), ToggleTopic),
93105
shortcut(self.toggle_sidebar.clone(), ToggleSidebar),
94106
shortcut(self.toggle_fullscreen.clone(), ToggleFullscreen),

data/src/shortcut.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ pub enum Command {
3434
CyclePreviousBuffer,
3535
LeaveBuffer,
3636
ToggleNicklist,
37+
ToggleBufferNicklist,
38+
ToggleSidebarNicklist,
3739
ToggleTopic,
3840
ToggleSidebar,
3941
ToggleFullscreen,

src/screen/dashboard.rs

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,15 +1013,44 @@ impl Dashboard {
10131013
}
10141014
}
10151015
ToggleNicklist => {
1016-
if let Some((_, _, pane)) = self.get_focused_mut() {
1017-
if let Some(buffer) = pane.buffer.data() {
1016+
if config.sidebar.show_nicklist
1017+
&& !config.sidebar.position.is_horizontal()
1018+
{
1019+
self.side_menu.toggle_nicklist();
1020+
} else {
1021+
if let Some((_, _, pane)) = self.get_focused_mut()
1022+
&& let Some(buffer) = pane.buffer.data()
1023+
{
10181024
let settings = self.buffer_settings.entry(
10191025
&buffer,
10201026
Some(config.buffer.clone().into()),
10211027
);
10221028
settings.channel.nicklist.toggle_visibility();
10231029
}
1030+
}
1031+
1032+
self.last_changed = Some(Instant::now());
1033+
return (Task::none(), None);
1034+
}
1035+
ToggleBufferNicklist => {
1036+
if let Some((_, _, pane)) = self.get_focused_mut()
1037+
&& let Some(buffer) = pane.buffer.data()
1038+
{
1039+
let settings = self.buffer_settings.entry(
1040+
&buffer,
1041+
Some(config.buffer.clone().into()),
1042+
);
1043+
settings.channel.nicklist.toggle_visibility();
1044+
}
10241045

1046+
self.last_changed = Some(Instant::now());
1047+
return (Task::none(), None);
1048+
}
1049+
ToggleSidebarNicklist => {
1050+
if config.sidebar.show_nicklist
1051+
&& !config.sidebar.position.is_horizontal()
1052+
{
1053+
self.side_menu.toggle_nicklist();
10251054
self.last_changed = Some(Instant::now());
10261055
return (Task::none(), None);
10271056
}

src/screen/dashboard/sidebar.rs

Lines changed: 29 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ pub enum Event {
7070
#[derive(Clone)]
7171
pub struct Sidebar {
7272
pub hidden: bool,
73+
nicklist_hidden: bool,
7374
reloading_config: bool,
7475
}
7576

@@ -83,6 +84,7 @@ impl Sidebar {
8384
pub fn new() -> Self {
8485
Self {
8586
hidden: false,
87+
nicklist_hidden: false,
8688
reloading_config: false,
8789
}
8890
}
@@ -91,6 +93,10 @@ impl Sidebar {
9193
self.hidden = !self.hidden;
9294
}
9395

96+
pub fn toggle_nicklist(&mut self) {
97+
self.nicklist_hidden = !self.nicklist_hidden;
98+
}
99+
94100
pub fn update(
95101
&mut self,
96102
message: Message,
@@ -570,26 +576,29 @@ impl Sidebar {
570576

571577
match config.sidebar.position {
572578
sidebar::Position::Left | sidebar::Position::Right => {
573-
let nicklist: Option<Element<'a, Message>> =
574-
if config.sidebar.show_nicklist {
575-
focused_channel_nicklist(
576-
panes, focus, clients, config, theme, width,
577-
)
578-
.map(|list| {
579-
container(list)
580-
.padding([0, 2])
581-
.height(if config.sidebar.split {
582-
Length::FillPortion(
583-
config.sidebar.nicklist_space,
584-
)
585-
} else {
586-
Length::Fill
587-
})
588-
.into()
589-
})
590-
} else {
591-
None
592-
};
579+
let nicklist: Option<Element<'a, Message>> = if config
580+
.sidebar
581+
.show_nicklist
582+
&& !self.nicklist_hidden
583+
{
584+
focused_channel_nicklist(
585+
panes, focus, clients, config, theme, width,
586+
)
587+
.map(|list| {
588+
container(list)
589+
.padding([0, 2])
590+
.height(if config.sidebar.split {
591+
Length::FillPortion(
592+
config.sidebar.nicklist_space,
593+
)
594+
} else {
595+
Length::Fill
596+
})
597+
.into()
598+
})
599+
} else {
600+
None
601+
};
593602

594603
let buflist_height =
595604
if config.sidebar.split && nicklist.is_some() {

0 commit comments

Comments
 (0)