Skip to content

Commit

Permalink
programs.gnome-terminal: terminal options (#2042)
Browse files Browse the repository at this point in the history
- Add support for showing bold as bright colors
- Add support to configure the background transparency
- Fix the scrollOnOutput, it was not being dumped to the config
- Add tests!
- Add myself as maintainer
  • Loading branch information
kamadorueda authored Jun 15, 2021
1 parent 1e8d0be commit e92f5bb
Show file tree
Hide file tree
Showing 7 changed files with 132 additions and 4 deletions.
2 changes: 1 addition & 1 deletion .github/CODEOWNERS
Validating CODEOWNERS rules …
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@

/modules/programs/git.nix @rycee

/modules/programs/gnome-terminal.nix @rycee
/modules/programs/gnome-terminal.nix @kamadorueda @rycee

/modules/programs/go.nix @rvolosatovs

Expand Down
10 changes: 10 additions & 0 deletions modules/lib/maintainers.nix
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,16 @@
github = "kalhauge";
githubId = 1182166;
};
kamadorueda = {
name = "Kevin Amado";
email = "[email protected]";
github = "kamadorueda";
githubId = 47480384;
keys = [{
longkeyid = "rsa4096/0x04D0CEAF916A9A40";
fingerprint = "2BE3 BAFD 793E A349 ED1F F00F 04D0 CEAF 916A 9A40";
}];
};
kubukoz = {
name = "Jakub Kozłowski";
email = "[email protected]";
Expand Down
25 changes: 22 additions & 3 deletions modules/programs/gnome-terminal.nix
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,12 @@ let
'';
};

boldIsBright = mkOption {
default = null;
type = types.nullOr types.bool;
description = "Whether bold text is shown in bright colors.";
};

deleteBinding = mkOption {
default = "delete-sequence";
type = eraseBinding;
Expand Down Expand Up @@ -234,13 +240,20 @@ let
type = types.bool;
description = "Turn on/off the terminal's bell.";
};

transparencyPercent = mkOption {
default = null;
type = types.nullOr (types.ints.between 0 100);
description = "Background transparency in percent.";
};
};
});

buildProfileSet = pcfg:
{
audible-bell = pcfg.audibleBell;
visible-name = pcfg.visibleName;
scroll-on-output = pcfg.scrollOnOutput;
scrollbar-policy = if pcfg.showScrollbar then "always" else "never";
scrollback-lines = pcfg.scrollbackLines;
cursor-shape = pcfg.cursorShape;
Expand Down Expand Up @@ -273,7 +286,9 @@ let
} else {
bold-color-same-as-fg = false;
bold-color = pcfg.colors.boldColor;
}) // (if (pcfg.colors.cursor != null) then {
}) // optionalAttrs (pcfg.boldIsBright != null) {
bold-is-bright = pcfg.boldIsBright;
} // (if (pcfg.colors.cursor != null) then {
cursor-colors-set = true;
cursor-foreground-color = pcfg.colors.cursor.foreground;
cursor-background-color = pcfg.colors.cursor.background;
Expand All @@ -285,10 +300,14 @@ let
highlight-background-color = pcfg.colors.highlight.background;
} else {
highlight-colors-set = false;
})));
}) // optionalAttrs (pcfg.transparencyPercent != null) {
background-transparency-percent = pcfg.transparencyPercent;
use-theme-transparency = false;
use-transparent-background = true;
}));

in {
meta.maintainers = [ maintainers.rycee ];
meta.maintainers = with maintainers; [ kamadorueda rycee ];

options = {
programs.gnome-terminal = {
Expand Down
1 change: 1 addition & 0 deletions tests/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ import nmt {
./modules/programs/firefox
./modules/programs/foot
./modules/programs/getmail
./modules/programs/gnome-terminal
./modules/programs/i3status-rust
./modules/programs/mangohud
./modules/programs/ncmpcpp-linux
Expand Down
1 change: 1 addition & 0 deletions tests/modules/programs/gnome-terminal/default.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{ gnome-terminal-1 = ./gnome-terminal-1.nix; }
34 changes: 34 additions & 0 deletions tests/modules/programs/gnome-terminal/gnome-terminal-1.conf
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
[org/gnome/terminal/legacy]
default-show-menubar=false
schema-version=3
theme-variant='default'

[org/gnome/terminal/legacy/profiles:]
default='e0b782ed-6aca-44eb-8c75-62b3706b6220'
list=@as ['e0b782ed-6aca-44eb-8c75-62b3706b6220']

[org/gnome/terminal/legacy/profiles:/:e0b782ed-6aca-44eb-8c75-62b3706b6220]
allow-bold=true
audible-bell=true
background-color='#2E3436'
background-transparency-percent=5
backspace-binding='ascii-delete'
bold-color-same-as-fg=true
bold-is-bright=true
cursor-blink-mode='off'
cursor-colors-set=false
cursor-shape='underline'
delete-binding='delete-sequence'
foreground-color='#D3D7C1'
highlight-colors-set=false
login-shell=false
palette=@as ['#000000','#AA0000','#00AA00','#AA5500','#0000AA','#AA00AA','#00AAAA','#AAAAAA','#555555','#FF5555','#55FF55','#FFFF55','#5555FF','#FF55FF','#55FFFF','#FFFFFF']
scroll-on-output=false
scrollback-lines=1000000
scrollbar-policy='never'
use-custom-command=false
use-system-font=true
use-theme-colors=false
use-theme-transparency=false
use-transparent-background=true
visible-name='kamadorueda'
63 changes: 63 additions & 0 deletions tests/modules/programs/gnome-terminal/gnome-terminal-1.nix
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
{ config, lib, pkgs, ... }:

with lib;

{
config = {
nixpkgs.overlays = [
(self: super: {
gnome.gnome-terminal =
pkgs.writeScriptBin "dummy-gnome3-gnome-terminal" "";
})
];

programs.gnome-terminal = {
enable = true;
profile = {
"e0b782ed-6aca-44eb-8c75-62b3706b6220" = {
allowBold = true;
audibleBell = true;
backspaceBinding = "ascii-delete";
boldIsBright = true;
colors = {
backgroundColor = "#2E3436";
foregroundColor = "#D3D7C1";
palette = [
"#000000"
"#AA0000"
"#00AA00"
"#AA5500"
"#0000AA"
"#AA00AA"
"#00AAAA"
"#AAAAAA"
"#555555"
"#FF5555"
"#55FF55"
"#FFFF55"
"#5555FF"
"#FF55FF"
"#55FFFF"
"#FFFFFF"
];
};
cursorBlinkMode = "off";
cursorShape = "underline";
default = true;
deleteBinding = "delete-sequence";
scrollbackLines = 1000000;
scrollOnOutput = false;
showScrollbar = false;
transparencyPercent = 5;
visibleName = "kamadorueda";
};
};
showMenubar = false;
};

nmt.script = ''
dconfIni=$(grep -oPm 1 '/nix/store/[a-z0-9]*?-hm-dconf.ini' $TESTED/activate)
TESTED= assertFileContent $dconfIni ${./gnome-terminal-1.conf}
'';
};
}

0 comments on commit e92f5bb

Please sign in to comment.