Compare commits
5 commits
e8c3c9dfe9
...
b5684b63d5
Author | SHA1 | Date | |
---|---|---|---|
Tigor Hutasuhut | b5684b63d5 | ||
Tigor Hutasuhut | 863149d5d2 | ||
Tigor Hutasuhut | 28341a31e9 | ||
Tigor Hutasuhut | 90b086c3cb | ||
Tigor Hutasuhut | 8ee7fd2727 |
|
@ -82,7 +82,11 @@ in
|
||||||
# https://wiki.hyprland.org/Configuring/Binds
|
# https://wiki.hyprland.org/Configuring/Binds
|
||||||
bind = [
|
bind = [
|
||||||
# Programs
|
# Programs
|
||||||
"$mod, RETURN, exec, kitty"
|
(
|
||||||
|
if config.profile.programs.wezterm.enable
|
||||||
|
then "$mod, RETURN, exec, wezterm-gui"
|
||||||
|
else "$mod, RETURN, exec, kitty"
|
||||||
|
)
|
||||||
"$mod, E, exec, thunar"
|
"$mod, E, exec, thunar"
|
||||||
"$mod, B, exec, microsoft-edge"
|
"$mod, B, exec, microsoft-edge"
|
||||||
"$mod, D, exec, rofi -show drun -replace -i"
|
"$mod, D, exec, rofi -show drun -replace -i"
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
local wezterm = require('wezterm')
|
local wezterm = require('wezterm')
|
||||||
|
|
||||||
local shortcuts = require('keys')
|
local shortcuts = require('keys')
|
||||||
|
require('event_config')
|
||||||
|
|
||||||
return {
|
return {
|
||||||
enable_wayland = false,
|
enable_wayland = false,
|
||||||
|
|
117
home/programs/wezterm/event_config.lua
Normal file
117
home/programs/wezterm/event_config.lua
Normal file
|
@ -0,0 +1,117 @@
|
||||||
|
local wezterm = require('wezterm')
|
||||||
|
|
||||||
|
local process_icons = {
|
||||||
|
['docker'] = wezterm.nerdfonts.linux_docker,
|
||||||
|
['docker-compose'] = wezterm.nerdfonts.linux_docker,
|
||||||
|
['btm'] = '',
|
||||||
|
['psql'] = '',
|
||||||
|
['usql'] = '',
|
||||||
|
['kuberlr'] = wezterm.nerdfonts.linux_docker,
|
||||||
|
['ssh'] = wezterm.nerdfonts.fa_exchange,
|
||||||
|
['ssh-add'] = wezterm.nerdfonts.fa_exchange,
|
||||||
|
['kubectl'] = wezterm.nerdfonts.linux_docker,
|
||||||
|
['stern'] = wezterm.nerdfonts.linux_docker,
|
||||||
|
['nvim'] = wezterm.nerdfonts.custom_vim,
|
||||||
|
['make'] = wezterm.nerdfonts.seti_makefile,
|
||||||
|
['vim'] = wezterm.nerdfonts.dev_vim,
|
||||||
|
['node'] = wezterm.nerdfonts.mdi_hexagon,
|
||||||
|
['go'] = wezterm.nerdfonts.seti_go,
|
||||||
|
['python3'] = '',
|
||||||
|
['zsh'] = wezterm.nerdfonts.dev_terminal,
|
||||||
|
['bash'] = wezterm.nerdfonts.cod_terminal_bash,
|
||||||
|
['htop'] = wezterm.nerdfonts.mdi_chart_donut_variant,
|
||||||
|
['cargo'] = wezterm.nerdfonts.dev_rust,
|
||||||
|
['sudo'] = wezterm.nerdfonts.fa_hashtag,
|
||||||
|
['lazydocker'] = wezterm.nerdfonts.linux_docker,
|
||||||
|
['git'] = wezterm.nerdfonts.dev_git,
|
||||||
|
['lua'] = wezterm.nerdfonts.seti_lua,
|
||||||
|
['wget'] = wezterm.nerdfonts.mdi_arrow_down_box,
|
||||||
|
['curl'] = wezterm.nerdfonts.mdi_flattr,
|
||||||
|
['gh'] = wezterm.nerdfonts.dev_github_badge,
|
||||||
|
['ruby'] = wezterm.nerdfonts.cod_ruby,
|
||||||
|
}
|
||||||
|
|
||||||
|
local function get_current_working_dir(tab)
|
||||||
|
local current_dir = tab.active_pane and tab.active_pane.current_working_dir or { file_path = '' }
|
||||||
|
local HOME_DIR = os.getenv('HOME')
|
||||||
|
|
||||||
|
return current_dir.file_path == HOME_DIR and '~' or string.gsub(current_dir.file_path, '(.*[/\\])(.*)', '%2')
|
||||||
|
end
|
||||||
|
|
||||||
|
local function get_process(tab)
|
||||||
|
if not tab.active_pane or tab.active_pane.foreground_process_name == '' then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
|
||||||
|
local process_name = string.gsub(tab.active_pane.foreground_process_name, '(.*[/\\])(.*)', '%2')
|
||||||
|
if string.find(process_name, 'kubectl') then
|
||||||
|
process_name = 'kubectl'
|
||||||
|
end
|
||||||
|
|
||||||
|
return process_icons[process_name] or string.format('[%s]', process_name)
|
||||||
|
end
|
||||||
|
|
||||||
|
wezterm.on('format-tab-title', function(tab, tabs, panes, config, hover, max_width)
|
||||||
|
local has_unseen_output = false
|
||||||
|
if not tab.is_active then
|
||||||
|
for _, pane in ipairs(tab.panes) do
|
||||||
|
if pane.has_unseen_output then
|
||||||
|
has_unseen_output = true
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local cwd = wezterm.format({
|
||||||
|
{ Text = get_current_working_dir(tab) },
|
||||||
|
})
|
||||||
|
|
||||||
|
local process = get_process(tab)
|
||||||
|
local title = process and string.format(' %s (%s) ', process, cwd) or ' [?] '
|
||||||
|
|
||||||
|
if has_unseen_output then
|
||||||
|
return {
|
||||||
|
{ Foreground = { Color = '#28719c' } },
|
||||||
|
{ Text = title },
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
return {
|
||||||
|
{ Text = title },
|
||||||
|
}
|
||||||
|
end)
|
||||||
|
|
||||||
|
local state = {
|
||||||
|
debug_mode = false,
|
||||||
|
}
|
||||||
|
|
||||||
|
wezterm.on('update-right-status', function(window, pane)
|
||||||
|
local process = ''
|
||||||
|
|
||||||
|
if state.debug_mode then
|
||||||
|
local info = pane:get_foreground_process_info()
|
||||||
|
if info then
|
||||||
|
process = info.name
|
||||||
|
for i = 2, #info.argv do
|
||||||
|
process = info.argv[i]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local status = (#process > 0 and ' | ' or '')
|
||||||
|
local name = window:active_key_table()
|
||||||
|
if name then
|
||||||
|
status = string.format(' { %s }', name)
|
||||||
|
end
|
||||||
|
|
||||||
|
if window:get_dimensions().is_full_screen then
|
||||||
|
status = status .. wezterm.strftime(' %R ')
|
||||||
|
end
|
||||||
|
|
||||||
|
window:set_right_status(wezterm.format({
|
||||||
|
{ Foreground = { Color = '#7eb282' } },
|
||||||
|
{ Text = process },
|
||||||
|
{ Foreground = { Color = '#808080' } },
|
||||||
|
{ Text = status },
|
||||||
|
}))
|
||||||
|
end)
|
|
@ -65,5 +65,6 @@
|
||||||
|
|
||||||
programs.easyeffects.enable = true;
|
programs.easyeffects.enable = true;
|
||||||
steam.enable = true;
|
steam.enable = true;
|
||||||
|
programs.wezterm.enable = true;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,10 +12,11 @@
|
||||||
noto-fonts-emoji
|
noto-fonts-emoji
|
||||||
noto-fonts-color-emoji
|
noto-fonts-color-emoji
|
||||||
|
|
||||||
# nerdfonts
|
nerdfonts
|
||||||
(nerdfonts.override {
|
|
||||||
fonts = [ "FiraCode" "JetBrainsMono" "Iosevka" ];
|
# (nerdfonts.override {
|
||||||
})
|
# fonts = [ "FiraCode" "JetBrainsMono" "Iosevka" ];
|
||||||
|
# })
|
||||||
];
|
];
|
||||||
|
|
||||||
# use fonts specified by user rather than default ones
|
# use fonts specified by user rather than default ones
|
||||||
|
|
|
@ -55,7 +55,6 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
fonts.packages = with pkgs; [
|
fonts.packages = with pkgs; [
|
||||||
nerdfonts
|
|
||||||
meslo-lgs-nf
|
meslo-lgs-nf
|
||||||
font-awesome
|
font-awesome
|
||||||
roboto
|
roboto
|
||||||
|
|
|
@ -68,15 +68,14 @@ in
|
||||||
"onyx"
|
"onyx"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
"/nas/Syncthing/Sync/VPN" = {
|
|
||||||
label = "OpenVPN";
|
|
||||||
id = "OpenVPN";
|
|
||||||
devices = lib.attrsets.mapAttrsToList (key: _value: key) config.services.syncthing.settings.devices;
|
|
||||||
};
|
|
||||||
"/nas/Syncthing/Sync/WireGuard" = {
|
"/nas/Syncthing/Sync/WireGuard" = {
|
||||||
label = "WireGuard";
|
label = "WireGuard";
|
||||||
id = "WireGuard";
|
id = "WireGuard";
|
||||||
devices = lib.attrsets.mapAttrsToList (key: _value: key) config.services.syncthing.settings.devices;
|
# devices = lib.attrsets.mapAttrsToList (key: _value: key) config.services.syncthing.settings.devices;
|
||||||
|
devices = [
|
||||||
|
"s20fe"
|
||||||
|
"work-laptop"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
"/nas/photos/mama" = {
|
"/nas/photos/mama" = {
|
||||||
label = "Camera Mama";
|
label = "Camera Mama";
|
||||||
|
@ -101,6 +100,13 @@ in
|
||||||
"work-laptop"
|
"work-laptop"
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
"/nas/EmuDeck" = {
|
||||||
|
label = "EmuDeck";
|
||||||
|
id = "EmuDeck";
|
||||||
|
devices = [
|
||||||
|
"steam-deck"
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
devices = {
|
devices = {
|
||||||
s20fe = {
|
s20fe = {
|
||||||
|
@ -123,6 +129,10 @@ in
|
||||||
name = "Samsung S22 Mama";
|
name = "Samsung S22 Mama";
|
||||||
id = "5G2Q7XE-HILUI46-GWTE6P6-NJHAG3A-HSZKMAU-K5PBOKR-QN3IFQO-GX7KTQU";
|
id = "5G2Q7XE-HILUI46-GWTE6P6-NJHAG3A-HSZKMAU-K5PBOKR-QN3IFQO-GX7KTQU";
|
||||||
};
|
};
|
||||||
|
steam-deck = {
|
||||||
|
name = "Steam Deck";
|
||||||
|
id = "6SOR4SU-MVT2XIS-4J6IGVP-LITFLDB-ZH6LA7T-PUSQK26-P6RVWZ7-YB7P4AX";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
overrideFolders = true;
|
overrideFolders = true;
|
||||||
|
|
Loading…
Reference in a new issue