migrate from github
33
Orzhov/openbox-3/themerc
Normal file
|
@ -0,0 +1,33 @@
|
|||
# Glory to the Orzhov Guild
|
||||
|
||||
## Global
|
||||
|
||||
border.width: 1
|
||||
padding.width: 1
|
||||
menu.overlap: -6
|
||||
|
||||
|
||||
## Window
|
||||
|
||||
border.width: 2
|
||||
window.active.border.color: #AC966D
|
||||
window.inactive.border.color: #bebcae
|
||||
|
||||
|
||||
## Menu
|
||||
|
||||
menu.border.width: 1
|
||||
|
||||
menu.title.bg: flat
|
||||
menu.title.bg.color: #4A5152
|
||||
menu.title.text.color: #BEBCAE80
|
||||
menu.title.text.justify: left
|
||||
|
||||
menu.items.bg: flat
|
||||
menu.items.bg.color: #F7F6F3
|
||||
menu.items.text.color: #4A5152
|
||||
|
||||
|
||||
menu.items.active.bg: flat
|
||||
menu.items.active.bg.color: #4A5152
|
||||
menu.items.active.text.color: #F7F6F3
|
18
README.md
Normal file
|
@ -0,0 +1,18 @@
|
|||
# dotfiles
|
||||
|
||||
![](desktop.png)
|
||||
I use NixOS so in the nixos file you will find the 'modular' (I wish) config I daily drive, and in the .config you will find whatever isn't declarable in NixOS 23.11.
|
||||
|
||||
Included are also the wallpapers I use. I ~~stole~~ found them online on different websites
|
||||
|
||||
## Components
|
||||
|
||||
- OS: NixOS
|
||||
- Wayland Compositor: Labwc
|
||||
- Launcher: bemenu
|
||||
- Bar: Waybar
|
||||
- Notifications: Mako
|
||||
- Terminal Emulator: Alacritty
|
||||
- Display Configuration: Kanshi
|
||||
- Text Editor: Helix
|
||||
- Shell: Zsh with Powerlevel10k prompt
|
159
configuration.nix
Normal file
|
@ -0,0 +1,159 @@
|
|||
# Edit this configuration file to define what should be installed on
|
||||
# your system. Help is available in the configuration.nix(5) man page
|
||||
# and in the NixOS manual (accessible by running ‘nixos-help’).
|
||||
|
||||
{ config, lib, pkgs, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ # Include the results of the hardware scan.
|
||||
./hardware-configuration.nix
|
||||
|
||||
# Custom modules
|
||||
./system/boot.nix
|
||||
./system/hardware.nix
|
||||
./system/network.nix
|
||||
./system/programs.nix
|
||||
./system/services.nix
|
||||
./system/systemd.nix
|
||||
./system/labwc.nix
|
||||
./system/xfce.nix
|
||||
];
|
||||
|
||||
security = {
|
||||
polkit.enable = true;
|
||||
rtkit.enable = true;
|
||||
};
|
||||
|
||||
# Set your time zone.
|
||||
time.timeZone = "Europe/Rome";
|
||||
|
||||
# Select internationalisation properties.
|
||||
i18n = {
|
||||
defaultLocale = "en_US.UTF-8";
|
||||
|
||||
extraLocaleSettings = {
|
||||
LC_ADDRESS = "el_GR.UTF-8";
|
||||
LC_IDENTIFICATION = "el_GR.UTF-8";
|
||||
LC_MEASUREMENT = "el_GR.UTF-8";
|
||||
LC_MONETARY = "el_GR.UTF-8";
|
||||
LC_NAME = "el_GR.UTF-8";
|
||||
LC_NUMERIC = "el_GR.UTF-8";
|
||||
LC_PAPER = "el_GR.UTF-8";
|
||||
LC_TELEPHONE = "el_GR.UTF-8";
|
||||
LC_TIME = "el_GR.UTF-8";
|
||||
};
|
||||
};
|
||||
|
||||
users = {
|
||||
defaultUserShell = pkgs.zsh;
|
||||
|
||||
# Define a user account. Don't forget to set a password with ‘passwd’.
|
||||
users.aethrvmn = {
|
||||
isNormalUser = true;
|
||||
description = "Vasilis";
|
||||
password = "gang";
|
||||
extraGroups = [ "networkmanager" "wheel" ];
|
||||
};
|
||||
};
|
||||
|
||||
home-manager = {
|
||||
useGlobalPkgs = true;
|
||||
useUserPackages = true;
|
||||
users.aethrvmn = import ./vasilis.nix;
|
||||
};
|
||||
|
||||
# Flakes setup
|
||||
nix.settings.experimental-features = [ "nix-command" "flakes" ];
|
||||
# Allow unfree packages
|
||||
nixpkgs.config.allowUnfree = true;
|
||||
|
||||
# Garbage collection
|
||||
nix.gc = {
|
||||
automatic = true;
|
||||
options = "--delete-older-than 7d";
|
||||
dates = "weekly";
|
||||
};
|
||||
|
||||
# List packages installed in system profile. To search, run:
|
||||
# $ nix search wget
|
||||
environment.systemPackages = with pkgs; [
|
||||
alacritty
|
||||
alsa-utils
|
||||
# bash
|
||||
bat
|
||||
brightnessctl
|
||||
cava
|
||||
# devenv
|
||||
# dotnetCorePackages.sdk_9_0
|
||||
# eza
|
||||
gcc
|
||||
glib
|
||||
glibc
|
||||
# greetd.tuigreet
|
||||
# gobject-introspection
|
||||
# helix
|
||||
# hugo
|
||||
# jitsi
|
||||
# localsend
|
||||
nim
|
||||
nimble
|
||||
# obs-studio
|
||||
# pavucontrol
|
||||
playerctl
|
||||
poetry
|
||||
python311Full
|
||||
python311Packages.stdenv
|
||||
# python311Packages.tkinter
|
||||
# python311Packages.pygobject3
|
||||
# qbittorrent
|
||||
# stdenv.cc.cc.lib
|
||||
# slurp
|
||||
# spotify
|
||||
# thunderbird
|
||||
# tk
|
||||
udisks
|
||||
linuxPackages.v4l2loopback
|
||||
usbutils
|
||||
v4l-utils
|
||||
ventoy
|
||||
wget
|
||||
wineWowPackages.waylandFull
|
||||
xarchiver
|
||||
zlib
|
||||
];
|
||||
|
||||
# Fonts
|
||||
fonts.packages = with pkgs; [
|
||||
corefonts
|
||||
dejavu_fonts
|
||||
font-awesome
|
||||
liberation_ttf
|
||||
meslo-lgs-nf
|
||||
noto-fonts
|
||||
noto-fonts-cjk
|
||||
noto-fonts-emoji
|
||||
vistafonts
|
||||
];
|
||||
|
||||
# Env settings
|
||||
environment.sessionVariables = {
|
||||
DOTNET_ROOT = "${pkgs.dotnet-sdk}";
|
||||
NIXOS_OZONE_WL = "1";
|
||||
};
|
||||
|
||||
qt = {
|
||||
enable = true;
|
||||
platformTheme = "gnome";
|
||||
style = "adwaita-dark";
|
||||
};
|
||||
|
||||
# This value determines the NixOS release from which the default
|
||||
# settings for stateful data, like file locations and database versions
|
||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
||||
# this value at the release version of the first install of this system.
|
||||
# Before changing this value read the documentation for this option
|
||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
||||
system.stateVersion = "23.11"; # Did you read the comment?
|
||||
|
||||
}
|
BIN
desktop.png
Normal file
After Width: | Height: | Size: 2.1 MiB |
48
flake.lock
Normal file
|
@ -0,0 +1,48 @@
|
|||
{
|
||||
"nodes": {
|
||||
"home-manager": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1721534365,
|
||||
"narHash": "sha256-XpZOkaSJKdOsz1wU6JfO59Rx2fqtcarQ0y6ndIOKNpI=",
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"rev": "635563f245309ef5320f80c7ebcb89b2398d2949",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-community",
|
||||
"repo": "home-manager",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1721379653,
|
||||
"narHash": "sha256-8MUgifkJ7lkZs3u99UDZMB4kbOxvMEXQZ31FO3SopZ0=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "1d9c2c9b3e71b9ee663d11c5d298727dace8d374",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"home-manager": "home-manager",
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
28
flake.nix
Normal file
|
@ -0,0 +1,28 @@
|
|||
{
|
||||
description = "A very basic flake";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
|
||||
home-manager.url = "github:nix-community/home-manager";
|
||||
home-manager.inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
outputs = { nixpkgs, home-manager, ... } @ inputs:
|
||||
# let
|
||||
# pkgs = nixpkgs.legacyPackages.x86_64-linux;
|
||||
# in
|
||||
{
|
||||
nixosConfigurations.valanixos = nixpkgs.lib.nixosSystem {
|
||||
specialArgs = { inherit inputs; };
|
||||
modules = [
|
||||
./configuration.nix
|
||||
home-manager.nixosModules.home-manager
|
||||
{
|
||||
home-manager.useGlobalPkgs = true;
|
||||
home-manager.useUserPackages = true;
|
||||
home-manager.users.aethrvmn = import ./vasilis.nix;
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
39
hardware-configuration.nix
Normal file
|
@ -0,0 +1,39 @@
|
|||
# Do not modify this file! It was generated by ‘nixos-generate-config’
|
||||
# and may be overwritten by future invocations. Please make changes
|
||||
# to /etc/nixos/configuration.nix instead.
|
||||
{ config, lib, pkgs, modulesPath, ... }:
|
||||
|
||||
{
|
||||
imports =
|
||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
||||
];
|
||||
|
||||
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ];
|
||||
boot.initrd.kernelModules = [ ];
|
||||
boot.kernelModules = [ "kvm-amd" ];
|
||||
boot.extraModulePackages = [ ];
|
||||
|
||||
fileSystems."/" =
|
||||
{ device = "/dev/disk/by-uuid/4f28915c-4f09-40d8-9c83-cd141be42049";
|
||||
fsType = "ext4";
|
||||
};
|
||||
|
||||
fileSystems."/boot" =
|
||||
{ device = "/dev/disk/by-uuid/ABDA-E71D";
|
||||
fsType = "vfat";
|
||||
};
|
||||
|
||||
swapDevices =
|
||||
[ { device = "/dev/disk/by-uuid/dbb604f4-ece2-404e-8aa8-936124e1aa08"; }
|
||||
];
|
||||
|
||||
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking
|
||||
# (the default) this is the recommended approach. When using systemd-networkd it's
|
||||
# still possible to use this option, but it's recommended to use it in conjunction
|
||||
# with explicit per-interface declarations with `networking.interfaces.<interface>.useDHCP`.
|
||||
networking.useDHCP = lib.mkDefault true;
|
||||
# networking.interfaces.wlp2s0.useDHCP = lib.mkDefault true;
|
||||
|
||||
nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux";
|
||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||
}
|
57
home-manager/alacritty.nix
Normal file
|
@ -0,0 +1,57 @@
|
|||
{ config, ... }:
|
||||
|
||||
{
|
||||
|
||||
programs.alacritty = {
|
||||
enable = true;
|
||||
settings = {
|
||||
|
||||
window = {
|
||||
padding.x = 10;
|
||||
padding.y = 10;
|
||||
# decorations = "None";
|
||||
# opacity = 0.95; #Until blur is an option
|
||||
blur = true;
|
||||
dimensions.columns = 80;
|
||||
dimensions.lines = 24;
|
||||
};
|
||||
|
||||
font = {
|
||||
size = 12;
|
||||
|
||||
normal.family = "MesloLGS NF";
|
||||
};
|
||||
|
||||
cursor.style = "Underline";
|
||||
|
||||
colors = {
|
||||
primary = {
|
||||
background = "#2D2A2E";
|
||||
foreground = "#fff1f3";
|
||||
};
|
||||
|
||||
normal = {
|
||||
black = "#2c2525";
|
||||
red = "#fd6883";
|
||||
green = "#adda78";
|
||||
yellow = "#f9cc6c";
|
||||
blue = "#f38d70";
|
||||
magenta = "#a8a9eb";
|
||||
cyan = "#85dacc";
|
||||
white = "#fff1f3";
|
||||
};
|
||||
|
||||
bright = {
|
||||
black = "#72696a";
|
||||
red = "#fd6883";
|
||||
green = "#adda78";
|
||||
yellow = "#f9cc6c";
|
||||
blue = "#f38d70";
|
||||
magenta = "#a8a9eb";
|
||||
cyan = "#85dacc";
|
||||
white = "#fff1f3";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
9
home-manager/dots.nix
Normal file
|
@ -0,0 +1,9 @@
|
|||
{ config, ... }:
|
||||
|
||||
{
|
||||
# Raw config files for the programs that Nix doesn't support yet
|
||||
home.file.".config/labwc".source = ../labwc;
|
||||
|
||||
# This is a custom theme I'm working on for my system
|
||||
home.file.".themes/Orzhov".source = ../Orzhov;
|
||||
}
|
10
home-manager/git.nix
Normal file
|
@ -0,0 +1,10 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
programs.git = {
|
||||
enable = true;
|
||||
|
||||
# userName = "Vasilis Valatsos";
|
||||
# userEmail = "vasilvalat@gmail.com";
|
||||
};
|
||||
}
|
29
home-manager/gtk.nix
Normal file
|
@ -0,0 +1,29 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
dconf = {
|
||||
enable = true;
|
||||
settings = {
|
||||
"org/gnome/desktop/interface" = {
|
||||
color-scheme = "prefer-dark";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
gtk = {
|
||||
enable = true;
|
||||
|
||||
# theme = {
|
||||
# name = "adwaita-dark";
|
||||
# package = pkgs.gnome.gnome-themes-extra;
|
||||
# };
|
||||
|
||||
gtk3.extraConfig = {
|
||||
gtk-application-prefer-dark-theme = 1;
|
||||
};
|
||||
|
||||
gtk4.extraConfig = {
|
||||
gtk-application-prefer-dark-theme = 1;
|
||||
};
|
||||
};
|
||||
}
|
151
home-manager/helix.nix
Normal file
|
@ -0,0 +1,151 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
programs.helix = {
|
||||
enable = true;
|
||||
|
||||
defaultEditor = true;
|
||||
|
||||
settings = {
|
||||
theme = "monokai_transparent";
|
||||
|
||||
editor = {
|
||||
line-number = "relative";
|
||||
bufferline = "always";
|
||||
text-width = 200;
|
||||
|
||||
statusline = {
|
||||
left = ["mode" "spinner" "separator"];
|
||||
center = ["file-name" "read-only-indicator" "file-modification-indicator" "total-line-numbers"];
|
||||
right = ["separator" "diagnostics" "selections" "register" "position" "file-encoding"];
|
||||
};
|
||||
|
||||
file-picker.hidden = true;
|
||||
|
||||
indent-guides.render = true;
|
||||
|
||||
soft-wrap = {
|
||||
enable = true;
|
||||
max-wrap = 25;
|
||||
max-indent-retain = 20;
|
||||
wrap-at-text-width = true;
|
||||
};
|
||||
};
|
||||
|
||||
keys.normal = {
|
||||
up = "no_op";
|
||||
down = "no_op";
|
||||
left = "no_op";
|
||||
right = "no_op";
|
||||
home = "no_op";
|
||||
end = "no_op";
|
||||
};
|
||||
|
||||
keys.insert= {
|
||||
up = "no_op";
|
||||
down = "no_op";
|
||||
left = "no_op";
|
||||
right = "no_op";
|
||||
home = "no_op";
|
||||
end = "no_op";
|
||||
};
|
||||
};
|
||||
|
||||
themes = {
|
||||
"monokai_transparent" = {
|
||||
"inherits" = "monokai_pro";
|
||||
"ui.background" = { };
|
||||
};
|
||||
};
|
||||
|
||||
languages = with pkgs; {
|
||||
language-server = {
|
||||
|
||||
typescript-language-server = {
|
||||
command = "${nodePackages.typescript-language-server}/bin/typescript-language-server";
|
||||
config.documentFormatting = false;
|
||||
};
|
||||
|
||||
nil = {
|
||||
command = "${nil}/bin/nil";
|
||||
config.nil = {
|
||||
formatting.command = [ "${nixpkgs-fmt}/bin/nixpkgs-fmt" ];
|
||||
nix.flake.autoEvalInputs = true;
|
||||
};
|
||||
};
|
||||
|
||||
pylsp.command = "${python3Packages.python-lsp-server}/bin/pylsp";
|
||||
|
||||
ltex-ls.command = "${ltex-ls}/bin/ltex-ls";
|
||||
|
||||
r.command = "${R}/bin/R";
|
||||
|
||||
nimlangserver.command = "${nimlangserver}/bin/nimlangserver";
|
||||
};
|
||||
|
||||
language =
|
||||
let
|
||||
jsTsWebLanguageServers = [
|
||||
"typescript-language-server"
|
||||
];
|
||||
in [
|
||||
{
|
||||
name = "typescript";
|
||||
language-servers = jsTsWebLanguageServers;
|
||||
}
|
||||
|
||||
{
|
||||
name = "javascript";
|
||||
language-servers = jsTsWebLanguageServers;
|
||||
}
|
||||
|
||||
{
|
||||
name = "jsx";
|
||||
language-servers = jsTsWebLanguageServers;
|
||||
}
|
||||
|
||||
{
|
||||
name = "tsx";
|
||||
language-servers = jsTsWebLanguageServers;
|
||||
}
|
||||
|
||||
{
|
||||
name = "sql";
|
||||
formatter.command = "pg_format";
|
||||
}
|
||||
|
||||
{
|
||||
name = "json";
|
||||
language-servers = [
|
||||
{
|
||||
name = "vscode-json-language-server";
|
||||
except-features = [ "format" ];
|
||||
}
|
||||
"efm-lsp-prettier"
|
||||
];
|
||||
}
|
||||
|
||||
{
|
||||
name = "markdown";
|
||||
language-servers = [
|
||||
{
|
||||
name = "marksman";
|
||||
except-features = [ "format" ];
|
||||
}
|
||||
"ltex-ls"
|
||||
"efm-lsp-prettier"
|
||||
];
|
||||
}
|
||||
|
||||
{
|
||||
name = "xml";
|
||||
file-types = [ "xml" ];
|
||||
formatter = {
|
||||
command = "${pkgs.yq-go}/bin/yq";
|
||||
args = [ "--input-format" "xml" "--output-format" "xml" "--indent" "2" ];
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
}
|
55
home-manager/kanshi.nix
Normal file
|
@ -0,0 +1,55 @@
|
|||
{ config, ... }:
|
||||
|
||||
{
|
||||
services.kanshi = {
|
||||
enable = true;
|
||||
systemdTarget="";
|
||||
|
||||
settings = [
|
||||
{
|
||||
profile.name = "home_office";
|
||||
profile.outputs = [
|
||||
{
|
||||
criteria = "DP-1";
|
||||
position = "1080,550";
|
||||
mode = "1920x1080@120Hz";
|
||||
adaptiveSync = true;
|
||||
}
|
||||
{
|
||||
criteria = "DP-2";
|
||||
position = "0,0";
|
||||
mode = "1920x1080@120Hz";
|
||||
transform = "90";
|
||||
adaptiveSync = true;
|
||||
}
|
||||
{
|
||||
criteria = "HDMI-A-1";
|
||||
position = "3000,550";
|
||||
mode = "1920x1080@60Hz";
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
{
|
||||
profile.name = "laptop";
|
||||
profile.outputs = [
|
||||
{
|
||||
criteria = "eDP-1";
|
||||
mode = "1920x1080";
|
||||
transform = "normal";
|
||||
}
|
||||
];
|
||||
}
|
||||
# {
|
||||
# profile.name = "tablet";
|
||||
# profile.outputs = [
|
||||
# {
|
||||
# criteria = "eDP-1";
|
||||
# mode = "1920x1080";
|
||||
# transform = "180";
|
||||
# }
|
||||
# ];
|
||||
# }
|
||||
];
|
||||
};
|
||||
}
|
20
home-manager/mako.nix
Normal file
|
@ -0,0 +1,20 @@
|
|||
{ config, ... }:
|
||||
|
||||
{
|
||||
services.mako = {
|
||||
enable = true;
|
||||
|
||||
layer = "top";
|
||||
|
||||
output = "DP-1, eDP-1";
|
||||
|
||||
backgroundColor = "#4A5152";
|
||||
|
||||
borderSize = 2;
|
||||
borderColor = "#BEBCAE";
|
||||
|
||||
defaultTimeout = 5000;
|
||||
ignoreTimeout = true;
|
||||
|
||||
};
|
||||
}
|
126
home-manager/ohmyposh.nix
Normal file
|
@ -0,0 +1,126 @@
|
|||
{ config, ... } :
|
||||
|
||||
{
|
||||
programs.oh-my-posh = {
|
||||
enable = true;
|
||||
enableZshIntegration = true;
|
||||
settings = {
|
||||
"console_title_template" = "{{ .Shell }} in {{ .Folder }}";
|
||||
"final_space" = true;
|
||||
"version" = 2;
|
||||
"blocks" = [
|
||||
{
|
||||
"alignment" = "left";
|
||||
"newline" = true;
|
||||
"type" = "prompt";
|
||||
"segments" = [
|
||||
{
|
||||
"template" = "{{ .Icon }} ";
|
||||
"type" = "os";
|
||||
}
|
||||
{
|
||||
"background" = "transparent";
|
||||
"foreground" = "#bebcae";
|
||||
"style" = "plain";
|
||||
"template" = " {{ .Path }}";
|
||||
"type" = "path";
|
||||
"properties" = {
|
||||
"style" = "full";
|
||||
};
|
||||
}
|
||||
{
|
||||
"background" = "transparent";
|
||||
"foreground" = "white";
|
||||
"style" = "plain";
|
||||
"template" = " {{ if .UpstreamURL }}{{ url .UpstreamIcon .UpstreamURL }}{{ end }}{{ .HEAD }}{{ if .Working.Changed }} {{ .Working.String }}{{ end }}{{ if .Staging.Changed }} {{ .Staging.String }}{{ end }} ";
|
||||
"type" = "git";
|
||||
"properties" = {
|
||||
"branch_max_length" = 25;
|
||||
"fetch_status" = true;
|
||||
"fetch_upstream_icon" = true;
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
{
|
||||
"overflow" = "hidden";
|
||||
"type" = "rprompt";
|
||||
"segments" = [
|
||||
{
|
||||
"duration" = 0;
|
||||
"namelength" = 0;
|
||||
"text" = "";
|
||||
"background" = "transparent";
|
||||
"foreground" = "white";
|
||||
"style" = "plain";
|
||||
"template" = " ";
|
||||
"type" = "node";
|
||||
"properties" = {
|
||||
"display_mode" = "files";
|
||||
"fetch_package_manager" = false;
|
||||
"home_enabled" = false;
|
||||
};
|
||||
}
|
||||
{
|
||||
"duration" = 0;
|
||||
"namelength" = 0;
|
||||
"text" = "";
|
||||
"background" = "transparent";
|
||||
"foreground" = "white";
|
||||
"style" = "plain";
|
||||
"template" = " ";
|
||||
"type" = "go";
|
||||
"properties" = {
|
||||
"fetch_version" = false;
|
||||
};
|
||||
}
|
||||
{
|
||||
"background" = "transparent";
|
||||
"foreground" = "white";
|
||||
"style" = "plain";
|
||||
"template" = " {{ .Venv }}";
|
||||
"type" = "python";
|
||||
"properties" = {
|
||||
"display_mode" = "files";
|
||||
"fetch_version" = false;
|
||||
"fetch_virtual_env" = true;
|
||||
};
|
||||
}
|
||||
{
|
||||
"background" = "transparent";
|
||||
"foreground" = "red";
|
||||
"style" = "plain";
|
||||
"template" = "{{ if .Error }} ✗ {{ end }}";
|
||||
"type" = "status";
|
||||
}
|
||||
{
|
||||
"background" = "transparent";
|
||||
"foreground" = "#ac966d";
|
||||
"style" = "plain";
|
||||
"type" = "executiontime";
|
||||
}
|
||||
];
|
||||
}
|
||||
{
|
||||
"alignment" = "left";
|
||||
"newline" = true;
|
||||
"type" = "prompt";
|
||||
"segments" = [
|
||||
{
|
||||
"background" = "transparent";
|
||||
"foreground" = "#ac966d";
|
||||
"style" = "plain";
|
||||
"template" = "❯";
|
||||
"type" = "text";
|
||||
}
|
||||
];
|
||||
}
|
||||
];
|
||||
"transient_prompt" = {
|
||||
"background" = "transparent";
|
||||
"foreground" = "white";
|
||||
"template" = "❯ ";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
227
home-manager/waybar.nix
Normal file
|
@ -0,0 +1,227 @@
|
|||
{config, pkgs, ...}:
|
||||
|
||||
{
|
||||
programs.waybar = {
|
||||
enable = true;
|
||||
|
||||
settings = {
|
||||
mainBar = {
|
||||
# General settings
|
||||
reload_style_on_change = true;
|
||||
|
||||
output = [
|
||||
"HDMI-A-1"
|
||||
"DP-1"
|
||||
"eDP-1"
|
||||
];
|
||||
|
||||
layer = "bottom";
|
||||
position = "top";
|
||||
|
||||
spacing = 0;
|
||||
margin = "5";
|
||||
|
||||
# Modules definition
|
||||
|
||||
modules-left = [
|
||||
"custom/media"
|
||||
# "cava"
|
||||
"pulseaudio"
|
||||
];
|
||||
|
||||
modules-center = [
|
||||
"clock"
|
||||
"custom/weather"
|
||||
];
|
||||
|
||||
modules-right = [
|
||||
"network"
|
||||
"bluetooth"
|
||||
"battery"
|
||||
"tray"
|
||||
];
|
||||
|
||||
# Modules Configuration
|
||||
"battery" = {
|
||||
states = {
|
||||
warning = 30;
|
||||
critical = 15;
|
||||
};
|
||||
format = "{icon} {capacity}%";
|
||||
format-charging = " {capacity}%";
|
||||
format-icons = [ "" "" "" "" "" ];
|
||||
};
|
||||
|
||||
"bluetooth" = {
|
||||
format = "On ";
|
||||
format-off = "Off ";
|
||||
format-connected = "{device_alias} ";
|
||||
on-click = "alacritty -e bluetoothctl";
|
||||
on-click-right = "sh ~/.dotfiles/scripts/toggle_bluetooth";
|
||||
};
|
||||
|
||||
"cava" = {
|
||||
# cava_config = "$HOME/.config/cava/cava.conf";
|
||||
framerate = 30;
|
||||
autosens = 1;
|
||||
sensitivity = 100;
|
||||
bars = 14;
|
||||
lower_cutoff_freq = 50;
|
||||
higher_cutoff_freq = 10000;
|
||||
method = "pulse";
|
||||
source = "auto";
|
||||
stereo = true;
|
||||
reverse = false;
|
||||
bar_delimiter = 0;
|
||||
monstercat = false;
|
||||
waves = false;
|
||||
noise_reduction = 0.77;
|
||||
input_delay = 2;
|
||||
format-icons = ["▁" "▂" "▃" "▄" "▅" "▆" "▇" "█" ];
|
||||
actions = {
|
||||
on-click-right = "mode";
|
||||
};
|
||||
};
|
||||
|
||||
"clock" = {
|
||||
format = "{:%R %b %d}";
|
||||
timezone = "Europe/Athens";
|
||||
tooltip-format = "<tt>{calendar}</tt>";
|
||||
calendar = {
|
||||
mode = "year";
|
||||
mode-mon-col = 3;
|
||||
format = {
|
||||
months = "<span color='#ffead3'><b>{}</b></span>";
|
||||
days = "<span color='#ecc6d9'><b>{}</b></span>";
|
||||
weeks = "<span color='#99ffdd'><b>{}</b></span>";
|
||||
weekdays = "<span color='#ffcc66'><b>{}</b></span>";
|
||||
today = "<span color='#ff6699'><b><u>{}</u></b></span>";
|
||||
};
|
||||
};
|
||||
on-click = "thunderbird";
|
||||
};
|
||||
|
||||
"network" = {
|
||||
format-wifi = "{essid} 直";
|
||||
format-disconnected = "Disconnected 睊";
|
||||
format-disabled = "Off 睊";
|
||||
on-click = "alacritty -e nmtui";
|
||||
on-click-right = "~/.dotfiles/scripts/toggle_wifi";
|
||||
};
|
||||
|
||||
"pulseaudio" = {
|
||||
format = "{volume}% {icon}";
|
||||
format-bluetooth = "{volume}% {icon} ";
|
||||
format-muted = "婢";
|
||||
format-icons = ["奔" "墳"];
|
||||
scroll-step = 1;
|
||||
on-click = "amixer sset Master toggle";
|
||||
on-click-right = "pavucontrol";
|
||||
};
|
||||
|
||||
"tray" = {
|
||||
icon-size = 18;
|
||||
spacing = 10;
|
||||
show-passive-items = true;
|
||||
};
|
||||
|
||||
|
||||
# Custom Modules
|
||||
"custom/media" = {
|
||||
return-type = "json";
|
||||
exec = "waybar-mpris --autofocus --order 'SYMBOL:ARTIST:TITLE'";
|
||||
on-click = "waybar-mpris --send toggle";
|
||||
escape = true;
|
||||
};
|
||||
|
||||
"custom/weather" = {
|
||||
exec = "sh $HOME/.dotfiles/scripts/wittr.sh";
|
||||
return-type = "json";
|
||||
format = "{}";
|
||||
spacing = 10;
|
||||
tooltip = true;
|
||||
interval = 900;
|
||||
};
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
style =
|
||||
''
|
||||
# General settings
|
||||
* {
|
||||
font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif;
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
window#waybar {
|
||||
background: rgba(190, 188, 174,0.5);
|
||||
color: #e9f3f0;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
#battery,
|
||||
#bluetooth,
|
||||
#cava,
|
||||
#clock,
|
||||
#pulseaudio,
|
||||
#tray,
|
||||
#network,
|
||||
#custom-media,
|
||||
#custom-weather {
|
||||
background-color: #4A5152;
|
||||
padding-top: 1px;
|
||||
padding-bottom: 1px;
|
||||
}
|
||||
|
||||
#battery {
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
margin-right: 1px;
|
||||
padding-right: 5px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
#clock {
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
margin-right:1px;
|
||||
padding-left: 10px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
#bluetooth,
|
||||
#network {
|
||||
border-radius: 10px;
|
||||
margin-right: 10px;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
#pulseaudio {
|
||||
border-radius: 0px 10px 10px 0px;
|
||||
min-width: 10px;
|
||||
margin-left: 1px;
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
#tray {
|
||||
border-radius: 0px 10px 10px 0px;
|
||||
min-width: 10px;
|
||||
padding-right: 10px;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
#custom-media{
|
||||
border-radius: 10px 0px 0px 10px;
|
||||
padding-left: 10px;
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
#custom-weather {
|
||||
border-radius: 0px 10px 10px 0px;
|
||||
padding-right: 10px;
|
||||
padding-left: 5px;
|
||||
}
|
||||
'';
|
||||
};
|
||||
}
|
48
home-manager/zsh.nix
Normal file
|
@ -0,0 +1,48 @@
|
|||
{ config, pkgs, lib, ... }:
|
||||
|
||||
{
|
||||
programs.zsh = {
|
||||
enable = true;
|
||||
|
||||
autocd = true;
|
||||
autosuggestion.enable = true;
|
||||
enableCompletion = true;
|
||||
syntaxHighlighting.enable = true;
|
||||
|
||||
# dirHashes = {
|
||||
# docs = "~/Documents"
|
||||
# ...
|
||||
# }
|
||||
|
||||
shellAliases = {
|
||||
|
||||
# Nix specific
|
||||
nix-update = "sudo nixos-rebuild switch --flake ~/.dotfiles#valanixos";
|
||||
nix-config = "hx ~/.dotfiles";
|
||||
|
||||
# Aliases for color options
|
||||
ls = "eza --icons=always --color=always";
|
||||
ll = "eza -a --color=always --long -tree --icons=always --no-time --no-user";
|
||||
cat = "bat";
|
||||
grep = "grep --color=auto";
|
||||
egrep = "egrep --color=auto";
|
||||
fgrep = "fgrep --color=auto";
|
||||
|
||||
# Misc
|
||||
# .. = "cd ..";
|
||||
mv = "mv -i";
|
||||
cp = "cp -i";
|
||||
rm = "rm -i";
|
||||
};
|
||||
|
||||
|
||||
initExtra = ''
|
||||
eval "$(oh-my-posh init zsh --config /home/aethrvmn/.config/ohmyposh/config.json)"
|
||||
eval "$(atuin init zsh)"
|
||||
eval "$(ssh-agent -s)"
|
||||
clear
|
||||
'';
|
||||
|
||||
};
|
||||
|
||||
}
|
32
labwc/autostart
Normal file
|
@ -0,0 +1,32 @@
|
|||
# Configure output directives such as mode, position, scale and transform using kanshi.
|
||||
kanshi >/dev/null 2>&1 &
|
||||
|
||||
# Use xrandr for x-wayland
|
||||
xrandr --output DP-1 --primary &
|
||||
|
||||
# Set background image.
|
||||
swww-daemon &
|
||||
|
||||
# Launch a panel such as yambar or waybar.
|
||||
waybar >/dev/null 2>&1 &
|
||||
|
||||
# Enable notifications. Typically GNOME/KDE application notifications go
|
||||
# through the org.freedesktop.Notifications D-Bus API and require a client such
|
||||
# as mako to function correctly. Thunderbird is an example of this.
|
||||
mako >/dev/null 2>&1 &
|
||||
|
||||
# Start the Thunar daemon for better startup
|
||||
thunar --daemon &
|
||||
|
||||
## Set dark theme
|
||||
sh ~/.themes/orzhovtheme.sh &
|
||||
|
||||
|
||||
# Deploy swww wallpapers
|
||||
swww img -o HDMI-A-1 ~/.dotfiles/wallpapers/hobbits.jpg &
|
||||
swww img -o DP-1 ~/.dotfiles/wallpapers/statues.jpg &
|
||||
swww img -o DP-2 ~/.dotfiles/wallpapers/bluemana.png &
|
||||
swww img -o eDP-1 ~/.dotfiles/wallpapers/tree.jpg &
|
||||
|
||||
# Custom software
|
||||
spotify &
|
36
labwc/environment
Executable file
|
@ -0,0 +1,36 @@
|
|||
## Uncomment lines starting with one '#' to suit your needs.
|
||||
|
||||
## Use the XKB_DEFAULT_LAYOUT variable to set the keyboard layout. For example
|
||||
## to start with Swedish keyboard layout set it to 'se'. If you are unsure what
|
||||
## your country code is, refer to the layout section of:
|
||||
## /usr/share/X11/xkb/rules/evdev.lst
|
||||
##
|
||||
## Multiple keyboard layouts can be set by comma-separating the country codes.
|
||||
## If multiple layouts are used, specify the toggle-keybind using
|
||||
## XKB_DEFAULT_OPTIONS as show below.
|
||||
##
|
||||
## For further details, see xkeyboard-config(7)
|
||||
|
||||
|
||||
XKB_DEFAULT_LAYOUT=us,gr
|
||||
XKB_DEFAULT_OPTIONS=grp:alt_shift_toggle
|
||||
|
||||
## Force firefox to use wayland backend.
|
||||
|
||||
MOZ_ENABLE_WAYLAND=1
|
||||
|
||||
## Set cursor theme and size. Find system icons themes with:
|
||||
## `find /usr/share/icons/ -type d -name "cursors"`
|
||||
|
||||
XCURSOR_THEME=breeze_cursors
|
||||
XCURSOR_SIZE=24
|
||||
|
||||
|
||||
## BEMENU stuff
|
||||
BEMENU_OPTS= -n -i --tb "#2D2A2E" --tf "#AC9C6D" --fb "#2D2A2E" --nb "#2D2A2E" --ab "#2D2A2E" --hb "#2D2A2E" --hf "#AC9C6D" --line-height 30 "$@" --center --wrap --ignorecase --prompt '>' --list 12 --no-overlap --width-factor 0.5 --fn 'MesloLGS NF'
|
||||
|
||||
|
||||
BEMENU_BACKEND=wayland
|
||||
|
||||
XCURSOR_THEME=Breeze
|
||||
XCURSOR_SIZE=24
|
106
labwc/menu.xml
Executable file
|
@ -0,0 +1,106 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<openbox_menu>
|
||||
<menu label="root-menu" id="root-menu">
|
||||
<item label="Firefox" icon="firefox">
|
||||
<action name="Execute"><command>firefox --name firefox</command></action>
|
||||
</item>
|
||||
<item label="Telegram Desktop" icon="telegram">
|
||||
<action name="Execute"><command>telegram-desktop --</command></action>
|
||||
</item>
|
||||
<item label="Thunderbird" icon="thunderbird">
|
||||
<action name="Execute"><command>thunderbird --name thunderbird</command></action>
|
||||
</item>
|
||||
<item label="File Manager" icon="org.xfce.thunar">
|
||||
<action name="Execute"><command>thunar</command></action>
|
||||
</item>
|
||||
<separator/>
|
||||
<menu id="Miscellaneous" label="Miscellaneous">
|
||||
<item label="LocalSend" icon="localsend">
|
||||
<action name="Execute"><command>/nix/store/dhyhij4g2mzrs4bkmhx12gzj9d0lgv6l-localsend-1.15.0/bin/localsend_app</command></action>
|
||||
</item>
|
||||
<item label="Czkawka" icon="com.github.qarmin.czkawka">
|
||||
<action name="Execute"><command>czkawka_gui</command></action>
|
||||
</item>
|
||||
</menu> <!-- Accessories -->
|
||||
<separator/>
|
||||
<menu id="Development" label="Development">
|
||||
<item label="btop++" icon="btop">
|
||||
<action name="Execute"><command>alacritty -e btop</command></action>
|
||||
</item>
|
||||
<item label="Helix" icon="helix">
|
||||
<action name="Execute"><command>alacritty -e helix</command></action>
|
||||
</item>
|
||||
<item label="Godot 4" icon="godot">
|
||||
<action name="Execute"><command>/nix/store/a8w8z8xidwirlshcyxxldmxx1lskcqp7-godot4-4.2.2-stable/bin/godot4</command></action>
|
||||
</item>
|
||||
</menu>
|
||||
<separator/>
|
||||
<menu id="Games" label="Games">
|
||||
<item label="Lutris" icon="lutris">
|
||||
<action name="Execute"><command>lutris</command></action>
|
||||
</item>
|
||||
<item label="Steam" icon="steam">
|
||||
<action name="Execute"><command>steam</command></action>
|
||||
</item>
|
||||
</menu> <!-- Games -->
|
||||
<separator/>
|
||||
<!-- <item label="Tablet Mode"> -->
|
||||
<!-- <action name="Execute"><command>kanshictl switch tablet</command></action> -->
|
||||
<!-- </item> -->
|
||||
<!-- <item label="Laptop Mode"> -->
|
||||
<!-- <action name="Execute"><command>kanshictl switch laptop</command></action> -->
|
||||
<!-- </item> -->
|
||||
<!-- <separator/> -->
|
||||
<menu id="System" label="System">
|
||||
<item label="Screenshot" icon="org.xfce.screenshooter">
|
||||
<action name="Execute"><command>sh -c 'grim -g "$(slurp)" - | swappy -f -'</command></action>
|
||||
</item>
|
||||
<item label="Network Configuration" icon="preferences-system-network">
|
||||
<action name="Execute"><command>nm-connection-editor</command></action>
|
||||
</item>
|
||||
<item label="File Manager Settings" icon="org.xfce.thunar">
|
||||
<action name="Execute"><command>thunar-settings</command></action>
|
||||
</item>
|
||||
<item label="labwc-tweaks" icon="labwc_tweaks">
|
||||
<action name="Execute"><command>labwc-tweaks</command></action>
|
||||
</item>
|
||||
<item label="PulseAudio Volume Control" icon="multimedia-volume-control">
|
||||
<action name="Execute"><command>pavucontrol</command></action>
|
||||
</item>
|
||||
<item label="Removable Drives and Media" icon="org.xfce.volman">
|
||||
<action name="Execute"><command>thunar-volman-settings</command></action>
|
||||
</item>
|
||||
</menu> <!-- System -->
|
||||
<menu label="System Settings" id="System Settings">
|
||||
<item label="Reconfigure">
|
||||
<action name="Reconfigure"></action>
|
||||
</item>
|
||||
<item label="Logout">
|
||||
<action name="Exit"></action>
|
||||
</item>
|
||||
<item label="Reboot">
|
||||
<action name="Execute" command="systemctl reboot"></action>
|
||||
</item>
|
||||
<item label="Shutdown">
|
||||
<action name="Execute" command="systemctl poweroff"></action>
|
||||
</item>
|
||||
</menu>
|
||||
</menu> <!-- root-menu -->
|
||||
|
||||
|
||||
|
||||
<menu label="sys-menu" id="sys-menu">
|
||||
<item label="Reconfigure">
|
||||
<action name="Reconfigure"></action>
|
||||
</item>
|
||||
<item label="Logout">
|
||||
<action name="Exit"></action>
|
||||
</item>
|
||||
<item label="Reboot">
|
||||
<action name="Execute" command="systemctl reboot"></action>
|
||||
</item>
|
||||
<item label="Shutdown">
|
||||
<action name="Execute" command="systemctl poweroff"></action>
|
||||
</item>
|
||||
</menu>
|
||||
</openbox_menu>
|
402
labwc/rc.xml
Executable file
|
@ -0,0 +1,402 @@
|
|||
<?xml version="1.0"?>
|
||||
<!--
|
||||
This file contains all supported config elements & attributes with
|
||||
default values.
|
||||
-->
|
||||
<labwc_config>
|
||||
<core>
|
||||
<decoration>server</decoration>
|
||||
<gap>0</gap>
|
||||
<adaptiveSync>no</adaptiveSync>
|
||||
<reuseOutputMode>no</reuseOutputMode>
|
||||
</core><!-- <font><theme> can be defined without an attribute to set all places -->
|
||||
<theme>
|
||||
<name>Orzhov</name>
|
||||
<cornerRadius>0</cornerRadius>
|
||||
<keepBorder>yes</keepBorder>
|
||||
<font>
|
||||
<name>MesloLGS NF</name>
|
||||
<size>10</size>
|
||||
<slant>normal</slant>
|
||||
<weight>normal</weight>
|
||||
</font>
|
||||
</theme><!--
|
||||
Just as for window-rules, 'identifier' relates to app_id for native Wayland
|
||||
windows and WM_CLASS for XWayland clients.
|
||||
-->
|
||||
<windowSwitcher show="yes" preview="yes" outlines="yes">
|
||||
<fields>
|
||||
<field content="type" width="25%"></field>
|
||||
<field content="identifier" width="25%"></field>
|
||||
<field content="title" width="50%"></field>
|
||||
</fields>
|
||||
</windowSwitcher><!-- edge strength is in pixels -->
|
||||
<resistance>
|
||||
<screenEdgeStrength>20</screenEdgeStrength>
|
||||
</resistance><!-- Show a simple resize and move indicator -->
|
||||
<resize popupShow="Never"></resize>
|
||||
<focus>
|
||||
<followMouse>yes</followMouse>
|
||||
<followMouseRequiresMovement>yes</followMouseRequiresMovement>
|
||||
<raiseOnFocus>no</raiseOnFocus>
|
||||
</focus><!-- Set range to 0 to disable window snapping completely -->
|
||||
<snapping>
|
||||
<range>1</range>
|
||||
<topMaximize>yes</topMaximize>
|
||||
</snapping><!-- Workspaces can be configured like this: -->
|
||||
<desktops>
|
||||
<popupTime>1000</popupTime>
|
||||
<names>
|
||||
<name>Workspace 1</name>
|
||||
<name>Workspace 2</name>
|
||||
<name>Workspace 3</name>
|
||||
<name>Workspace 4</name>
|
||||
</names>
|
||||
</desktops>
|
||||
<regions>
|
||||
<region name="top-left" x="0%" y="0%" height="50%" width="50%"></region>
|
||||
<region name="top" x="0%" y="0%" height="50%" width="100%"></region>
|
||||
<region name="top-right" x="50%" y="0%" height="50%" width="50%"></region>
|
||||
<region name="left" x="0%" y="0%" height="100%" width="50%"></region>
|
||||
<region name="center" x="10%" y="10%" height="80%" width="80%"></region>
|
||||
<region name="right" x="50%" y="0%" height="100%" width="50%"></region>
|
||||
<region name="bottom-left" x="0%" y="50%" height="50%" width="50%"></region>
|
||||
<region name="bottom" x="0%" y="50%" height="50%" width="100%"></region>
|
||||
<region name="bottom-right" x="50%" y="50%" height="50%" width="50%"></region>
|
||||
</regions><!--
|
||||
Keybind actions are specified in labwc-actions(5)
|
||||
The following keybind modifiers are supported:
|
||||
W - window/super/logo
|
||||
A - alt
|
||||
C - ctrl
|
||||
S - shift
|
||||
|
||||
Use <keyboard><default /> to load all the default keybinds (those listed
|
||||
below). If the default keybinds are largely what you want, a sensible
|
||||
approach could be to start the <keyboard> section with a <default />
|
||||
element, and then (re-)define any special binds you need such as launching
|
||||
your favourite terminal or application launcher. See rc.xml for an example.
|
||||
-->
|
||||
<keyboard>
|
||||
<numlock>on</numlock>
|
||||
<repeatRate>25</repeatRate>
|
||||
<repeatDelay>600</repeatDelay>
|
||||
<keybind key="W-r">
|
||||
<action name="Reconfigure"></action>
|
||||
</keybind>
|
||||
<keybind key="Print">
|
||||
<action name="Execute">
|
||||
<command>sh -c 'grim -g "$(slurp)" - | swappy -f -'</command>
|
||||
</action>
|
||||
</keybind>
|
||||
<keybind key="A-Tab">
|
||||
<action name="NextWindow"></action>
|
||||
</keybind>
|
||||
<keybind key="W-Return">
|
||||
<action name="Execute" command="alacritty"></action>
|
||||
</keybind>
|
||||
<keybind key="W-w">
|
||||
<action name="Execute" command="firefox"></action>
|
||||
</keybind>
|
||||
<keybind key="W-S-w">
|
||||
<action name="Execute" command="firefox --private-window"></action>
|
||||
</keybind>
|
||||
<keybind key="W-space">
|
||||
<action name="Execute" command="j4-dmenu-desktop --dmenu=bemenu"></action>
|
||||
</keybind>
|
||||
<keybind key="W-s">
|
||||
<action name="Execute" command="spotify"></action>
|
||||
</keybind>
|
||||
<keybind key="W-f">
|
||||
<action name="Execute" command="thunar"></action>
|
||||
</keybind>
|
||||
<keybind key="W-m">
|
||||
<action name="Execute" command="thunderbird"></action>
|
||||
</keybind>
|
||||
<keybind key="W-c">
|
||||
<action name="Close"></action>
|
||||
</keybind>
|
||||
<keybind key="W-1">
|
||||
<action name="GoToDesktop" to="1"></action>
|
||||
<action name="Execute" command="bash -c 'echo 1 > /tmp/workspace'"></action>
|
||||
</keybind>
|
||||
<keybind key="W-2">
|
||||
<action name="GoToDesktop" to="2"></action>
|
||||
<action name="Execute" command="bash -c 'echo 2 > /tmp/workspace'"></action>
|
||||
</keybind>
|
||||
<keybind key="W-3">
|
||||
<action name="GoToDesktop" to="3"></action>
|
||||
<action name="Execute" command="bash -c 'echo 3 > /tmp/workspace'"></action>
|
||||
</keybind>
|
||||
<keybind key="W-4">
|
||||
<action name="GoToDesktop" to="4"></action>
|
||||
<action name="Execute" command="bash -c 'echo 4 > /tmp/workspace'"></action>
|
||||
</keybind>
|
||||
<keybind key="W-S-1">
|
||||
<action name="SendToDesktop" to="1"></action>
|
||||
<action name="Execute" command="bash -c 'echo 1 > /tmp/workspace'"></action>
|
||||
</keybind>
|
||||
<keybind key="W-S-2">
|
||||
<action name="SendToDesktop" to="2"></action>
|
||||
<action name="Execute" command="bash -c 'echo 2 > /tmp/workspace'"></action>
|
||||
</keybind>
|
||||
<keybind key="W-S-3">
|
||||
<action name="SendToDesktop" to="3"></action>
|
||||
<action name="Execute" command="bash -c 'echo 3 > /tmp/workspace'"></action>
|
||||
</keybind>
|
||||
<keybind key="W-S-4">
|
||||
<action name="SendToDesktop" to="4"></action>
|
||||
<action name="Execute" command="bash -c 'echo 4 > /tmp/workspace'"></action>
|
||||
</keybind>
|
||||
<keybind key="W-S-Left">
|
||||
<action name="GoToDesktop" to="left"></action>
|
||||
<action name="Execute" command="bash -c 'echo left > /tmp/workspace'"></action>
|
||||
</keybind>
|
||||
<keybind key="W-S-Right">
|
||||
<action name="GoToDesktop" to="right"></action>
|
||||
<action name="Execute" command="bash -c 'echo right > /tmp/workspace'"></action>
|
||||
</keybind>
|
||||
<keybind key="W-C-S-Right">
|
||||
<action name="SendToDesktop" to="right"></action>
|
||||
<action name="Execute" command="bash -c 'echo right > /tmp/workspace'"></action>
|
||||
</keybind>
|
||||
<keybind key="W-C-S-Left">
|
||||
<action name="SendToDesktop" to="left"></action>
|
||||
<action name="Execute" command="bash -c 'echo left > /tmp/workspace'"></action>
|
||||
</keybind>
|
||||
<keybind key="W-Left">
|
||||
<action name="SnapToEdge" direction="left"></action>
|
||||
<action name="Focus"></action>
|
||||
<action name="Raise"></action>
|
||||
</keybind>
|
||||
<keybind key="W-Right">
|
||||
<action name="SnapToEdge" direction="right"></action>
|
||||
<action name="Focus"></action>
|
||||
<action name="Raise"></action>
|
||||
</keybind>
|
||||
<keybind key="W-Up">
|
||||
<action name="ToggleMaximize"></action>
|
||||
<action name="Focus"></action>
|
||||
<action name="Raise"></action>
|
||||
</keybind>
|
||||
<keybind key="W-Down">
|
||||
<action name="SnapToRegion" region="center"></action>
|
||||
<action name="Focus"></action>
|
||||
<action name="Raise"></action>
|
||||
</keybind>
|
||||
<keybind key="W-A-C-Right">
|
||||
<action name="SnapToRegion" region="top-right"></action>
|
||||
</keybind>
|
||||
<keybind key="W-A-Right">
|
||||
<action name="SnapToRegion" region="bottom-right"></action>
|
||||
</keybind>
|
||||
<keybind key="W-A-C-Left">
|
||||
<action name="SnapToRegion" region="top-left"></action>
|
||||
</keybind>
|
||||
<keybind key="W-A-Left">
|
||||
<action name="SnapToRegion" region="bottom-left"></action>
|
||||
</keybind>
|
||||
<keybind key="A-Space">
|
||||
<action name="ShowMenu" menu="client-menu"></action>
|
||||
</keybind>
|
||||
<keybind key="XF86_AudioLowerVolume">
|
||||
<action name="Execute" command="amixer sset Master 5%-"></action>
|
||||
</keybind>
|
||||
<keybind key="XF86_AudioRaiseVolume">
|
||||
<action name="Execute" command="amixer sset Master 5%+"></action>
|
||||
</keybind>
|
||||
<keybind key="XF86_AudioMute">
|
||||
<action name="Execute" command="amixer sset Master toggle"></action>
|
||||
</keybind>
|
||||
<keybind key="XF86_MonBrightnessUp">
|
||||
<action name="Execute" command="brightnessctl set +10%"></action>
|
||||
</keybind>
|
||||
<keybind key="XF86_MonBrightnessDown">
|
||||
<action name="Execute" command="brightnessctl set 10%-"></action>
|
||||
</keybind><!--
|
||||
<keybind key="W-KP_7"><action name="SnapToRegion" region="top-left" /></keybind>
|
||||
<keybind key="W-KP_8"><action name="SnapToRegion" region="top" /></keybind>
|
||||
<keybind key="W-KP_9"><action name="SnapToRegion" region="top-right" /></keybind>
|
||||
<keybind key="W-KP_4"><action name="SnapToRegion" region="left" /></keybind>
|
||||
<keybind key="W-KP_5"><action name="SnapToRegion" region="center" /></keybind>
|
||||
<keybind key="W-KP_6"><action name="SnapToRegion" region="right" /></keybind>
|
||||
<keybind key="W-KP_1"><action name="SnapToRegion" region="bottom-left" /></keybind>
|
||||
<keybind key="W-KP_2"><action name="SnapToRegion" region="bottom" /></keybind>
|
||||
<keybind key="W-KP_3"><action name="SnapToRegion" region="bottom-right" /></keybind>
|
||||
-->
|
||||
</keyboard><!--
|
||||
Multiple <mousebind> can exist within one <context>
|
||||
Multiple <actions> can exist within one <mousebind>
|
||||
Currently, the only openbox-action not supported is "Unshade"
|
||||
|
||||
Use <mouse><default /> to load all the default mousebinds (those listed
|
||||
below). If the default mousebinds are largely what you want, a sensible
|
||||
approach could be to start the <mouse> section with a <default />
|
||||
element, and then (re-)define any special binds you need such as launching
|
||||
a custom menu when right-clicking on your desktop. See rc.xml for an example.
|
||||
-->
|
||||
<mouse><!-- time is in ms -->
|
||||
<doubleClickTime>500</doubleClickTime>
|
||||
<scrollFactor>1.0</scrollFactor>
|
||||
<context name="Frame">
|
||||
<mousebind button="W-Left" action="Press">
|
||||
<action name="Focus"></action>
|
||||
<action name="Raise"></action>
|
||||
</mousebind>
|
||||
<mousebind button="W-Left" action="Drag">
|
||||
<action name="Move"></action>
|
||||
</mousebind>
|
||||
<mousebind button="W-Right" action="Press">
|
||||
<action name="Focus"></action>
|
||||
<action name="Raise"></action>
|
||||
</mousebind>
|
||||
<mousebind button="W-Right" action="Drag">
|
||||
<action name="Resize"></action>
|
||||
</mousebind>
|
||||
</context>
|
||||
<context name="Top">
|
||||
<mousebind button="Left" action="Drag">
|
||||
<action name="Resize"></action>
|
||||
</mousebind>
|
||||
</context>
|
||||
<context name="Left">
|
||||
<mousebind button="Left" action="Drag">
|
||||
<action name="Resize"></action>
|
||||
</mousebind>
|
||||
</context>
|
||||
<context name="Right">
|
||||
<mousebind button="Left" action="Drag">
|
||||
<action name="Resize"></action>
|
||||
</mousebind>
|
||||
</context>
|
||||
<context name="Bottom">
|
||||
<mousebind button="Left" action="Drag">
|
||||
<action name="Resize"></action>
|
||||
</mousebind>
|
||||
</context>
|
||||
<context name="TRCorner">
|
||||
<mousebind button="Left" action="Drag">
|
||||
<action name="Resize"></action>
|
||||
</mousebind>
|
||||
</context>
|
||||
<context name="BRCorner">
|
||||
<mousebind button="Left" action="Drag">
|
||||
<action name="Resize"></action>
|
||||
</mousebind>
|
||||
</context>
|
||||
<context name="TLCorner">
|
||||
<mousebind button="Left" action="Drag">
|
||||
<action name="Resize"></action>
|
||||
</mousebind>
|
||||
</context>
|
||||
<context name="BLCorner">
|
||||
<mousebind button="Left" action="Drag">
|
||||
<action name="Resize"></action>
|
||||
</mousebind>
|
||||
</context>
|
||||
<context name="Client">
|
||||
<mousebind button="Left" action="Press">
|
||||
<action name="Focus"></action>
|
||||
<action name="Raise"></action>
|
||||
</mousebind>
|
||||
<mousebind button="Middle" action="Press">
|
||||
<action name="Focus"></action>
|
||||
<action name="Raise"></action>
|
||||
</mousebind>
|
||||
<mousebind button="Right" action="Press">
|
||||
<action name="Focus"></action>
|
||||
<action name="Raise"></action>
|
||||
</mousebind>
|
||||
</context>
|
||||
<context name="Root">//
|
||||
<mousebind button="Left" action="Press">
|
||||
<action name="ShowMenu" menu="root-menu"></action>
|
||||
</mousebind>
|
||||
<mousebind button="Right" action="Press">
|
||||
<action name="ShowMenu" menu="sys-menu"></action>
|
||||
</mousebind>
|
||||
<mousebind button="Middle" action="Press">
|
||||
<action name="ShowMenu" menu="root-menu"></action>
|
||||
</mousebind>
|
||||
<mousebind direction="Up" action="Scroll">
|
||||
<action name="GoToDesktop" to="left" wrap="yes"></action>
|
||||
<action name="Execute" command="bash -c 'echo left > /tmp/workspace'"></action>
|
||||
</mousebind>
|
||||
<mousebind direction="Down" action="Scroll">
|
||||
<action name="GoToDesktop" to="right" wrap="yes"></action>
|
||||
<action name="Execute" command="bash -c 'echo right > /tmp/workspace'"></action>
|
||||
</mousebind>
|
||||
</context>
|
||||
</mouse><!--
|
||||
The *category* element can be set to touch, non-touch, default or the name
|
||||
of a device. You can obtain device names by running *libinput list-devices*
|
||||
as root or member of the input group.
|
||||
|
||||
Tap is set to *yes* be default. All others are left blank in order to use
|
||||
device defaults.
|
||||
|
||||
All values are [yes|no] except for:
|
||||
- pointerSpeed [-1.0 to 1.0]
|
||||
- accelProfile [flat|adaptive]
|
||||
- tapButtonMap [lrm|lmr]
|
||||
-->
|
||||
<libinput>
|
||||
<device category="">
|
||||
<naturalScroll></naturalScroll>
|
||||
<leftHanded></leftHanded>
|
||||
<pointerSpeed></pointerSpeed>
|
||||
<accelProfile></accelProfile>
|
||||
<tap>yes</tap>
|
||||
<tapButtonMap></tapButtonMap>
|
||||
<tapAndDrag></tapAndDrag>
|
||||
<dragLock></dragLock>
|
||||
<middleEmulation></middleEmulation>
|
||||
<disableWhileTyping></disableWhileTyping>
|
||||
</device>
|
||||
</libinput>
|
||||
<!--
|
||||
# Window Rules
|
||||
# - Criteria can consist of 'identifier' or 'title' or both (in which case
|
||||
# AND logic is used).
|
||||
# - 'identifier' relates to app_id for native Wayland windows and WM_CLASS
|
||||
# for XWayland clients.
|
||||
# - Criteria can also contain `matchOnce="true"` meaning that the rule
|
||||
# must only apply to the first instance of the window with that
|
||||
# particular 'identifier' or 'title'.
|
||||
# - Matching against patterns with '*' (wildcard) and '?' (joker) is
|
||||
# supported. Pattern matching is case-insensitive.
|
||||
|
||||
<windowRules>
|
||||
<windowRule identifier="*"><action name="Maximize"/></windowRule>
|
||||
<windowRule identifier="foo" serverDecoration="yes"/>
|
||||
<windowRule title="bar" serverDecoration="yes"/>
|
||||
<windowRule identifier="baz" title="quax" serverDecoration="yes"/>
|
||||
</windowRules>
|
||||
|
||||
# Example below for `lxqt-panel` and `pcmanfm-qt \-\-desktop`
|
||||
# where 'matchOnce' is used to avoid applying rule to the panel configuration
|
||||
# window with the same 'app_id'
|
||||
|
||||
<windowRules>
|
||||
<windowRule identifier="lxqt-panel" matchOnce="true">
|
||||
<skipTaskbar>yes</skipTaskbar>
|
||||
<action name="MoveTo" x="0" y="0" />
|
||||
<action name="ToggleAlwaysOnTop"/>
|
||||
</windowRule>
|
||||
<windowRule title="pcmanfm-desktop*">
|
||||
<skipTaskbar>yes</skipTaskbar>
|
||||
<skipWindowSwitcher>yes</skipWindowSwitcher>
|
||||
<action name="MoveTo" x="0" y="0" />
|
||||
<action name="ToggleAlwaysOnBottom"/>
|
||||
</windowRule>
|
||||
</windowRules>
|
||||
<windowRules>
|
||||
<windowRule identifier="*">
|
||||
<action name="ToggleDecorations"></action>
|
||||
</windowRule>
|
||||
<windowRule identifier="*" serverDecoration="no">
|
||||
<action name="ToggleDecorations"></action>
|
||||
</windowRule> -For some reason Steam needs this-
|
||||
</windowRules>
|
||||
-->
|
||||
</labwc_config>
|
194
scripts/mediaplayer.py
Executable file
|
@ -0,0 +1,194 @@
|
|||
#!/usr/bin/env python3
|
||||
import gi
|
||||
gi.require_version("Playerctl", "2.0")
|
||||
from gi.repository import Playerctl, GLib
|
||||
from gi.repository.Playerctl import Player
|
||||
import argparse
|
||||
import logging
|
||||
import sys
|
||||
import signal
|
||||
import gi
|
||||
import json
|
||||
import os
|
||||
from typing import List
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
def signal_handler(sig, frame):
|
||||
logger.info("Received signal to stop, exiting")
|
||||
sys.stdout.write("\n")
|
||||
sys.stdout.flush()
|
||||
# loop.quit()
|
||||
sys.exit(0)
|
||||
|
||||
|
||||
class PlayerManager:
|
||||
def __init__(self, selected_player=None, excluded_player=[]):
|
||||
self.manager = Playerctl.PlayerManager()
|
||||
self.loop = GLib.MainLoop()
|
||||
self.manager.connect(
|
||||
"name-appeared", lambda *args: self.on_player_appeared(*args))
|
||||
self.manager.connect(
|
||||
"player-vanished", lambda *args: self.on_player_vanished(*args))
|
||||
|
||||
signal.signal(signal.SIGINT, signal_handler)
|
||||
signal.signal(signal.SIGTERM, signal_handler)
|
||||
signal.signal(signal.SIGPIPE, signal.SIG_DFL)
|
||||
self.selected_player = selected_player
|
||||
self.excluded_player = excluded_player.split(',') if excluded_player else []
|
||||
|
||||
self.init_players()
|
||||
|
||||
def init_players(self):
|
||||
for player in self.manager.props.player_names:
|
||||
if player.name in self.excluded_player:
|
||||
continue
|
||||
if self.selected_player is not None and self.selected_player != player.name:
|
||||
logger.debug(f"{player.name} is not the filtered player, skipping it")
|
||||
continue
|
||||
self.init_player(player)
|
||||
|
||||
def run(self):
|
||||
logger.info("Starting main loop")
|
||||
self.loop.run()
|
||||
|
||||
def init_player(self, player):
|
||||
logger.info(f"Initialize new player: {player.name}")
|
||||
player = Playerctl.Player.new_from_name(player)
|
||||
player.connect("playback-status",
|
||||
self.on_playback_status_changed, None)
|
||||
player.connect("metadata", self.on_metadata_changed, None)
|
||||
self.manager.manage_player(player)
|
||||
self.on_metadata_changed(player, player.props.metadata)
|
||||
|
||||
def get_players(self) -> List[Player]:
|
||||
return self.manager.props.players
|
||||
|
||||
def write_output(self, text, player):
|
||||
logger.debug(f"Writing output: {text}")
|
||||
|
||||
output = {"text": text,
|
||||
"class": "custom-" + player.props.player_name,
|
||||
"alt": player.props.player_name}
|
||||
|
||||
sys.stdout.write(json.dumps(output) + "\n")
|
||||
sys.stdout.flush()
|
||||
|
||||
def clear_output(self):
|
||||
sys.stdout.write("\n")
|
||||
sys.stdout.flush()
|
||||
|
||||
def on_playback_status_changed(self, player, status, _=None):
|
||||
logger.debug(f"Playback status changed for player {player.props.player_name}: {status}")
|
||||
self.on_metadata_changed(player, player.props.metadata)
|
||||
|
||||
def get_first_playing_player(self):
|
||||
players = self.get_players()
|
||||
logger.debug(f"Getting first playing player from {len(players)} players")
|
||||
if len(players) > 0:
|
||||
# if any are playing, show the first one that is playing
|
||||
# reverse order, so that the most recently added ones are preferred
|
||||
for player in players[::-1]:
|
||||
if player.props.status == "Playing":
|
||||
return player
|
||||
# if none are playing, show the first one
|
||||
return players[0]
|
||||
else:
|
||||
logger.debug("No players found")
|
||||
return None
|
||||
|
||||
def show_most_important_player(self):
|
||||
logger.debug("Showing most important player")
|
||||
# show the currently playing player
|
||||
# or else show the first paused player
|
||||
# or else show nothing
|
||||
current_player = self.get_first_playing_player()
|
||||
if current_player is not None:
|
||||
self.on_metadata_changed(current_player, current_player.props.metadata)
|
||||
else:
|
||||
self.clear_output()
|
||||
|
||||
def on_metadata_changed(self, player, metadata, _=None):
|
||||
logger.debug(f"Metadata changed for player {player.props.player_name}")
|
||||
player_name = player.props.player_name
|
||||
artist = player.get_artist()
|
||||
title = player.get_title()
|
||||
|
||||
track_info = ""
|
||||
if player_name == "spotify" and "mpris:trackid" in metadata.keys() and ":ad:" in player.props.metadata["mpris:trackid"]:
|
||||
track_info = "Advertisement"
|
||||
elif artist is not None and title is not None:
|
||||
track_info = f"{artist} - {title}"
|
||||
else:
|
||||
track_info = title
|
||||
|
||||
if track_info:
|
||||
if player.props.status == "Playing":
|
||||
track_info = " " + track_info
|
||||
else:
|
||||
track_info = " " + track_info
|
||||
# only print output if no other player is playing
|
||||
current_playing = self.get_first_playing_player()
|
||||
if current_playing is None or current_playing.props.player_name == player.props.player_name:
|
||||
self.write_output(track_info, player)
|
||||
else:
|
||||
logger.debug(f"Other player {current_playing.props.player_name} is playing, skipping")
|
||||
|
||||
def on_player_appeared(self, _, player):
|
||||
logger.info(f"Player has appeared: {player.name}")
|
||||
if player.name in self.excluded_player:
|
||||
logger.debug(
|
||||
"New player appeared, but it's in exclude player list, skipping")
|
||||
return
|
||||
if player is not None and (self.selected_player is None or player.name == self.selected_player):
|
||||
self.init_player(player)
|
||||
else:
|
||||
logger.debug(
|
||||
"New player appeared, but it's not the selected player, skipping")
|
||||
|
||||
def on_player_vanished(self, _, player):
|
||||
logger.info(f"Player {player.props.player_name} has vanished")
|
||||
self.show_most_important_player()
|
||||
|
||||
def parse_arguments():
|
||||
parser = argparse.ArgumentParser()
|
||||
|
||||
# Increase verbosity with every occurrence of -v
|
||||
parser.add_argument("-v", "--verbose", action="count", default=0)
|
||||
|
||||
parser.add_argument("-x", "--exclude", "- Comma-separated list of excluded player")
|
||||
|
||||
# Define for which player we"re listening
|
||||
parser.add_argument("--player")
|
||||
|
||||
parser.add_argument("--enable-logging", action="store_true")
|
||||
|
||||
return parser.parse_args()
|
||||
|
||||
|
||||
def main():
|
||||
arguments = parse_arguments()
|
||||
|
||||
# Initialize logging
|
||||
if arguments.enable_logging:
|
||||
logfile = os.path.join(os.path.dirname(
|
||||
os.path.realpath(__file__)), "media-player.log")
|
||||
logging.basicConfig(filename=logfile, level=logging.DEBUG,
|
||||
format="%(asctime)s %(name)s %(levelname)s:%(lineno)d %(message)s")
|
||||
|
||||
# Logging is set by default to WARN and higher.
|
||||
# With every occurrence of -v it's lowered by one
|
||||
logger.setLevel(max((3 - arguments.verbose) * 10, 0))
|
||||
|
||||
logger.info("Creating player manager")
|
||||
if arguments.player:
|
||||
logger.info(f"Filtering for player: {arguments.player}")
|
||||
if arguments.exclude:
|
||||
logger.info(f"Exclude player {arguments.exclude}")
|
||||
|
||||
player = PlayerManager(arguments.player, arguments.exclude)
|
||||
player.run()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
11
scripts/toggle_bluetooth
Executable file
|
@ -0,0 +1,11 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Check the current Bluetooth power state
|
||||
state=$(bluetoothctl show | grep "Powered:" | awk '{print $2}')
|
||||
|
||||
# Toggle Bluetooth power state
|
||||
if [ "$state" == "yes" ]; then
|
||||
bluetoothctl power off
|
||||
else
|
||||
bluetoothctl power on
|
||||
fi
|
11
scripts/toggle_wifi
Executable file
|
@ -0,0 +1,11 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# Check the current Wi-Fi state
|
||||
state=$(nmcli radio wifi)
|
||||
|
||||
# Toggle Wi-Fi state
|
||||
if [ "$state" == "enabled" ]; then
|
||||
nmcli radio wifi off
|
||||
else
|
||||
nmcli radio wifi on
|
||||
fi
|
14
scripts/wittr.sh
Executable file
|
@ -0,0 +1,14 @@
|
|||
#!/usr/bin/sh
|
||||
|
||||
# Fetch weather data with the required format
|
||||
req=$(curl -s wttr.in/?format="%t|%l|%c|%f|%h|%C")
|
||||
|
||||
# Extract the temperature and weather symbol for the bar
|
||||
bar=$(echo $req | awk -F "|" '{print $1" "$3}')
|
||||
|
||||
# Extract the tooltip information, which includes location and detailed weather
|
||||
tooltip=$(echo $req | awk -F "|" '{print $2" ("$3") "$4", "$6}')
|
||||
|
||||
# Output the JSON
|
||||
echo "{\"text\":\"$bar\", \"tooltip\":\"$tooltip\"}"
|
||||
|
46
scripts/workspaces
Executable file
|
@ -0,0 +1,46 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
# <config>
|
||||
NUMBER=4
|
||||
SYMBOL_CURRENT=" "
|
||||
SYMBOL_OTHER=" "
|
||||
PIPE=/tmp/workspace
|
||||
WRAP=true
|
||||
# </config>
|
||||
|
||||
# format_line takes the current workspace number [1..N] and prints a string
|
||||
# representing the list of workspaces (e.g. 4 -> "0 0 0 1 0")
|
||||
format_line() {
|
||||
before=`yes $SYMBOL_OTHER 2>/dev/null | head -n $(($1 - 1))`
|
||||
after=`yes $SYMBOL_OTHER 2>/dev/null | head -n $(($NUMBER - $1))`
|
||||
echo $before $SYMBOL_CURRENT $after
|
||||
}
|
||||
|
||||
# remove an existing pipe and make a new one
|
||||
rm -f $PIPE
|
||||
mkfifo $PIPE
|
||||
|
||||
# print initial state
|
||||
current=1
|
||||
format_line $current
|
||||
|
||||
while true
|
||||
do
|
||||
if read input <$PIPE; then
|
||||
if [ $input == "right" ]; then input=$((current + 1)); fi
|
||||
if [ $input == "left" ]; then input=$((current - 1)); fi
|
||||
|
||||
if (( $input < 1 )); then
|
||||
if [ "$WRAP" == false ]; then continue; fi
|
||||
input=$NUMBER
|
||||
fi
|
||||
if (( $input > $NUMBER )); then
|
||||
if [ "$WRAP" == false ]; then continue; fi
|
||||
input=1
|
||||
fi
|
||||
if (( $input == $current )); then continue; fi
|
||||
|
||||
format_line $input
|
||||
current=$input
|
||||
fi
|
||||
done
|
23
system/boot.nix
Normal file
|
@ -0,0 +1,23 @@
|
|||
{ config, pkgs, ...}:
|
||||
|
||||
{
|
||||
|
||||
boot={
|
||||
|
||||
loader = {
|
||||
systemd-boot.enable = true;
|
||||
|
||||
efi.canTouchEfiVariables = true;
|
||||
};
|
||||
|
||||
initrd.kernelModules = [ "amdgpu" ];
|
||||
|
||||
kernelModules = [ "v4l2loopback" ];
|
||||
|
||||
extraModulePackages = [ pkgs.linuxPackages.v4l2loopback ];
|
||||
|
||||
extraModprobeConfig = ''
|
||||
options v4l2loopback exclusive_caps=1 devices=1
|
||||
'';
|
||||
};
|
||||
}
|
27
system/hardware.nix
Normal file
|
@ -0,0 +1,27 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
hardware = {
|
||||
|
||||
bluetooth = {
|
||||
enable = true;
|
||||
powerOnBoot = false;
|
||||
};
|
||||
|
||||
graphics = {
|
||||
|
||||
extraPackages = with pkgs; [
|
||||
amdvlk
|
||||
rocmPackages.clr.icd
|
||||
];
|
||||
|
||||
extraPackages32 = with pkgs.pkgsi686Linux; [
|
||||
libva
|
||||
];
|
||||
|
||||
# setLdLibraryPath = true;
|
||||
};
|
||||
|
||||
pulseaudio.enable = false;
|
||||
};
|
||||
}
|
34
system/labwc.nix
Normal file
|
@ -0,0 +1,34 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
services = {
|
||||
xserver.enable = true;
|
||||
|
||||
greetd = {
|
||||
enable = true;
|
||||
|
||||
settings={
|
||||
default_session={
|
||||
command = "${pkgs.greetd.tuigreet}/bin/tuigreet --user-menu -rti --asterisks --cmd labwc";
|
||||
user = "greeter";
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
programs = {
|
||||
labwc.enable = true;
|
||||
};
|
||||
|
||||
systemd.services.greetd.serviceConfig = {
|
||||
Type = "idle";
|
||||
StandardInput = "tty";
|
||||
StandardOutput = "tty";
|
||||
StandardError = "journal"; # Without this errors will spam on screen
|
||||
|
||||
# Without these bootlogs will spam on screen
|
||||
TTYReset = true;
|
||||
TTYVHangup = true;
|
||||
TTYVTDisallocate = true;
|
||||
};
|
||||
}
|
25
system/network.nix
Normal file
|
@ -0,0 +1,25 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
networking = {
|
||||
|
||||
hostName = "valanixos"; # Define your hostname.
|
||||
|
||||
# Enables wireless support via wpa_supplicant.
|
||||
# wireless.enable = true;
|
||||
|
||||
# Configure network proxy if necessary
|
||||
# proxy.default = "http://user:password@proxy:port/";
|
||||
# proxy.noProxy = "127.0.0.1,localhost,internal.domain";
|
||||
|
||||
# Enable networking
|
||||
networkmanager.enable = true;
|
||||
|
||||
# Open ports in the firewall.
|
||||
# networking.firewall.allowedTCPPorts = [ ... ];
|
||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
||||
# Or disable the firewall altogether.
|
||||
# networking.firewall.enable = false;
|
||||
|
||||
};
|
||||
}
|
42
system/programs.nix
Normal file
|
@ -0,0 +1,42 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
programs = {
|
||||
firefox.enable = true;
|
||||
|
||||
file-roller.enable = true;
|
||||
|
||||
labwc.enable = true;
|
||||
|
||||
nix-ld = {
|
||||
enable = true;
|
||||
libraries = with pkgs; [
|
||||
zlib
|
||||
libgcc
|
||||
];
|
||||
};
|
||||
|
||||
steam.enable = true;
|
||||
|
||||
thunar = {
|
||||
enable = true;
|
||||
|
||||
plugins = with pkgs.xfce; [
|
||||
thunar-archive-plugin
|
||||
thunar-media-tags-plugin
|
||||
thunar-volman
|
||||
];
|
||||
};
|
||||
|
||||
zsh.enable = true;
|
||||
|
||||
# Some programs need SUID wrappers, can be configured further or are
|
||||
# started in user sessions.
|
||||
# programs.mtr.enable = true;
|
||||
# programs.gnupg.agent = {
|
||||
# enable = true;
|
||||
# enableSSHSupport = true;
|
||||
# };
|
||||
|
||||
};
|
||||
}
|
28
system/services.nix
Normal file
|
@ -0,0 +1,28 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
services = {
|
||||
xserver = {
|
||||
enable = true;
|
||||
|
||||
videoDrivers = ["amdgpu"];
|
||||
xkb.layout = "us";
|
||||
wacom.enable = true;
|
||||
|
||||
};
|
||||
|
||||
printing.enable = true;
|
||||
gvfs.enable = true;
|
||||
tumbler.enable = true;
|
||||
|
||||
pipewire = {
|
||||
enable = true;
|
||||
|
||||
audio.enable = true;
|
||||
|
||||
pulse.enable = true;
|
||||
jack.enable = true;
|
||||
alsa.enable = true;
|
||||
};
|
||||
};
|
||||
}
|
17
system/systemd.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
systemd = {
|
||||
user.services.kanshi = {
|
||||
enable = true;
|
||||
|
||||
description = "kanshi daemon";
|
||||
wantedBy = [];
|
||||
after = [];
|
||||
serviceConfig = {
|
||||
Type = "simple";
|
||||
ExecStart = "${pkgs.kanshi}/bin/kanshi -c kanshi_config_file";
|
||||
};
|
||||
};
|
||||
};
|
||||
}
|
17
system/xfce.nix
Normal file
|
@ -0,0 +1,17 @@
|
|||
{ config, pkgs, ... }:
|
||||
|
||||
{
|
||||
services.xserver = {
|
||||
enable=true;
|
||||
|
||||
desktopManager={
|
||||
xterm.enable=false;
|
||||
xfce.enable=true;
|
||||
};
|
||||
|
||||
# displayManager={
|
||||
# lightdm.enable=true;
|
||||
# defaultSession="xfce";
|
||||
# };
|
||||
};
|
||||
}
|
60
vasilis.nix
Normal file
|
@ -0,0 +1,60 @@
|
|||
{config, pkgs, lib, ...}:
|
||||
|
||||
{
|
||||
imports =
|
||||
[
|
||||
./home-manager/alacritty.nix
|
||||
./home-manager/dots.nix
|
||||
./home-manager/git.nix
|
||||
./home-manager/gtk.nix
|
||||
./home-manager/helix.nix
|
||||
./home-manager/kanshi.nix
|
||||
./home-manager/mako.nix
|
||||
./home-manager/ohmyposh.nix
|
||||
./home-manager/waybar.nix
|
||||
./home-manager/zsh.nix
|
||||
];
|
||||
|
||||
home.username = "aethrvmn";
|
||||
home.homeDirectory = "/home/aethrvmn";
|
||||
home.stateVersion = "23.11";
|
||||
home.sessionVariables.GTK_THEME = "Adwaita-dark";
|
||||
|
||||
home.packages = with pkgs; [
|
||||
_1password-gui
|
||||
atuin
|
||||
bemenu
|
||||
btop
|
||||
czkawka
|
||||
cowsay
|
||||
eza
|
||||
fastfetch
|
||||
filezilla
|
||||
git
|
||||
godot_4
|
||||
grim
|
||||
hugo
|
||||
imv
|
||||
jitsi
|
||||
j4-dmenu-desktop
|
||||
kanshi
|
||||
labwc-tweaks
|
||||
localsend
|
||||
lutris
|
||||
mpd
|
||||
mpv
|
||||
obs-studio
|
||||
pavucontrol
|
||||
qbittorrent
|
||||
slurp
|
||||
spotify
|
||||
swappy
|
||||
swww
|
||||
telegram-desktop
|
||||
thunderbird
|
||||
waybar-mpris
|
||||
wlr-randr
|
||||
xfce.mousepad
|
||||
xfce.xfce4-settings
|
||||
];
|
||||
}
|
BIN
wallpapers/bluemana.png
Executable file
After Width: | Height: | Size: 3.5 MiB |
BIN
wallpapers/city.jpg
Normal file
After Width: | Height: | Size: 98 KiB |
BIN
wallpapers/hobbits.jpg
Executable file
After Width: | Height: | Size: 399 KiB |
BIN
wallpapers/singlestatue.jpg
Normal file
After Width: | Height: | Size: 448 KiB |
BIN
wallpapers/statues.jpg
Normal file
After Width: | Height: | Size: 1 MiB |
BIN
wallpapers/tree.jpg
Normal file
After Width: | Height: | Size: 2.4 MiB |