reorganise /homes

This commit is contained in:
do butterflies cry? 2026-03-22 12:26:35 +10:00
parent 719bd1de6b
commit 85071855ec
Signed by: cry
GPG key ID: F68745A836CA0412
32 changed files with 219 additions and 1031 deletions

View file

@ -1,30 +0,0 @@
import { AppLauncher } from "./widgets/applauncher.js"
//import { Notifications } from "./widgets/notifications.js"
/*
const date = Variable('', {
poll: [1000, 'date'],
})
*/
/*
const Bar = (monitor = 0) => Widget.Window({
monitor,
name: 'bar${monitor}',
anchor: ['top', 'left', 'right'],
child: Widget.Label({ label: date.bind() }),
})
*/
App.config({
style: "./style.css",
// icons: "./assets",
windows: [
//Bar(),
AppLauncher,
//Notifications()
]
// gtkTheme: "Adwaita-dark",
// cursorTheme: "Qogir",
// iconTheme: "MoreWaita",[]
})

View file

@ -1,12 +0,0 @@
{pkgs, ...}: {
programs.ags = {
enable = true;
configDir = ./.;
extraPackages = with pkgs; [
gtksourceview
webkitgtk
accountsservice
];
};
}

View file

@ -1,125 +0,0 @@
const { query } = await Service.import("applications");
const WINDOW_NAME = "applauncher";
const AppItem = app => Widget.Button({
on_clicked: () => {
App.closeWindow(WINDOW_NAME)
app.launch()
},
attribute: { app },
child: Widget.Box({
children: [
Widget.Icon({
icon: app.icon_name || "",
size: 42,
}),
Widget.Label({
class_name: "title",
label: app.name,
xalign: 0,
vpack: "center",
truncate: "end",
css: "margin-left: 10px;"
}),
],
}),
})
const AppLauncherWidget = ({ width = 500, height = 500, spacing = 12 }) => {
let applications = query("").map(AppItem)
const list = Widget.Box({
vertical: true,
children: applications,
spacing,
})
function refresh() {
applications = query("").map(AppItem)
list.children = applications
}
const entry = Widget.Entry({
placeholder_text: "Search",
hexpand: true,
css: "min-height: 50px;",
// launch first item when Enter is pressed
on_accept: () => {
// only consider applications that are visible in the list
const results = applications.filter((item) => item.visible);
if (results[0]) {
App.toggleWindow(WINDOW_NAME);
results[0].attribute.app.launch()
}
},
// filter the applications based on search term
on_change: ({ text }) => applications.forEach(item => {
item.visible = item.attribute.app.match(text ?? "")
}),
})
return Widget.Box({
vertical: false,
children: [
// LEFT
Widget.Box({
vertical: true,
css: `min-width: ${width}px;`
+ `min-height: ${height}px;`
+ "background-image: url('https://images2.alphacoders.com/135/1351579.png');"
+ "background-size: cover;"
+ "background-position: center;"
+ "background-repeat: no-repeat;",
children: [
// align the entry field with the app list
Widget.Box({
css: `margin: ${spacing * 2}px;`,
child: entry,
}),
],
}),
// RIGHT
Widget.Box({
vertical: true,
css: `margin: ${spacing * 2}px;`,
child:
// make scrollable
Widget.Scrollable({
hscroll: "never",
css: `min-width: ${width}px; min-height: ${height}px;`,
child: list,
}),
setup: self => self.hook(App, (_, windowName, visible) => {
if (windowName !== WINDOW_NAME)
return
// when the launcher becomes visible
if (visible) {
refresh()
entry.text = ""
entry.grab_focus()
}
}),
}),
],
})
}
// the app launcher should be a singleton
export const AppLauncher = Widget.Window({
name: WINDOW_NAME,
setup: self => self.keybind("Escape", () => {
App.closeWindow(WINDOW_NAME)
}),
visible: false,
keymode: "exclusive",
child: AppLauncherWidget({
width: 500,
height: 500,
spacing: 12,
}),
})

View file

@ -1,38 +0,0 @@
import options from "options"p
const { start, center, end } = options.bar.layout
// place all your bar widgets in here
const widgets = {
expander: () => Widget.Box({ expand: true}),
}
//export type BarWidget = keyof typeof widget;
export default (monitor: number) => Widget.Window({
monitor,
class_name: "bar",
name: "bar-${monitor}",
// anchor: position.bind().as(pos => [pos, "left", "right"]),
anchor: ["top", "left", "right"],
child: Widget.CenterBox({
// ensure bar is shown
css: "min-width: 2px; min-height: 2px;"
startWidget: Widget.Box({
hexpand: true,
// map all start widgets to be childen
childen: start.bind().as(s => s.map(w => widgets[w]()))
}),
centerWidget: Widget.Box({
hpack: "center",
// map all center widgets to be childen
childen: center.bind().as(c => c.map(w => widgets[w]()))
}),
endWidget: Widget.Box({
hexpand: true
// map all end widgets to be childen
childen: end.bind().as(e => e.map(w => widgets[w]()))
}),
})
})

View file

@ -1,23 +0,0 @@
const WINDOW_NAME = "fullscreen";
const Fullscreen = (children) => Widget.Box({
vertical: true,
css: "background-image: url('~/downloads/wallpaper/kill-my-firstborn/astronaut-pink-blue.png');",
//+ "background-size: cover;"
//+ "background-position: center;"
//+ "background-repeat: no-repeat;",
children: children,
})
export const fullscreen = Widget.Window({
name: WINDOW_NAME,
setup: self => self.keybind("Escape", () => {
App.closeWindow(WINDOW_NAME)
}),
anchor: ["top", "bottom", "left", "right"],
visible: false,
keymode: "exclusive",
child: Fullscreen(
Widget.Label({"Hello World"});
)
})

View file

@ -1,122 +0,0 @@
const notifications = await Service.import("notifications");
function NotificationIcon({ app_entry, app_icon, image}) {
if (image) {
return Widget.Box({
css: `background-image: url("${image}");`
+ "background-size: contain;"
+ "background-repeat: no-repeat;"
+ "background-position: center;"
})
}
let icon = "dialog-information-symbolic"
if (Utils.lookUpIcon(app_icon))
icon = app_icon
if (app_entry && Utils.lookUpIcon(app_entry))
icon = app_entry
return Widget.Box({
child: Widget.Icon(icon),
})
}
function Notification(n) {
const icon = Widget.Box({
vpack: "start",
class_name: "icon",
child: NotificationIcon(n),
})
const title = Widget.Label({
class_name: "title",
xalign: 0,
justification: "left",
hexpand: true,
max_width_chars: 24,
truncate: "end",
wrap: true,
label: n.summary,
use_markup: true,
})
const body = Widget.Label({
class_name: "body",
hexpand: true,
use_markup: true,
xalign: 0,
justification: "left",
label: n.body,
wrap: true,
})
const actions = Widget.Box({
class_name: "actions",
children: n.actions.map(({ id, label}) => Widget.Button({
class_name: "action-button",
on_clicked: () => {
n.invoke(id),
n.dismiss()
},
hexpand: true,
child: Widget.Label(label),
})),
})
return Widget.EventBox(
{
attribute: {id: n.id},
on_primary_click: n.dismiss,
},
Widget.Box(
{
class_name: `notification ${n.urgency}`,
vertical: true,
},
Widget.Box([
icon,
Widget.Box(
{ vertical: true },
title,
body,
),
]),
actions,
),
)
}
export function Notifications(monitor = 0) {
const list = Widget.Box({
vertical: true,
children: notifications.popups.map(Notification),
})
function onNotified(_, id) {
const n = notifications.getNotification(id)
if (n)
list.children = [Notification(n), ...list.children]
}
function onDismissed(_, id) {
list.children.find(n => n.attribute.id === id)?.destroy()
}
list.hook(notifications, onNotified, "notified")
.hook(notifications, onDismissed, "dismissed")
return Widget.Window({
monitor,
class_name: "notifications-widget",
name: `notifications-${monitor}`,
anchor: ["top", "left"],
child: Widget.Box({
css: "min-width: 2px; min-height: 2px;",
class_name: "notifications",
vertical: true,
child: list,
}),
})
}

View file

@ -0,0 +1,22 @@
{...}: {
programs.hyfetch = {
enable = true;
settings = {
backend = "neofetch";
args = null;
distro = null;
preset = "transfeminine"; # "nonbinary";
pride_month_disable = false;
custom_ascii_path = null;
mode = "rgb";
light_dark = "dark";
auto_detect_light_dark = true;
lightness = 0.65;
color_align = {
mode = "horizontal";
};
};
};
}

View file

@ -1,88 +0,0 @@
{
lib,
pkgs,
...
}: {
options = {
morphBashToFish = lib.mkEnableOption "morphBashToFish";
};
# TODO: make the greeting controllable (ie so my VPS can be different)
config = {
programs.fish = {
enable = true;
generateCompletions = true;
# vendor = {
# config.enable = true;
# functions.enable = true;
# completions.enable = true;
# };
interactiveShellInit = let
greetings =
[
"Welcome weary traveller to my shop"
"It's dangerous to go alone! Take this."
"Do butterflies cry when they're sad?"
"I hope they do"
"I think Alice is lost..."
"I once again retreat to the sanctuary of my virtual realm"
"Something wicked this way comes"
"May your L's be many... and your bitches few"
"What a horrible night to have a curse."
"The ancient spirits of light and dark have been released."
"The god of the stars rejects your offering. The ritual can only be performed at night."
"You should have just died..."
"Supreme Witch, Calamitas has killed every player!"
"A broken heart beats in fractals" # Key Fairy
"Remember our promise" # Signalis
]
|> map (x: "\"${x}\"")
|> builtins.concatStringsSep " ";
in ''
# add dotnet completions if it exists (ie we're in a virtual environment)
if type -q dotnet
complete -f -c dotnet -a "(dotnet complete (commandline -cp))"
end
function rand_greet
set greetings ${greetings}
echo -n $greetings[(random 1 (count $greetings))]
end
function gitignore -a type
curl -sL "https://www.gitignore.io/api/$type"
end
end
function decompile
objdump --disassemble --demangle --debugging --debugging-tags $argv | bat --language asm
end
set -g fish_greeting (rand_greet)
'';
shellAliases = {
brip = "batgrep"; # bat + ripgrep
man = "batman"; # bat + man
ls = "eza --color=auto";
l = "eza -Alh --color=auto --icons=auto";
ll = "eza -lh --color=auto --icons=auto";
li = "eza --color=auto --git-ignore";
};
plugins = [
{
name = "grc";
src = pkgs.fishPlugins.grc.src;
}
];
};
};
}

View file

@ -1,122 +0,0 @@
{
config,
pkgs,
...
}: {
home.packages = with pkgs; [
delta # git diff viewer
];
programs = {
git = {
enable = true;
lfs.enable = true;
signing = {
key = "F68745A836CA0412";
format = "openpgp";
signByDefault = true;
};
settings = {
user.name = "_cry64";
user.email = "them@dobutterfliescry.net";
alias = {
s = "status";
d = "diff";
l = "log";
c = "commit";
p = "push";
};
color.ui = true;
core.editor = "hx";
github.user = "cry128";
# delta diff viewer
core.pager = "delta";
interactive.diffFilter = "delta --color-only";
delta = {
navigate = true;
line-numbers = true;
side-by-side = true;
};
merge.conflictStyle = "zdiff3";
init = {
defaultBranch = "main";
};
url = {
"git@github.com:" = {
insteadOf = [
"gh:"
"github:"
];
};
"https://gitlab.com/" = {
insteadOf = [
"gl:"
"gitlab:"
];
};
"git@codeberg.org:" = {
insteadOf = [
"cb:"
"codeberg:"
];
};
"git@tearforge.net/" = {
insteadOf = [
"cry:"
"forge:"
];
};
};
};
includes = [
{
path = "/home/me/agribit/.gitconfig";
condition = "gitdir:/home/me/agribit/**";
}
# {
# path = "/home/me/luminary/.gitconfig";
# condition = "gitdir:/home/me/luminary/**";
# }
];
};
lazygit = {
enable = true;
enableFishIntegration = true;
enableZshIntegration = true;
shellWrapperName = "lg";
settings = {
gui = {
useHunkModeInStagingView = false;
skipDiscardChangeWarning = false;
skipStashWarning = true;
animateExplosion = true; # FUCK YEAHHHHHHHHHHHHHHHHHHHHHHHHH
theme = {
lightTheme = false;
activeBorderColor = ["green" "bold"];
inactiveBorderColor = ["white"];
selectedLineBgColor = ["default"];
};
};
git.pagers = [
{
pager = "delta --dark --pager=never";
}
];
};
};
};
}

View file

@ -1,13 +0,0 @@
{
config,
pkgs,
...
}: {
programs.rofi = {
enable = true;
package = pkgs.rofi-wayland;
font = "JetBrains Mono Nerd Font 10";
location = "center";
terminal = "${pkgs.rio}/bin/rio";
};
}

View file

@ -0,0 +1,16 @@
{osConfig, ...}: {
assertions = [
{
assertion = !osConfig.services.gnupg.agent.enable;
message = ''
It is not recommended to enable both `homeConfig.services.ssh-agent.enable` and `osConfig.services.gnupg.agent.enable`!
'';
}
];
# enable OpenSSH private key agent
services.ssh-agent.enable = true;
# WARNING: the ssh-agent won't set this for itself...
systemd.user.sessionVariables.SSH_AUTH_SOCK = "$XDG_RUNTIME_DIR/ssh-agent";
}

73
homes/modules/shell/fish.nix Executable file
View file

@ -0,0 +1,73 @@
{pkgs, ...}: {
programs.fish = {
enable = true;
generateCompletions = true;
interactiveShellInit = let
greetings =
[
# Official _cry64 quotes
"Do butterflies cry when they're sad?"
"I hope they do"
"I think Alice is lost..."
"I once again retreat to the sanctuary of my virtual realm"
# Unknown
"Welcome weary traveler to my shop"
# Legend of Zelda
"It's dangerous to go alone! Take this."
# ULTRAKILL
"Something wicked this way comes"
"May your L's be many... and your bitches few"
# Terraria
"What a horrible night to have a curse."
"The ancient spirits of light and dark have been released."
# Calamity
"The god of the stars rejects your offering. The ritual can only be performed at night."
"You should have just died..."
"Supreme Witch, Calamitas has killed every player!"
# Key Fairy
"A broken heart beats in fractals"
# Signalis
"Remember our promise"
]
|> map (x: "\"${x}\"")
|> builtins.concatStringsSep " ";
in ''
# add dotnet completions if it exists (ie we're in a virtual environment)
if type -q dotnet
complete -f -c dotnet -a "(dotnet complete (commandline -cp))"
end
function rand_greet
set greetings ${greetings}
echo -n $greetings[(random 1 (count $greetings))]
end
function gitignore -a type
curl -sL "https://www.gitignore.io/api/$type"
end
end
function decompile
objdump --disassemble --demangle --debugging --debugging-tags $argv | bat --language asm
end
set -g fish_greeting (rand_greet)
'';
plugins = [
{
name = "grc";
src = pkgs.fishPlugins.grc.src;
}
];
};
}

View file

@ -0,0 +1,17 @@
{...}: {
programs.zsh = {
enable = true;
enableCompletion = true;
autosuggestion.enable = true;
syntaxHighlighting.enable = true;
history = {
size = 10000;
ignoreAllDups = true;
path = "$HOME/.zsh_history";
ignorePatterns = [
"rm *"
];
};
};
}

View file

@ -1,9 +0,0 @@
{
lib,
...
}:
{
options = {
}
}

View file

@ -1,8 +1,4 @@
{
config,
pkgs,
...
}: {
{pkgs, ...}: {
home = {
packages = [
pkgs.rio

View file

@ -1,209 +0,0 @@
/**
*
* Author : Aditya Shakya (adi1090x)
* Github : @adi1090x
*
* Rofi Theme File
* Rofi Version: 1.7.3
**/
/*****----- Configuration -----*****/
configuration {
modi: "drun,run,filebrowser,window";
show-icons: true;
display-drun: "APPS";
display-run: "RUN";
display-filebrowser: "FILES";
display-window: "WINDOW";
drun-display-format: "{name}";
window-format: "{w} · {c} · {t}";
}
/*****----- Global Properties -----*****/
* {
font: "JetBrains Mono Nerd Font 10";
background: #11092D;
background-alt: #281657;
foreground: #FFFFFF;
selected: #DF5296;
active: #6E77FF;
urgent: #8E3596;
}
/*****----- Main Window -----*****/
window {
/* properties for window widget */
transparency: "real";
location: center;
anchor: center;
fullscreen: false;
width: 1000px;
x-offset: 0px;
y-offset: 0px;
/* properties for all widgets */
enabled: true;
border-radius: 15px;
cursor: "default";
background-color: @background;
}
/*****----- Main Box -----*****/
mainbox {
enabled: true;
spacing: 0px;
background-color: transparent;
orientation: horizontal;
children: [ "imagebox", "listbox" ];
}
imagebox {
padding: 20px;
background-color: transparent;
background-image: url("~/.config/rofi/images/j.jpg", height);
orientation: vertical;
children: [ "inputbar", "dummy", "mode-switcher" ];
}
listbox {
spacing: 20px;
padding: 20px;
background-color: transparent;
orientation: vertical;
children: [ "message", "listview" ];
}
dummy {
background-color: transparent;
}
/*****----- Inputbar -----*****/
inputbar {
enabled: true;
spacing: 10px;
padding: 15px;
border-radius: 10px;
background-color: @background-alt;
text-color: @foreground;
children: [ "textbox-prompt-colon", "entry" ];
}
textbox-prompt-colon {
enabled: true;
expand: false;
str: "";
background-color: inherit;
text-color: inherit;
}
entry {
enabled: true;
background-color: inherit;
text-color: inherit;
cursor: text;
placeholder: "Search";
placeholder-color: inherit;
}
/*****----- Mode Switcher -----*****/
mode-switcher{
enabled: true;
spacing: 20px;
background-color: transparent;
text-color: @foreground;
}
button {
padding: 15px;
border-radius: 10px;
background-color: @background-alt;
text-color: inherit;
cursor: pointer;
}
button selected {
background-color: @selected;
text-color: @foreground;
}
/*****----- Listview -----*****/
listview {
enabled: true;
columns: 1;
lines: 8;
cycle: true;
dynamic: true;
scrollbar: false;
layout: vertical;
reverse: false;
fixed-height: true;
fixed-columns: true;
spacing: 10px;
background-color: transparent;
text-color: @foreground;
cursor: "default";
}
/*****----- Elements -----*****/
element {
enabled: true;
spacing: 15px;
padding: 8px;
border-radius: 10px;
background-color: transparent;
text-color: @foreground;
cursor: pointer;
}
element normal.normal {
background-color: inherit;
text-color: inherit;
}
element normal.urgent {
background-color: @urgent;
text-color: @foreground;
}
element normal.active {
background-color: @active;
text-color: @foreground;
}
element selected.normal {
background-color: @selected;
text-color: @foreground;
}
element selected.urgent {
background-color: @urgent;
text-color: @foreground;
}
element selected.active {
background-color: @urgent;
text-color: @foreground;
}
element-icon {
background-color: transparent;
text-color: inherit;
size: 32px;
cursor: inherit;
}
element-text {
background-color: transparent;
text-color: inherit;
cursor: inherit;
vertical-align: 0.5;
horizontal-align: 0.0;
}
/*****----- Message -----*****/
message {
background-color: transparent;
}
textbox {
padding: 15px;
border-radius: 10px;
background-color: @background-alt;
text-color: @foreground;
vertical-align: 0.5;
horizontal-align: 0.0;
}
error-message {
padding: 15px;
border-radius: 20px;
background-color: @background;
text-color: @foreground;
}

View file

@ -1,39 +0,0 @@
{
pkgs,
lib,
...
}: let
inherit
(lib)
mkEnableOption
mkOption
types
;
in {
imports = [
./hypr/hyprland.nix
./mangowc.nix
];
options.cryos = {
wm = {
default = mkOption {
type = types.enum ["mangowc" "hyprland"];
default = "mangowc";
example = "hyprland";
description = "Window manager to boot by default.";
};
hyprland.enabled = mkEnableOption "hyprland";
mangowc.enabled = mkEnableOption "mangowc";
};
};
config = {
xdg.portal = {
enable = true;
extraPortals = with pkgs; [
# xdg-desktop-portal-gtk
];
};
};
}

View file

@ -1,29 +0,0 @@
# NOTE: hyprland must be enabled in BOTH your host config (for running hyprland)
# NOTE: and your home-manager config (for managing hyprland's config files)
{
pkgs,
inputs,
...
}: {
config = {
wayland.windowManager.hyprland = {
enable = true;
# package = pkgs.hyprland;
package = null;
portalPackage = null;
xwayland.enable = true;
# systemd = {
# enable = true;
# # enable autostart of applications
# # REF: `man 8 systemd-xdg-autostart-generator`
# enableXdgAutostart = true;
# };
# plugins = with inputs; [
# split-monitor-workspaces.packages.${pkgs.system}.split
# ];
};
};
}

View file

@ -0,0 +1,26 @@
# NOTE: hyprland must be enabled in BOTH your host config (for running hyprland)
# NOTE: and your home-manager config (for managing hyprland's config files)
{...}: {
imports = [
./kanshi.nix
];
wayland.windowManager.hyprland = {
enable = true;
package = null;
portalPackage = null;
xwayland.enable = true;
# systemd = {
# enable = true;
# # enable autostart of applications
# # REF: `man 8 systemd-xdg-autostart-generator`
# enableXdgAutostart = true;
# };
# plugins = with inputs; [
# split-monitor-workspaces.packages.${pkgs.system}.split
# ];
};
}

View file

@ -1,8 +1,4 @@
{
config,
pkgs,
...
}: {
{...}: {
# Change monitor positions
# TODO: find a way to make this modular (ie put something different for my laptop)
# my idea is to have a "monitors" module and use kanshi for wayland

View file

@ -1,183 +0,0 @@
{
lib,
config,
pkgs,
...
}: {
programs.wofi = {
enable = true;
settings = {
location = "center";
allow_markup = true;
width = 250;
};
# Force the style to stop Stylix being a bitch and overwriting it
style = lib.mkForce ''
@define-color rosewater #f2d5cf;
@define-color rosewater-rgb rgb(242, 213, 207);
@define-color flamingo #eebebe;
@define-color flamingo-rgb rgb(238, 190, 190);
@define-color pink #f4b8e4;
@define-color pink-rgb rgb(244, 184, 228);
@define-color mauve #ca9ee6;
@define-color mauve-rgb rgb(202, 158, 230);
@define-color red #e78284;
@define-color red-rgb rgb(231, 130, 132);
@define-color maroon #ea999c;
@define-color maroon-rgb rgb(234, 153, 156);
@define-color peach #ef9f76;
@define-color peach-rgb rgb(239, 159, 118);
@define-color yellow #e5c890;
@define-color yellow-rgb rgb(229, 200, 144);
@define-color green #a6d189;
@define-color green-rgb rgb(166, 209, 137);
@define-color teal #81c8be;
@define-color teal-rgb rgb(129, 200, 190);
@define-color sky #99d1db;
@define-color sky-rgb rgb(153, 209, 219);
@define-color sapphire #85c1dc;
@define-color sapphire-rgb rgb(133, 193, 220);
@define-color blue #8caaee;
@define-color blue-rgb rgb(140, 170, 238);
@define-color lavender #babbf1;
@define-color lavender-rgb rgb(186, 187, 241);
@define-color text #c6d0f5;
@define-color text-rgb rgb(198, 208, 245);
@define-color subtext1 #b5bfe2;
@define-color subtext1-rgb rgb(181, 191, 226);
@define-color subtext0 #a5adce;
@define-color subtext0-rgb rgb(165, 173, 206);
@define-color overlay2 #949cbb;
@define-color overlay2-rgb rgb(148, 156, 187);
@define-color overlay1 #838ba7;
@define-color overlay1-rgb rgb(131, 139, 167);
@define-color overlay0 #737994;
@define-color overlay0-rgb rgb(115, 121, 148);
@define-color surface2 #626880;
@define-color surface2-rgb rgb(98, 104, 128);
@define-color surface1 #51576d;
@define-color surface1-rgb rgb(81, 87, 109);
@define-color surface0 #414559;
@define-color surface0-rgb rgb(65, 69, 89);
@define-color base #303446;
@define-color base-rgb rgb(48, 52, 70);
@define-color mantle #292c3c;
@define-color mantle-rgb rgb(41, 44, 60);
@define-color crust #232634;
@define-color crust-rgb rgb(35, 38, 52);
* {
font-family: 'FiraCode Nerd Font';
font-size: 16px;
}
/* Window */
window {
margin: 0px;
padding: 10px;
border: 0.16em solid @teal;
border-radius: 0.5em;
background-color: @base;
animation: slideIn 0.25s ease-in-out both;
}
/* Slide In */
@keyframes slideIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Inner Box */
#inner-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @base;
/*animation: fadeIn 0.5s ease-in-out both;*/
}
/* Fade In */
@keyframes fadeIn {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
/* Outer Box */
#outer-box {
margin: 5px;
padding: 10px;
border: none;
background-color: @base;
}
/* Scroll */
#scroll {
margin: 0px;
padding: 10px;
border: none;
background-color: @base;
}
/* Input */
#input {
margin: 5px 20px;
padding: 10px;
border: none;
border-radius: 0.25em;
color: @text;
background-color: @base;
animation: fadeIn 0.25s ease-in-out both;
}
#input image {
border: none;
color: @red;
}
#input * {
outline: 4px solid @red!important;
}
/* Text */
#text {
margin: 5px;
border: none;
color: @text;
animation: fadeIn 0.5s ease-in-out both;
}
#entry {
background-color: @base;
}
#entry arrow {
border: none;
color: @teal;
}
/* Selected Entry */
#entry:selected {
border: 0.10em solid @teal;
border-radius: 0.25em;
}
#entry:selected #text {
color: @teal;
}
#entry:drop(active) {
background-color: @lavender!important;
}
'';
};
}