Switch to niri - Episode 2: The (first?) purge

This commit is contained in:
Schrottkatze 2025-03-14 20:02:24 +01:00
parent f28ec1ae8f
commit c2ebb8d760
Signed by: schrottkatze
SSH key fingerprint: SHA256:FPOYVeBy3QP20FEM42uWF1Wa/Qhlk+L3S2+Wuau/Auo
54 changed files with 192 additions and 83206 deletions

View file

@ -75,16 +75,7 @@
in {
devShells."x86_64-linux".default = pkgs.mkShell {
buildInputs = [
(pkgs.haskellPackages.ghcWithPackages
(pkgs:
with pkgs; [
xmonad
xmonad-contrib
xmobar
statgrab
]))
rs-toolchain
pkgs.haskell-language-server
pkgs.pkg-config
pkgs.openssl
];

View file

@ -17,6 +17,4 @@
helvum
];
# hardware.pulseaudio.enable = pkgs.lib.mkForce false;
# sound.mediaKeys.enable = true;
}

View file

@ -2,11 +2,12 @@
imports = [
./audio.nix
./eduroam.nix
./flatpak.nix
./xdg-portals.nix
./home
./dm.nix
./tlp.nix
];
services.flatpak.enable = true;
services.upower = {
enable = true;
};

View file

@ -1,16 +0,0 @@
{
config,
lib,
pkgs,
...
}: {
services.flatpak.enable = true;
xdg.portal = {
enable = true;
# TODO
config.common.default = "*";
extraPortals = [
pkgs.xdg-desktop-portal-gtk
];
};
}

View file

@ -1,27 +0,0 @@
{...}: {
services.picom = {
backend = "glx";
shadow = true;
shadowOffsets = [(-40) (-30)];
shadowOpacity = 0.2;
shadowExclude = [
"class_g ?= 'Notify-osd'"
"_GTK_FRAME_EXTENTS@:c"
"!(class_g = 'Rofi' || class_g = 'Dunst')"
];
vSync = true;
settings = {
"shadow-radius" = 40;
# fading rofi
"fading" = true;
"fade-in-step" = 0.25;
"fade-out-step" = 0.2;
"fade-delta" = 20;
"fade-exclude" = ["class_g != 'Rofi'"];
# use damage information
"use-damage" = true;
};
};
}

View file

@ -4,14 +4,18 @@
imports = [
./notifications.nix
./terminal.nix
./compositing.nix
./layaway.nix
./swayidle.nix
./typst.nix
./panels
./xmonad
./sway
./eww
./niri
];
# temporary(tm)
programs.wofi.enable = true;
programs.swaylock.enable = true;
services.network-manager-applet.enable = true;
services.gpg-agent = {
enable = true;
enableNushellIntegration = true;

View file

@ -0,0 +1,28 @@
{
pkgs,
lib,
...
}: let
# stolen: https://github.com/MultisampledNight/core/blob/678f176cb24f5dc4b5dc629cfd3e643487be01bb/system/packages/layaway/default.nix#L7-L25
layaway = pkgs.rustPlatform.buildRustPackage rec {
pname = "layaway";
version = "0.2.0";
src = pkgs.fetchFromGitHub {
owner = "MultisampledNight";
repo = pname;
rev = "v${version}";
hash = "sha256-SzAuVFEy56svasO3+1p6ysBRrIQd0UZX++/P4ZuwWm0=";
};
cargoHash = "sha256-liWP6AI72xG1O+MbCZ0cjJ2llHj/iv3hR/U3BLv5fKA=";
meta = with lib; {
description = "Layout creation for Sway via a relative and human-readable DSL.";
homepage = "https://github.com/MultisampledNight/layaway";
maintainers = [maintainers.multisn8];
};
};
in {
home.packages = [layaway];
}

View file

@ -75,5 +75,15 @@
"Mod+Shift+Minus".action.set-window-height = "-10%";
"Mod+Shift+Equal".action.set-window-height = "+10%";
"Mod+W".action.toggle-column-tabbed-display = [];
# media keys
"XF86AudioRaiseVolume".action.spawn = ["wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1+"];
"XF86AudioLowerVolume".action.spawn = ["wpctl" "set-volume" "@DEFAULT_AUDIO_SINK@" "0.1-"];
"XF86AudioMute".action.spawn = ["wpctl" "set-mute" "@DEFAULT_AUDIO_SINK@" "toggle"];
"XF86AudioMicMute" .action.spawn = ["wpctl" "set-mute" "@DEFAULT_AUDIO_SOURCE@" "toggle"];
"XF86AudioRaiseVolume".allow-when-locked = true;
"XF86AudioLowerVolume".allow-when-locked = true;
"XF86AudioMute".allow-when-locked = true;
"XF86AudioMicMute" .allow-when-locked = true;
};
}

View file

@ -19,7 +19,7 @@
command = [
"${pkgs.swaybg}/bin/swaybg"
"-i"
"${../xmonad/wallpaper/wallpaper.jpg}"
"${../../../../other/assets/wallpaper/wallpaper.jpg}"
"-m"
"fill"
];

View file

@ -1,7 +0,0 @@
{...}: {
imports = [
./xmobar
./polybar.nix
./eww
];
}

View file

@ -1,146 +0,0 @@
{
config,
lib,
pkgs,
...
}: {
services.polybar = {
enable = true;
package = pkgs.polybarFull;
script = "";
settings = {
colors = {
background = "#282828";
background-alt = "#3c3836";
foreground = "#ebdbb2";
primary = "#d65d0e";
secondary = "#fe8019";
alert = "#cc241d";
disabled = "#504945";
};
"bar/status" = {
# Style
bottom = true;
width = "100%";
height = "24px";
radius = 0;
tray-position = "center";
background = "\${colors.background}";
foreground = "\${colors.foreground}";
line-size = "4px";
border-color = "#00000000";
padding-left = 0;
padding-right = 1;
module-margin = 1;
separator = "|";
separator-foreground = "\${colors.disabled}";
font-0 = "FiraCode Nerd Font";
modules-left = "xworkspaces xwindow";
modules-right = "memory cpu wlan bat0 bat1";
cursor-click = "pointer";
cursor-scroll = "ns-resize";
enable-ipc = true;
wm-restack = "generic";
override-redirect = false;
};
"module/xworkspaces" = {
type = "internal/xworkspaces";
label-active = "";
label-active-padding = 1;
label-occupied = "";
label-occupied-padding = 1;
label-urgent = "";
label-urgent-foreground = "\${colors.alert}";
label-urgent-padding = 1;
label-empty = "";
label-empty-foreground = "\${colors.disabled}";
label-empty-padding = 1;
};
"module/xwindow" = {
type = "internal/xwindow";
label = "%title:0:60:...%";
};
"module/memory" = {
type = "internal/memory";
interval = 2;
format-prefix = "󰍛 ";
format-prefix-foreground = "\${colors.primary}";
label = "%percentage_used:2%%";
};
"module/cpu" = {
type = "internal/cpu";
interval = "2";
format-prefix = "󰻠 ";
format-prefix-foreground = "\${colors.primary}";
label = "%percentage:2%%";
};
"network-base" = {
type = "internal/network";
interval = 5;
format-connected = "<ramp-signal> <label-connected>";
format-disconnected = "<label-disconnected>";
label-disconnected = "󰣼";
label-disconnected-foreground = "#d65d0e";
ramp.signal = [
"%{F#cc241d}󰣾"
"%{F#d79921}󰣴"
"%{F#98971a}󰣶"
"%{F#98971a}󰣸"
"%{F#98971a}󰣺"
];
};
"module/wlan" = {
"inherit" = "network-base";
interface-type = "wireless";
label-connected = "%{F#F0C674}%{F-} %local_ip%";
};
"battery-base" = {
type = "internal/battery";
poll-interval = 1;
time-format = "%H%{F#7c6f64}:%{F#d5c4a1}%M";
label-charging = "%{F#98971a}󰚥 %{F#ebdbb2}%percentage%%%{F#d5c4a1} %time%";
format-charging = "<ramp-capacity> <label-charging>";
label-discharging = "%{F#ebdbb2}%percentage%%%{F#bdae93} %time%";
format-discharging = "<ramp-capacity> <label-discharging>";
label-full = "%{F#98971a}󰁹%{F#ebdbb2} %percentage%%";
format-full = "<label-full>";
label-low = "%{F#cc241d}󰂎%{F#ebdbb2} %percentage%%";
format-low = "<label-low>";
ramp.capacity = [
"%{F#cc241d}󰁺"
"%{F#d79921}󰁻"
"%{F#98971a}󰁼"
"%{F#98971a}󰁽"
"%{F#98971a}󰁾"
"%{F#98971a}󰁿"
"%{F#98971a}󰂀"
"%{F#98971a}󰂁"
"%{F#98971a}󰂂"
"%{F#98971a}󰁹"
];
};
"module/bat0" = {
"inherit" = "battery-base";
battery = "BAT0";
adapter = "ADP1";
};
"module/bat1" = {
"inherit" = "battery-base";
battery = "BAT1";
adapter = "ADP1";
};
"settings" = {
screenchange-reload = true;
pseudo-transparency = true;
};
};
};
}

View file

@ -1,27 +0,0 @@
{
lib,
pkgs,
...
}: let
xmobarGhc = pkgs.haskellPackages.ghcWithPackages (pkgs:
with pkgs; [
xmobar
statgrab
]);
in {
home = {
packages = [xmobarGhc];
file."xmobar.hs" = rec {
source = ./xmobar.hs;
target = ".config/xmobar/xmobar.hs";
onChange = ''
${xmobarGhc}/bin/ghc -threaded ${target}
${pkgs.busybox}/bin/pkill xmobar
${pkgs.haskellPackages.xmonad}/bin/xmonad --restart
'';
};
};
programs.xmobar = {
enable = true;
};
}

View file

@ -1,47 +0,0 @@
import Xmobar
import System.Statgrab
-- TODOS:
-- - custom cpu module
-- - custom mem module
-- - custom network/ping module with avg of n pings and blah
-- - custom graph rendering based on braille characters
-- - custom "ramp" thingies
-- - newsticker?
-- - mail/message monitoring
-- - if possible, different bars per workspace
data CustomCpu = CustomCpu
deriving (Read, Show)
instance Exec CustomCpu where
alias CustomCpu = "cpu"
run CustomCpu = do
-- return (show :: IO String (snapshot :: Stats CPUPercent))
return "meow"
fc code content = "<fc=" ++ code ++ ">" ++ content ++ "</fc>"
sep = fc "#7c6f64"
icon = fc "#d65d0e"
config :: Config
config =
defaultConfig
{ font = "FiraCode Nerd Font",
allDesktops = True,
alpha = 255,
bgColor = "#282828",
fgColor = "#ebdbb2",
commands =
[ Run $ Xmobar.Memory ["t", "Mem: <usedratio>%"] 10,
Run $ CustomCpu,
Run $ Date (icon "\983277" ++ " %Y" ++ sep "-" ++ "%m" ++ sep "-" ++ "%d " ++ icon "\988236" ++ " %H" ++ sep ":" ++ "%M" ++ sep ":" ++ "%S ") "date" 10
],
template = "%memory% }{ %cpu% }{ %date%",
alignSep = "}{",
position = TopH 24
}
main :: IO ()
main = xmobar config -- or: configFromArgs config >>= xmobar

View file

@ -1,228 +0,0 @@
{
pkgs,
lib,
config,
...
}: let
# stolen: https://github.com/MultisampledNight/core/blob/678f176cb24f5dc4b5dc629cfd3e643487be01bb/system/packages/layaway/default.nix#L7-L25
layaway = pkgs.rustPlatform.buildRustPackage rec {
pname = "layaway";
version = "0.2.0";
src = pkgs.fetchFromGitHub {
owner = "MultisampledNight";
repo = pname;
rev = "v${version}";
hash = "sha256-SzAuVFEy56svasO3+1p6ysBRrIQd0UZX++/P4ZuwWm0=";
};
cargoHash = "sha256-liWP6AI72xG1O+MbCZ0cjJ2llHj/iv3hR/U3BLv5fKA=";
meta = with lib; {
description = "Layout creation for Sway via a relative and human-readable DSL.";
homepage = "https://github.com/MultisampledNight/layaway";
maintainers = [maintainers.multisn8];
};
};
in {
programs.wofi.enable = true;
programs.swaylock.enable = true;
services.network-manager-applet.enable = true;
home.packages = [layaway];
xdg.portal = {
enable = true;
extraPortals = [pkgs.xdg-desktop-portal-wlr];
# sway = {
# default = ["wlr"];
# };
config.common.default = "*";
};
services.swayidle = {
enable = true;
events = [
{
event = "before-sleep";
command = "${pkgs.swaylock}/bin/swaylock -fF -c 442244";
}
{
event = "lock";
command = "swaylock -c 441144";
}
];
};
wayland.windowManager.sway = {
enable = true;
systemd = {
enable = true;
};
wrapperFeatures = {
base = true;
gtk = true;
};
config = {
modes = {
resize = {
Down = "resize grow height 10 px";
Escape = "mode default";
Left = "resize shrink width 10 px";
Return = "mode default";
Right = "resize grow width 10 px";
Up = "resize shrink height 10 px";
h = "resize shrink width 10 px";
j = "resize grow height 10 px";
k = "resize shrink height 10 px";
l = "resize grow width 10 px";
};
};
terminal = "kitty";
output = {
"*" = {
bg = "${../xmonad/wallpaper/wallpaper.jpg} fill";
};
};
input = {
"*" = {
xkb_layout = "us";
xkb_variant = "altgr-intl";
};
};
startup = [
{
command = "eww open-many topBar bottomBar";
}
{
command = "sleep 1 && mullvad-gui";
}
];
bars = [];
menu = "wofi -d";
modifier = "Mod4";
assigns = {
"1" = [
{class = "^Signal$";}
{class = "^Element$";}
{class = "^Evolution$";}
{class = "^teams-for-linux$";}
];
"2" = [
{app_id = "^firefox$";}
];
};
keybindings = with {
#mod = config.xsession.windowManager.i3.config.modifier;
# mod = "Mod1";
mod = config.wayland.windowManager.sway.config.modifier;
};
lib.mkOptionDefault {
# switch window focus
"${mod}+h" = "focus left";
"${mod}+j" = "focus down";
"${mod}+k" = "focus up";
"${mod}+l" = "focus right";
# move windows
"${mod}+Shift+h" = "move left";
"${mod}+Shift+j" = "move down";
"${mod}+Shift+k" = "move up";
"${mod}+Shift+l" = "move right";
# layout shit
"${mod}+shift+semicolon" = "split h";
"${mod}+semicolon" = "split v";
"${mod}+f" = "fullscreen toggle";
"${mod}+Shift+w" = "layout tabbed";
"${mod}+e" = "layout toggle split";
"${mod}+Shift+space" = "floating toggle";
# focus parents/children
# "${mod}+Shift+a" = "focus parent";
# "${mod}+Shift+c" = "focus child";
# screenshot
# "${mod}+w" = "exec window-screenshot.sh";
"${mod}+s" = "exec gscreenshot -csf $HOME/Pictures/screenshots";
"${mod}+a" = "exec gscreenshot -cf $HOME/Pictures/screenshots";
# "${mod}+t" = "exec ocr-screenshot.sh";
# rofi fuckery
"${mod}+d" = "exec wofi -S drun --allow-images";
"${mod}+i" = "exec rofimoji --selector wofi -f alchemical_symbols anatolian_hieroglyphs emojis braille_patterns box_drawing chess_symbols emoticons geometric_shapes gothic greek_extended math mathematical_alphanumeric_symbols mathematical_operators miscellaneous_symbols miscellaneous_mathematical_symbols-a miscellaneous_mathematical_symbols-b miscellaneous_symbols_and_arrows miscellaneous_symbols_and_pictographs miscellaneous_technical modi modifier_tone_letters musical_symbols nerd_font number_forms shorthand_format_controls specials variation_selectors vertical_forms -a copy";
# audio
"XF86AudioRaiseVolume" = "exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ +10% && $refresh_i3status";
"XF86AudioLowerVolume" = "exec --no-startup-id pactl set-sink-volume @DEFAULT_SINK@ -10% && $refresh_i3status";
"XF86AudioMute" = "exec --no-startup-id pactl set-sink-mute @DEFAULT_SINK@ toggle && $refresh_i3status";
"XF86AudioMicMute" = "exec --no-startup-id pactl set-source-mute @DEFAULT_SOURCE@ toggle && $refresh_i3status";
"XF86AudioNext" = "exec playerctl next";
"XF86AudioPrev" = "exec playerctl previous";
"XF86AudioPause" = "exec playerctl pause";
"XF86AudioPlay" = "exec playerctl play";
"XF86AudioStop" = "exec playerctl stop";
"XF86MonBrightnessUp" = "exec brightnessctl set 1%+";
"XF86MonBrightnessDown" = "exec brightnessctl set 1%-";
"XF86KbdBrightnessUp" = "exec brillo -kA 10.0";
"XF86KbdBrightnessDown" = "exec brillo -kU 10.0";
};
focus = {
wrapping = "yes";
};
fonts = {
names = ["Atkinson Hyperlegible"];
style = "Regular";
size = 9.0;
};
gaps = {
#top = 24;
inner = 15;
outer = 0;
smartGaps = true;
smartBorders = "on";
};
colors = {
background = "#1d2021";
focused = {
background = "#282828";
border = "#504945";
childBorder = "#7c6f64";
indicator = "#504945";
text = "#ebdbb2";
};
focusedInactive = {
background = "#1d2021";
border = "#504945";
childBorder = "#665c54";
indicator = "#664c54";
text = "#d5c4a1";
};
placeholder = {
background = "#1d2021";
border = "#00ff00";
childBorder = "#504945";
indicator = "#504945";
text = "#928374";
};
unfocused = {
background = "#1d2021";
border = "#3c3836";
childBorder = "#504945";
indicator = "#504945";
text = "#bdae93";
};
urgent = {
background = "#9d0006";
border = "#cc241d";
childBorder = "#3c3836";
indicator = "#fb4943";
text = "#ebdbb2";
};
};
window = {
border = 2;
titlebar = false;
};
};
};
}

View file

@ -0,0 +1,17 @@
{pkgs, ...}: {
# unsure whether i still need swayidle, will keep it in and might remove after further testing
services.swayidle = {
enable = true;
events = [
{
event = "before-sleep";
command = "${pkgs.swaylock}/bin/swaylock -fF -c 442244";
}
{
event = "lock";
command = "swaylock -c 441144";
}
];
};
}

View file

@ -33,5 +33,11 @@ in {
};
};
# home.packages = [typst-within.packages."x86_64-linux".default];
home.packages = [pkgs.typst];
home.packages = [
pkgs.typst
# `typed` dependencies
pkgs.mupdf
pkgs.inotify-tools
];
}

View file

@ -1,9 +0,0 @@
{pkgs, ...}: {
imports = [./wallpaper];
home.packages = [pkgs.xmonadctl];
xsession.windowManager.xmonad = {
enable = true;
enableContribAndExtras = true;
config = ./xmonad.hs;
};
}

View file

@ -1,9 +0,0 @@
{...}: {
home.file.wallpaper = {
target = "Pictures/wallpaper.jpg";
source = ./wallpaper.jpg;
onChange = ''
feh --bg-fill ~/Pictures/wallpaper.jpg;
'';
};
}

View file

@ -1,175 +0,0 @@
import Control.Monad (when)
import Data.Map qualified as M
import Data.Monoid
import Data.Ratio
import Graphics.X11.ExtraTypes.XF86
import System.Exit
import XMonad
import XMonad.Actions.KeyRemap
import XMonad.Hooks.EwmhDesktops
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.StatusBar
import XMonad.Hooks.StatusBar.PP
import XMonad.Layout.Circle
import XMonad.Layout.DraggingVisualizer
import XMonad.Layout.Grid
import XMonad.Layout.IfMax
import XMonad.Layout.Magnifier
import XMonad.Layout.Spacing
import XMonad.Layout.Tabbed
import XMonad.Layout.ThreeColumns
import XMonad.Layout.VoidBorders
import XMonad.Layout.WindowSwitcherDecoration
import XMonad.Prompt
import XMonad.Prompt.Layout
import XMonad.StackSet qualified as W
import XMonad.Actions.NoBorders
import XMonad.Util.EZConfig
import XMonad.Hooks.ServerMode
myKeys conf@(XConfig {XMonad.modMask = modm}) =
M.fromList $
[ ((modm, xK_Return), spawn $ XMonad.terminal conf),
((modm .|. shiftMask, xK_q), kill),
-- -- Rotate through the available layout algorithms
((modm, xK_space), sendMessage NextLayout),
-- rofiing
((modm, xK_d), spawn "rofi -show drun"),
((modm .|. shiftMask, xK_e), spawn "rofi -show desktopctl -modes desktopctl:desktopctl -show-icons"),
((modm, xK_m), spawn "menu-qalc -- -theme gruvbox-dark"),
((modm, xK_i), spawn "rofimoji --selector-args '-theme gruvbox-dark' -f alchemical_symbols anatolian_hieroglyphs emojis braille_patterns box_drawing chess_symbols emoticons geometric_shapes gothic greek_extended math mathematical_alphanumeric_symbols mathematical_operators miscellaneous_symbols miscellaneous_mathematical_symbols-a miscellaneous_mathematical_symbols-b miscellaneous_symbols_and_arrows miscellaneous_symbols_and_pictographs miscellaneous_technical modi modifier_tone_letters musical_symbols nerd_font number_forms shorthand_format_controls specials variation_selectors vertical_forms -a copy"),
-- screenshotting
-- TODO: Fix/rewrite window-screenshot
((modm, xK_w), spawn "window-screenshot.nu"),
((modm, xK_s), spawn "flameshot gui -c -p $HOME/Pictures/screenshots"),
((modm, xK_a), spawn "flameshot screen -c -p $HOME/Pictures/screenshots"),
((modm, xK_t), spawn "ocr-screenshot.sh"),
((modm .|. shiftMask, xK_t), spawn "DEVICE=\"bcm5974\"; if [ $(xinput list-props \"$DEVICE\" | awk '/^\\tDevice Enabled \\([0-9]+\\):\\t[01]/ {print $NF}') = \"1\" ]; then xinput disable \"$DEVICE\"; else xinput enable \"$DEVICE\"; fi"),
-- Push window back into tiling
((modm .|. shiftMask, xK_space), withFocused $ windows . W.sink),
-- Resize viewed windows to the correct size
((modm, xK_n), refresh),
-- Move focus to the next window
((modm, xK_Tab), layoutPrompt def),
-- Move focus
((modm, xK_j), windows W.focusDown),
((modm, xK_k), windows W.focusUp),
-- Swap the focused window with the next window
((modm .|. shiftMask, xK_j), windows W.swapDown),
((modm .|. shiftMask, xK_k), windows W.swapUp),
-- Shrink the master area
((modm, xK_h), sendMessage Shrink),
((modm, xK_l), sendMessage Expand),
-- Increment the number of windows in the master area
((modm, xK_comma), sendMessage (IncMasterN 1)),
((modm, xK_period), sendMessage (IncMasterN (-1))),
((modm, xK_b), sendMessage ToggleStruts >> withFocused toggleBorder),
-- volume keys
-- TODO: other media keys
((0, xF86XK_AudioRaiseVolume), spawn "amixer -D pulse sset Master 10%+"),
((0, xF86XK_AudioLowerVolume), spawn "amixer -D pulse sset Master 10%-"),
((0, xF86XK_AudioMute), spawn "amixer -D pulse sset Master toggle"),
((0, xF86XK_AudioNext), spawn "playerctl next"),
((0, xF86XK_AudioPrev), spawn "playerctl previous"),
((0, xF86XK_AudioPause), spawn "playerctl play-pause")
]
++ [ ((m .|. modm, k), windows $ f i)
| (i, k) <- zip (XMonad.workspaces conf) [xK_1 .. xK_9],
(f, m) <- [(W.greedyView, 0), (W.shift, shiftMask)]
]
-- TODO: figure out multi screen stuff, including xinerama
-- Mouse bindings: default actions bound to mouse events
myMouseBindings (XConfig {XMonad.modMask = modm}) =
M.fromList
-- mod-button1, Set the window to floating mode and move by dragging
[ ( (modm, button1),
\w -> do
focus w
mouseMoveWindow w
windows W.shiftMaster
),
-- mod-button2, Raise the window to the top of the stack
( (modm, button3),
\w -> do
focus w
mouseResizeWindow w
windows W.shiftMaster
)
]
tabCfg =
def
{ activeColor = "#282828",
inactiveColor = "#1d2021",
urgentColor = "#9d0006",
activeBorderColor = "#504945",
inactiveBorderColor = "#3c3836",
urgentBorderColor = "#cc241d",
activeTextColor = "#ebdbb2",
inactiveTextColor = "#bdae93",
urgentTextColor = "#ebdbb2"
}
myLayout = setupSpacing $ avoidStruts $ autoChoose ||| tabbed shrinkText tabCfg
where
-- default tiling algorithm partitions the screen into two panes
autoChoose = IfMax 2 tiled $ IfMax 3 tiled_mag $ IfMax 4 grid_mag threeCol
setupSpacing = spacingRaw True (Border 0 0 0 0) True (Border 7 7 7 7) True
grid_mag = magnifiercz 1.4 Grid
tiled = Tall nmaster delta ratio
tiled_mag = magnifiercz' 1.4 tiled
threeCol = magnifiercz' 1.6 $ ThreeColMid nmaster delta ratio
-- The default number of windows in the master pane
nmaster = 1
-- Default proportion of screen occupied by master pane
ratio = 1 / 2
-- Percent of screen to increment by when resizing panes
delta = 3 / 100
myManageHook =
composeAll
[ className =? "MPlayer" --> doFloat,
className =? "Gimp" --> doFloat,
className =? "firefox" --> doShift "browser",
className =? "Evolution" --> doShift "comms",
className =? "Signal" --> doShift "comms",
className =? "SchildiChat" --> doShift "comms",
resource =? "desktop_window" --> doIgnore,
resource =? "kdesktop" --> doIgnore
]
myStartupHook = do
spawn "pgrep oneko || oneko -tofocus -tora -position +-1+5 -fg palevioletred3 -bg pink -name 'Rose the desktop kitty'"
spawn "pgrep volumeicon || volumeicon"
spawn "pgrep nm-applet || nm-applet"
spawn "pgrep mullvad-gui || mullvad-vpn"
spawn "feh --bg-fill ~/Pictures/wallpaper.jpg"
xmeowbar = statusBarProp "~/.config/xmobar/xmobar" $ pure xmobarPP
polybar = statusBarProp "polybar" $ pure xmobarPP
barSpawner 0 = pure $ xmeowbar <> polybar
barSpawner _ = mempty
main :: IO()
main = xmonad $ docks $ dynamicSBs barSpawner $ ewmh defaults
defaults =
def
{ -- simple stuff
terminal = "kitty",
focusFollowsMouse = False,
clickJustFocuses = False,
borderWidth = 2,
modMask = mod4Mask,
workspaces = ["comms", "browser"] ++ map show [3 .. 9],
normalBorderColor = "#3c3836",
focusedBorderColor = "#504945",
keys = myKeys,
mouseBindings = myMouseBindings,
layoutHook =myLayout,
manageHook = myManageHook,
startupHook = myStartupHook,
handleEventHook = serverModeEventHook
}

View file

@ -0,0 +1,17 @@
{pkgs, ...}: {
services.gnome.gnome-keyring.enable = true;
xdg.portal = {
enable = true;
config.common = {
default = ["gtk"];
"org.freedesktop.impl.portal.Screencast" = ["gnome"];
"org.freedesktop.impl.portal.Secret" = ["gnome-keyring"];
};
extraPortals = [
pkgs.xdg-desktop-portal-gnome
pkgs.xdg-desktop-portal-gtk
];
};
}

View file

@ -3,166 +3,110 @@
lib,
pkgs,
...
}: let
# window-screenshot = pkgs.writeTextFile "window-screenshot.nu" (builtins.readFile ../../other/scripts/desktop/window-screenshot.nu);
window-screenshot = pkgs.writeShellScriptBin "window-screenshot.sh" (builtins.readFile ../../other/scripts/desktop/window-screenshot.sh);
# desktop-ctl = pkgs.writeShellScriptBin "desktop-ctl.sh" (builtins.readFile ../scripts/desktop/desktop-ctl.sh);
desktop-ctl = import ../../other/scripts/desktop/desktopctl.nix {inherit pkgs;};
# TODO: fix ocr screenshot script
ocr-screenshot = pkgs.writeShellScriptBin "ocr-screenshot.sh" (builtins.readFile ../../other/scripts/desktop/ocr-screenshot.sh);
# rofi calculator copied from https://github.com/barbuk/menu-qalc
menu-qalc = pkgs.writeShellScriptBin "menu-qalc" (builtins.readFile ../../other/scripts/desktop/menu-qalc.sh);
in
with lib; {
imports = [
./gaming.nix
./creative.nix # TODO: more fine grained choices, not every setup needs fspy or rawtherapee
./ios-compat.nix
./syncthing.nix
./kdeconnect.nix
./themeing.nix
./cloud.nix
./networking.nix
./social.nix
./mail.nix
./fonts.nix
./firefox.nix
./x.nix
./obs.nix
];
}:
with lib; {
imports = [
./gaming.nix
./creative.nix # TODO: more fine grained choices, not every setup needs fspy or rawtherapee
./syncthing.nix
./kdeconnect.nix
./themeing.nix
./cloud.nix
./networking.nix
./social.nix
./mail.nix
./fonts.nix
./firefox.nix
./x.nix
./obs.nix
];
programs.seahorse.enable = true;
security.pam.services.jade.enableGnomeKeyring = true;
programs.seahorse.enable = true;
security.pam.services.jade.enableGnomeKeyring = true;
virtualisation.libvirtd.enable = true;
virtualisation.libvirtd.enable = true;
services = {
printing = {
enable = true;
drivers = [
pkgs.gutenprint
pkgs.gutenprintBin
pkgs.hplip
pkgs.brlaser
pkgs.brgenml1lpr
pkgs.brgenml1cupswrapper
pkgs.ptouch-driver
];
};
gnome.gnome-keyring.enable = true;
};
programs.xss-lock = {
services = {
printing = {
enable = true;
lockerCommand = "${pkgs.i3lock}/bin/i3lock -c 1d2021";
};
services.illum.enable = true;
services.avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
};
services.smartd = {
enable = true;
notifications.test = true;
};
home-manager.users.jade = {pkgs, ...}: {
home.sessionVariables = {
"S10E_JRNL_FILE_LOC" = "/home/jade/Docs/jrnl.md";
};
programs.ssh = {
controlMaster = "yes";
};
programs.bat = {
# TODO: more config
enable = true;
};
programs.rofi = {
enable = true;
theme = ../../other/rofi-themes/applauncher.rasi;
};
home.packages = with pkgs; [
just
bacon
magic-wormhole-rs
yt-dlp
i3lock
rofimoji
feh
xorg.xinput
arandr
flameshot
tesseract5
imagemagick
xclip
xmacro
xorg.xev
gscreenshot
syncplay
# filemanager
xfce.thunar
xfce.tumbler
xfce.thunar-archive-plugin
file-roller
# media/file viewers
vlc
mpv
evince
nomacs
jellyfin-media-player
# from environment.systemPackages cleanup
gparted
xdg-desktop-portal-gtk
virt-manager
ddccontrol-db
firebird-emu
gitg
qdirstat
ffmpeg_7-full
# external
libnotify
i3lock
rofi
rofimoji
feh
xorg.xinput
arandr
flameshot
tesseract5
imagemagick
xclip
kitty
xmacro
brightnessctl
drawing
libqalculate
# custom scripts
window-screenshot
desktop-ctl
ocr-screenshot
menu-qalc
# meow
oneko
plover.dev
mupdf
inotify-tools
drivers = [
pkgs.gutenprint
pkgs.gutenprintBin
pkgs.hplip
pkgs.brlaser
pkgs.brgenml1lpr
pkgs.brgenml1cupswrapper
pkgs.ptouch-driver
];
xsession = {
enable = true;
};
};
}
};
programs.xss-lock = {
enable = true;
lockerCommand = "${pkgs.i3lock}/bin/i3lock -c 1d2021";
};
services.illum.enable = true;
services.avahi = {
enable = true;
nssmdns4 = true;
openFirewall = true;
};
services.smartd = {
enable = true;
notifications.test = true;
};
home-manager.users.jade = {pkgs, ...}: {
home.sessionVariables = {
"S10E_JRNL_FILE_LOC" = "/home/jade/Docs/jrnl.md";
};
programs.ssh = {
controlMaster = "yes";
};
home.packages = with pkgs; [
just
bacon
magic-wormhole-rs
yt-dlp
imagemagick
syncplay
# filemanager
xfce.thunar
xfce.tumbler
xfce.thunar-archive-plugin
file-roller
# media/file viewers
vlc
mpv
evince
nomacs
jellyfin-media-player
# from environment.systemPackages cleanup
virt-manager
ddccontrol-db
ffmpeg_7-full
# external
libnotify
rofimoji
xorg.xinput
arandr
flameshot
tesseract5
imagemagick
brightnessctl
drawing
];
xsession = {
enable = true;
};
};
}

View file

@ -1,29 +0,0 @@
{
config,
lib,
pkgs,
...
}: let
cfg = config.jade.desktop.ios-compat;
in
with lib; {
options.jade.desktop.ios-compat = {
enable = mkEnableOption "Enable the ios compatability programs";
};
config = mkIf cfg.enable {
services = {
usbmuxd.enable = true;
gvfs.enable = true;
};
home-manager.users.jade = {pkgs, ...}: {
home.packages = with pkgs; [
libimobiledevice
libimobiledevice-glue
ifuse
usbmuxd
libusbmuxd
gvfs
];
};
};
}

View file

@ -5,12 +5,7 @@
desktopManager = {
xterm.enable = false;
};
windowManager.xmonad = {
enable = true;
};
};
security.polkit.enable = true;
programs.sway.enable = true;
}

View file

@ -12,4 +12,5 @@
./btop.nix
];
programs.mosh.enable = true;
programs.bat.enable = true;
}

File diff suppressed because one or more lines are too long

View file

@ -1,58 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="48"
height="48"
viewBox="0 0 12.7 12.7"
version="1.1"
id="svg5"
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
sodipodi:docname="lock-screen.svg"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview7"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="true"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="mm"
showgrid="true"
inkscape:zoom="17.689955"
inkscape:cx="18.880772"
inkscape:cy="18.937301"
inkscape:window-width="2528"
inkscape:window-height="1006"
inkscape:window-x="14"
inkscape:window-y="58"
inkscape:window-maximized="1"
inkscape:current-layer="layer1">
<inkscape:grid
type="xygrid"
id="grid686"
spacingx="0.21166667"
spacingy="0.21166667" />
</sodipodi:namedview>
<defs
id="defs2" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<path
id="rect3948"
style="stroke-width:1.102;fill:#ebdbb2;fill-opacity:1"
d="M 3.175 6.35 C 2.8232103 6.35 2.5398966 6.6333136 2.5398966 6.9851034 L 2.5398966 11.006563 C 2.5398966 11.358353 2.8232103 11.641667 3.175 11.641667 L 9.525 11.641667 C 9.8767897 11.641667 10.160103 11.358353 10.160103 11.006563 L 10.160103 6.9851034 C 10.160103 6.6333136 9.8767897 6.35 9.525 6.35 L 3.175 6.35 z M 6.35 7.5220215 C 6.8174385 7.5221356 7.196346 7.9010422 7.19646 8.3684814 C 7.1965 8.6709638 7.0351657 8.9504919 6.77323 9.10177 L 6.77323 9.8500448 C 6.77323 9.8500448 6.7733326 10.273275 6.35 10.273275 L 6.3453491 10.273275 C 6.2988402 10.271725 5.92677 10.246921 5.92677 9.8500448 L 5.92677 9.6913981 L 5.92677 9.10177 C 5.6648333 8.9504919 5.503499 8.6709638 5.50354 8.3684814 C 5.503654 7.9010422 5.8825605 7.5221356 6.35 7.5220215 z " />
<path
style="fill:#ebdbb2;fill-opacity:1;stroke:none;stroke-width:1.102;stroke-dasharray:none"
d="M 3.5983333,6.5616665 V 4.4449999 c 0,0 0,2.7516666 0,0 0,-2.7516666 2.7516666,-2.7516666 2.7516666,-2.7516666 0,0 -2.7516666,0 0,0 2.7516669,0 2.7516669,2.7516666 2.7516669,2.7516666 v 2.1166666 l -0.8466667,2e-7 v 0 V 4.445 c 0,0 0,1.6933333 0,0 0,-1.905 -1.905,-1.905 -1.905,-1.905 0,0 1.905,0 0,0 -1.905,0 -1.905,1.905 -1.905,1.905 v 2.1166667 z"
id="path4894"
sodipodi:nodetypes="ccscscccccscsccc" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.7 KiB

View file

@ -1,59 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="48.0px"
height="48.0px"
viewBox="0 0 48.0 48.0"
version="1.1"
id="SVGRoot"
sodipodi:docname="logout.svg"
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview691"
pagecolor="#ffffff"
bordercolor="#000000"
borderopacity="0.25"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
inkscape:document-units="px"
showgrid="true"
inkscape:zoom="23"
inkscape:cx="20.847826"
inkscape:cy="32.391304"
inkscape:window-width="2528"
inkscape:window-height="1006"
inkscape:window-x="14"
inkscape:window-y="58"
inkscape:window-maximized="1"
inkscape:current-layer="layer1">
<inkscape:grid
type="xygrid"
id="grid1177"
spacingx="0.8"
spacingy="0.8" />
</sodipodi:namedview>
<defs
id="defs686" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<path
style="fill:none;fill-opacity:1;stroke:#ebdbb2;stroke-width:3.267;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
d="m 16.8,24 h 7.774528 13.250944 L 30.4,15.2 37.825472,24 30.4,32.8"
id="path12044"
sodipodi:nodetypes="cccccc" />
<path
style="fill:none;fill-opacity:1;stroke:#ebdbb2;stroke-width:3.267;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:normal"
d="M 32,8 H 10.4 l 0,32 h 20.8 v 0 H 32"
id="path17348"
sodipodi:nodetypes="cccccc" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

View file

@ -1,56 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="48.0px"
height="48.0px"
viewBox="0 0 48.0 48.0"
version="1.1"
id="SVGRoot"
sodipodi:docname="reboot.svg"
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview20"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="true"
inkscape:zoom="22.357194"
inkscape:cx="20.575032"
inkscape:cy="16.728396"
inkscape:window-width="2528"
inkscape:window-height="1006"
inkscape:window-x="14"
inkscape:window-y="58"
inkscape:window-maximized="1"
inkscape:current-layer="layer1">
<inkscape:grid
type="xygrid"
id="grid12091" />
</sodipodi:namedview>
<defs
id="defs686" />
<g
id="layer1">
<circle
style="display:none;fill:#000000;fill-opacity:1;stroke:none;stroke-width:3.267;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
id="path16456"
cx="24"
cy="24"
r="16"
sodipodi:insensitive="true" />
<path
id="path12093"
style="fill:none;stroke:#ebdbb2;stroke-width:3.267;stroke-linecap:round;stroke-linejoin:round"
d="M 40,24 C 40,32.836556 32.836556,40 24,40 15.163444,40 8,32.836556 8,24 8,15.163444 15.163444,8 24,8 c 5.6,0 8,2.4 8,2.4 L 26.4,12.8 32,10.4 29.6,4.8"
sodipodi:nodetypes="cssccccc" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

View file

@ -1,54 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="48.0px"
height="48.0px"
viewBox="0 0 48.0 48.0"
version="1.1"
id="SVGRoot"
sodipodi:docname="shutdown.svg"
inkscape:version="1.2.1 (9c6d41e410, 2022-07-14)"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<sodipodi:namedview
id="namedview27"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:showpageshadow="2"
inkscape:pageopacity="0.0"
inkscape:pagecheckerboard="0"
inkscape:deskcolor="#d1d1d1"
showgrid="true"
inkscape:zoom="18.145833"
inkscape:cx="5.6762342"
inkscape:cy="20.335247"
inkscape:window-width="2528"
inkscape:window-height="1006"
inkscape:window-x="14"
inkscape:window-y="58"
inkscape:window-maximized="1"
inkscape:current-layer="layer1">
<inkscape:grid
type="xygrid"
id="grid1274"
spacingx="0.8"
spacingy="0.8" />
</sodipodi:namedview>
<defs
id="defs1284" />
<g
id="layer1">
<path
id="path4836"
style="color:#000000;fill:#ebdbb2;fill-rule:evenodd"
d="M 20.800781 6.6582031 C 12.601924 8.1680614 6.3671875 15.372547 6.3671875 24 C 6.3671875 33.719345 14.280655 41.632812 24 41.632812 C 33.719345 41.632812 41.632812 33.719345 41.632812 24 C 41.632812 15.372547 35.398076 8.1680614 27.199219 6.6582031 L 27.199219 9.9882812 C 33.604954 11.436989 38.367188 17.146663 38.367188 24 C 38.367188 31.953731 31.953731 38.367188 24 38.367188 C 16.046269 38.367188 9.6328125 31.953731 9.6328125 24 C 9.6328125 17.146663 14.395046 11.436989 20.800781 9.9882812 L 20.800781 6.6582031 z " />
<path
style="fill:none;stroke:#ebdbb2;stroke-width:3.267;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
d="m 24,22.4 c 0,-16 0,-16 0,-16 v 0"
id="path5670" />
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

View file

Before

Width:  |  Height:  |  Size: 8.4 MiB

After

Width:  |  Height:  |  Size: 8.4 MiB

File diff suppressed because it is too large Load diff

Binary file not shown.

View file

@ -1,18 +0,0 @@
device_name = "Apple Inc. Apple Internal Keyboard / Trackpad"
[[remap]]
input = [ "KEY_RIGHTMETA" ]
output = [ "KEY_SPACE" ]
[[remap]]
input = [ "KEY_Y" ]
output = [ "KEY_Z" ]
[[remap]]
input = [ "KEY_Z" ]
output = [ "KEY_Y" ]
[[dual_role]]
input = "KEY_CAPSLOCK"
hold = ["KEY_LEFTCTRL"]
tap = ["KEY_ESC"]

View file

@ -1,79 +0,0 @@
* {
background-color: #282828;
text-color: #ebdbb2;
}
window {
width: 1024px;
background-color: #1d2021;
border-radius: 12px;
}
mainbox {
spacing: 0px;
children: [inputbar,listview];
}
element {
background: #1d2021;
children: [ element-icon, element-text ];
}
element,element-text,element-icon, button {
cursor: pointer;
}
inputbar {
margin: 0px 0px 0.5em 0em;
spacing: 0.4em;
background-color: #1d2021;
children: [entry,overlay];
}
listview, inputbar, message {
columns: 5;
lines: 3;
}
listview {
padding: 20px;
border-radius: inherit;
}
element {
border: 0;
padding: 10px;
font: "Atkinson Hyperlegible 8";
orientation: vertical;
border-radius: 10px;
}
element-icon {
padding: 1.5em 1.5em 0.5em;
size: 4.5em;
}
element selected {
background-color: #1d2021;
}
element-text {
padding: 0 0 7px 0;
}
element-text selected, element-icon selected {
background-color: #1d2021;
}
element-text, element-icon {
font-size: 2em;
font: "Atkinson Hyperlegible";
horizontal-align: 0.5;
}
entry {
padding: 15px;
background-color: #1d2021;
}

View file

@ -1,35 +0,0 @@
{pkgs, ...}:
pkgs.writeShellScriptBin "desktopctl" ''
case $@ in
"Lock Screen")
loginctl lock-session
exit 0
;;
"Log Out")
pkill xmonad
exit 0
;;
"Shut Down")
shutdown now
exit 0
;;
"Reboot")
systemctl reboot
exit 0
;;
esac
# resizes grid
echo -en "\0theme\x1flistview,inputbar,message{columns:4;lines:1;}\n"
# resizes window, moves it to top of screen, adjusts rounded corners
echo -en "\0theme\x1fwindow{width:800px;location:north;y-offset:24px;border-radius:0 0 12px 12px;}\n"
# swaps grid and input bar
echo -en "\0theme\x1fmainbox{children:[listview,inputbar];}\n"
# fixes brown line below input bar
echo -en "\0theme\x1finputbar{margin:0;}\n"
echo -en "Lock Screen\0icon\x1f${../../../other/assets/desktopctl/lock-screen.svg}\n"
echo -en "Log Out\0icon\x1f${../../../other/assets/desktopctl/logout.svg}\n"
echo -en "Shut Down\0icon\x1f${../../../other/assets/desktopctl/shutdown.svg}\n"
echo -en "Reboot\0icon\x1f${../../../other/assets/desktopctl/reboot.svg}\n"
''

View file

@ -1,9 +0,0 @@
mkdir -p $HOME/xmacros
register=$(ls $HOME/xmacros | rofi -dmenu)
count=$(echo "2;5;10;20;50;100" | rofi -dmenu -sep ";" -l 5)
for i in $(seq $count); do
echo $i
xmacroplay "$DISPLAY" < $HOME/xmacros/$register
done

View file

@ -1,5 +0,0 @@
mkdir -p $HOME/xmacros
register=$(ls $HOME/xmacros | rofi -dmenu)
xmacroplay "$DISPLAY" < $HOME/xmacros/$register

View file

@ -1,5 +0,0 @@
mkdir -p $HOME/xmacros
register=$(ls $HOME/xmacros | rofi -dmenu)
xmacrorec2 > $HOME/xmacros/$register

View file

@ -1,87 +0,0 @@
# Copy-pasted from https://raw.githubusercontent.com/BarbUk/menu-qalc/master/%3D
# I hope this is even legal but OH WELL
# https://github.com/onespaceman/menu-calc
# Calculator for use with rofi/dmenu(2)
# Copying to the clipboard requires xclip
usage() {
echo "$(tput bold)menu-calc$(tput sgr0)"
echo "A calculator for Rofi/dmenu(2)"
echo
echo "$(tput bold)Usage:$(tput sgr0)"
echo " = 4+2"
echo " = (4+2)/(4+3)"
echo " = 4^2"
echo " = sqrt(4)"
echo " = c(2)"
echo
echo "$(tput bold)Force Rofi/dmenu(2):$(tput sgr0)"
echo "By default, if rofi exists, it will be used. To force menu-calc to"
echo "use one or the other, use the --dmenu argument"
echo
echo " = --dmenu=<dmenu_executable>"
echo
echo "$(tput bold)Passing arguments to Rofi/dmenu(2):$(tput sgr0)"
echo "Any parameters after ' -- ' will be passed to Rofi/dmenu(2)."
echo
echo " = -- <Rofi/dmenu(2) args>"
echo
echo "The answer can be copied to the clipboard and used for further calculations inside (or outside) Rofi/dmenu."
echo
echo "If launched outside of Rofi/dmenu the expression may need quotation marks."
exit
}
# Process CLI parameters
for var in "$@"
do
case $var in
-h|--help) usage ;;
-d=*|--dmenu=*)
menu=$(echo $var | cut -d'=' -f 2);
;;
--) break ;;
esac
done
# Grab the answer
if [ -n "$1" ]; then
answer=$(echo "$1" | qalc +u8 -color=never -terse | awk '!/^>/ && !/^$/ {gsub(/^[ \t]+|[ \t]+$/, "", $0); print}')
fi
# Path to menu application
if [ -z "${menu+1}" ]; then
if [[ -n $(command -v rofi) ]]; then
menu="$(command -v rofi)"
elif [[ -n $(command -v dmenu) ]]; then
menu=$(command -v dmenu)
else
>&2 echo "Rofi or dmenu not found"
exit
fi
fi
# If using rofi, add the necessary parameters
if [[ $menu == "rofi" || $menu == $(command -v rofi) ]]; then
menu="$menu -dmenu -lines 3"
elif [[ $menu == "dmenu" || $menu == $(command -v dmenu) ]]; then
menu="$menu ""$DMENU_OPTIONS"
fi
# Determine args to pass to dmenu/rofi
while [[ $# -gt 0 && $1 != "--" ]]; do
shift
done
[[ $1 == "--" ]] && shift
action=$(echo -e "Copy to clipboard\nClear\nClose" | $menu "$@" -p "= $answer")
case $action in
"Clear") $0 ;;
"Copy to clipboard") echo -n "$answer" | xclip -selection clipboard ;;
"Close") ;;
"") ;;
*) $0 "$answer $action" "--dmenu=$menu" "--" "$@" ;;
esac

View file

@ -1,27 +0,0 @@
langs="eng deu spa osd"
langs=$(tesseract --list-langs | tail +2)
first_menu="$langs exit"
selection_menu1=$(echo $first_menu | rofi -sep " " -dmenu)
tmp_img=`mktemp`
trap "rm $tmp_img*" EXIT
echo $selection_menu1
case $selection_menu1 in
"eng"|"deu"|"spa"|"osd"|"fra")
tesseract_lang=$selection_menu1
flameshot gui -p $tmp_img.png -d 100
mogrify -modulate 100,0 -resize 400% $tmp_img.png
;;
"exit")
exit
;;
esac
tesseract $tmp_img.png $tmp_img
cat $tmp_img
xclip -i $tmp_img -selection clipboard
exit

View file

@ -1,19 +0,0 @@
#!/usr/bin/env nu
def main [ ] {
let reg = (
xwininfo -id (xdotool getactivewindow)
| lines
| parse '{key}: {value}'
| str trim
| get value
| echo {
x: $in.1
y: $in.2
w: $in.5
h: $in.6
}
);
flameshot gui --region $"($reg.w)x($reg.h)+($reg.x)+($reg.y)" -c -p ~/Pictures/screenshots
}

View file

@ -1,8 +0,0 @@
unset x y w h
eval $(xwininfo -id $(xdotool getactivewindow) |
sed -n -e "s/^ \+Absolute upper-left X: \+\([0-9]\+\).*/x=\1/p" \
-e "s/^ \+Absolute upper-left Y: \+\([0-9]\+\).*/y=\1/p" \
-e "s/^ \+Width: \+\([0-9]\+\).*/w=\1/p" \
-e "s/^ \+Height: \+\([0-9]\+\).*/h=\1/p" )
echo -n "$x $y $w $h"
flameshot gui --region "${w}x${h}+${x}+${y}" -c -p ~/Pictures/screenshots/