nixos-configs/common/home-manager/urxvt.nix

170 lines
4.8 KiB
Nix
Raw Permalink Normal View History

{ config, pkgs, lib, ... }:
with lib;
let
termDesktop = pkgs.writeTextFile {
name = "cadey-terminal.desktop";
destination = "/share/applications/cadey-terminal.desktop";
text = ''
[Desktop Entry]
Exec=/home/cadey/bin/term
Icon=utilities-terminal
Name[en_US]=Terminal
Name=Terminal
StartupNotify=true
Terminal=false
Type=Application
'';
};
cfg = config.within.urxvt;
in {
options.within.urxvt.enable =
mkEnableOption "Enables urxvt as the default terminal";
config = mkIf cfg.enable {
home.packages = with pkgs; [
rxvt-unicode
urxvt_font_size
urxvt_perl
urxvt_tabbedex
urxvt_vtwheel
anonymousPro
# XXX HACK Terminal desktop file
termDesktop
];
home.file."bin/term" = {
executable = true;
text = ''
#!/bin/sh
${pkgs.xorg.xrdb}/bin/xrdb -merge ~/.Xresources
${pkgs.rxvt-unicode}/bin/urxvtc "$@"
if [ $? -eq 2 ]; then
${pkgs.rxvt-unicode}/bin/urxvtd -q -o -f
${pkgs.rxvt-unicode}/bin/urxvtc "$@"
fi
'';
};
xresources.extraConfig = ''
! -----------------------------------------------------------------------------
! File: gruvbox-urxvt256.xresources
! Description: Retro groove colorscheme generalized
! Author: morhetz <morhetz@gmail.com>
! Source: https://github.com/morhetz/gruvbox-generalized
! Last Modified: 13 Dec 2013
! -----------------------------------------------------------------------------
URxvt.color24: #076678
URxvt.color66: #427b58
URxvt.color88: #9d0006
URxvt.color96: #8f3f71
URxvt.color100: #79740e
URxvt.color108: #8ec07c
URxvt.color109: #83a598
URxvt.color130: #af3a03
URxvt.color136: #b57614
URxvt.color142: #b8bb26
URxvt.color167: #fb4934
URxvt.color175: #d3869b
URxvt.color208: #fe8019
URxvt.color214: #fabd2f
URxvt.color223: #ebdbb2
URxvt.color228: #f2e5bc
URxvt.color229: #fbf1c7
URxvt.color230: #f9f5d7
URxvt.color234: #1d2021
URxvt.color235: #282828
URxvt.color236: #32302f
URxvt.color237: #3c3836
URxvt.color239: #504945
URxvt.color241: #665c54
URxvt.color243: #7c6f64
URxvt.color244: #928374
URxvt.color245: #928374
URxvt.color246: #a89984
URxvt.color248: #bdae93
URxvt.color250: #d5c4a1
'';
xresources.properties = {
# colors
"*background" = "#32302f";
"*foreground" = "#ebdbb2";
"*color0" = "#282828";
"*color1" = "#cc241d";
"*color2" = "#98971a";
"*color3" = "#d79921";
"*color4" = "#458588";
"*color5" = "#b16286";
"*color6" = "#689d6a";
"*color7" = "#a89984";
"*color8" = "#928374";
"*color9" = "#fb4934";
"*color10" = "#b8bb26";
"*color11" = "#fabd2f";
"*color12" = "#83a598";
"*color13" = "#d3869b";
"*color14" = "#8ec07c";
"*color15" = "#ebdbb2";
# extensions i use
"URxvt.perl-ext-common" = "default,clipboard,matcher,tabbedex,vtwheel";
# transparency
"URxvt*depth" = "32";
# URL opening
"URxvt.url-launcher" = "${pkgs.xdg_utils}/bin/xdg-open";
"URxvt.keysym.C-Delete" = "perl:matcher:last";
"URxvt.keysym.M-Delete" = "perl:matcher:list";
"URxvt.matcher.button" = "1";
# Tabs
"URxvt.tabbedex.autohide" = "false";
"URxvt.tabbedex.reopen-on-close" = "no";
"URxvt.keysym.Control-t" = "perl:tabbedex:new_tab";
"URxvt.keysym.Control-Tab" = "perl:tabbedex:next_tab";
"URxvt.keysym.Control-Shift-Tab" = "perl:tabbedex:prev_tab";
"URxvt.keysym.Control-Shift-Left" = "perl:tabbedex:move_tab_left";
"URxvt.keysym.Control-Shift-Right" = "perl:tabbedex:move_tab_right";
"URxvt.keysym.Control-Shift-R" = "perl:tabbedex:rename_tab";
"URxvt.tabbedex.no-tabbedex-keys" = "true";
"URxvt.tabbedex.new-button" = "yes";
# Clipboard
"URxvt.clipboard.autocopy" = "true";
"URxvt.keysym.Shift-M-C" = "perl:clipboard:copy";
"URxvt.keysym.Shift-M-V" = "perl:clipboard:paste";
# Hacks
"URxvt*skipBuiltinGlyphs" = "true";
"URxvt.scrollBar" = "false";
"URxvt.iso14755" = "false";
"URxvt.iso14755_52" = "false";
"URxvt.geometry" = "100x50";
"URxvt.depth" = "32";
"URxvt.background" = "[95]#32302f";
# Font
"URxvt.font" = "xft:Hack:size=9";
};
systemd.user.services = {
urxvtd = {
Unit = {
Description = "Urxvt Terminal Daemon";
Documentation = "man:urxvtd(1) man:urxvt(1)";
};
Service = { ExecStart = [ "${pkgs.rxvt-unicode}/bin/urxvtd -o -q" ]; };
Install = { WantedBy = [ "default.target" ]; };
};
};
};
}