move to hyprland

This commit is contained in:
krolxon 2025-08-03 21:29:53 +05:30
parent 216cf47a22
commit 3718ac5eb3
21 changed files with 881 additions and 377 deletions

View File

@ -1,60 +0,0 @@
# New Start: A modern Arch workflow built with an emphasis on functionality.
# Copyright (C) 2018 Donovan Glover
# NOTE: This file is automatically generated by pywal. Do not edit it by hand.
[global]
# Make the width 3740 (3840 - 100), have 50 left margin and 95 above
# geometry = "3740x5-50+95"
offset = 3x20
# Show multiple notifications in the same box
separator_height = 0
# Add vertical padding to the inside of the notification
padding = 8
# Add horizontal padding for when the text gets long enough
horizontal_padding = 8
# The frame color and width of the notification
frame_color = "#224487"
frame_width = 2
# How long a user needs to be idle for sticky notifications
idle_threshold = 120
# Font and typography settings
font = JetbrainsMono Nerd Font 10
alignment = left
word_wrap = yes
# Format for how notifications will be displayed
# Usage: `notify-send 'Title' 'Summary'`
format = "<b>%s</b>\n%b"
# Allow some HTML tags like <i> and <u> in notifications
markup = full
max_icon_size = 120
transparency = 5
# These are the keybindings used to control dunst notifications
[shortcuts]
close = ctrl+space
close_all = ctrl+shift+space
history = ctrl+grave
# Set the background and foreground (text) color for all notifications
[urgency_low]
background = "#000000"
foreground = "#ffffff"
[urgency_normal]
background = "#000000"
foreground = "#ffffff"
[urgency_critical]
background = "#000000"
foreground = "#ffffff"
# vim:ft=cfg

296
.config/hypr/hyprland.conf Normal file
View File

@ -0,0 +1,296 @@
autogenerated = 0
env = HYPRSHOT_DIR,/home/krolyxon/pix/ss/
plugin {
split-monitor-workspaces {
count = 10
keep_focused = 1
enable_notifications = 0
enable_persistent_workspaces = 1
}
}
# This is an example Hyprland config file.
# Refer to the wiki for more information.
# https://wiki.hypr.land/Configuring/
# Please note not all available settings / options are set here.
# For a full list, see the wiki
# You can split this configuration into multiple files
# Create your files separately and then link them to this file like this:
source = ~/.config/hypr/monitors.conf
###################
### MY PROGRAMS ###
###################
# See https://wiki.hypr.land/Configuring/Keywords/
# Set programs that you use
$terminal = alacritty
$fileManager = pcmanfm
# $menu = rofi -show drun
$menu = wofi --show drun
$browser = brave
#################
### AUTOSTART ###
#################
# Autostart necessary processes (like notifications daemons, status bars, etc.)
# Or execute your favorite apps at launch like this:
exec-once = hyprpm reload -n
exec-once = waybar & hyprpaper & swaync & hyprsunset
exec-once = systemctl --user start hyprpolkitagent
plugin {
hyprsplit {
num_workspaces = 10
persistent_workspaces = true
}
}
#############################
### ENVIRONMENT VARIABLES ###
#############################
# See https://wiki.hypr.land/Configuring/Environment-variables/
env = XCURSOR_SIZE,24
env = HYPRCURSOR_SIZE,24
###################
### PERMISSIONS ###
###################
# See https://wiki.hypr.land/Configuring/Permissions/
# Please note permission changes here require a Hyprland restart and are not applied on-the-fly
# for security reasons
# ecosystem {
# enforce_permissions = 1
# }
# permission = /usr/(bin|local/bin)/grim, screencopy, allow
# permission = /usr/(lib|libexec|lib64)/xdg-desktop-portal-hyprland, screencopy, allow
# permission = /usr/(bin|local/bin)/hyprpm, plugin, allow
#####################
### LOOK AND FEEL ###
#####################
# Refer to https://wiki.hypr.land/Configuring/Variables/
# https://wiki.hypr.land/Configuring/Variables/#general
general {
gaps_in = 10
gaps_out = 10
border_size = 2
resize_on_border = false
allow_tearing = false
col.active_border = rgba(1b9993ee)
col.inactive_border = rgba(888e8eaa)
layout = master
}
# https://wiki.hypr.land/Configuring/Variables/#decoration
decoration {
rounding = 0
blur {
enabled = true
size = 3
passes = 1
}
# drop_shadow = yes
# shadow_range = 4
# shadow_render_power = 3
# col.shadow = rgba(1a1a1aee)
}
# https://wiki.hypr.land/Configuring/Variables/#animations
animations {
enabled = yes
bezier = myBezier, 0.05, 0.9, 0.1, 1.05
animation = windows, 1, 7, myBezier
animation = windowsOut, 1, 7, default, popin 80%
animation = border, 1, 10, default
animation = borderangle, 1, 8, default
animation = fade, 1, 7, default
animation = workspaces, 1, 6, default
}
# Ref https://wiki.hypr.land/Configuring/Workspace-Rules/
# "Smart gaps" / "No gaps when only"
# uncomment all if you wish to use that.
# workspace = w[tv1], gapsout:0, gapsin:0
# workspace = f[1], gapsout:0, gapsin:0
# windowrule = bordersize 0, floating:0, onworkspace:w[tv1]
# windowrule = rounding 0, floating:0, onworkspace:w[tv1]
# windowrule = bordersize 0, floating:0, onworkspace:f[1]
# windowrule = rounding 0, floating:0, onworkspace:f[1]
# See https://wiki.hypr.land/Configuring/Dwindle-Layout/ for more
dwindle {
pseudotile = true# Master switch for pseudotiling. Enabling is bound to mainMod + P in the keybinds section below
preserve_split = true # You probably want this
}
# See https://wiki.hypr.land/Configuring/Master-Layout/ for more
master {
new_status = master
# new_on_top = true
}
# https://wiki.hypr.land/Configuring/Variables/#misc
misc {
force_default_wallpaper = -1 # Set to 0 or 1 to disable the anime mascot wallpapers
disable_hyprland_logo = true# If true disables the random hyprland logo / anime girl background. :(
}
#############
### INPUT ###
#############
# https://wiki.hypr.land/Configuring/Variables/#input
input {
kb_layout = us
kb_variant =
kb_model =
kb_options =
kb_rules =
follow_mouse = 1
sensitivity = 0 # -1.0 - 1.0, 0 means no modification.
touchpad {
natural_scroll = false
}
repeat_delay = 300
repeat_rate = 50
}
# https://wiki.hypr.land/Configuring/Variables/#gestures
gestures {
workspace_swipe = false
}
# Example per-device config
# See https://wiki.hypr.land/Configuring/Keywords/#per-device-input-configs for more
device {
name = epic-mouse-v1
sensitivity = -0.5
}
###################
### KEYBINDINGS ###
###################
# See https://wiki.hypr.land/Configuring/Keywords/
$mainMod = SUPER # Sets "Windows" key as main modifier
# Example binds, see https://wiki.hypr.land/Configuring/Binds/ for more
bind = $mainMod, Return, exec, $terminal
bind = $mainMod SHIFT, X, killactive,
bind = $mainMod SHIFT, Q, exit,
bind = $mainMod, F, Fullscreen
bind = $mainMod SHIFT, R, togglefloating,
bind = $mainMod, R, exec, $menu
bind = $mainMod SHIFT, P, pseudo, # dwindle
bind = $mainMod, J, togglesplit, # dwindle
bind = $mainMod, tab, cyclenext
bind = $mainMod, b, exec, killall waybar || waybar
# Applications
bind = $mainMod, W, exec, $browser
# Music Controls
bind = $mainMod, m, exec, $terminal -e "ncmpcpp"
bind = $mainMod, p, exec, mpc toggle
bind = $mainMod, comma, exec, mpc seek -10
bind = $mainMod, period, exec, mpc seek -10
# Move focus with mainMod + arrow keys
bind = $mainMod, h, movefocus, l
bind = $mainMod, j, movefocus, r
bind = $mainMod, k, movefocus, u
bind = $mainMod, l, movefocus, d
# Switch workspaces with mainMod + [0-9]
bind = $mainMod, 1, split-workspace, 1
bind = $mainMod, 2, split-workspace, 2
bind = $mainMod, 3, split-workspace, 3
bind = $mainMod, 4, split-workspace, 4
bind = $mainMod, 5, split-workspace, 5
bind = $mainMod, 6, split-workspace, 6
bind = $mainMod, 7, split-workspace, 7
bind = $mainMod, 8, split-workspace, 8
bind = $mainMod, 9, split-workspace, 9
bind = $mainMod, 0, split-workspace, 10
# Move active window to a workspace with mainMod + SHIFT + [0-9]
bind = $mainMod SHIFT, 1, split-movetoworkspace, 1
bind = $mainMod SHIFT, 2, split-movetoworkspace, 2
bind = $mainMod SHIFT, 3, split-movetoworkspace, 3
bind = $mainMod SHIFT, 4, split-movetoworkspace, 4
bind = $mainMod SHIFT, 5, split-movetoworkspace, 5
bind = $mainMod SHIFT, 6, split-movetoworkspace, 6
bind = $mainMod SHIFT, 7, split-movetoworkspace, 7
bind = $mainMod SHIFT, 8, split-movetoworkspace, 8
bind = $mainMod SHIFT, 9, split-movetoworkspace, 9
bind = $mainMod SHIFT, 0, split-movetoworkspace, 10
# Example special workspace (scratchpad)
bind = $mainMod, S, togglespecialworkspace, magic
bind = $mainMod SHIFT, S, movetoworkspace, special:magic
# Scroll through existing workspaces with mainMod + scroll
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1
# Move/resize windows with mainMod + LMB/RMB and dragging
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
# Laptop multimedia keys for volume and LCD brightness
bindel = ,XF86AudioRaiseVolume, exec, wpctl set-volume -l 1 @DEFAULT_AUDIO_SINK@ 5%+
bindel = ,XF86AudioLowerVolume, exec, wpctl set-volume @DEFAULT_AUDIO_SINK@ 5%-
bindel = ,XF86AudioMute, exec, wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle
bindel = ,XF86AudioMicMute, exec, wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle
bindel = ,XF86MonBrightnessUp, exec, brightnessctl -e4 -n2 set 5%+
bindel = ,XF86MonBrightnessDown, exec, brightnessctl -e4 -n2 set 5%-
# Requires playerctl
bindl = , XF86AudioNext, exec, playerctl next
bindl = , XF86AudioPause, exec, playerctl play-pause
bindl = , XF86AudioPlay, exec, playerctl play-pause
bindl = , XF86AudioPrev, exec, playerctl previous
##############################
### WINDOWS AND WORKSPACES ###
##############################
# See https://wiki.hypr.land/Configuring/Window-Rules/ for more
# See https://wiki.hypr.land/Configuring/Workspace-Rules/ for workspace rules
# Example windowrule
# windowrule = float,class:^(kitty)$,title:^(kitty)$
# Ignore maximize requests from apps. You'll probably like this.
windowrule = suppressevent maximize, class:.*
# Fix some dragging issues with XWayland
windowrule = nofocus,class:^$,title:^$,xwayland:1,floating:1,fullscreen:0,pinned:0

125
.config/hypr/hyprlock.conf Normal file
View File

@ -0,0 +1,125 @@
# BACKGROUND
background {
monitor =
path = ~/.config/hypr/hyprlock.png
blur_passes = 0
contrast = 0.8916
brightness = 0.8916
vibrancy = 0.8916
vibrancy_darkness = 0.0
}
# GENERAL
general {
no_fade_in = false
grace = 0
disable_loading_bar = false
}
# Profie-Photo
image {
monitor =
path = $HOME/.config/hypr/thunder.png
border_size = 2
border_color = rgba(216, 222, 233, 0.80)
size = 100
rounding = -1
rotate = 0
reload_time = -1
reload_cmd =
position = 25, 200
halign = center
valign = center
}
# NAME
label {
monitor =
text = THUNDER
color = rgba(216, 222, 233, 0.80)
outline_thickness = 0
dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true
font_size = 20
font_family = SF Pro Display Bold
position = 25, 110
halign = center
valign = center
}
# Time
label {
monitor =
text = cmd[update:1000] echo "<span>$(date +"%I:%M")</span>"
color = rgba(216, 222, 233, 0.80)
font_size = 60
font_family = SF Pro Display Bold
position = 30, -8
halign = center
valign = center
}
# Day-Month-Date
label {
monitor =
text = cmd[update:1000] echo -e "$(date +"%A, %B %d")"
color = rgba(216, 222, 233, .80)
font_size = 19
font_family = SF Pro Display Bold
position = 35, -60
halign = center
valign = center
}
# USER-BOX
shape {
monitor =
size = 320, 55
color = rgba(255, 255, 255, 0.1)
rounding = -1
border_size = 0
border_color = rgba(255, 255, 255, 1)
rotate = 0
xray = false # if true, make a "hole" in the background (rectangle of specified size, no rotation)
position = 34, -190
halign = center
valign = center
}
# USER
label {
monitor =
text =  $USER
color = rgba(216, 222, 233, 0.80)
outline_thickness = 0
dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true
font_size = 16
font_family = SF Pro Display Bold
position = 38, -190
halign = center
valign = center
}
# INPUT FIELD
input-field {
monitor =
size = 320, 55
outline_thickness = 0
dots_size = 0.2 # Scale of input-field height, 0.2 - 0.8
dots_spacing = 0.2 # Scale of dots' absolute size, 0.0 - 1.0
dots_center = true
outer_color = rgba(255, 255, 255, 0)
inner_color = rgba(255, 255, 255, 0.1)
font_color = rgb(200, 200, 200)
fade_on_empty = false
font_family = SF Pro Display Bold
placeholder_text = <i><span foreground="##ffffff99">🔒 Enter Pass</span></i>
hide_input = false
position = 34, -268
halign = center
valign = center
}

View File

@ -0,0 +1,2 @@
preload = ~/pix/wallpapers/morpheus-red-pill-blue-pill.jpg
wallpaper = ,~/pix/wallpapers/morpheus-red-pill-blue-pill.jpg

View File

@ -0,0 +1,12 @@
max-gamma = 150
profile {
time = 7:30
identity = true
}
profile {
time = 21:00
temperature = 5500
gamma = 0.8
}

145
.config/waybar/config.jsonc Normal file
View File

@ -0,0 +1,145 @@
{
// "layer": "top", // Waybar at top layer
"position": "top", // Waybar position (top|bottom|left|right)
"height": 0, // Waybar height (to be removed for auto height)
"width": 0, // Waybar width (0 == auto)
"spacing": 0, // Gaps between modules
// "output": ["HDMI-A-1", "DP-2", "eDP-1"],
// Choose the order of the modules
"modules-left": [
"hyprland/workspaces"
// "hyprland/window",
],
"modules-center" : [
],
"modules-right": [
"mpd",
"pulseaudio",
"battery",
"cpu",
"memory",
"network",
"custom/date",
"clock",
"tray",
],
// Modules configuration
"hyprland/workspaces": {
"format": "{icon}",
"format-icons": {
"1": "",
"2": "",
"3": "",
"4": "",
"5": "",
"6": "",
"7": "",
"8": "",
"9": "",
"10": "",
"11": "",
"12": "",
"13": "",
"14": "",
"15": "",
"16": "",
"17": "",
"18": "",
"19": "",
"20": "",
"urgent": "",
// "active": "", // focused workspace on current monitor
// "visible": "", // focused workspace on other monitors
// "default": "",
// "default": "", // focused workspace on current monitor
// "empty": "" // persistent
},
"on-scroll-up": "hyprctl dispatch workspace r-1",
"on-scroll-down": "hyprctl dispatch workspace r+1",
"all-outputs": false,
"show-special": false
},
"tray": {
"icon-size": 21,
"spacing": 12
},
"clock": {
"timezone": "Asia/Kolkata",
"tooltip-format": "<tt><big>{calendar}</big></tt>",
"format": "󰥔 {:%H:%M}",
"interval": 5
},
"custom/date": {
"timezone": "Asia/Kolkata",
"exec": "date +'%a %Y-%m-%d'",
"format": "󰃭 {}",
"interval": 1,
"tooltip": false
},
"cpu": {
"format": " {usage:2}%",
"tooltip": false,
"interval": 1
},
"memory": {
"format": " {:2}%",
"interval": 1
},
"network": {
"interval": 5,
"format-wifi": " {essid} ({signalStrength}%)", // Icon: wifi
"format-ethernet": " {ifname}: {ipaddr}/{cidr}", // Icon: ethernet
"format-disconnected": "⚠ Disconnected",
"tooltip-format": "{ifname}: {ipaddr}"
},
"battery": {
"states": {
"good": 90,
"warning": 30,
"critical": 15
},
"format": "{icon} {capacity:3}%",
"format-charging": "󰂄 {capacity:3}%",
"format-plugged": " {capacity:3}%",
"format-alt": "{icon} ",
"format-good": "{icon} {capacity:3}%",
"format-full": "{icon} {capacity:3}%",
"format-icons": [
"",
"",
"",
"",
""
]
},
"pulseaudio": {
"scroll-step": 1, // %, can be a float
"format": "{volume:2}% {icon} {format_source}",
"format-muted": "{volume:2}% 󰝟 {format_source}",
"format-bluetooth": "{volume:2}% {icon}  {format_source}",
"format-source": "",
"format-source-muted": "",
"format-icons": {
"analog": "",
"hdmi": "󰓃",
"headphone": "",
"headset": "󰋎",
"default": [
"", // 0 - 25
"", // 25 - 50
"", // 50 - 75
"" // 75 - 100
]
},
"on-click": "pavucontrol",
},
"mpd": {
"format": "Playing ",
"format-paused": "Paused ",
"format-stopped": "Stopped ",
"max-length": 20,
"tooltip": false,
"tooltip-format": "{title}\n{artist}\n{album}",
"tooltip": true
},
}

301
.config/waybar/style.css Normal file
View File

@ -0,0 +1,301 @@
* {
/* `otf-font-awesome` is required to be installed for icons */
font-family: JetBrains Mono Nerd Font, FontAwesome;
font-size: 13px;
font-weight: bold;
}
window#waybar {
background-color: rgba(0, 0, 0, 0);
color: #e3e3e3;
transition-property: background-color;
transition-duration: .5s;
border: none;
border-radius: 0;
}
/**************/
/* Workspaces */
/**************/
#workspaces {
/* border-radius: 8px; */
padding: 0 3px 0 8px;
margin: 5px 5px 5px 0;
transition: all 0.2s ease;
}
/* non-empty workspaces */
#workspaces button {
background-color: #2e3440;
border: none;
border-radius: 0;
color: #d8dee9;
transition: all 0.2s ease;
text-shadow: none;
/* center the icon, no clue why this is necessary */
padding-left: 5px;
padding-right: 10px;
padding-top: 1px;
box-shadow: inset 0 -2px #eceff4;
}
/* the first and last buttons should be rounded */
#workspaces button:first-child {
border-top-left-radius: 8px;
border-bottom-left-radius: 8px;
}
#workspaces button:last-child {
border-top-right-radius: 8px;
border-bottom-right-radius: 8px;
}
#workspaces button:hover {
transition-duration: .2s;
color: #2e3440;
box-shadow: inset 0 -3px #ffffff;
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
text-shadow: inherit;
}
/* non-empty persistent workspaces */
#workspaces button.persistent {
background-color: #4c566a;
}
/* empty persistent workspaces */
#workspaces button.empty {
background-color: #2e3440;
box-shadow: none;
}
/* active or visible workspaces */
#workspaces button.active,
#workspaces button.visible {
background-color: #4c566a;
/* box-shadow: inset 0 -4px #eceff4; */
}
#workspaces button.urgent {
color: #bf616a;
}
/**************/
#mode {
background-color: #64727D;
border-bottom: 3px solid #ffffff;
}
#clock,
#custom-date,
#battery,
#cpu,
#memory,
#disk,
#temperature,
#backlight,
#network,
#pulseaudio,
#wireplumber,
#mpris,
#custom-media,
#tray,
#custom-notification,
#mpd {
background-color: #2e3440;
border-radius: 8px;
padding: 0 12px 0 12px;
margin: 5px 5px 5px 0;
}
/* If workspaces is the leftmost module, omit left margin */
.modules-left>widget:first-child>#workspaces {
margin-left: 0;
}
/* If workspaces is the rightmost module, omit right margin */
.modules-right>widget:last-child>#workspaces {
margin-right: 0;
}
#clock {
color: #eceff4;
}
#custom-date {
color: #b48ead;
}
#battery {
color: #ebcb8b;
}
@keyframes blink {
to {
background-color: #ffffff;
color: black;
}
}
#battery.critical:not(.charging) {
background-color: #bf616a;
color: #ffffff;
animation-name: blink;
animation-duration: 0.5s;
animation-timing-function: linear;
animation-iteration-count: infinite;
animation-direction: alternate;
}
label:focus {
background-color: black;
}
#cpu {
color: #bf616a;
}
#memory {
color: #a3be8c;
}
/* #disk {
background-color: #964B00;
} */
/* #backlight {
background-color: #90b1b1;
} */
#network {
color: #5e81ac;
}
#network.disconnected {
color: #81a1c1;
}
#network.linked {
color: #bf616a;
}
#pulseaudio {
color: #d8dee9;
}
#mpris,
#custom-media {
background-color: #66cc99;
color: black;
}
#mpris.firefox,
#custom-media.firefox {
background-color: #FF9500;
color: black;
}
#mpris.spotify,
#custom-media.spotify {
background-color: #66cc99;
color: #191414;
}
#mpris.vlc,
#custom-media.vlc {
background-color: #E85E00;
color: black;
}
#mpris.jellyfin,
#custom-media.jellyfin {
/* https://jellyfin.org/docs/general/contributing/branding */
color: #000B25;
background-color: #AA5CC3;
}
#temperature {
color: #d08770;
}
#temperature.critical {
color: #bf616a;
}
#tray {
color: #eceff4;
}
#tray>.passive {
-gtk-icon-effect: dim;
}
#tray>.needs-attention {
-gtk-icon-effect: highlight;
background-color: #bf616a;
}
/* #idle_inhibitor {
background-color: #2d3436;
} */
/* #idle_inhibitor.activated {
background-color: #ecf0f1;
color: #2d3436;
} */
/* #mpd {
background-color: #66cc99;
color: #2a5c45;
}
#mpd.disconnected {
background-color: #bf616a;
}
#mpd.stopped {
background-color: #90b1b1;
}
#mpd.paused {
background-color: #51a37a;
} */
/* #language {
background: #00b093;
color: #740864;
padding: 0 5px;
margin: 0 5px;
min-width: 16px;
} */
/* #keyboard-state {
background: #97e1ad;
color: black;
padding: 0 0px;
margin: 0 5px;
min-width: 16px;
}
#keyboard-state > label {
padding: 0 5px;
}
#keyboard-state > label.locked {
background: rgba(0, 0, 0, 0.2);
}
#scratchpad {
background: rgba(0, 0, 0, 0.2);
}
#scratchpad.empty {
background-color: transparent;
} */

View File

@ -1,23 +0,0 @@
#!/bin/sh
#setwall &
if [ $(envycontrol -q) = "nvidia" ]; then
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
xrandr --dpi 96
fi
# xwallpaper --zoom ~/.local/share/wallpaper3.jpg
# xwallpaper --zoom $(find .local/share/wallpapers -type f | shuf -n 1)
xwallpaper --zoom $(find pix/wallpapers -type f | grep "jpg" | shuf -n 1)
xcompmgr &
xset r rate 300 50
xrandr -r 60.00
unclutter &
dwmblocks &
dunst &
backlight_control 20 &
redshift &
# exec dwm > /dev/null 2>&1
while type dwm > /dev/null ; do dwm && continue || break ; done

Binary file not shown.

View File

@ -1,123 +0,0 @@
#!/bin/sh
# Usage:
# `$0`: Ask for recording type via dmenu
# `$0 screencast`: Record both audio and screen
# `$0 video`: Record only screen
# `$0 audio`: Record only audio
# `$0 kill`: Kill existing recording
#
# If there is already a running instance, user will be prompted to end it.
getdim() { xrandr | grep -oP '(?<=current ).*(?=,)' | tr -d ' ' ;}
updateicon() { \
echo "$1" > /tmp/recordingicon
pkill -RTMIN+9 "${STATUSBAR:-dwmblocks}"
}
killrecording() {
recpid="$(cat /tmp/recordingpid)"
kill -15 "$recpid"
rm -f /tmp/recordingpid
updateicon ""
pkill -RTMIN+9 "${STATUSBAR:-dwmblocks}"
}
screencast() { \
ffmpeg -y \
-f x11grab \
-framerate 30 \
-s "$(getdim)" \
-i "$DISPLAY" \
-r 24 \
-use_wallclock_as_timestamps 1 \
-f alsa -thread_queue_size 1024 -i default \
-c:v h264 \
-crf 0 -preset ultrafast -c:a aac \
"$HOME/screencast-$(date '+%y%m%d-%H%M-%S').mp4" &
echo $! > /tmp/recordingpid
updateicon "⏺️🎙️"
}
video() { ffmpeg \
-f x11grab \
-framerate 30 \
-s "$(getdim)" \
-i "$DISPLAY" \
-c:v libx264 -qp 0 -r 30 \
"$HOME/video-$(date '+%y%m%d-%H%M-%S').mkv" &
echo $! > /tmp/recordingpid
updateicon "⏺️"
}
webcamhidef() { ffmpeg \
-f v4l2 \
-i /dev/video0 \
-video_size 1920x1080 \
"$HOME/webcam-$(date '+%y%m%d-%H%M-%S').mkv" &
echo $! > /tmp/recordingpid
updateicon "🎥"
}
webcam() { ffmpeg \
-f v4l2 \
-i /dev/video0 \
-video_size 640x480 \
"$HOME/webcam-$(date '+%y%m%d-%H%M-%S').mkv" &
echo $! > /tmp/recordingpid
updateicon "🎥"
}
audio() { \
ffmpeg \
-f alsa -i default \
-c:a flac \
"$HOME/audio-$(date '+%y%m%d-%H%M-%S').flac" &
echo $! > /tmp/recordingpid
updateicon "🎙️"
}
askrecording() { \
choice=$(printf "screencast\\nvideo\\nvideo selected\\naudio\\nwebcam\\nwebcam (hi-def)" | dmenu -i -p "Select recording style:")
case "$choice" in
screencast) screencast;;
audio) audio;;
video) video;;
*selected) videoselected;;
webcam) webcam;;
"webcam (hi-def)") webcamhidef;;
esac
}
asktoend() { \
response=$(printf "No\\nYes" | dmenu -i -p "Recording still active. End recording?") &&
[ "$response" = "Yes" ] && killrecording
}
videoselected()
{
slop -f "%x %y %w %h" > /tmp/slop
read -r X Y W H < /tmp/slop
rm /tmp/slop
ffmpeg \
-f x11grab \
-framerate 30 \
-video_size "$W"x"$H" \
-i :0.0+"$X,$Y" \
-c:v libx264 -qp 0 -r 30 \
"$HOME/box-$(date '+%y%m%d-%H%M-%S').mkv" &
echo $! > /tmp/recordingpid
updateicon "⏺️"
}
case "$1" in
screencast) screencast;;
audio) audio;;
video) video;;
*selected) videoselected;;
kill) killrecording;;
*) ([ -f /tmp/recordingpid ] && asktoend && exit) || askrecording;;
esac

View File

@ -1,14 +0,0 @@
#!/bin/env bash
# Script to run simple .java files.
# because its annoying to have .class files clutter your working directory;
if [ -z $* ]; then
echo "usage: jrun <filename>"
else
filename="${1%.*}"
\cp -f "$1" /tmp/"$1"
javac -d /tmp "$1"
java -cp /tmp "$filename"
fi

View File

@ -1,13 +0,0 @@
#!/bin/sh
ocr_cmd="xclip -sel clip"
case "$(printf "a selected area (copy)\\ncurrent window (copy)\\nfull screen (copy)\\na selected area\\ncurrent window\\nfull screen\\na selected area (OCR)" | dmenu -l 7 -i -p "Screenshot which area?")" in
"a selected area (copy)") maim -u -s | xclip -selection clipboard -t image/png ;;
"current window (copy)") maim -i "$(xdotool getactivewindow)" | xclip -selection clipboard -t image/png ;;
"full screen (copy)") sleep 0.2 ; maim | xclip -selection clipboard -t image/png ;;
"a selected area") maim -u -s ~/pix/ss/pic-selected-$(uuidgen | awk -F- '{printf $2}')-"$(date '+%y-%m-%d').png" ;;
"current window") maim -i "$(xdotool getactivewindow)" ~/pix/ss/pic-window-"$(uuidgen | awk -F- '{printf $2}')-$(date '+%y-%m-%d').png" ;;
"full screen") sleep 0.2 ; maim ~/pix/ss/pic-full-"$(uuidgen | awk -F- '{printf $2}')-$(date '+%y-%m-%d').png" ;;
"a selected area (OCR)") tmpfile=$(mktemp /tmp/ocr-XXXXXX.png) && maim -u -s > "$tmpfile" && tesseract "$tmpfile" - -l eng | ${ocr_cmd} && rm "$tmpfile" ;;
esac

View File

@ -1,68 +0,0 @@
#!/usr/bin/bash
mkdir -p $HOME/.cache/pirokit
if [ -z $1 ]; then
query=$(echo "" | dmenu -p "Search Torrent: ")
else
query=$1
fi
baseurl="https://1337x.to"
cachedir="$HOME/.cache/pirokit"
query="$(sed 's/ /+/g' <<<$query)"
#curl -s https://1337x.to/category-search/$query/Movies/1/ > $cachedir/tmp.html
curl -s https://1337x.to/search/$query/1/ > $cachedir/tmp.html
# Get Titles
grep -o '<a href="/torrent/.*</a>' $cachedir/tmp.html |
sed 's/<[^>]*>//g' > $cachedir/titles.bw
result_count=$(wc -l $cachedir/titles.bw | awk '{print $1}')
if [ "$result_count" -lt 1 ]; then
notify-send "😔 No Result found. Try again 🔴"
exit 0
fi
# Seeders and Leechers
grep -o '<td class="coll-2 seeds.*</td>\|<td class="coll-3 leeches.*</td>' $cachedir/tmp.html |
sed 's/<[^>]*>//g' | sed 'N;s/\n/ /' > $cachedir/seedleech.bw
# Size
grep -o '<td class="coll-4 size.*</td>' $cachedir/tmp.html |
sed 's/<span class="seeds">.*<\/span>//g' |
sed -e 's/<[^>]*>//g' > $cachedir/size.bw
# Links
grep -E '/torrent/' $cachedir/tmp.html |
sed -E 's#.*(/torrent/.*)/">.*/#\1#' |
sed 's/td>//g' > $cachedir/links.bw
# Clearning up some data to display
sed 's/\./ /g; s/\-/ /g' $cachedir/titles.bw |
sed 's/[^A-Za-z0-9 ]//g' | tr -s " " > $cachedir/tmp && mv $cachedir/tmp $cachedir/titles.bw
awk '{print NR " - ["$0"]"}' $cachedir/size.bw > $cachedir/tmp && mv $cachedir/tmp $cachedir/size.bw
awk '{print "[S:"$1 ", L:"$2"]" }' $cachedir/seedleech.bw > $cachedir/tmp && mv $cachedir/tmp $cachedir/seedleech.bw
# Getting the line number
LINE=$(paste -d\ $cachedir/size.bw $cachedir/seedleech.bw $cachedir/titles.bw |
dmenu -i -l 25 |
cut -d\- -f1 |
awk '{$1=$1; print}')
url=$(head -n $LINE $cachedir/links.bw | tail -n +$LINE)
fullURL="${baseurl}${url}/"
# Requesting page for magnet link
curl -s $fullURL > $cachedir/tmp.html
magnet=$(grep -Po "magnet:\?xt=urn:btih:[a-zA-Z0-9]*" $cachedir/tmp.html | head -n 1)
transadd "$magnet"
# Simple notification
notify-send "⬇️ Start downloading File 📁"

View File

@ -1,8 +0,0 @@
#!/bin/env bash
mode=$(autorandr --current)
if [[ $mode = 'hybridnew' ]]; then
alacritty --config-file "$XDG_CONFIG_HOME/alacritty/docked.toml" $*
else
alacritty --config-file "$XDG_CONFIG_HOME/alacritty/normal.toml" $*
fi

View File

@ -1,37 +0,0 @@
#!/bin/sh
# Prints all batteries, their percentage remaining and an emoji corresponding
# to charge status (🔌 for plugged up, 🔋 for discharging on battery, etc.).
case $BLOCK_BUTTON in
3) notify-send "🔋 Battery module" "🔋: discharging
🛑: not charging
♻: stagnant charge
🔌: charging
⚡: charged
❗: battery very low!
- Scroll to change adjust xbacklight." ;;
4) xbacklight -inc 10 ;;
5) xbacklight -dec 10 ;;
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
esac
# Loop through all attached batteries and format the info
for battery in /sys/class/power_supply/BAT?*; do
# If non-first battery, print a space separator.
[ -n "${capacity+x}" ] && printf " "
# Sets up the status and capacity
case "$(cat "$battery/status" 2>&1)" in
"Full") status="⚡" ;;
"Discharging") status="🔋" ;;
"Charging") status="🔌" ;;
"Not charging") status="🛑" ;;
"Unknown") status="♻️" ;;
*) exit 1 ;;
esac
capacity="$(cat "$battery/capacity" 2>&1)"
# Will make a warn variable if discharging and low
[ "$status" = "🔋" ] && [ "$capacity" -le 25 ] && warn="❗"
# Prints the info
printf "[ %s %s%d%% ]" "$status" "$warn" "$capacity"; unset warn
done && printf "\\n"

View File

@ -1,3 +0,0 @@
#!/bin/sh
# date "+[  %a %d %b %Y] [  %I:%M %P ]"
date "+[  %a %d %b %Y] [  %R ]"

View File

@ -1,4 +0,0 @@
#!/bin/sh
# echo "[  $(free --mebi | sed -n '2{p;q}' | awk '{printf ("%2.2fGiB", ( $3 / 1024), ($2 / 1024))}') $(sensors | awk '/Core 0/ {print " " $3}') ]"
echo "[  $(free -h --si | sed -n "2s/\([^ ]* *\)\{2\}\([^ ]*\).*/\2/p")  $(grep -o "^[^ ]*" /proc/loadavg ) ]"

View File

@ -1,8 +0,0 @@
#!/bin/sh
# This loop will update the mpd statusbar module whenever a command changes the
# music player's status. mpd must be running on X's start for this to work.
while : ; do
mpc idle >/dev/null && kill -45 $(pidof dwmblocks) || break
done

View File

@ -1,11 +0,0 @@
#!/bin/sh
filter() { mpc | sed "/^volume:/d;s/\\&/&amp;/g;s/\\[paused\\].*/⏸/g;/\\[playing\\].*/d;/^ERROR/Q" | paste -sd ' ' -;}
pidof -x sb-mpdup >/dev/null 2>&1 || sb-mpdup >/dev/null 2>&1 &
if [ -z "$(filter)" ]; then
echo ""
else
echo "[ $(filter) ]"
fi

View File

@ -1,3 +0,0 @@
#!/bin/sh
echo "[ 󰛀 $(checkupdates | wc -l) ]"

View File

@ -1,2 +0,0 @@
#!/bin/sh
echo [ "$([ "$(pamixer --get-mute)" = "false" ] && printf ' ' || printf ' ')$(pamixer --get-volume)%" ]