kinda cursed mod randomly swapped
This commit is contained in:
parent
a34f88aa05
commit
8df49e4231
Binary file not shown.
After Width: | Height: | Size: 48 KiB |
|
@ -16,6 +16,7 @@
|
|||
};
|
||||
|
||||
programs.bash = {
|
||||
enable = true;
|
||||
shellAliases = {
|
||||
"rebuild" = "sudo nixos-rebuild switch --update-input nixpkgs --update-input unstable --no-write-lock-file --refresh --flake git+https://github.com/adrlau/nix-dotfiles.git --upgrade";
|
||||
"nixedit" = "vim /etc/nixos/nix-dotfiles/.";
|
||||
|
@ -38,7 +39,7 @@
|
|||
"tree" = "eza -T";
|
||||
"neofetch" = "fastfetch";
|
||||
};
|
||||
historyControl = ["ignoreboth" "erasedups"];
|
||||
historyControl = ["ignoredups" "ignorespace" "erasedups"];
|
||||
historyIgnore = [ "ls" "cd" "exit" "cd .." ".." "la"];
|
||||
};
|
||||
|
||||
|
|
111
home/colors.nix
111
home/colors.nix
|
@ -1,52 +1,87 @@
|
|||
{ pkgs, config, nix-colors, ... }: {
|
||||
{ pkgs, config, nix-colors, ... }:
|
||||
|
||||
let
|
||||
nix-colors-lib = nix-colors.lib.contrib { inherit pkgs; };
|
||||
|
||||
background = "010C09";
|
||||
foreground = "FFFFFF";
|
||||
offWhite = "F0FFF8";
|
||||
teal = "60C89A";
|
||||
red = "E64553";
|
||||
blue = "58B5E0";
|
||||
green = "79E05B";
|
||||
purple = "6B5BDC";
|
||||
magenta = "80D1A0";
|
||||
cyan = "5FE2C5";
|
||||
yellow = "F5D24D";
|
||||
orange = "FF8800";
|
||||
pink = "FF4EC9";
|
||||
grey = "888B8E";
|
||||
lightGrey = "F3FCF7";
|
||||
darkTeal = "154E44";
|
||||
lighterTeal = "2C7A6A";
|
||||
lightTeal = "B0E8DA";
|
||||
|
||||
in{
|
||||
imports = [
|
||||
nix-colors.homeManagerModules.default
|
||||
];
|
||||
|
||||
# colorScheme = nix-colors-lib.colorSchemeFromPicture {
|
||||
# path = ./assets/evergarden-telescope.jpg;
|
||||
# variant = "dark";
|
||||
# };
|
||||
colorScheme = {
|
||||
slug = "cyberpunk-apathy-adjusted";
|
||||
name = "Cyberpunk Apathy Adjusted";
|
||||
slug = "cyberpunk-apathy";
|
||||
name = "Cyberpunk Apathy";
|
||||
author = "Adrian G L (based on Apathy by Jannik Siebert)";
|
||||
palette = {
|
||||
base00 = "031A16"; # Background (kept original)
|
||||
base01 = "2A6D62"; # Lighter Background (brighter)
|
||||
base02 = "3D9F87"; # Selection Background (brighter)
|
||||
base03 = "68D6A0"; # Comments, Invisibles, Line Highlighting (brighter)
|
||||
base04 = "99E3D6"; # Dark Foreground (brighter)
|
||||
base05 = "D1F5E3"; # Default Foreground, Caret, Delimiters, Operators (brighter)
|
||||
base06 = "E0FCF8"; # Light Foreground (brighter)
|
||||
base07 = "FFFFFF"; # Light Background (brighter)
|
||||
base08 = "D066C2"; # Variables, XML Tags, Markup Link Text, Markup Lists, Diff Deleted (brighter teal)
|
||||
base09 = "6FBCDE"; # Integers, Boolean, Constants, XML Attributes, Markup Link Url (brighter blue)
|
||||
base0A = "7E6BCC"; # Classes, Markup Bold, Search Text Background (brighter purple)
|
||||
base0B = "6ACB9A"; # Strings, Inherited Class, Markup Code, Diff Inserted (brighter magenta)
|
||||
base0C = "D26D6E"; # Support, Regular Expressions, Escape Characters, Markup Quotes (slightly adjusted red)
|
||||
base0D = "E0C964"; # Functions, Methods, Attribute IDs, Headings (brighter yellow)
|
||||
base0E = "8FCB5F"; # Keywords, Storage, Selector, Markup Italic, Diff Changed (brighter green)
|
||||
base0F = "6FC8B8"; # Deprecated, Opening/Closing Embedded Language Tags (brighter cyan)
|
||||
# Base16 color values with context-specific usage comments
|
||||
base00 = background; # Default background
|
||||
base01 = darkTeal; # Lighter background (used for status bars)
|
||||
base02 = lighterTeal; # Selection background
|
||||
base03 = teal; # Comments, secondary content, line highlighting
|
||||
base04 = lightTeal; # Darker foreground (used for status bars)
|
||||
base05 = foreground; # Default text and foreground
|
||||
base06 = lightGrey; # Lighter foreground (used for inactive text)
|
||||
base07 = offWhite; # Lightest background (used for highlights)
|
||||
base08 = teal; # Variables, constants, markup link text
|
||||
base09 = blue; # Integers, booleans, constants, and XML attributes
|
||||
base0A = magenta; # Classes, headings, keywords
|
||||
base0B = cyan; # Strings, literals, escape sequences
|
||||
base0C = green; # Support and error colors
|
||||
base0D = cyan; # Functions, methods, function names
|
||||
base0E = red; # Keywords, storage, selectors
|
||||
base0F = yellow; # Deprecated or obsolete code
|
||||
};
|
||||
};
|
||||
|
||||
programs.foot.settings.colors = {
|
||||
alpha = "0.95"; # Slightly more transparent for a cyberpunk feel
|
||||
alpha = "0.85";
|
||||
#set based on https://github.com/tinted-theming/base16-foot/blob/main/colors/base16-apathy.ini and https://github.com/tinted-theming/base16-schemes/blob/main/apathy.yaml
|
||||
|
||||
foreground = "${config.colorScheme.palette.base05}";
|
||||
background = "${config.colorScheme.palette.base00}";
|
||||
regular0 = "${config.colorScheme.palette.base00}"; # Black
|
||||
regular1 = "${config.colorScheme.palette.base08}"; # Red (now brighter teal)
|
||||
regular2 = "${config.colorScheme.palette.base0B}"; # Green
|
||||
regular3 = "${config.colorScheme.palette.base0A}"; # Yellow
|
||||
regular4 = "${config.colorScheme.palette.base09}"; # Blue
|
||||
regular5 = "${config.colorScheme.palette.base0E}"; # Magenta
|
||||
regular6 = "${config.colorScheme.palette.base0C}"; # Cyan (now slightly adjusted red)
|
||||
regular7 = "${config.colorScheme.palette.base05}"; # White
|
||||
bright0 = "${config.colorScheme.palette.base03}"; # Bright Black
|
||||
bright1 = "${config.colorScheme.palette.base08}"; # Bright Red (now brighter teal)
|
||||
bright2 = "${config.colorScheme.palette.base0B}"; # Bright Green
|
||||
bright3 = "${config.colorScheme.palette.base0A}"; # Bright Yellow
|
||||
bright4 = "${config.colorScheme.palette.base09}"; # Bright Blue
|
||||
bright5 = "${config.colorScheme.palette.base0E}"; # Bright Magenta
|
||||
bright6 = "${config.colorScheme.palette.base0C}"; # Bright Cyan (now adjusted red)
|
||||
bright7 = "${config.colorScheme.palette.base07}"; # Bright White
|
||||
selection-foreground = "${config.colorScheme.palette.base00}"; # Dark background color for selected text
|
||||
selection-background = "${config.colorScheme.palette.base0A}"; # Selection color
|
||||
|
||||
regular0 = "${config.colorScheme.palette.base00}";
|
||||
regular1 = "${config.colorScheme.palette.base08}";
|
||||
regular2 = "${config.colorScheme.palette.base0B}";
|
||||
regular3 = "${config.colorScheme.palette.base0A}";
|
||||
regular4 = "${config.colorScheme.palette.base0D}";
|
||||
regular5 = "${config.colorScheme.palette.base0E}";
|
||||
regular6 = "${config.colorScheme.palette.base0C}";
|
||||
regular7 = "${config.colorScheme.palette.base05}";
|
||||
|
||||
bright0 = "${config.colorScheme.palette.base03}";
|
||||
bright1 = "${config.colorScheme.palette.base08}";
|
||||
bright2 = "${config.colorScheme.palette.base0B}";
|
||||
bright3 = "${config.colorScheme.palette.base0A}";
|
||||
bright4 = "${config.colorScheme.palette.base0D}";
|
||||
bright5 = "${config.colorScheme.palette.base0E}";
|
||||
bright6 = "${config.colorScheme.palette.base0C}";
|
||||
bright7 = "${config.colorScheme.palette.base07}";
|
||||
selection-foreground = "${config.colorScheme.palette.base00}";
|
||||
selection-background = "${config.colorScheme.palette.base0A}";
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
@ -12,6 +12,11 @@
|
|||
firefox
|
||||
gimp
|
||||
dconf
|
||||
feh
|
||||
ripgrep
|
||||
eza
|
||||
bottom
|
||||
killall
|
||||
];
|
||||
}
|
||||
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
{ pkgs, config, lib, ... }:
|
||||
let
|
||||
palette = config.colorScheme.palette;
|
||||
in
|
||||
{
|
||||
imports = [
|
||||
#./fuzzle.nix
|
||||
#./wofi.nix
|
||||
#./waybar.nix
|
||||
./foot.nix
|
||||
./fonts.nix
|
||||
./kanshi.nix
|
||||
|
@ -99,7 +103,7 @@
|
|||
_JAVA_AWT_WM_NONREPARENTING = 1;
|
||||
|
||||
# gtk applications on wayland
|
||||
# export GDK_BACKEND=wayland
|
||||
#GTK_BACKEND="wayland";
|
||||
};
|
||||
|
||||
|
||||
|
@ -107,9 +111,12 @@ wayland.windowManager.sway = let
|
|||
cfg = config.wayland.windowManager.sway;
|
||||
in {
|
||||
wrapperFeatures.gtk = true;
|
||||
systemd.enable = true;
|
||||
enable = true;
|
||||
config = rec {
|
||||
|
||||
modifier = "Mod4";
|
||||
|
||||
terminal = "footclient";
|
||||
menu = "fuzzel";
|
||||
bars = [{
|
||||
|
@ -134,6 +141,10 @@ in {
|
|||
"${cfg.config.down}" = "resize grow height 10 px or 10 ppt";
|
||||
"${cfg.config.up}" = "resize shrink height 10 px or 10 ppt";
|
||||
"${cfg.config.right}" = "resize grow width 10 px or 10 ppt";
|
||||
"Left" = "resize shrink width 10 px or 10 ppt";
|
||||
"Down" = "resize grow height 10 px or 10 ppt";
|
||||
"Up" = "resize shrink height 10 px or 10 ppt";
|
||||
"Right" = "resize grow width 10 px or 10 ppt";
|
||||
};
|
||||
keybindings = {
|
||||
"${cfg.config.modifier}+Return" = "exec ${cfg.config.terminal}";
|
||||
|
@ -219,7 +230,7 @@ in {
|
|||
"${cfg.config.modifier}+Shift+c" = "exec code";
|
||||
"${cfg.config.modifier}+f11" = "exec grim -g \"$(slurp)\" ~/Pictures/screenshots/\"screenshot-`date +%F-%T`\".png";
|
||||
"${cfg.config.modifier}+Print" = "exec grim -g \"$(slurp)\" ~/Pictures/screenshots/\"screenshot-`date +%F-%T`\".png";
|
||||
"Mod1+tab" = "workspace back_and_forth";
|
||||
"${cfg.config.modifier}+tab" = "workspace back_and_forth";
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -229,11 +240,6 @@ in {
|
|||
input type:keyboard xkb_numlock enabled
|
||||
xwayland enable
|
||||
|
||||
assign [class="autostart1"] workspace 1
|
||||
assign [class="autostart2"] workspace 2
|
||||
assign [class="autostart3"] workspace 3
|
||||
assign [class="autostart4"] workspace 4
|
||||
|
||||
smart_borders no_gaps
|
||||
smart_gaps on
|
||||
gaps inner 5
|
||||
|
@ -241,10 +247,10 @@ in {
|
|||
default_floating_border pixel 2
|
||||
titlebar_border_thickness 1
|
||||
|
||||
client.focused #80a0ff #303030 #c6c6c6 #80a0ff #80a0ff
|
||||
client.focused_inactive #80a0ff #303030 #c6c6c6 #80a0ff #80a0ff
|
||||
client.unfocused #80a0ff #080808 #c6c6c6 #80a0ff #303030
|
||||
client.urgent #80a0ff #80a0ff #080808 #80a0ff
|
||||
client.focused ${palette.base0D} ${palette.base00} ${palette.base05} ${palette.base0D} ${palette.base0D}
|
||||
client.focused_inactive ${palette.base0D} ${palette.base00} ${palette.base05} ${palette.base0D} ${palette.base0D}
|
||||
client.unfocused ${palette.base0D} ${palette.base03} ${palette.base05} ${palette.base0D} ${palette.base00}
|
||||
client.urgent ${palette.base0D} ${palette.base0D} ${palette.base03} ${palette.base0D}
|
||||
|
||||
for_window [title="(?:Open|Save) (?:File|Folder|As)"] floating enable
|
||||
for_window [title="(?:Open|Save) (?:File|Folder|As)"] resize set 1920 1080
|
||||
|
@ -260,12 +266,6 @@ in {
|
|||
for_window [app_id="dolphin"] floating enable
|
||||
for_window [app_id="file-manager"] floating enable
|
||||
|
||||
#client.focused $accent $accent #000000 #00ffcc $accent
|
||||
#client.focused_inactive #000000 #000000 #ff9900 #000000 #000000
|
||||
#client.unfocused #000000 #000000 #00ffcc #000000 #000000
|
||||
#client.urgent #ff0000 #ff0000 #00ffcc #ff0000 #ff0000
|
||||
#client.placeholder #000000 #000000 #00ffcc #000000 #000000
|
||||
#client.background #000000
|
||||
'';
|
||||
};
|
||||
}
|
||||
|
|
|
@ -0,0 +1,354 @@
|
|||
{ pkgs, config, nix-colors, ... }:
|
||||
|
||||
let
|
||||
palette = config.colorScheme.palette;
|
||||
in{
|
||||
imports = [
|
||||
];
|
||||
|
||||
|
||||
|
||||
programs.waybar = {
|
||||
|
||||
enable = true;
|
||||
|
||||
|
||||
|
||||
style = ''
|
||||
* {
|
||||
/* `otf-font-awesome` is required to be installed for icons */
|
||||
font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif;
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background-color: #${palette.base00}50;
|
||||
border-bottom: 3px solid #${palette.base03}50;
|
||||
color: ${palette.base05};
|
||||
transition-property: background-color;
|
||||
transition-duration: .5s;
|
||||
}
|
||||
|
||||
window#waybar.hidden {
|
||||
opacity: 0.2;
|
||||
}
|
||||
|
||||
/*
|
||||
window#waybar.empty {
|
||||
background-color: transparent;
|
||||
}
|
||||
window#waybar.solo {
|
||||
background-color: #${palette.base07};
|
||||
}
|
||||
*/
|
||||
|
||||
window#waybar.termite {
|
||||
background-color: #${palette.base03};
|
||||
}
|
||||
|
||||
window#waybar.chromium {
|
||||
background-color: #${palette.base00};
|
||||
border: none;
|
||||
}
|
||||
|
||||
button {
|
||||
/* Use box-shadow instead of border so the text isn't offset */
|
||||
box-shadow: inset 0 -3px transparent;
|
||||
/* Avoid rounded borders under each button name */
|
||||
border: none;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
|
||||
button:hover {
|
||||
background: inherit;
|
||||
box-shadow: inset 0 -3px #${palette.base05};
|
||||
}
|
||||
|
||||
/* you can set a style on hover for any module like this */
|
||||
#pulseaudio:hover {
|
||||
background-color: #${palette.base0A};
|
||||
}
|
||||
|
||||
#workspaces button {
|
||||
padding: 0 5px;
|
||||
background-color: transparent;
|
||||
color: #${palette.base05};
|
||||
}
|
||||
|
||||
#workspaces button:hover {
|
||||
background: #${palette.base00}20;
|
||||
}
|
||||
|
||||
#workspaces button.focused {
|
||||
background-color: #${palette.base03};
|
||||
box-shadow: inset 0 -3px #${palette.base05};
|
||||
}
|
||||
|
||||
#workspaces button.urgent {
|
||||
background-color: #${palette.base08};
|
||||
}
|
||||
|
||||
#mode {
|
||||
background-color: #${palette.base03};
|
||||
box-shadow: inset 0 -3px #${palette.base05};
|
||||
}
|
||||
|
||||
#clock,
|
||||
#battery,
|
||||
#cpu,
|
||||
#memory,
|
||||
#disk,
|
||||
#temperature,
|
||||
#backlight,
|
||||
#network,
|
||||
#pulseaudio,
|
||||
#wireplumber,
|
||||
#custom-media,
|
||||
#tray,
|
||||
#mode,
|
||||
#idle_inhibitor,
|
||||
#scratchpad,
|
||||
#power-profiles-daemon,
|
||||
#mpd {
|
||||
padding: 0 10px;
|
||||
color: #${palette.base05};
|
||||
}
|
||||
|
||||
#window,
|
||||
#workspaces {
|
||||
margin: 0 4px;
|
||||
}
|
||||
|
||||
/* If workspaces is the leftmost module, omit left margin */
|
||||
.modules-left > widget:first-child > #workspaces {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
/* If workspaces is the rightmost module, omit right margin */
|
||||
.modules-right > widget:last-child > #workspaces {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
#clock {
|
||||
background-color: #${palette.base03};
|
||||
}
|
||||
|
||||
#battery {
|
||||
background-color: #${palette.base05};
|
||||
color: #${palette.base00};
|
||||
}
|
||||
|
||||
#battery.charging, #battery.plugged {
|
||||
color: #${palette.base05};
|
||||
background-color: #${palette.base0B};
|
||||
}
|
||||
|
||||
@keyframes blink {
|
||||
to {
|
||||
background-color: #${palette.base05};
|
||||
color: #${palette.base00};
|
||||
}
|
||||
}
|
||||
|
||||
/* Using steps() instead of linear as a timing function to limit cpu usage */
|
||||
#battery.critical:not(.charging) {
|
||||
background-color: #${palette.base08};
|
||||
color: #${palette.base05};
|
||||
animation-name: blink;
|
||||
animation-duration: 0.5s;
|
||||
animation-timing-function: steps(12);
|
||||
animation-iteration-count: infinite;
|
||||
animation-direction: alternate;
|
||||
}
|
||||
|
||||
#power-profiles-daemon {
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
#power-profiles-daemon.performance {
|
||||
background-color: #${palette.base08};
|
||||
color: #${palette.base05};
|
||||
}
|
||||
|
||||
#power-profiles-daemon.balanced {
|
||||
background-color: #${palette.base0D};
|
||||
color: #${palette.base05};
|
||||
}
|
||||
|
||||
#power-profiles-daemon.power-saver {
|
||||
background-color: #${palette.base0B};
|
||||
color: ${palette.base00};
|
||||
}
|
||||
|
||||
label:focus {
|
||||
background-color: #${palette.base00};
|
||||
}
|
||||
|
||||
#cpu {
|
||||
background-color: #${palette.base0B};
|
||||
color: ${palette.base00};
|
||||
}
|
||||
|
||||
#memory {
|
||||
background-color: #${palette.base0E};
|
||||
}
|
||||
|
||||
#disk {
|
||||
background-color: #${palette.base09};
|
||||
}
|
||||
|
||||
#backlight {
|
||||
background-color: #${palette.base0C};
|
||||
}
|
||||
|
||||
#network {
|
||||
background-color: #${palette.base0D};
|
||||
}
|
||||
|
||||
#network.disconnected {
|
||||
background-color: #${palette.base08};
|
||||
}
|
||||
|
||||
#pulseaudio {
|
||||
background-color: #${palette.base0A};
|
||||
color: #${palette.base00};
|
||||
}
|
||||
|
||||
#pulseaudio.muted {
|
||||
background-color: #${palette.base0C};
|
||||
color: #${palette.base03};
|
||||
}
|
||||
|
||||
#wireplumber {
|
||||
background-color: #${palette.base07};
|
||||
color: #${palette.base00};
|
||||
}
|
||||
|
||||
#wireplumber.muted {
|
||||
background-color: #${palette.base08};
|
||||
}
|
||||
|
||||
#custom-media {
|
||||
background-color: #${palette.base0B};
|
||||
color: #${palette.base03};
|
||||
min-width: 100px;
|
||||
}
|
||||
|
||||
#custom-media.custom-spotify {
|
||||
background-color: #${palette.base0B};
|
||||
}
|
||||
|
||||
#custom-media.custom-vlc {
|
||||
background-color: #${palette.base09};
|
||||
}
|
||||
|
||||
#temperature {
|
||||
background-color: #${palette.base0A};
|
||||
}
|
||||
|
||||
#temperature.critical {
|
||||
background-color: #${palette.base08};
|
||||
}
|
||||
|
||||
#tray {
|
||||
background-color: #${palette.base0D};
|
||||
}
|
||||
|
||||
#tray > .passive {
|
||||
-gtk-icon-effect: dim;
|
||||
}
|
||||
|
||||
#tray > .needs-attention {
|
||||
-gtk-icon-effect: highlight;
|
||||
background-color: #${palette.base08};
|
||||
}
|
||||
|
||||
#idle_inhibitor {
|
||||
background-color: #${palette.base00};
|
||||
}
|
||||
|
||||
#idle_inhibitor.activated {
|
||||
background-color: #${palette.base07};
|
||||
color: #${palette.base00};
|
||||
}
|
||||
|
||||
#mpd {
|
||||
background-color: #${palette.base0B};
|
||||
color: #${palette.base03};
|
||||
}
|
||||
|
||||
#mpd.disconnected {
|
||||
background-color: #${palette.base08};
|
||||
}
|
||||
|
||||
#mpd.stopped {
|
||||
background-color: #${palette.base0C};
|
||||
}
|
||||
|
||||
#mpd.paused {
|
||||
background-color: #${palette.base0B};
|
||||
}
|
||||
|
||||
#language {
|
||||
background: #${palette.base0C};
|
||||
color: #${palette.base0E};
|
||||
padding: 0 5px;
|
||||
margin: 0 5px;
|
||||
min-width: 16px;
|
||||
}
|
||||
|
||||
#keyboard-state {
|
||||
background: #${palette.base0B};
|
||||
color: #${palette.base00};
|
||||
padding: 0 0px;
|
||||
margin: 0 5px;
|
||||
min-width: 16px;
|
||||
}
|
||||
|
||||
#keyboard-state > label {
|
||||
padding: 0 5px;
|
||||
}
|
||||
|
||||
#keyboard-state > label.locked {
|
||||
background: #${palette.base00}20;
|
||||
}
|
||||
|
||||
#scratchpad {
|
||||
background: #${palette.base00}20;
|
||||
}
|
||||
|
||||
#scratchpad.empty {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
#privacy {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
#privacy-item {
|
||||
padding: 0 5px;
|
||||
color: #${palette.base05};
|
||||
}
|
||||
|
||||
#privacy-item.screenshare {
|
||||
background-color: #${palette.base09};
|
||||
}
|
||||
|
||||
#privacy-item.audio-in {
|
||||
background-color: #${palette.base0B};
|
||||
}
|
||||
|
||||
#privacy-item.audio-out {
|
||||
background-color: #${palette.base0D};
|
||||
}
|
||||
|
||||
'';
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue