Compare commits
75 Commits
52e72da60a
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| 273c4d090c | |||
| a88a419669 | |||
| b5471c5f25 | |||
| 422466e483 | |||
| ee49471228 | |||
| 802f0dd84e | |||
| 5570e58efc | |||
| 5d687eb837 | |||
| e46820b5f7 | |||
| ab9854d12f | |||
| 2e83db4b69 | |||
| b27f3fa744 | |||
| 1c845777e8 | |||
| e1eb5794c5 | |||
| b5f7738df3 | |||
| 6817507506 | |||
| 2a993c2ceb | |||
| e2069193fe | |||
| dc16123c82 | |||
| 641212f0e3 | |||
| 5e57111548 | |||
| 2e148cb31a | |||
| be76b81d6e | |||
| 815c1f4edb | |||
| 6fb2964443 | |||
| 506e8ef15e | |||
| f3f9e58805 | |||
| 966d31c6a8 | |||
| 9e59127cb2 | |||
| 22a684c1a6 | |||
| fd0ccc015b | |||
| fa735bac88 | |||
| 97664054b7 | |||
| b3637e4d6f | |||
| 10939f2ea3 | |||
| 2de91ed77b | |||
| 23bbbbdbe8 | |||
| 3f5b212d37 | |||
| dbeb4d02a4 | |||
| 673748402a | |||
| 605b30c730 | |||
| 41f219ddee | |||
| 645dc16ce1 | |||
| 67109d6f64 | |||
| 4bc5a0a6c0 | |||
| 2aa98a181b | |||
| 99bcc94970 | |||
| 0918d86c6c | |||
| 91e15f6d48 | |||
| 6240282513 | |||
| ca7d4accb9 | |||
| 202a0be14b | |||
| e63ec85def | |||
| 5723a8b677 | |||
| 380b0a9458 | |||
| de78533fde | |||
| 4b1b60b660 | |||
| fa28c3b659 | |||
| e14b863bf3 | |||
| 6a444b9de5 | |||
| 3740b69b53 | |||
| b1863b545a | |||
| 38a5880704 | |||
| 8ca70b0b49 | |||
| 3ceeab3381 | |||
| b20d1f42b0 | |||
| cfda09b38c | |||
| 1688d90998 | |||
| b63ac63104 | |||
| d14e4a633e | |||
| 7d30ecfa29 | |||
| 98ef2af9c6 | |||
| 3fed2b4468 | |||
| 5acc04e361 | |||
| 43994a8cbf |
110
.config/OpenTabletDriver/settings.json
Normal file
110
.config/OpenTabletDriver/settings.json
Normal file
@@ -0,0 +1,110 @@
|
|||||||
|
{
|
||||||
|
"Revision": "0.6.6.2",
|
||||||
|
"Profiles": [
|
||||||
|
{
|
||||||
|
"Tablet": "Wacom PTH-451",
|
||||||
|
"OutputMode": {
|
||||||
|
"Path": "OpenTabletDriver.Desktop.Output.LinuxArtistMode",
|
||||||
|
"Settings": [],
|
||||||
|
"Enable": true
|
||||||
|
},
|
||||||
|
"Filters": [],
|
||||||
|
"AbsoluteModeSettings": {
|
||||||
|
"Display": {
|
||||||
|
"Width": 2560.0,
|
||||||
|
"Height": 1440.0,
|
||||||
|
"X": 1280.0001,
|
||||||
|
"Y": 720.0,
|
||||||
|
"Rotation": 0.0
|
||||||
|
},
|
||||||
|
"Tablet": {
|
||||||
|
"Width": 157.48,
|
||||||
|
"Height": 88.5825,
|
||||||
|
"X": 78.74,
|
||||||
|
"Y": 49.2125,
|
||||||
|
"Rotation": 0.0
|
||||||
|
},
|
||||||
|
"EnableClipping": true,
|
||||||
|
"EnableAreaLimiting": false,
|
||||||
|
"LockAspectRatio": true
|
||||||
|
},
|
||||||
|
"RelativeModeSettings": {
|
||||||
|
"XSensitivity": 10.0,
|
||||||
|
"YSensitivity": 10.0,
|
||||||
|
"RelativeRotation": 0.0,
|
||||||
|
"RelativeResetDelay": "00:00:00.1000000"
|
||||||
|
},
|
||||||
|
"Bindings": {
|
||||||
|
"TipActivationThreshold": 1.0,
|
||||||
|
"TipButton": {
|
||||||
|
"Path": "OpenTabletDriver.Desktop.Binding.AdaptiveBinding",
|
||||||
|
"Settings": [
|
||||||
|
{
|
||||||
|
"Property": "Binding",
|
||||||
|
"Value": "Tip"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Enable": true
|
||||||
|
},
|
||||||
|
"EraserActivationThreshold": 1.0,
|
||||||
|
"EraserButton": {
|
||||||
|
"Path": "OpenTabletDriver.Desktop.Binding.AdaptiveBinding",
|
||||||
|
"Settings": [
|
||||||
|
{
|
||||||
|
"Property": "Binding",
|
||||||
|
"Value": "Eraser"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Enable": true
|
||||||
|
},
|
||||||
|
"PenButtons": [
|
||||||
|
{
|
||||||
|
"Path": "OpenTabletDriver.Desktop.Binding.AdaptiveBinding",
|
||||||
|
"Settings": [
|
||||||
|
{
|
||||||
|
"Property": "Binding",
|
||||||
|
"Value": "Button 1"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Enable": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"Path": "OpenTabletDriver.Desktop.Binding.AdaptiveBinding",
|
||||||
|
"Settings": [
|
||||||
|
{
|
||||||
|
"Property": "Binding",
|
||||||
|
"Value": "Button 2"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Enable": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"AuxButtons": [
|
||||||
|
{
|
||||||
|
"Path": "OpenTabletDriver.Desktop.Binding.MultiKeyBinding",
|
||||||
|
"Settings": [
|
||||||
|
{
|
||||||
|
"Property": "Keys",
|
||||||
|
"Value": "Control+Z"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"Enable": true
|
||||||
|
},
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null,
|
||||||
|
null
|
||||||
|
],
|
||||||
|
"MouseButtons": [],
|
||||||
|
"MouseScrollUp": null,
|
||||||
|
"MouseScrollDown": null,
|
||||||
|
"DisablePressure": false,
|
||||||
|
"DisableTilt": false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"LockUsableAreaDisplay": true,
|
||||||
|
"LockUsableAreaTablet": true,
|
||||||
|
"Tools": []
|
||||||
|
}
|
||||||
3
.config/brave-flags.conf
Normal file
3
.config/brave-flags.conf
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
--ozone-platform=wayland
|
||||||
|
--ozone-platform-hint=wayland
|
||||||
|
--enable-features=TouchpadOverscrollHistoryNavigation
|
||||||
257
.config/btop/btop.conf
Normal file
257
.config/btop/btop.conf
Normal file
@@ -0,0 +1,257 @@
|
|||||||
|
#? Config file for btop v. 1.4.5
|
||||||
|
|
||||||
|
#* Name of a btop++/bpytop/bashtop formatted ".theme" file, "Default" and "TTY" for builtin themes.
|
||||||
|
#* Themes should be placed in "../share/btop/themes" relative to binary or "$HOME/.config/btop/themes"
|
||||||
|
color_theme = "current"
|
||||||
|
|
||||||
|
#* If the theme set background should be shown, set to False if you want terminal background transparency.
|
||||||
|
theme_background = True
|
||||||
|
|
||||||
|
#* Sets if 24-bit truecolor should be used, will convert 24-bit colors to 256 color (6x6x6 color cube) if false.
|
||||||
|
truecolor = True
|
||||||
|
|
||||||
|
#* Set to true to force tty mode regardless if a real tty has been detected or not.
|
||||||
|
#* Will force 16-color mode and TTY theme, set all graph symbols to "tty" and swap out other non tty friendly symbols.
|
||||||
|
force_tty = False
|
||||||
|
|
||||||
|
#* Define presets for the layout of the boxes. Preset 0 is always all boxes shown with default settings. Max 9 presets.
|
||||||
|
#* Format: "box_name:P:G,box_name:P:G" P=(0 or 1) for alternate positions, G=graph symbol to use for box.
|
||||||
|
#* Use whitespace " " as separator between different presets.
|
||||||
|
#* Example: "cpu:0:default,mem:0:tty,proc:1:default cpu:0:braille,proc:0:tty"
|
||||||
|
presets = "cpu:1:default,proc:0:default cpu:0:default,mem:0:default,net:0:default cpu:0:block,net:0:tty"
|
||||||
|
|
||||||
|
#* Set to True to enable "h,j,k,l,g,G" keys for directional control in lists.
|
||||||
|
#* Conflicting keys for h:"help" and k:"kill" is accessible while holding shift.
|
||||||
|
vim_keys = True
|
||||||
|
|
||||||
|
#* Rounded corners on boxes, is ignored if TTY mode is ON.
|
||||||
|
rounded_corners = True
|
||||||
|
|
||||||
|
#* Default symbols to use for graph creation, "braille", "block" or "tty".
|
||||||
|
#* "braille" offers the highest resolution but might not be included in all fonts.
|
||||||
|
#* "block" has half the resolution of braille but uses more common characters.
|
||||||
|
#* "tty" uses only 3 different symbols but will work with most fonts and should work in a real TTY.
|
||||||
|
#* Note that "tty" only has half the horizontal resolution of the other two, so will show a shorter historical view.
|
||||||
|
graph_symbol = "braille"
|
||||||
|
|
||||||
|
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||||
|
graph_symbol_cpu = "default"
|
||||||
|
|
||||||
|
# Graph symbol to use for graphs in gpu box, "default", "braille", "block" or "tty".
|
||||||
|
graph_symbol_gpu = "default"
|
||||||
|
|
||||||
|
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||||
|
graph_symbol_mem = "default"
|
||||||
|
|
||||||
|
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||||
|
graph_symbol_net = "default"
|
||||||
|
|
||||||
|
# Graph symbol to use for graphs in cpu box, "default", "braille", "block" or "tty".
|
||||||
|
graph_symbol_proc = "default"
|
||||||
|
|
||||||
|
#* Manually set which boxes to show. Available values are "cpu mem net proc" and "gpu0" through "gpu5", separate values with whitespace.
|
||||||
|
shown_boxes = "cpu mem net proc"
|
||||||
|
|
||||||
|
#* Update time in milliseconds, recommended 2000 ms or above for better sample times for graphs.
|
||||||
|
update_ms = 2000
|
||||||
|
|
||||||
|
#* Processes sorting, "pid" "program" "arguments" "threads" "user" "memory" "cpu lazy" "cpu direct",
|
||||||
|
#* "cpu lazy" sorts top process over time (easier to follow), "cpu direct" updates top process directly.
|
||||||
|
proc_sorting = "cpu lazy"
|
||||||
|
|
||||||
|
#* Reverse sorting order, True or False.
|
||||||
|
proc_reversed = False
|
||||||
|
|
||||||
|
#* Show processes as a tree.
|
||||||
|
proc_tree = False
|
||||||
|
|
||||||
|
#* Use the cpu graph colors in the process list.
|
||||||
|
proc_colors = True
|
||||||
|
|
||||||
|
#* Use a darkening gradient in the process list.
|
||||||
|
proc_gradient = True
|
||||||
|
|
||||||
|
#* If process cpu usage should be of the core it's running on or usage of the total available cpu power.
|
||||||
|
proc_per_core = False
|
||||||
|
|
||||||
|
#* Show process memory as bytes instead of percent.
|
||||||
|
proc_mem_bytes = True
|
||||||
|
|
||||||
|
#* Show cpu graph for each process.
|
||||||
|
proc_cpu_graphs = True
|
||||||
|
|
||||||
|
#* Use /proc/[pid]/smaps for memory information in the process info box (very slow but more accurate)
|
||||||
|
proc_info_smaps = False
|
||||||
|
|
||||||
|
#* Show proc box on left side of screen instead of right.
|
||||||
|
proc_left = False
|
||||||
|
|
||||||
|
#* (Linux) Filter processes tied to the Linux kernel(similar behavior to htop).
|
||||||
|
proc_filter_kernel = False
|
||||||
|
|
||||||
|
#* In tree-view, always accumulate child process resources in the parent process.
|
||||||
|
proc_aggregate = False
|
||||||
|
|
||||||
|
#* Sets the CPU stat shown in upper half of the CPU graph, "total" is always available.
|
||||||
|
#* Select from a list of detected attributes from the options menu.
|
||||||
|
cpu_graph_upper = "Auto"
|
||||||
|
|
||||||
|
#* Sets the CPU stat shown in lower half of the CPU graph, "total" is always available.
|
||||||
|
#* Select from a list of detected attributes from the options menu.
|
||||||
|
cpu_graph_lower = "Auto"
|
||||||
|
|
||||||
|
#* If gpu info should be shown in the cpu box. Available values = "Auto", "On" and "Off".
|
||||||
|
show_gpu_info = "Auto"
|
||||||
|
|
||||||
|
#* Toggles if the lower CPU graph should be inverted.
|
||||||
|
cpu_invert_lower = True
|
||||||
|
|
||||||
|
#* Set to True to completely disable the lower CPU graph.
|
||||||
|
cpu_single_graph = False
|
||||||
|
|
||||||
|
#* Show cpu box at bottom of screen instead of top.
|
||||||
|
cpu_bottom = False
|
||||||
|
|
||||||
|
#* Shows the system uptime in the CPU box.
|
||||||
|
show_uptime = True
|
||||||
|
|
||||||
|
#* Shows the CPU package current power consumption in watts. Requires running `make setcap` or `make setuid` or running with sudo.
|
||||||
|
show_cpu_watts = True
|
||||||
|
|
||||||
|
#* Show cpu temperature.
|
||||||
|
check_temp = True
|
||||||
|
|
||||||
|
#* Which sensor to use for cpu temperature, use options menu to select from list of available sensors.
|
||||||
|
cpu_sensor = "Auto"
|
||||||
|
|
||||||
|
#* Show temperatures for cpu cores also if check_temp is True and sensors has been found.
|
||||||
|
show_coretemp = True
|
||||||
|
|
||||||
|
#* Set a custom mapping between core and coretemp, can be needed on certain cpus to get correct temperature for correct core.
|
||||||
|
#* Use lm-sensors or similar to see which cores are reporting temperatures on your machine.
|
||||||
|
#* Format "x:y" x=core with wrong temp, y=core with correct temp, use space as separator between multiple entries.
|
||||||
|
#* Example: "4:0 5:1 6:3"
|
||||||
|
cpu_core_map = ""
|
||||||
|
|
||||||
|
#* Which temperature scale to use, available values: "celsius", "fahrenheit", "kelvin" and "rankine".
|
||||||
|
temp_scale = "celsius"
|
||||||
|
|
||||||
|
#* Use base 10 for bits/bytes sizes, KB = 1000 instead of KiB = 1024.
|
||||||
|
base_10_sizes = False
|
||||||
|
|
||||||
|
#* Show CPU frequency.
|
||||||
|
show_cpu_freq = True
|
||||||
|
|
||||||
|
#* Draw a clock at top of screen, formatting according to strftime, empty string to disable.
|
||||||
|
#* Special formatting: /host = hostname | /user = username | /uptime = system uptime
|
||||||
|
clock_format = "%X"
|
||||||
|
|
||||||
|
#* Update main ui in background when menus are showing, set this to false if the menus is flickering too much for comfort.
|
||||||
|
background_update = True
|
||||||
|
|
||||||
|
#* Custom cpu model name, empty string to disable.
|
||||||
|
custom_cpu_name = ""
|
||||||
|
|
||||||
|
#* Optional filter for shown disks, should be full path of a mountpoint, separate multiple values with whitespace " ".
|
||||||
|
#* Only disks matching the filter will be shown. Prepend exclude= to only show disks not matching the filter. Examples: disk_filter="/boot /home/user", disks_filter="exclude=/boot /home/user"
|
||||||
|
disks_filter = ""
|
||||||
|
|
||||||
|
#* Show graphs instead of meters for memory values.
|
||||||
|
mem_graphs = True
|
||||||
|
|
||||||
|
#* Show mem box below net box instead of above.
|
||||||
|
mem_below_net = False
|
||||||
|
|
||||||
|
#* Count ZFS ARC in cached and available memory.
|
||||||
|
zfs_arc_cached = True
|
||||||
|
|
||||||
|
#* If swap memory should be shown in memory box.
|
||||||
|
show_swap = True
|
||||||
|
|
||||||
|
#* Show swap as a disk, ignores show_swap value above, inserts itself after first disk.
|
||||||
|
swap_disk = True
|
||||||
|
|
||||||
|
#* If mem box should be split to also show disks info.
|
||||||
|
show_disks = True
|
||||||
|
|
||||||
|
#* Filter out non physical disks. Set this to False to include network disks, RAM disks and similar.
|
||||||
|
only_physical = True
|
||||||
|
|
||||||
|
#* Read disks list from /etc/fstab. This also disables only_physical.
|
||||||
|
use_fstab = True
|
||||||
|
|
||||||
|
#* Setting this to True will hide all datasets, and only show ZFS pools. (IO stats will be calculated per-pool)
|
||||||
|
zfs_hide_datasets = False
|
||||||
|
|
||||||
|
#* Set to true to show available disk space for privileged users.
|
||||||
|
disk_free_priv = False
|
||||||
|
|
||||||
|
#* Toggles if io activity % (disk busy time) should be shown in regular disk usage view.
|
||||||
|
show_io_stat = True
|
||||||
|
|
||||||
|
#* Toggles io mode for disks, showing big graphs for disk read/write speeds.
|
||||||
|
io_mode = False
|
||||||
|
|
||||||
|
#* Set to True to show combined read/write io graphs in io mode.
|
||||||
|
io_graph_combined = False
|
||||||
|
|
||||||
|
#* Set the top speed for the io graphs in MiB/s (100 by default), use format "mountpoint:speed" separate disks with whitespace " ".
|
||||||
|
#* Example: "/mnt/media:100 /:20 /boot:1".
|
||||||
|
io_graph_speeds = ""
|
||||||
|
|
||||||
|
#* Set fixed values for network graphs in Mebibits. Is only used if net_auto is also set to False.
|
||||||
|
net_download = 100
|
||||||
|
|
||||||
|
net_upload = 100
|
||||||
|
|
||||||
|
#* Use network graphs auto rescaling mode, ignores any values set above and rescales down to 10 Kibibytes at the lowest.
|
||||||
|
net_auto = True
|
||||||
|
|
||||||
|
#* Sync the auto scaling for download and upload to whichever currently has the highest scale.
|
||||||
|
net_sync = True
|
||||||
|
|
||||||
|
#* Starts with the Network Interface specified here.
|
||||||
|
net_iface = ""
|
||||||
|
|
||||||
|
#* "True" shows bitrates in base 10 (Kbps, Mbps). "False" shows bitrates in binary sizes (Kibps, Mibps, etc.). "Auto" uses base_10_sizes.
|
||||||
|
base_10_bitrate = "Auto"
|
||||||
|
|
||||||
|
#* Show battery stats in top right if battery is present.
|
||||||
|
show_battery = True
|
||||||
|
|
||||||
|
#* Which battery to use if multiple are present. "Auto" for auto detection.
|
||||||
|
selected_battery = "Auto"
|
||||||
|
|
||||||
|
#* Show power stats of battery next to charge indicator.
|
||||||
|
show_battery_watts = True
|
||||||
|
|
||||||
|
#* Set loglevel for "~/.config/btop/btop.log" levels are: "ERROR" "WARNING" "INFO" "DEBUG".
|
||||||
|
#* The level set includes all lower levels, i.e. "DEBUG" will show all logging info.
|
||||||
|
log_level = "WARNING"
|
||||||
|
|
||||||
|
#* Measure PCIe throughput on NVIDIA cards, may impact performance on certain cards.
|
||||||
|
nvml_measure_pcie_speeds = True
|
||||||
|
|
||||||
|
#* Measure PCIe throughput on AMD cards, may impact performance on certain cards.
|
||||||
|
rsmi_measure_pcie_speeds = True
|
||||||
|
|
||||||
|
#* Horizontally mirror the GPU graph.
|
||||||
|
gpu_mirror_graph = True
|
||||||
|
|
||||||
|
#* Custom gpu0 model name, empty string to disable.
|
||||||
|
custom_gpu_name0 = ""
|
||||||
|
|
||||||
|
#* Custom gpu1 model name, empty string to disable.
|
||||||
|
custom_gpu_name1 = ""
|
||||||
|
|
||||||
|
#* Custom gpu2 model name, empty string to disable.
|
||||||
|
custom_gpu_name2 = ""
|
||||||
|
|
||||||
|
#* Custom gpu3 model name, empty string to disable.
|
||||||
|
custom_gpu_name3 = ""
|
||||||
|
|
||||||
|
#* Custom gpu4 model name, empty string to disable.
|
||||||
|
custom_gpu_name4 = ""
|
||||||
|
|
||||||
|
#* Custom gpu5 model name, empty string to disable.
|
||||||
|
custom_gpu_name5 = ""
|
||||||
3
.config/chromium-flags.conf
Normal file
3
.config/chromium-flags.conf
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
--ozone-platform=wayland
|
||||||
|
--ozone-platform-hint=wayland
|
||||||
|
--enable-features=TouchpadOverscrollHistoryNavigation
|
||||||
6
.config/direnv/direnvrc
Normal file
6
.config/direnv/direnvrc
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
# Better support for Nix flakes
|
||||||
|
use_flake() {
|
||||||
|
watch_file flake.nix
|
||||||
|
watch_file flake.lock
|
||||||
|
eval "$(nix print-dev-env)"
|
||||||
|
}
|
||||||
1
.config/elephant/calc.toml
Normal file
1
.config/elephant/calc.toml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
async = false
|
||||||
3
.config/elephant/desktopapplications.toml
Normal file
3
.config/elephant/desktopapplications.toml
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
show_actions = false
|
||||||
|
only_search_title = true
|
||||||
|
history = false
|
||||||
63
.config/elephant/station_background_selector.lua
Normal file
63
.config/elephant/station_background_selector.lua
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
Name = "stationBackgroundSelector"
|
||||||
|
NamePretty = "Station Background Selector"
|
||||||
|
Cache = false
|
||||||
|
HideFromProviderlist = true
|
||||||
|
SearchName = true
|
||||||
|
|
||||||
|
local function ShellEscape(s)
|
||||||
|
return "'" .. s:gsub("'", "'\\''") .. "'"
|
||||||
|
end
|
||||||
|
|
||||||
|
function FormatName(filename)
|
||||||
|
-- Remove leading number and dash
|
||||||
|
local name = filename:gsub("^%d+", ""):gsub("^%-", "")
|
||||||
|
-- Remove extension
|
||||||
|
name = name:gsub("%.[^%.]+$", "")
|
||||||
|
-- Replace dashes with spaces
|
||||||
|
name = name:gsub("-", " ")
|
||||||
|
-- Capitalize each word
|
||||||
|
name = name:gsub("%S+", function(word)
|
||||||
|
return word:sub(1, 1):upper() .. word:sub(2):lower()
|
||||||
|
end)
|
||||||
|
return name
|
||||||
|
end
|
||||||
|
|
||||||
|
function GetEntries()
|
||||||
|
local entries = {}
|
||||||
|
local home = os.getenv("HOME")
|
||||||
|
|
||||||
|
-- Directories to search
|
||||||
|
local dirs = {
|
||||||
|
home .. "/Tower/Library/Pictures/Wallpapers/3840x2160",
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Track added files to avoid duplicates
|
||||||
|
local seen = {}
|
||||||
|
|
||||||
|
for _, wallpaper_dir in ipairs(dirs) do
|
||||||
|
local handle = io.popen(
|
||||||
|
"find " .. ShellEscape(wallpaper_dir)
|
||||||
|
.. " -maxdepth 1 -type f \\( -name '*.jpg' -o -name '*.jpeg' -o -name '*.png' -o -name '*.gif' -o -name '*.bmp' -o -name '*.webp' \\) 2>/dev/null | sort"
|
||||||
|
)
|
||||||
|
if handle then
|
||||||
|
for background in handle:lines() do
|
||||||
|
local filename = background:match("([^/]+)$")
|
||||||
|
if filename and not seen[filename] then
|
||||||
|
seen[filename] = true
|
||||||
|
table.insert(entries, {
|
||||||
|
Text = FormatName(filename),
|
||||||
|
Value = background,
|
||||||
|
Actions = {
|
||||||
|
activate = "station-bg-set " .. ShellEscape(background),
|
||||||
|
},
|
||||||
|
Preview = background,
|
||||||
|
PreviewType = "file",
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
handle:close()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return entries
|
||||||
|
end
|
||||||
1
.config/elephant/symbols.toml
Normal file
1
.config/elephant/symbols.toml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
command = 'wl-copy && hyprctl dispatch sendshortcut "SHIFT, Insert,"'
|
||||||
4
.config/environment.d/fcitx.conf
Normal file
4
.config/environment.d/fcitx.conf
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# INPUT_METHOD=fcitx
|
||||||
|
# QT_IM_MODULE=fcitx
|
||||||
|
# XMODIFIERS=@im=fcitx
|
||||||
|
# SDL_IM_MODULE=fcitx
|
||||||
2
.config/fcitx5/conf/clipboard.conf
Normal file
2
.config/fcitx5/conf/clipboard.conf
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
TriggerKey=
|
||||||
|
PastePrimaryKey=
|
||||||
1
.config/fcitx5/conf/xcb.conf
Normal file
1
.config/fcitx5/conf/xcb.conf
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Allow Overriding System XKB Settings=False
|
||||||
@@ -1,3 +1,6 @@
|
|||||||
|
# Dynamic theme colors
|
||||||
|
config-file = ?"~/.cache/wal/ghostty.conf"
|
||||||
|
|
||||||
confirm-close-surface=false
|
confirm-close-surface=false
|
||||||
|
|
||||||
keybind = all:unconsumed:ctrl+shift+,=reload_config
|
keybind = all:unconsumed:ctrl+shift+,=reload_config
|
||||||
@@ -133,3 +136,37 @@ keybind = all:unconsumed:shift+arrow_left=unbind
|
|||||||
keybind = all:unconsumed:shift+arrow_right=unbind
|
keybind = all:unconsumed:shift+arrow_right=unbind
|
||||||
#adjust_selection:up
|
#adjust_selection:up
|
||||||
keybind = all:unconsumed:shift+arrow_up=unbind
|
keybind = all:unconsumed:shift+arrow_up=unbind
|
||||||
|
|
||||||
|
# Font
|
||||||
|
font-family = "Fira Code Nerd Font"
|
||||||
|
font-style = Regular
|
||||||
|
font-size = 14
|
||||||
|
|
||||||
|
# Window
|
||||||
|
window-theme = ghostty
|
||||||
|
# window-padding-x = 14
|
||||||
|
# window-padding-y = 14
|
||||||
|
confirm-close-surface=false
|
||||||
|
resize-overlay = never
|
||||||
|
gtk-toolbar-style = flat
|
||||||
|
|
||||||
|
# Cursor styling
|
||||||
|
cursor-style = "block"
|
||||||
|
cursor-style-blink = false
|
||||||
|
|
||||||
|
# Cursor styling + SSH session terminfo
|
||||||
|
# (all shell integration options must be passed together)
|
||||||
|
shell-integration-features = no-cursor,ssh-env
|
||||||
|
|
||||||
|
# Keyboard bindings
|
||||||
|
keybind = shift+insert=paste_from_clipboard
|
||||||
|
keybind = control+insert=copy_to_clipboard
|
||||||
|
|
||||||
|
# Slowdown mouse scrolling
|
||||||
|
mouse-scroll-multiplier = 0.95
|
||||||
|
|
||||||
|
# Fix general slowness on hyprland (https://github.com/ghostty-org/ghostty/discussions/3224)
|
||||||
|
async-backend = epoll
|
||||||
|
|
||||||
|
background-opacity = 0.8
|
||||||
|
background-blur = false
|
||||||
|
|||||||
@@ -1,14 +1,36 @@
|
|||||||
[user]
|
[user]
|
||||||
email = stofflees@gmail.com
|
email = stofflees@gmail.com
|
||||||
name = Chris
|
name = Chris
|
||||||
[pull]
|
[pull]
|
||||||
rebase = true
|
rebase = true
|
||||||
|
[push]
|
||||||
|
autoSetupRemote = true
|
||||||
[init]
|
[init]
|
||||||
defaultBranch = main
|
defaultBranch = main
|
||||||
[core]
|
[core]
|
||||||
excludesfile = /home/chris/.config/git/ignore
|
excludesfile = /home/chris/.config/git/ignore
|
||||||
[filter "lfs"]
|
[filter "lfs"]
|
||||||
clean = git-lfs clean -- %f
|
clean = git-lfs clean -- %f
|
||||||
smudge = git-lfs smudge -- %f
|
smudge = git-lfs smudge -- %f
|
||||||
process = git-lfs filter-process
|
process = git-lfs filter-process
|
||||||
required = true
|
required = true
|
||||||
|
[alias]
|
||||||
|
co = checkout
|
||||||
|
br = branch
|
||||||
|
ci = commit
|
||||||
|
st = status
|
||||||
|
[diff]
|
||||||
|
algorithm = histogram # Clearer diffs on moved/edited lines
|
||||||
|
colorMoved = plain # Highlight moved blocks in diffs
|
||||||
|
mnemonicPrefix = true # More intuitive refs in diff output
|
||||||
|
[commit]
|
||||||
|
verbose = true # Include diff comment in commit message template
|
||||||
|
[column]
|
||||||
|
ui = auto # Output in columns when possible
|
||||||
|
[branch]
|
||||||
|
sort = -committerdate # Sort branches by most recent commit first
|
||||||
|
[tag]
|
||||||
|
sort = -version:refname # Sort version numbers as you would expect
|
||||||
|
[rerere]
|
||||||
|
enabled = true # Record and reuse conflict resolutions
|
||||||
|
autoupdate = true # Apply stored conflict resolutions automatically
|
||||||
|
|||||||
@@ -16,9 +16,9 @@ windowrule = opacity 1.0 0.97, match:tag chromium-based-browser
|
|||||||
windowrule = opacity 1.0 0.97, match:tag firefox-based-browser
|
windowrule = opacity 1.0 0.97, match:tag firefox-based-browser
|
||||||
|
|
||||||
windowrule {
|
windowrule {
|
||||||
name = geforce
|
name = geforce
|
||||||
match:class = GeForceNOW
|
match:class = GeForceNOW
|
||||||
idle_inhibit = fullscreen
|
idle_inhibit = fullscreen
|
||||||
}
|
}
|
||||||
|
|
||||||
# Remove 1px border around hyprshot screenshots
|
# Remove 1px border around hyprshot screenshots
|
||||||
@@ -67,6 +67,15 @@ windowrule {
|
|||||||
match:class = ^(jetbrains-.*)$
|
match:class = ^(jetbrains-.*)$
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Keep enpass focused
|
||||||
|
windowrule {
|
||||||
|
name = enpass-assistant
|
||||||
|
match:title = ^(Enpass Assistant)$
|
||||||
|
match:class = ^(Enpass)$
|
||||||
|
stay_focused = on
|
||||||
|
center = on
|
||||||
|
}
|
||||||
|
|
||||||
# Float LocalSend and fzf file picker
|
# Float LocalSend and fzf file picker
|
||||||
windowrule = float on, match:class (Share|localsend)
|
windowrule = float on, match:class (Share|localsend)
|
||||||
windowrule = center on, match:class (Share|localsend)
|
windowrule = center on, match:class (Share|localsend)
|
||||||
@@ -88,12 +97,32 @@ windowrule = opacity 1 1, match:class qemu
|
|||||||
|
|
||||||
# Retroarch
|
# Retroarch
|
||||||
windowrule = fullscreen on, match:class com.libretro.RetroArch
|
windowrule = fullscreen on, match:class com.libretro.RetroArch
|
||||||
|
windowrule = workspace 5, match:class com.libretro.RetroArch
|
||||||
windowrule = tag -default-opacity, match:class com.libretro.RetroArch
|
windowrule = tag -default-opacity, match:class com.libretro.RetroArch
|
||||||
windowrule = opacity 1 1, match:class com.libretro.RetroArch
|
windowrule = opacity 1 1, match:class com.libretro.RetroArch
|
||||||
windowrule = idle_inhibit fullscreen, match:class com.libretro.RetroArch
|
windowrule = idle_inhibit fullscreen, match:class com.libretro.RetroArch
|
||||||
|
|
||||||
|
# Scratchpad apps
|
||||||
|
windowrule = workspace special:scratchpad, match:class Spotify
|
||||||
|
windowrule = workspace special:scratchpad, match:class signal
|
||||||
|
windowrule = workspace special:scratchpad, match:class ^(chrome-discord.com__channels_@me-Default)$
|
||||||
|
windowrule = workspace special:scratchpad, match:class ^(chrome-web.whatsapp.com__-Default)$
|
||||||
|
|
||||||
|
# Float Nextcloud
|
||||||
|
windowrule = float on, match:class com.nextcloud.desktopclient.nextcloud
|
||||||
|
|
||||||
|
# Position drawing
|
||||||
|
windowrule = workspace 5, match:class (krita)
|
||||||
|
windowrule = tag -default-opacity, match:class (krita)
|
||||||
|
windowrule = opacity 1 1, match:class (krita)
|
||||||
|
|
||||||
|
# Position TV
|
||||||
|
windowrule = workspace 7, match:class ^(chrome-youtube.com__-Default)$
|
||||||
|
windowrule = workspace 7, match:class ^(chrome-netflix.com__-Default)$
|
||||||
|
|
||||||
# Float Steam
|
# Float Steam
|
||||||
windowrule = float on, match:class steam
|
windowrule = float on, match:class steam
|
||||||
|
windowrule = workspace 7, match:class steam
|
||||||
windowrule = center on, match:class steam, match:title Steam
|
windowrule = center on, match:class steam, match:title Steam
|
||||||
windowrule = tag -default-opacity, match:class steam.*
|
windowrule = tag -default-opacity, match:class steam.*
|
||||||
windowrule = opacity 1 1, match:class steam.*
|
windowrule = opacity 1 1, match:class steam.*
|
||||||
@@ -101,19 +130,28 @@ windowrule = size 1100 700, match:class steam, match:title Steam
|
|||||||
windowrule = size 460 800, match:class steam, match:title Friends List
|
windowrule = size 460 800, match:class steam, match:title Friends List
|
||||||
windowrule = idle_inhibit fullscreen, match:class steam
|
windowrule = idle_inhibit fullscreen, match:class steam
|
||||||
|
|
||||||
|
# Float Lunar Client
|
||||||
|
windowrule = float on, match:class lunarclient
|
||||||
|
windowrule = workspace 7, match:class lunarclient
|
||||||
|
windowrule = center on, match:class lunarclient
|
||||||
|
windowrule = tag -default-opacity, match:class lunarclient
|
||||||
|
windowrule = opacity 1 1, match:class lunarclient
|
||||||
|
windowrule = size 1100 700, match:class lunarclient
|
||||||
|
windowrule = idle_inhibit fullscreen, match:class lunarclient
|
||||||
|
|
||||||
# Floating windows
|
# Floating windows
|
||||||
windowrule = float on, match:tag floating-window
|
windowrule = float on, match:tag floating-window
|
||||||
windowrule = center on, match:tag floating-window
|
windowrule = center on, match:tag floating-window
|
||||||
windowrule = size 875 600, match:tag floating-window
|
windowrule = size 875 600, match:tag floating-window
|
||||||
|
|
||||||
windowrule = tag +floating-window, match:class (org.omarchy.bluetui|org.omarchy.impala|org.omarchy.wiremix|org.omarchy.btop|org.omarchy.terminal|org.omarchy.bash|org.gnome.NautilusPreviewer|org.gnome.Evince|com.gabm.satty|Omarchy|About|TUI.float|imv|mpv)
|
windowrule = tag +floating-window, match:class (org.station.bluetui|org.station.impala|org.station.wiremix|org.station.btop|org.station.terminal|org.station.bash|org.gnome.NautilusPreviewer|org.gnome.Evince|com.gabm.satty|Station|About|TUI.float|imv|mpv)
|
||||||
windowrule = tag +floating-window, match:class (xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), match:title ^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*)
|
windowrule = tag +floating-window, match:class (xdg-desktop-portal-gtk|sublime_text|DesktopEditors|org.gnome.Nautilus), match:title ^(Open.*Files?|Open [F|f]older.*|Save.*Files?|Save.*As|Save|All Files|.*wants to [open|save].*|[C|c]hoose.*)
|
||||||
windowrule = float on, match:class org.gnome.Calculator
|
windowrule = float on, match:class org.gnome.Calculator
|
||||||
|
|
||||||
# Fullscreen screensaver
|
# Fullscreen screensaver
|
||||||
windowrule = fullscreen on, match:class org.omarchy.screensaver
|
windowrule = fullscreen on, match:class org.station.screensaver
|
||||||
windowrule = float on, match:class org.omarchy.screensaver
|
windowrule = float on, match:class org.station.screensaver
|
||||||
windowrule = animation slide, match:class org.omarchy.screensaver
|
windowrule = animation slide, match:class org.station.screensaver
|
||||||
|
|
||||||
# No transparency on media windows
|
# No transparency on media windows
|
||||||
windowrule = tag -default-opacity, match:class ^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$
|
windowrule = tag -default-opacity, match:class ^(zoom|vlc|mpv|org.kde.kdenlive|com.obsproject.Studio|com.github.PintaProject.Pinta|imv|org.gnome.NautilusPreviewer)$
|
||||||
@@ -142,3 +180,4 @@ windowrule = pin on, match:title WebcamOverlay
|
|||||||
windowrule = no_initial_focus on, match:title WebcamOverlay
|
windowrule = no_initial_focus on, match:title WebcamOverlay
|
||||||
windowrule = no_dim on, match:title WebcamOverlay
|
windowrule = no_dim on, match:title WebcamOverlay
|
||||||
windowrule = move (monitor_w-window_w-40) (monitor_h-window_h-40), match:title WebcamOverlay
|
windowrule = move (monitor_w-window_w-40) (monitor_h-window_h-40), match:title WebcamOverlay
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,11 @@
|
|||||||
# exec-once = uwsm-app -- hypridle
|
exec-once = uwsm-app -- hypridle
|
||||||
# exec-once = uwsm-app -- mako
|
exec-once = uwsm-app -- mako
|
||||||
|
# exec-once = Enpass
|
||||||
# exec-once = uwsm-app -- waybar
|
# exec-once = uwsm-app -- waybar
|
||||||
# exec-once = uwsm-app -- fcitx5 --disable notificationitem
|
exec-once = uwsm-app -- fcitx5 --disable notificationitem
|
||||||
# exec-once = uwsm-app -- swaybg -i ~/.config/omarchy/current/background -m fill
|
exec-once = station-bg-random
|
||||||
# exec-once = uwsm-app -- swayosd-server
|
exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
||||||
# exec-once = /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
|
|
||||||
# exec-once = omarchy-cmd-first-run
|
|
||||||
|
|
||||||
# Slow app launch fix -- set systemd vars
|
# Slow app launch fix -- set systemd vars
|
||||||
# exec-once = systemctl --user import-environment $(env | cut -d'=' -f 1)
|
exec-once = systemctl --user import-environment $(env | cut -d'=' -f 1)
|
||||||
# exec-once = dbus-update-activation-environment --systemd --all
|
exec-once = dbus-update-activation-environment --systemd --all
|
||||||
|
|||||||
@@ -2,33 +2,33 @@
|
|||||||
# Media
|
# Media
|
||||||
# ==========================
|
# ==========================
|
||||||
# Only display the OSD on the currently focused monitor
|
# Only display the OSD on the currently focused monitor
|
||||||
# $osdclient = swayosd-client --monitor "$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')"
|
$osdclient = swayosd-client --monitor "$(hyprctl monitors -j | jq -r '.[] | select(.focused == true).name')"
|
||||||
|
|
||||||
# Laptop multimedia keys for volume and LCD brightness (with OSD)
|
# Laptop multimedia keys for volume and LCD brightness (with OSD)
|
||||||
# bindeld = ,XF86AudioRaiseVolume, Volume up, exec, $osdclient --output-volume raise
|
bindeld = ,XF86AudioRaiseVolume, Volume up, exec, $osdclient --output-volume raise
|
||||||
# bindeld = ,XF86AudioLowerVolume, Volume down, exec, $osdclient --output-volume lower
|
bindeld = ,XF86AudioLowerVolume, Volume down, exec, $osdclient --output-volume lower
|
||||||
# bindeld = ,XF86AudioMute, Mute, exec, $osdclient --output-volume mute-toggle
|
bindeld = ,XF86AudioMute, Mute, exec, $osdclient --output-volume mute-toggle
|
||||||
# bindeld = ,XF86AudioMicMute, Mute microphone, exec, $osdclient --input-volume mute-toggle
|
bindeld = ,XF86AudioMicMute, Mute microphone, exec, $osdclient --input-volume mute-toggle
|
||||||
# bindeld = ,XF86MonBrightnessUp, Brightness up, exec, omarchy-brightness-display +5%
|
bindeld = ,XF86MonBrightnessUp, Brightness up, exec, station-brightness-display +5%
|
||||||
# bindeld = ,XF86MonBrightnessDown, Brightness down, exec, omarchy-brightness-display 5%-
|
bindeld = ,XF86MonBrightnessDown, Brightness down, exec, station-brightness-display 5%-
|
||||||
# bindeld = ,XF86KbdBrightnessUp, Keyboard brightness up, exec, omarchy-brightness-keyboard up
|
bindeld = ,XF86KbdBrightnessUp, Keyboard brightness up, exec, station-brightness-keyboard up
|
||||||
# bindeld = ,XF86KbdBrightnessDown, Keyboard brightness down, exec, omarchy-brightness-keyboard down
|
bindeld = ,XF86KbdBrightnessDown, Keyboard brightness down, exec, station-brightness-keyboard down
|
||||||
# bindld = ,XF86KbdLightOnOff, Keyboard backlight cycle, exec, omarchy-brightness-keyboard cycle
|
bindld = ,XF86KbdLightOnOff, Keyboard backlight cycle, exec, station-brightness-keyboard cycle
|
||||||
|
|
||||||
# Precise 1% multimedia adjustments with Alt modifier
|
# Precise 1% multimedia adjustments with Alt modifier
|
||||||
# bindeld = ALT, XF86AudioRaiseVolume, Volume up precise, exec, $osdclient --output-volume +1
|
bindeld = ALT, XF86AudioRaiseVolume, Volume up precise, exec, $osdclient --output-volume +1
|
||||||
# bindeld = ALT, XF86AudioLowerVolume, Volume down precise, exec, $osdclient --output-volume -1
|
bindeld = ALT, XF86AudioLowerVolume, Volume down precise, exec, $osdclient --output-volume -1
|
||||||
# bindeld = ALT, XF86MonBrightnessUp, Brightness up precise, exec, omarchy-brightness-display +1%
|
bindeld = ALT, XF86MonBrightnessUp, Brightness up precise, exec, station-brightness-display +1%
|
||||||
# bindeld = ALT, XF86MonBrightnessDown, Brightness down precise, exec, omarchy-brightness-display 1%-
|
bindeld = ALT, XF86MonBrightnessDown, Brightness down precise, exec, station-brightness-display 1%-
|
||||||
|
|
||||||
# Requires playerctl
|
# Requires playerctl
|
||||||
# bindld = , XF86AudioNext, Next track, exec, $osdclient --playerctl next
|
bindld = , XF86AudioNext, Next track, exec, $osdclient --playerctl next
|
||||||
# bindld = , XF86AudioPause, Pause, exec, $osdclient --playerctl play-pause
|
bindld = , XF86AudioPause, Pause, exec, $osdclient --playerctl play-pause
|
||||||
# bindld = , XF86AudioPlay, Play, exec, $osdclient --playerctl play-pause
|
bindld = , XF86AudioPlay, Play, exec, $osdclient --playerctl play-pause
|
||||||
# bindld = , XF86AudioPrev, Previous track, exec, $osdclient --playerctl previous
|
bindld = , XF86AudioPrev, Previous track, exec, $osdclient --playerctl previous
|
||||||
|
|
||||||
# Switch audio output with Super + Mute
|
# Switch audio output with Super + Mute
|
||||||
# bindld = SUPER, XF86AudioMute, Switch audio output, exec, omarchy-cmd-audio-switch
|
bindld = SUPER, XF86AudioMute, Switch audio output, exec, station-cmd-audio-switch
|
||||||
|
|
||||||
# ==========================
|
# ==========================
|
||||||
# Copy & Paste
|
# Copy & Paste
|
||||||
@@ -36,23 +36,23 @@
|
|||||||
bindd = SUPER, C, Universal copy, sendshortcut, CTRL, Insert,
|
bindd = SUPER, C, Universal copy, sendshortcut, CTRL, Insert,
|
||||||
bindd = SUPER, V, Universal paste, sendshortcut, SHIFT, Insert,
|
bindd = SUPER, V, Universal paste, sendshortcut, SHIFT, Insert,
|
||||||
bindd = SUPER, X, Universal cut, sendshortcut, CTRL, X,
|
bindd = SUPER, X, Universal cut, sendshortcut, CTRL, X,
|
||||||
# bindd = SUPER CTRL, V, Clipboard manager, exec, omarchy-launch-walker -m clipboard
|
bindd = SUPER CTRL, V, Clipboard manager, exec, station-launch-walker -m clipboard
|
||||||
|
|
||||||
# Close windows
|
# Close windows
|
||||||
bindd = SUPER, Q, Close window, killactive,
|
bindd = SUPER, Q, Close window, killactive,
|
||||||
# bindd = CTRL ALT, DELETE, Close all windows, exec, omarchy-hyprland-window-close-all
|
bindd = CTRL ALT, DELETE, Close all windows, exec, station-hyprland-window-close-all
|
||||||
|
|
||||||
# ==========================
|
# ==========================
|
||||||
# Tiling
|
# Tiling
|
||||||
# ==========================
|
# ==========================
|
||||||
# bindd = SUPER, J, Toggle window split, togglesplit, # dwindle
|
bindd = SUPER CTRL, J, Toggle window split, togglesplit, # dwindle
|
||||||
bindd = SUPER, P, Pseudo window, pseudo, # dwindle
|
bindd = SUPER, P, Pseudo window, pseudo, # dwindle
|
||||||
bindd = SUPER, T, Toggle window floating/tiling, togglefloating,
|
bindd = SUPER, T, Toggle window floating/tiling, togglefloating,
|
||||||
bindd = SUPER, F, Full screen, fullscreen, 0
|
bindd = SUPER, F, Full screen, fullscreen, 0
|
||||||
bindd = SUPER CTRL, F, Tiled full screen, fullscreenstate, 0 2
|
bindd = SUPER CTRL, F, Tiled full screen, fullscreenstate, 0 2
|
||||||
bindd = SUPER ALT, F, Full width, fullscreen, 1
|
bindd = SUPER ALT, F, Full width, fullscreen, 1
|
||||||
# bindd = SUPER, O, Pop window out (float & pin), exec, omarchy-hyprland-window-pop
|
bindd = SUPER, O, Pop window out (float & pin), exec, station-hyprland-window-pop
|
||||||
# bindd = SUPER, L, Toggle workspace layout, exec, omarchy-hyprland-workspace-layout-toggle
|
# bindd = SUPER CTRL, L, Toggle workspace layout, exec, station-hyprland-workspace-layout-toggle
|
||||||
|
|
||||||
# Move focus with SUPER + arrow keys
|
# Move focus with SUPER + arrow keys
|
||||||
bindd = SUPER, H, Move window focus left, movefocus, l
|
bindd = SUPER, H, Move window focus left, movefocus, l
|
||||||
@@ -60,68 +60,15 @@ bindd = SUPER, L, Move window focus right, movefocus, r
|
|||||||
bindd = SUPER, K, Move window focus up, movefocus, u
|
bindd = SUPER, K, Move window focus up, movefocus, u
|
||||||
bindd = SUPER, J, Move window focus down, movefocus, d
|
bindd = SUPER, J, Move window focus down, movefocus, d
|
||||||
|
|
||||||
# Switch workspaces with SUPER + [1-9; 0]
|
|
||||||
bindd = SUPER, code:10, Switch to workspace 1, workspace, 1
|
|
||||||
bindd = SUPER, code:11, Switch to workspace 2, workspace, 2
|
|
||||||
bindd = SUPER, code:12, Switch to workspace 3, workspace, 3
|
|
||||||
bindd = SUPER, code:13, Switch to workspace 4, workspace, 4
|
|
||||||
bindd = SUPER, code:14, Switch to workspace 5, workspace, 5
|
|
||||||
bindd = SUPER, code:15, Switch to workspace 6, workspace, 6
|
|
||||||
bindd = SUPER, code:16, Switch to workspace 7, workspace, 7
|
|
||||||
bindd = SUPER, code:17, Switch to workspace 8, workspace, 8
|
|
||||||
bindd = SUPER, code:18, Switch to workspace 9, workspace, 9
|
|
||||||
bindd = SUPER, code:19, Switch to workspace 10, workspace, 10
|
|
||||||
|
|
||||||
# Move active window to a workspace with SUPER + SHIFT + [1-9; 0]
|
|
||||||
bindd = SUPER SHIFT, code:10, Move window to workspace 1, movetoworkspace, 1
|
|
||||||
bindd = SUPER SHIFT, code:11, Move window to workspace 2, movetoworkspace, 2
|
|
||||||
bindd = SUPER SHIFT, code:12, Move window to workspace 3, movetoworkspace, 3
|
|
||||||
bindd = SUPER SHIFT, code:13, Move window to workspace 4, movetoworkspace, 4
|
|
||||||
bindd = SUPER SHIFT, code:14, Move window to workspace 5, movetoworkspace, 5
|
|
||||||
bindd = SUPER SHIFT, code:15, Move window to workspace 6, movetoworkspace, 6
|
|
||||||
bindd = SUPER SHIFT, code:16, Move window to workspace 7, movetoworkspace, 7
|
|
||||||
bindd = SUPER SHIFT, code:17, Move window to workspace 8, movetoworkspace, 8
|
|
||||||
bindd = SUPER SHIFT, code:18, Move window to workspace 9, movetoworkspace, 9
|
|
||||||
bindd = SUPER SHIFT, code:19, Move window to workspace 10, movetoworkspace, 10
|
|
||||||
|
|
||||||
# Move active window silently to a workspace with SUPER + SHIFT + ALT + [1-9; 0]
|
|
||||||
bindd = SUPER SHIFT ALT, code:10, Move window silently to workspace 1, movetoworkspacesilent, 1
|
|
||||||
bindd = SUPER SHIFT ALT, code:11, Move window silently to workspace 2, movetoworkspacesilent, 2
|
|
||||||
bindd = SUPER SHIFT ALT, code:12, Move window silently to workspace 3, movetoworkspacesilent, 3
|
|
||||||
bindd = SUPER SHIFT ALT, code:13, Move window silently to workspace 4, movetoworkspacesilent, 4
|
|
||||||
bindd = SUPER SHIFT ALT, code:14, Move window silently to workspace 5, movetoworkspacesilent, 5
|
|
||||||
bindd = SUPER SHIFT ALT, code:15, Move window silently to workspace 6, movetoworkspacesilent, 6
|
|
||||||
bindd = SUPER SHIFT ALT, code:16, Move window silently to workspace 7, movetoworkspacesilent, 7
|
|
||||||
bindd = SUPER SHIFT ALT, code:17, Move window silently to workspace 8, movetoworkspacesilent, 8
|
|
||||||
bindd = SUPER SHIFT ALT, code:18, Move window silently to workspace 9, movetoworkspacesilent, 9
|
|
||||||
bindd = SUPER SHIFT ALT, code:19, Move window silently to workspace 10, movetoworkspacesilent, 10
|
|
||||||
|
|
||||||
# Control scratchpad
|
# Control scratchpad
|
||||||
bindd = SUPER, S, Toggle scratchpad, togglespecialworkspace, scratchpad
|
bindd = SUPER, S, Toggle scratchpad, togglespecialworkspace, scratchpad
|
||||||
bindd = SUPER ALT, S, Move window to scratchpad, movetoworkspacesilent, special:scratchpad
|
bindd = SUPER ALT, S, Move window to scratchpad, movetoworkspacesilent, special:scratchpad
|
||||||
|
|
||||||
# TAB between workspaces
|
|
||||||
bindd = SUPER, TAB, Next workspace, workspace, e+1
|
|
||||||
bindd = SUPER SHIFT, TAB, Previous workspace, workspace, e-1
|
|
||||||
bindd = SUPER CTRL, TAB, Former workspace, workspace, previous
|
|
||||||
|
|
||||||
# Move workspaces to other monitors
|
|
||||||
bindd = SUPER SHIFT ALT, LEFT, Move workspace to left monitor, movecurrentworkspacetomonitor, l
|
|
||||||
bindd = SUPER SHIFT ALT, RIGHT, Move workspace to right monitor, movecurrentworkspacetomonitor, r
|
|
||||||
bindd = SUPER SHIFT ALT, UP, Move workspace to up monitor, movecurrentworkspacetomonitor, u
|
|
||||||
bindd = SUPER SHIFT ALT, DOWN, Move workspace to down monitor, movecurrentworkspacetomonitor, d
|
|
||||||
|
|
||||||
# Swap active window with the one next to it with SUPER + SHIFT + arrow keys
|
|
||||||
bindd = SUPER SHIFT, LEFT, Swap window to the left, swapwindow, l
|
|
||||||
bindd = SUPER SHIFT, RIGHT, Swap window to the right, swapwindow, r
|
|
||||||
bindd = SUPER SHIFT, UP, Swap window up, swapwindow, u
|
|
||||||
bindd = SUPER SHIFT, DOWN, Swap window down, swapwindow, d
|
|
||||||
|
|
||||||
# Cycle through applications on active workspace
|
# Cycle through applications on active workspace
|
||||||
bindd = ALT, TAB, Cycle to next window, cyclenext
|
bindd = SUPER, TAB, Cycle to next window, cyclenext, visible
|
||||||
bindd = ALT SHIFT, TAB, Cycle to prev window, cyclenext, prev
|
bindd = SUPER SHIFT, TAB, Cycle to prev window, cyclenext, visible prev
|
||||||
bindd = ALT, TAB, Reveal active window on top, bringactivetotop
|
bindd = SUPER, TAB, Reveal active window on top, bringactivetotop
|
||||||
bindd = ALT SHIFT, TAB, Reveal active window on top, bringactivetotop
|
bindd = SUPER SHIFT, TAB, Reveal active window on top, bringactivetotop
|
||||||
|
|
||||||
# Resize active window
|
# Resize active window
|
||||||
bindd = SUPER, code:20, Expand window left, resizeactive, -100 0 # - key
|
bindd = SUPER, code:20, Expand window left, resizeactive, -100 0 # - key
|
||||||
@@ -169,60 +116,56 @@ bindd = SUPER ALT, code:14, Switch to group window 5, changegroupactive, 5
|
|||||||
# ==========================
|
# ==========================
|
||||||
# Utilities
|
# Utilities
|
||||||
# ==========================
|
# ==========================
|
||||||
# bindd = SUPER, Slash, Cycle monitor scaling, exec, omarchy-hyprland-monitor-scaling-cycle
|
bindd = SUPER, Slash, Cycle monitor scaling, exec, station-hyprland-monitor-scaling-cycle
|
||||||
|
|
||||||
# Menus
|
# Menus
|
||||||
# bindd = SUPER, SPACE, Launch apps, exec, omarchy-launch-walker
|
bindd = SUPER, SPACE, Launch apps, exec, station-launch-walker
|
||||||
# bindd = SUPER CTRL, E, Emoji picker, exec, omarchy-launch-walker -m symbols
|
bindd = SUPER CTRL, E, Emoji picker, exec, station-launch-walker -m symbols
|
||||||
# bindd = SUPER CTRL, C, Capture menu, exec, omarchy-menu capture
|
bindd = SUPER CTRL, C, Capture menu, exec, station-menu capture
|
||||||
# bindd = SUPER CTRL, O, Toggle menu, exec, omarchy-menu toggle
|
bindd = SUPER CTRL, O, Toggle menu, exec, station-menu toggle
|
||||||
# bindd = SUPER ALT, SPACE, Omarchy menu, exec, omarchy-menu
|
bindd = SUPER ALT, SPACE, Station menu, exec, station-menu
|
||||||
# bindd = SUPER, ESCAPE, System menu, exec, omarchy-menu system
|
bindd = SUPER, ESCAPE, System menu, exec, station-menu system
|
||||||
# bindld = , XF86PowerOff, Power menu, exec, omarchy-menu system
|
bindld = , XF86PowerOff, Power menu, exec, station-menu system
|
||||||
# bindd = SUPER, K, Show key bindings, exec, omarchy-menu-keybindings
|
bindd = SUPER, K, Show key bindings, exec, station-menu-keybindings
|
||||||
# bindd = , XF86Calculator, Calculator, exec, gnome-calculator
|
bindd = , XF86Calculator, Calculator, exec, gnome-calculator
|
||||||
|
|
||||||
# Aesthetics
|
# Aesthetics
|
||||||
# bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, omarchy-toggle-waybar
|
bindd = SUPER SHIFT, SPACE, Toggle top bar, exec, station-toggle-waybar
|
||||||
# bindd = SUPER CTRL, SPACE, Theme background menu, exec, omarchy-menu background
|
bindd = SUPER CTRL, SPACE, Theme background menu, exec, station-menu background
|
||||||
# bindd = SUPER SHIFT CTRL, SPACE, Theme menu, exec, omarchy-menu theme
|
# bindd = SUPER SHIFT CTRL, SPACE, Theme menu, exec, station-menu theme
|
||||||
bindd = SUPER, BACKSPACE, Toggle window transparency, exec, hyprctl dispatch setprop "address:$(hyprctl activewindow -j | jq -r '.address')" opaque toggle
|
bindd = SUPER, BACKSPACE, Toggle window transparency, exec, hyprctl dispatch setprop "address:$(hyprctl activewindow -j | jq -r '.address')" opaque toggle
|
||||||
# bindd = SUPER SHIFT, BACKSPACE, Toggle window gaps, exec, omarchy-hyprland-window-gaps-toggle
|
bindd = SUPER SHIFT, BACKSPACE, Toggle window gaps, exec, station-hyprland-window-gaps-toggle
|
||||||
# bindd = SUPER CTRL, Backspace, Toggle single-window square aspect, exec, omarchy-hyprland-window-single-square-aspect-toggle
|
bindd = SUPER CTRL, Backspace, Toggle single-window square aspect, exec, station-hyprland-window-single-square-aspect-toggle
|
||||||
|
|
||||||
# Notifications
|
# Notifications
|
||||||
# bindd = SUPER, COMMA, Dismiss last notification, exec, makoctl dismiss
|
bindd = SUPER, COMMA, Dismiss last notification, exec, makoctl dismiss
|
||||||
# bindd = SUPER SHIFT, COMMA, Dismiss all notifications, exec, makoctl dismiss --all
|
bindd = SUPER SHIFT, COMMA, Dismiss all notifications, exec, makoctl dismiss --all
|
||||||
# bindd = SUPER CTRL, COMMA, Toggle silencing notifications, exec, omarchy-toggle-notification-silencing
|
bindd = SUPER CTRL, COMMA, Toggle silencing notifications, exec, station-toggle-notification-silencing
|
||||||
# bindd = SUPER ALT, COMMA, Invoke last notification, exec, makoctl invoke
|
bindd = SUPER ALT, COMMA, Invoke last notification, exec, makoctl invoke
|
||||||
# bindd = SUPER SHIFT ALT, COMMA, Restore last notification, exec, makoctl restore
|
bindd = SUPER SHIFT ALT, COMMA, Restore last notification, exec, makoctl restore
|
||||||
|
|
||||||
# Toggles
|
# Toggles
|
||||||
# bindd = SUPER CTRL, I, Toggle locking on idle, exec, omarchy-toggle-idle
|
bindd = SUPER CTRL, I, Toggle locking on idle, exec, station-toggle-idle
|
||||||
# bindd = SUPER CTRL, N, Toggle nightlight, exec, omarchy-toggle-nightlight
|
bindd = SUPER CTRL, N, Toggle nightlight, exec, station-toggle-nightlight
|
||||||
|
|
||||||
# Control Apple Display brightness
|
|
||||||
# bindd = CTRL, F1, Apple Display brightness down, exec, omarchy-brightness-display-apple -5000
|
|
||||||
# bindd = CTRL, F2, Apple Display brightness up, exec, omarchy-brightness-display-apple +5000
|
|
||||||
# bindd = SHIFT CTRL, F2, Apple Display full brightness, exec, omarchy-brightness-display-apple +60000
|
|
||||||
|
|
||||||
# Captures
|
# Captures
|
||||||
# bindd = , PRINT, Screenshot, exec, omarchy-cmd-screenshot
|
bindd = , PRINT, Screenshot, exec, station-cmd-screenshot
|
||||||
# bindd = ALT, PRINT, Screenrecording, exec, omarchy-menu screenrecord
|
bindd = ALT, PRINT, Screenrecording, exec, station-menu screenrecord
|
||||||
# bindd = SUPER, PRINT, Color picker, exec, pkill hyprpicker || hyprpicker -a
|
bindd = SUPER, PRINT, Color picker, exec, pkill hyprpicker || hyprpicker -a
|
||||||
|
|
||||||
# File sharing
|
# File sharing
|
||||||
# bindd = SUPER CTRL, S, Share, exec, omarchy-menu share
|
bindd = SUPER CTRL, S, Share, exec, station-menu share
|
||||||
|
|
||||||
# Waybar-less information
|
# Waybar-less information
|
||||||
bindd = SUPER CTRL ALT, T, Show time, exec, notify-send " $(date +"%A %H:%M — %d %B W%V %Y")"
|
bindd = SUPER CTRL ALT, T, Show time, exec, notify-send " $(date +"%A %H:%M — %d %B W%V %Y")"
|
||||||
bindd = SUPER CTRL ALT, B, Show battery remaining, exec, notify-send " Battery is at $(omarchy-battery-remaining)%"
|
bindd = SUPER CTRL ALT, B, Show battery remaining, exec, notify-send " Battery is at $(station-battery-remaining)%"
|
||||||
|
bindd = SUPER CTRL ALT, W, Show active window name and class, exec, notify-send "$(hyprctl activewindow -j | jq -r '"Window: \(.title)\nClass: \(.class)"')"
|
||||||
|
|
||||||
# Control panels
|
# Control panels
|
||||||
# bindd = SUPER CTRL, A, Audio controls, exec, omarchy-launch-audio
|
bindd = SUPER CTRL, A, Audio controls, exec, station-launch-audio
|
||||||
# bindd = SUPER CTRL, B, Bluetooth controls, exec, omarchy-launch-bluetooth
|
bindd = SUPER CTRL, B, Bluetooth controls, exec, station-launch-bluetooth
|
||||||
# bindd = SUPER CTRL, W, Wifi controls, exec, omarchy-launch-wifi
|
bindd = SUPER CTRL, W, Wifi controls, exec, station-launch-wifi
|
||||||
# bindd = SUPER CTRL, T, Activity, exec, omarchy-launch-tui btop
|
bindd = SUPER CTRL, T, Activity, exec, station-launch-tui btop
|
||||||
|
|
||||||
# Dictation
|
# Dictation
|
||||||
# bindd = SUPER CTRL, X, Toggle dictation, exec, voxtype record toggle
|
# bindd = SUPER CTRL, X, Toggle dictation, exec, voxtype record toggle
|
||||||
@@ -232,40 +175,36 @@ bindd = SUPER CTRL, Z, Zoom in, exec, hyprctl keyword cursor:zoom_factor $(hyprc
|
|||||||
bindd = SUPER CTRL ALT, Z, Reset zoom, exec, hyprctl keyword cursor:zoom_factor 1
|
bindd = SUPER CTRL ALT, Z, Reset zoom, exec, hyprctl keyword cursor:zoom_factor 1
|
||||||
|
|
||||||
# Lock system
|
# Lock system
|
||||||
# bindd = SUPER CTRL, L, Lock system, exec, omarchy-lock-screen
|
bindd = SUPER CTRL, L, Lock system, exec, station-lock-screen
|
||||||
|
|
||||||
# ==========================
|
# ==========================
|
||||||
# Applications
|
# Applications
|
||||||
# ==========================
|
# ==========================
|
||||||
bindd = SUPER, RETURN, Terminal, exec, uwsm-app -- xdg-terminal-exec # --dir="$(omarchy-cmd-terminal-cwd)"
|
bindd = SUPER, RETURN, Terminal, exec, uwsm-app -- xdg-terminal-exec
|
||||||
# bindd = SUPER ALT, RETURN, Tmux, exec, uwsm-app -- xdg-terminal-exec --dir="$(omarchy-cmd-terminal-cwd)" tmux new
|
bindd = SUPER ALT, RETURN, Tmux, exec, uwsm-app -- xdg-terminal-exec --dir="$(station-cmd-terminal-cwd)" tmux new
|
||||||
# bindd = SUPER SHIFT, F, File manager, exec, uwsm-app -- nautilus --new-window
|
bindd = SUPER SHIFT, F, File manager, exec, uwsm-app -- nautilus --new-window
|
||||||
# bindd = SUPER ALT SHIFT, F, File manager (cwd), exec, uwsm-app -- nautilus --new-window "$(omarchy-cmd-terminal-cwd)"
|
bindd = SUPER ALT SHIFT, F, File manager (cwd), exec, uwsm-app -- nautilus --new-window "$(station-cmd-terminal-cwd)"
|
||||||
bindd = SUPER SHIFT, B, Browser, exec, station-launch-browser
|
bindd = SUPER SHIFT, B, Browser, exec, /home/chris/.local/bin/station-launch-browser
|
||||||
# bindd = SUPER SHIFT ALT, B, Browser (private), exec, omarchy-launch-browser --private
|
bindd = SUPER SHIFT ALT, B, Browser (private), exec, station-launch-browser --private
|
||||||
# bindd = SUPER SHIFT, M, Music, exec, omarchy-launch-or-focus spotify
|
bindd = SUPER SHIFT, M, Music, exec, station-launch-or-focus spotify
|
||||||
# bindd = SUPER SHIFT, N, Editor, exec, omarchy-launch-editor
|
bindd = SUPER SHIFT, N, Editor, exec, station-launch-editor
|
||||||
# bindd = SUPER SHIFT, D, Docker, exec, omarchy-launch-tui lazydocker
|
# bindd = SUPER SHIFT, D, Docker, exec, station-launch-tui lazydocker
|
||||||
# bindd = SUPER SHIFT, G, Signal, exec, omarchy-launch-or-focus ^signal$ "uwsm-app -- signal-desktop"
|
bindd = SUPER SHIFT, G, Signal, exec, station-launch-or-focus ^signal$ "uwsm-app -- signal-desktop"
|
||||||
# bindd = SUPER SHIFT, O, Obsidian, exec, omarchy-launch-or-focus ^obsidian$ "uwsm-app -- obsidian -disable-gpu --enable-wayland-ime"
|
bindd = SUPER SHIFT, O, Obsidian, exec, station-launch-or-focus ^obsidian$ "uwsm-app -- obsidian -disable-gpu --enable-wayland-ime"
|
||||||
# bindd = SUPER SHIFT, W, Typora, exec, uwsm-app -- typora --enable-wayland-ime
|
# bindd = SUPER SHIFT, W, Typora, exec, uwsm-app -- typora --enable-wayland-ime
|
||||||
bindd = SUPER SHIFT, SLASH, Passwords, exec, uwsm-app -- Enpass
|
bindd = SUPER SHIFT, SLASH, Passwords, exec, Enpass showassistant
|
||||||
|
bindd = SUPER SHIFT, E, Email, exec, station-launch-or-focus mailspring
|
||||||
|
|
||||||
# If your web app url contains #, type it as ## to prevent hyprland treating it as a comment
|
# If your web app url contains #, type it as ## to prevent hyprland treating it as a comment
|
||||||
# bindd = SUPER SHIFT, A, ChatGPT, exec, omarchy-launch-webapp "https://chatgpt.com"
|
bindd = SUPER SHIFT, A, ChatGPT, exec, station-launch-webapp "https://gemini.google.com/app"
|
||||||
# bindd = SUPER SHIFT ALT, A, Grok, exec, omarchy-launch-webapp "https://grok.com"
|
bindd = SUPER SHIFT, C, Calendar, exec, station-launch-webapp "https://tower.scarif.space/apps/calendar"
|
||||||
# bindd = SUPER SHIFT, C, Calendar, exec, omarchy-launch-webapp "https://app.hey.com/calendar/weeks/"
|
bindd = SUPER SHIFT, Y, YouTube, exec, station-launch-or-focus-webapp "YouTube" "https://youtube.com/"
|
||||||
# bindd = SUPER SHIFT, E, Email, exec, omarchy-launch-webapp "https://app.hey.com"
|
bindd = SUPER SHIFT ALT, G, WhatsApp, exec, station-launch-or-focus-webapp WhatsApp "https://web.whatsapp.com/"
|
||||||
# bindd = SUPER SHIFT, Y, YouTube, exec, omarchy-launch-webapp "https://youtube.com/"
|
bindd = SUPER SHIFT CTRL, G, Google Maps, exec, station-launch-or-focus-webapp "Google Maps" "https://maps.google.com"
|
||||||
# bindd = SUPER SHIFT ALT, G, WhatsApp, exec, omarchy-launch-or-focus-webapp WhatsApp "https://web.whatsapp.com/"
|
# bindd = SUPER SHIFT, P, Google Photos, exec, station-launch-or-focus-webapp "Google Photos" "https://photos.google.com/"
|
||||||
# bindd = SUPER SHIFT CTRL, G, Google Messages, exec, omarchy-launch-or-focus-webapp "Google Messages" "https://messages.google.com/web/conversations"
|
# bindd = SUPER SHIFT, X, X, exec, station-launch-webapp "https://x.com/"
|
||||||
# bindd = SUPER SHIFT, P, Google Photos, exec, omarchy-launch-or-focus-webapp "Google Photos" "https://photos.google.com/"
|
# bindd = SUPER SHIFT ALT, X, X Post, exec, station-launch-webapp "https://x.com/compose/post"
|
||||||
# bindd = SUPER SHIFT, X, X, exec, omarchy-launch-webapp "https://x.com/"
|
|
||||||
# bindd = SUPER SHIFT ALT, X, X Post, exec, omarchy-launch-webapp "https://x.com/compose/post"
|
|
||||||
|
|
||||||
# Add extra bindings
|
# Add extra bindings
|
||||||
# bind = SUPER SHIFT, R, exec, alacritty -e ssh your-server
|
bind = SUPER SHIFT, R, exec, ghostty -e ssh scarif
|
||||||
|
|
||||||
# Overwrite existing bindings, like putting Omarchy Menu on Super + Space
|
|
||||||
# unbind = SUPER, SPACE
|
|
||||||
# bindd = SUPER, SPACE, Omarchy menu, exec, omarchy-menu
|
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ xwayland {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Use XCompose file
|
# Use XCompose file
|
||||||
env = XCOMPOSEFILE,~/.share/local/XCompose
|
env = XCOMPOSEFILE,~/.config/xcompose
|
||||||
|
|
||||||
# Don't show update on first launch
|
# Don't show update on first launch
|
||||||
ecosystem {
|
ecosystem {
|
||||||
|
|||||||
28
.config/hypr/hypridle.conf
Normal file
28
.config/hypr/hypridle.conf
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
general {
|
||||||
|
lock_cmd = station-lock-screen # lock screen
|
||||||
|
before_sleep_cmd = loginctl lock-session # lock before suspend.
|
||||||
|
after_sleep_cmd = sleep 1 && hyprctl dispatch dpms on # delay for PAM readiness, then turn on display.
|
||||||
|
inhibit_sleep = 3 # wait until screen is locked
|
||||||
|
}
|
||||||
|
|
||||||
|
listener {
|
||||||
|
timeout = 300 # 5min
|
||||||
|
on-timeout = pidof hyprlock || station-launch-screensaver # start screensaver (if we haven't locked already)
|
||||||
|
}
|
||||||
|
|
||||||
|
listener {
|
||||||
|
timeout = 301 # 5min
|
||||||
|
on-timeout = loginctl lock-session # lock screen when timeout has passed
|
||||||
|
}
|
||||||
|
|
||||||
|
listener {
|
||||||
|
timeout = 330 # 5.5min
|
||||||
|
on-timeout = brightnessctl -sd '*::kbd_backlight' set 0 # save state and turn off keyboard backlight
|
||||||
|
on-resume = brightnessctl -rd '*::kbd_backlight' # restore keyboard backlight
|
||||||
|
}
|
||||||
|
|
||||||
|
listener {
|
||||||
|
timeout = 330 # 5.5min
|
||||||
|
on-timeout = station-system-suspend # suspend when timeout has passed
|
||||||
|
on-resume = hyprctl dispatch dpms on && brightnessctl -r # screen on when activity is detected
|
||||||
|
}
|
||||||
@@ -7,4 +7,4 @@ source = ~/.config/hypr/windows.conf
|
|||||||
source = ~/.config/hypr/monitors.conf
|
source = ~/.config/hypr/monitors.conf
|
||||||
source = ~/.config/hypr/looknfeel.conf
|
source = ~/.config/hypr/looknfeel.conf
|
||||||
source = ~/.config/hypr/autostart.conf
|
source = ~/.config/hypr/autostart.conf
|
||||||
# source = ~/.config/hypr/theme.conf
|
source = ~/.config/hypr/workspaces.conf
|
||||||
|
|||||||
43
.config/hypr/hyprlock.conf
Normal file
43
.config/hypr/hyprlock.conf
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
source = ~/.cache/wal/colors-hyprland.conf
|
||||||
|
|
||||||
|
general {
|
||||||
|
ignore_empty_input = true
|
||||||
|
}
|
||||||
|
|
||||||
|
background {
|
||||||
|
monitor =
|
||||||
|
color = $background
|
||||||
|
path = $wallpaper
|
||||||
|
blur_passes = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
animations {
|
||||||
|
enabled = false
|
||||||
|
}
|
||||||
|
|
||||||
|
input-field {
|
||||||
|
monitor =
|
||||||
|
size = 650, 100
|
||||||
|
position = 0, 0
|
||||||
|
halign = center
|
||||||
|
valign = center
|
||||||
|
|
||||||
|
inner_color = $background
|
||||||
|
outer_color = $color14
|
||||||
|
outline_thickness = 4
|
||||||
|
|
||||||
|
font_family = JetBrainsMono Nerd Font
|
||||||
|
font_color = $foreground
|
||||||
|
|
||||||
|
placeholder_text = Enter Password
|
||||||
|
check_color = $color4
|
||||||
|
fail_text = <i>$FAIL ($ATTEMPTS)</i>
|
||||||
|
|
||||||
|
rounding = 0
|
||||||
|
shadow_passes = 0
|
||||||
|
fade_on_empty = false
|
||||||
|
}
|
||||||
|
|
||||||
|
auth {
|
||||||
|
fingerprint:enabled = false
|
||||||
|
}
|
||||||
14
.config/hypr/hyprsunset.conf
Normal file
14
.config/hypr/hyprsunset.conf
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# Makes hyprsunset do nothing to the screen by default
|
||||||
|
# Without this, the default applies some tint to the monitor
|
||||||
|
profile {
|
||||||
|
time = 07:00
|
||||||
|
identity = true
|
||||||
|
}
|
||||||
|
|
||||||
|
# To enable auto switch to nightlight, set in your .config/hypr/autostart:
|
||||||
|
# exec-once = uwsm app -- hyprsunset
|
||||||
|
# and use the following:
|
||||||
|
# profile {
|
||||||
|
# time = 20:00
|
||||||
|
# temperature = 4000
|
||||||
|
# }
|
||||||
@@ -1,6 +1,11 @@
|
|||||||
# Variables
|
# Variables
|
||||||
$activeBorderColor = rgba(33ccffee) rgba(00ff99ee) 45deg
|
# $activeBorderColor = rgba(33ccffee) rgba(00ff99ee) 45deg
|
||||||
$inactiveBorderColor = rgba(595959aa)
|
# $inactiveBorderColor = rgba(595959aa)
|
||||||
|
|
||||||
|
source = ~/.cache/wal/colors-hyprland.conf
|
||||||
|
|
||||||
|
$activeBorderColor = $color14
|
||||||
|
$inactiveBorderColor = $background
|
||||||
|
|
||||||
# https://wiki.hyprland.org/Configuring/Variables/#general
|
# https://wiki.hyprland.org/Configuring/Variables/#general
|
||||||
general {
|
general {
|
||||||
@@ -129,6 +134,7 @@ misc {
|
|||||||
focus_on_activate = true
|
focus_on_activate = true
|
||||||
anr_missed_pings = 3
|
anr_missed_pings = 3
|
||||||
on_focus_under_fullscreen = 1
|
on_focus_under_fullscreen = 1
|
||||||
|
disable_watchdog_warning = true
|
||||||
}
|
}
|
||||||
|
|
||||||
# https://wiki.hypr.land/Configuring/Variables/#cursor
|
# https://wiki.hypr.land/Configuring/Variables/#cursor
|
||||||
|
|||||||
@@ -3,10 +3,10 @@
|
|||||||
# Format: monitor = [port], resolution, position, scale
|
# Format: monitor = [port], resolution, position, scale
|
||||||
|
|
||||||
# Optimized for retina-class 2x displays, like 13" 2.8K, 27" 5K, 32" 6K.
|
# Optimized for retina-class 2x displays, like 13" 2.8K, 27" 5K, 32" 6K.
|
||||||
env = GDK_SCALE,2
|
# monitor=eDP-1,3840x2160,0x0,2
|
||||||
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
|
monitor=desc:Samsung Electric Company LU28R55 HNMN500475,3840x2160,auto-left,1.5
|
||||||
env = QT_ENABLE_HIGHDPI_SCALING,1
|
monitor=desc:Samsung Electric Company LU28R55 HNMN500462,3840x2160,auto-right,1.5
|
||||||
monitor=eDP-1,3840x2160,0x0,2
|
# monitor=HDMI-A-1,preferred,auto,auto
|
||||||
|
|
||||||
# Good compromise for 27" or 32" 4K monitors (but fractional!)
|
# Good compromise for 27" or 32" 4K monitors (but fractional!)
|
||||||
# env = GDK_SCALE,1.75
|
# env = GDK_SCALE,1.75
|
||||||
|
|||||||
33
.config/hypr/workspaces.conf
Normal file
33
.config/hypr/workspaces.conf
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
workspace = 1, monitor:DP-1
|
||||||
|
workspace = 2, monitor:DP-2
|
||||||
|
workspace = 3, monitor:DP-1
|
||||||
|
workspace = 4, monitor:DP-2
|
||||||
|
workspace = 5, monitor:DP-1
|
||||||
|
workspace = 6, monitor:DP-2
|
||||||
|
workspace = 7, monitor:DP-1
|
||||||
|
workspace = 8, monitor:DP-2
|
||||||
|
workspace = 9, monitor:DP-1
|
||||||
|
workspace = 10, monitor:DP-2
|
||||||
|
|
||||||
|
bindd = SUPER, code:10, Switch to Home, workspace, 2
|
||||||
|
bindd = SUPER, code:10, Switch to Home, workspace, 1
|
||||||
|
bindd = SUPER, code:11, Switch to Dev, workspace, 4
|
||||||
|
bindd = SUPER, code:11, Switch to Dev, workspace, 3
|
||||||
|
bindd = SUPER, code:12, Switch to Art, workspace, 6
|
||||||
|
bindd = SUPER, code:12, Switch to Art, workspace, 5
|
||||||
|
bindd = SUPER, code:13, Switch to Gaming, workspace, 8
|
||||||
|
bindd = SUPER, code:13, Switch to Gaming, workspace, 7
|
||||||
|
bindd = SUPER, code:14, Switch to Writing, workspace, 10
|
||||||
|
bindd = SUPER, code:14, Switch to Writing, workspace, 9
|
||||||
|
|
||||||
|
# Move active window to a workspace with SUPER + SHIFT + [1-9; 0]
|
||||||
|
bindd = SUPER SHIFT, code:10, Move window to workspace 1, exec, station-move-to-workspace 1
|
||||||
|
bindd = SUPER SHIFT, code:11, Move window to workspace 1, exec, station-move-to-workspace 2
|
||||||
|
bindd = SUPER SHIFT, code:12, Move window to workspace 1, exec, station-move-to-workspace 3
|
||||||
|
bindd = SUPER SHIFT, code:13, Move window to workspace 1, exec, station-move-to-workspace 4
|
||||||
|
bindd = SUPER SHIFT, code:14, Move window to workspace 1, exec, station-move-to-workspace 5
|
||||||
|
|
||||||
|
bindd = SUPER SHIFT, L, Move window to right monitor, movewindow, r
|
||||||
|
bindd = SUPER SHIFT, H, Move window to left monitor, movewindow, l
|
||||||
|
bindd = SUPER SHIFT, J, Move window to right monitor, movewindow, d
|
||||||
|
bindd = SUPER SHIFT, K, Move window to left monitor, movewindow, u
|
||||||
71
.config/hyprland-preview-share-picker/config.yaml
Normal file
71
.config/hyprland-preview-share-picker/config.yaml
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
# paths to stylesheets on the filesystem which should be applied to the application
|
||||||
|
#
|
||||||
|
# relative paths are resolved relative to the location of the config file
|
||||||
|
stylesheets: ["../../.local/state/station/theme/hyprland-preview-share-picker.css"]
|
||||||
|
# default page selected when the picker is opened
|
||||||
|
default_page: windows
|
||||||
|
|
||||||
|
window:
|
||||||
|
# height of the application window
|
||||||
|
height: 500
|
||||||
|
# width of the application window
|
||||||
|
width: 1000
|
||||||
|
|
||||||
|
image:
|
||||||
|
# size to which the images should be internally resized to reduce the memory footprint
|
||||||
|
resize_size: 500
|
||||||
|
# target size of the longer side of the image widget
|
||||||
|
widget_size: 150
|
||||||
|
|
||||||
|
classes:
|
||||||
|
# css classname of the window
|
||||||
|
window: window
|
||||||
|
# css classname of the card containing an image and a label
|
||||||
|
image_card: card
|
||||||
|
# css classname of the card containing an image and a label when the image is still being loaded
|
||||||
|
image_card_loading: card-loading
|
||||||
|
# css classname of the image inside the card
|
||||||
|
image: image
|
||||||
|
# css classname of the label inside the card
|
||||||
|
image_label: image-label
|
||||||
|
# css classname of the notebook containing all pages
|
||||||
|
notebook: notebook
|
||||||
|
# css classname of a label of the notebook
|
||||||
|
tab_label: tab-label
|
||||||
|
# css classname of a notebook page (e.g. windows container)
|
||||||
|
notebook_page: page
|
||||||
|
# css classname of the region selection button
|
||||||
|
region_button: region-button
|
||||||
|
# css classname of the button containing the session restore checkbox and label
|
||||||
|
restore_button: restore-button
|
||||||
|
|
||||||
|
windows:
|
||||||
|
# minimum amount of image cards per row on the windows page
|
||||||
|
min_per_row: 3
|
||||||
|
# maximum amount of image cards per row on the windows page
|
||||||
|
max_per_row: 999
|
||||||
|
# number of clicks needed to select a window
|
||||||
|
clicks: 1
|
||||||
|
# spacing in pixels between the window cards
|
||||||
|
spacing: 12
|
||||||
|
|
||||||
|
outputs:
|
||||||
|
# number of clicks needed to select an output
|
||||||
|
clicks: 1
|
||||||
|
# spacing in pixels between the outputs in the layout
|
||||||
|
# note: the spacing is applied from both sides (the gap is `spacing * 2`)
|
||||||
|
spacing: 6
|
||||||
|
# show the label with the output name
|
||||||
|
show_label: false
|
||||||
|
# size the output cards respectively to their scaling
|
||||||
|
respect_output_scaling: true
|
||||||
|
|
||||||
|
region:
|
||||||
|
# command to run for region selection
|
||||||
|
# the output needs to be in the <output>@<x>,<y>,<w>,<h> (e.g. DP-3@2789,436,756,576) format
|
||||||
|
command: slurp -f '%o@%x,%y,%w,%h'
|
||||||
|
|
||||||
|
# hide the token restore checkbox and use the default value instead
|
||||||
|
hide_token_restore: true
|
||||||
|
# enable debug logs by default
|
||||||
|
debug: false
|
||||||
13
.config/imv/config
Normal file
13
.config/imv/config
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
[binds]
|
||||||
|
|
||||||
|
# Print the current image file
|
||||||
|
<Ctrl+p> = exec lp "$imv_current_file"
|
||||||
|
|
||||||
|
# Delete the current image and quit the viewer
|
||||||
|
<Ctrl+x> = exec rm "$imv_current_file"; quit
|
||||||
|
|
||||||
|
# Delete the current image and move to the next one
|
||||||
|
<Ctrl+Shift+X> = exec rm "$imv_current_file"; close
|
||||||
|
|
||||||
|
# Rotate the currently open image by 90 degrees
|
||||||
|
<Ctrl+r> = exec mogrify -rotate 90 "$imv_current_file"
|
||||||
30
.config/mako/config
Normal file
30
.config/mako/config
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
include=~/.cache/wal/colors-mako
|
||||||
|
|
||||||
|
anchor=top-right
|
||||||
|
default-timeout=5000
|
||||||
|
width=420
|
||||||
|
outer-margin=20
|
||||||
|
padding=10,15
|
||||||
|
border-size=2
|
||||||
|
max-icon-size=32
|
||||||
|
font=sans-serif 14px
|
||||||
|
|
||||||
|
[app-name=Spotify]
|
||||||
|
invisible=1
|
||||||
|
|
||||||
|
[mode=do-not-disturb]
|
||||||
|
invisible=true
|
||||||
|
|
||||||
|
[mode=do-not-disturb app-name=notify-send]
|
||||||
|
invisible=false
|
||||||
|
|
||||||
|
[urgency=critical]
|
||||||
|
default-timeout=0
|
||||||
|
layer=overlay
|
||||||
|
|
||||||
|
[summary~="Setup Wi-Fi"]
|
||||||
|
on-button-left=exec sh -c 'station-notification-dismiss "Setup Wi-Fi"; station-launch-wifi'
|
||||||
|
|
||||||
|
[summary~="Screenshot copied & saved"]
|
||||||
|
max-icon-size=80
|
||||||
|
format=<b>%s</b>\n%b
|
||||||
1
.config/nix/nix.conf
Normal file
1
.config/nix/nix.conf
Normal file
@@ -0,0 +1 @@
|
|||||||
|
extra-experimental-features = flakes nix-command
|
||||||
Submodule .config/nvim updated: 6f74961fc6...bd2349c1ba
99
.config/sddm/station/Main.qml
Normal file
99
.config/sddm/station/Main.qml
Normal file
@@ -0,0 +1,99 @@
|
|||||||
|
import QtQuick 2.0
|
||||||
|
import SddmComponents 2.0
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: root
|
||||||
|
width: 640
|
||||||
|
height: 480
|
||||||
|
color: "#000000"
|
||||||
|
|
||||||
|
property string currentUser: userModel.lastUser
|
||||||
|
property int sessionIndex: {
|
||||||
|
for (var i = 0; i < sessionModel.rowCount(); i++) {
|
||||||
|
var name = (sessionModel.data(sessionModel.index(i, 0), Qt.DisplayRole) || "").toString()
|
||||||
|
if (name.indexOf("uwsm") !== -1)
|
||||||
|
return i
|
||||||
|
}
|
||||||
|
return sessionModel.lastIndex
|
||||||
|
}
|
||||||
|
|
||||||
|
Connections {
|
||||||
|
target: sddm
|
||||||
|
function onLoginFailed() {
|
||||||
|
errorMessage.text = "Login failed"
|
||||||
|
password.text = ""
|
||||||
|
password.focus = true
|
||||||
|
}
|
||||||
|
function onLoginSucceeded() {
|
||||||
|
errorMessage.text = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Column {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
spacing: root.height * 0.04
|
||||||
|
width: parent.width
|
||||||
|
|
||||||
|
// Image {
|
||||||
|
// source: "logo.svg"
|
||||||
|
// width: root.width * 0.35
|
||||||
|
// height: Math.round(width * sourceSize.height / sourceSize.width)
|
||||||
|
// fillMode: Image.PreserveAspectFit
|
||||||
|
// anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
// }
|
||||||
|
|
||||||
|
Row {
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
spacing: root.width * 0.007
|
||||||
|
|
||||||
|
Text {
|
||||||
|
text: "\uf023"
|
||||||
|
color: "#ffffff"
|
||||||
|
font.family: "JetBrainsMono Nerd Font"
|
||||||
|
font.pixelSize: root.height * 0.025
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
width: root.width * 0.17
|
||||||
|
height: root.height * 0.04
|
||||||
|
color: "#000000"
|
||||||
|
border.color: "#ffffff"
|
||||||
|
border.width: 1
|
||||||
|
clip: true
|
||||||
|
|
||||||
|
TextInput {
|
||||||
|
id: password
|
||||||
|
anchors.fill: parent
|
||||||
|
anchors.margins: root.height * 0.008
|
||||||
|
verticalAlignment: TextInput.AlignVCenter
|
||||||
|
echoMode: TextInput.Password
|
||||||
|
font.family: "JetBrainsMono Nerd Font"
|
||||||
|
font.pixelSize: root.height * 0.02
|
||||||
|
font.letterSpacing: root.height * 0.004
|
||||||
|
passwordCharacter: "\u2022"
|
||||||
|
color: "#ffffff"
|
||||||
|
focus: true
|
||||||
|
|
||||||
|
Keys.onPressed: {
|
||||||
|
if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) {
|
||||||
|
sddm.login(root.currentUser, password.text, root.sessionIndex)
|
||||||
|
event.accepted = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Text {
|
||||||
|
id: errorMessage
|
||||||
|
text: ""
|
||||||
|
color: "#f7768e"
|
||||||
|
font.family: "JetBrainsMono Nerd Font"
|
||||||
|
font.pixelSize: root.height * 0.018
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component.onCompleted: password.forceActiveFocus()
|
||||||
|
}
|
||||||
6
.config/sddm/station/metadata.desktop
Normal file
6
.config/sddm/station/metadata.desktop
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
[SddmGreeterTheme]
|
||||||
|
Name=Station
|
||||||
|
Description=Minimal terminal-style login theme matching the Limine bootloader aesthetic
|
||||||
|
Author=Station
|
||||||
|
Type=sddm-theme
|
||||||
|
Version=1.0
|
||||||
1
.config/sddm/station/theme.conf
Normal file
1
.config/sddm/station/theme.conf
Normal file
@@ -0,0 +1 @@
|
|||||||
|
[General]
|
||||||
@@ -1,6 +1,5 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
|
||||||
# Use neovim for vim if present
|
# Use neovim for vim if present
|
||||||
[ -x "$(command -v nvim)" ] && alias vim="nvim" vimdiff="nvim -d"
|
[ -x "$(command -v nvim)" ] && alias vim="nvim" vimdiff="nvim -d"
|
||||||
|
|
||||||
@@ -14,6 +13,13 @@ done
|
|||||||
|
|
||||||
# Verbosity and settings that you pretty much just always are going to want.
|
# Verbosity and settings that you pretty much just always are going to want.
|
||||||
alias \
|
alias \
|
||||||
|
...="cd .." \
|
||||||
|
...="cd ../.." \
|
||||||
|
....="cd ../../.." \
|
||||||
|
.....="cd ../../../.." \
|
||||||
|
df="df -h" \
|
||||||
|
du="du -h" \
|
||||||
|
free="free -m" \
|
||||||
cp="cp -iv" \
|
cp="cp -iv" \
|
||||||
mv="mv -iv" \
|
mv="mv -iv" \
|
||||||
rm="rm -vI" \
|
rm="rm -vI" \
|
||||||
@@ -25,45 +31,41 @@ alias \
|
|||||||
tmux="tmux -f ~/.config/tmux/tmux.conf" \
|
tmux="tmux -f ~/.config/tmux/tmux.conf" \
|
||||||
aider="aider --config ~/.config/aider/aider.yaml"
|
aider="aider --config ~/.config/aider/aider.yaml"
|
||||||
|
|
||||||
|
alias ff="fzf --preview 'bat --style=numbers --color=always {}'"
|
||||||
|
alias eff='$EDITOR "$(ff)"'
|
||||||
|
|
||||||
|
if command -v eza &> /dev/null; then
|
||||||
|
alias ls='eza -lh --group-directories-first --icons=auto'
|
||||||
|
alias la='ls -al'
|
||||||
|
alias lt='eza --tree --level=2 --long --icons --git'
|
||||||
|
alias lta='lt -a'
|
||||||
|
fi
|
||||||
|
|
||||||
|
if command -v zoxide &> /dev/null; then
|
||||||
|
alias cd="zd"
|
||||||
|
zd() {
|
||||||
|
if (( $# == 0 )); then
|
||||||
|
builtin cd ~ || return
|
||||||
|
elif [[ -d $1 ]]; then
|
||||||
|
builtin cd "$1" || return
|
||||||
|
else
|
||||||
|
if ! z "$@"; then
|
||||||
|
echo "Error: Directory not found"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "\U000F17A9 "
|
||||||
|
pwd
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -n $TMUX ]]; then
|
||||||
|
tmux rename-window "$(basename "$PWD")"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
# Colorize commands when possible.
|
# Colorize commands when possible.
|
||||||
alias \
|
alias \
|
||||||
ls="ls -hAN --color=auto --group-directories-first"\
|
|
||||||
li="ls -AhgGFt --group-directories-first --time=atime --color=auto --time-style=long-iso \
|
|
||||||
| sed 's/^[^ ][^ ]* *[^ ][^ ]* //' \
|
|
||||||
| awk '\
|
|
||||||
/^total/ { next }\
|
|
||||||
{\
|
|
||||||
filename = \$NF;\
|
|
||||||
icon = \"📄\";\
|
|
||||||
if (filename ~ /\/$/) {\
|
|
||||||
icon = \"📁\";\
|
|
||||||
} else if (filename ~ /\*$/) {\
|
|
||||||
icon = \"⚙️ \";\
|
|
||||||
} else if (filename ~ /@$/) {\
|
|
||||||
icon = \"🔗\";\
|
|
||||||
} else {\
|
|
||||||
ext = tolower(cleanName);\
|
|
||||||
if (ext ~ /\./) {\
|
|
||||||
sub(/^.*\./, \"\", ext);\
|
|
||||||
} else {\
|
|
||||||
ext = \"\";\
|
|
||||||
}\
|
|
||||||
if (ext ~ /^(jpg|jpeg|png|gif)$/) {\
|
|
||||||
icon = \"🖼\";\
|
|
||||||
} else if (ext ~ /^(mp3|wav|flac)$/) {\
|
|
||||||
icon = \"🎵\";\
|
|
||||||
} else if (ext ~ /^(pdf)$/) {\
|
|
||||||
icon = \"📕\";\
|
|
||||||
} else if (ext ~ /^(txt|md)$/) {\
|
|
||||||
icon = \"📝\";\
|
|
||||||
} else if (ext ~ /^(js|py|sh|c|cpp|java)$/) {\
|
|
||||||
icon = \"⚡\";\
|
|
||||||
}\
|
|
||||||
}\
|
|
||||||
print icon \" \" \$0;\
|
|
||||||
}\
|
|
||||||
'" \
|
|
||||||
grep="grep --color=auto" \
|
grep="grep --color=auto" \
|
||||||
diff="diff --color=auto" \
|
diff="diff --color=auto" \
|
||||||
ccat="highlight --out-format=ansi"
|
ccat="highlight --out-format=ansi"
|
||||||
@@ -73,11 +75,9 @@ alias \
|
|||||||
ka="killall" \
|
ka="killall" \
|
||||||
YT="youtube-viewer" \
|
YT="youtube-viewer" \
|
||||||
sdn="sudo shutdown -h now" \
|
sdn="sudo shutdown -h now" \
|
||||||
e="$EDITOR" \
|
|
||||||
v="$EDITOR" \
|
v="$EDITOR" \
|
||||||
cl="clear" \
|
cl="clear" \
|
||||||
p="sudo pacman" \
|
p="sudo pacman" \
|
||||||
z="zathura" \
|
|
||||||
ll="ls -AhlFt --group-directories-first --time=atime --color=auto --time-style=long-iso" \
|
ll="ls -AhlFt --group-directories-first --time=atime --color=auto --time-style=long-iso" \
|
||||||
ag="alias | grep" \
|
ag="alias | grep" \
|
||||||
lc="clone_from_labs" \
|
lc="clone_from_labs" \
|
||||||
@@ -89,10 +89,6 @@ alias \
|
|||||||
notes="cd ~/Tower/Notes && nvim ." \
|
notes="cd ~/Tower/Notes && nvim ." \
|
||||||
aid="aider"
|
aid="aider"
|
||||||
|
|
||||||
# Projects
|
|
||||||
alias \
|
|
||||||
src="tmuxinator start runcats"
|
|
||||||
|
|
||||||
# Dev
|
# Dev
|
||||||
alias \
|
alias \
|
||||||
sail='[ -f sail ] && sh sail || sh vendor/bin/sail' \
|
sail='[ -f sail ] && sh sail || sh vendor/bin/sail' \
|
||||||
@@ -112,15 +108,19 @@ alias \
|
|||||||
enr="trans en:ro -j -- " \
|
enr="trans en:ro -j -- " \
|
||||||
enri="trans en:ro -i"
|
enri="trans en:ro -i"
|
||||||
|
|
||||||
|
alias d='docker'
|
||||||
|
alias dc='docker compose'
|
||||||
|
alias t='tmux attach || tmux new -s Work'
|
||||||
|
e() { if [ "$#" -eq 0 ]; then command nvim . ; else command nvim "$@"; fi; }
|
||||||
|
|
||||||
|
open() (
|
||||||
|
xdg-open "$@" >/dev/null 2>&1 &
|
||||||
|
)
|
||||||
|
|
||||||
function tf() {
|
function tf() {
|
||||||
php artisan test --filter="$*"
|
php artisan test --filter="$*"
|
||||||
}
|
}
|
||||||
|
|
||||||
function cdj() {
|
|
||||||
dir=$1
|
|
||||||
cd $1 2>/dev/null || autojump $1
|
|
||||||
}
|
|
||||||
|
|
||||||
function dut() {
|
function dut() {
|
||||||
threshold=${1:-5}
|
threshold=${1:-5}
|
||||||
sudo du -hax -t"${threshold}G" /* --exclude=/{proc,sys,dev,run}
|
sudo du -hax -t"${threshold}G" /* --exclude=/{proc,sys,dev,run}
|
||||||
@@ -246,7 +246,6 @@ alias \
|
|||||||
|
|
||||||
|
|
||||||
alias \
|
alias \
|
||||||
docker-compose="podman-compose" \
|
|
||||||
cat="bat" \
|
cat="bat" \
|
||||||
ls="eza --icons=always" \
|
ls="eza --icons=always" \
|
||||||
fullClean="nix-collect-garbage --delete-old; sudo nix-collect-garbage -d; sudo /run/current-system/bin/switch-to-configuration boot" \
|
fullClean="nix-collect-garbage --delete-old; sudo nix-collect-garbage -d; sudo /run/current-system/bin/switch-to-configuration boot" \
|
||||||
|
|||||||
305
.config/shell/fns
Executable file
305
.config/shell/fns
Executable file
@@ -0,0 +1,305 @@
|
|||||||
|
# Compression
|
||||||
|
compress() { tar -czf "${1%/}.tar.gz" "${1%/}"; }
|
||||||
|
alias decompress="tar -xzf"
|
||||||
|
|
||||||
|
# Write iso file to sd card
|
||||||
|
iso2sd() {
|
||||||
|
if (( $# < 1 )); then
|
||||||
|
echo "Usage: iso2sd <input_file> [output_device]"
|
||||||
|
echo "Example: iso2sd ~/Downloads/ubuntu-25.04-desktop-amd64.iso /dev/sda"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local iso="$1"
|
||||||
|
local drive="$2"
|
||||||
|
|
||||||
|
if [[ -z $drive ]]; then
|
||||||
|
local available_sds=$(lsblk -dpno NAME | grep -E '/dev/sd')
|
||||||
|
|
||||||
|
if [[ -z $available_sds ]]; then
|
||||||
|
echo "No SD drives found and no drive specified"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
drive=$(omarchy-drive-select "$available_sds")
|
||||||
|
|
||||||
|
if [[ -z $drive ]]; then
|
||||||
|
echo "No drive selected"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
sudo dd bs=4M status=progress oflag=sync if="$iso" of="$drive"
|
||||||
|
sudo eject "$drive"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Format an entire drive for a single partition using exFAT
|
||||||
|
format-drive() {
|
||||||
|
if (( $# != 2 )); then
|
||||||
|
echo "Usage: format-drive <device> <name>"
|
||||||
|
echo "Example: format-drive /dev/sda 'My Stuff'"
|
||||||
|
echo -e "\nAvailable drives:"
|
||||||
|
lsblk -d -o NAME -n | awk '{print "/dev/"$1}'
|
||||||
|
else
|
||||||
|
echo "WARNING: This will completely erase all data on $1 and label it '$2'."
|
||||||
|
read -rp "Are you sure you want to continue? (y/N): " confirm
|
||||||
|
|
||||||
|
if [[ $confirm =~ ^[Yy]$ ]]; then
|
||||||
|
sudo wipefs -a "$1"
|
||||||
|
sudo dd if=/dev/zero of="$1" bs=1M count=100 status=progress
|
||||||
|
sudo parted -s "$1" mklabel gpt
|
||||||
|
sudo parted -s "$1" mkpart primary 1MiB 100%
|
||||||
|
sudo parted -s "$1" set 1 msftdata on
|
||||||
|
|
||||||
|
partition="$([[ $1 == *"nvme"* ]] && echo "${1}p1" || echo "${1}1")"
|
||||||
|
sudo partprobe "$1" || true
|
||||||
|
sudo udevadm settle || true
|
||||||
|
|
||||||
|
sudo mkfs.exfat -n "$2" "$partition"
|
||||||
|
|
||||||
|
echo "Drive $1 formatted as exFAT and labeled '$2'."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# SSH Port Forwarding Functions
|
||||||
|
fip() {
|
||||||
|
(( $# < 2 )) && echo "Usage: fip <host> <port1> [port2] ..." && return 1
|
||||||
|
local host="$1"
|
||||||
|
shift
|
||||||
|
for port in "$@"; do
|
||||||
|
ssh -f -N -L "$port:localhost:$port" "$host" && echo "Forwarding localhost:$port -> $host:$port"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
dip() {
|
||||||
|
(( $# == 0 )) && echo "Usage: dip <port1> [port2] ..." && return 1
|
||||||
|
for port in "$@"; do
|
||||||
|
pkill -f "ssh.*-L $port:localhost:$port" && echo "Stopped forwarding port $port" || echo "No forwarding on port $port"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
lip() {
|
||||||
|
pgrep -af "ssh.*-L [0-9]+:localhost:[0-9]+" || echo "No active forwards"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create a Tmux Dev Layout with editor, ai, and terminal
|
||||||
|
# Usage: tdl <c|cx|codex|other_ai> [<second_ai>]
|
||||||
|
tdl() {
|
||||||
|
[[ -z $1 ]] && { echo "Usage: tdl <c|cx|codex|other_ai> [<second_ai>]"; return 1; }
|
||||||
|
[[ -z $TMUX ]] && { echo "You must start tmux to use tdl."; return 1; }
|
||||||
|
|
||||||
|
local current_dir="${PWD}"
|
||||||
|
local editor_pane ai_pane ai2_pane
|
||||||
|
local ai="$1"
|
||||||
|
local ai2="$2"
|
||||||
|
|
||||||
|
# Use TMUX_PANE for the pane we're running in (stable even if active window changes)
|
||||||
|
editor_pane="$TMUX_PANE"
|
||||||
|
|
||||||
|
# Name the current window after the base directory name
|
||||||
|
tmux rename-window -t "$editor_pane" "$(basename "$current_dir")"
|
||||||
|
|
||||||
|
# Split window vertically - top 85%, bottom 15% (target editor pane explicitly)
|
||||||
|
tmux split-window -v -p 15 -t "$editor_pane" -c "$current_dir"
|
||||||
|
|
||||||
|
# Split editor pane horizontally - AI on right 30% (capture new pane ID directly)
|
||||||
|
ai_pane=$(tmux split-window -h -p 30 -t "$editor_pane" -c "$current_dir" -P -F '#{pane_id}')
|
||||||
|
|
||||||
|
# If second AI provided, split the AI pane vertically
|
||||||
|
if [[ -n $ai2 ]]; then
|
||||||
|
ai2_pane=$(tmux split-window -v -t "$ai_pane" -c "$current_dir" -P -F '#{pane_id}')
|
||||||
|
tmux send-keys -t "$ai2_pane" "$ai2" C-m
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Run ai in the right pane
|
||||||
|
tmux send-keys -t "$ai_pane" "$ai" C-m
|
||||||
|
|
||||||
|
# Run nvim in the left pane
|
||||||
|
tmux send-keys -t "$editor_pane" "$EDITOR ." C-m
|
||||||
|
|
||||||
|
# Select the nvim pane for focus
|
||||||
|
tmux select-pane -t "$editor_pane"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create multiple tdl windows with one per subdirectory in the current directory
|
||||||
|
# Usage: tdlm <c|cx|codex|other_ai> [<second_ai>]
|
||||||
|
tdlm() {
|
||||||
|
[[ -z $1 ]] && { echo "Usage: tdlm <c|cx|codex|other_ai> [<second_ai>]"; return 1; }
|
||||||
|
[[ -z $TMUX ]] && { echo "You must start tmux to use tdlm."; return 1; }
|
||||||
|
|
||||||
|
local ai="$1"
|
||||||
|
local ai2="$2"
|
||||||
|
local base_dir="$PWD"
|
||||||
|
local first=true
|
||||||
|
|
||||||
|
# Rename the session to the current directory name (replace dots/colons which tmux disallows)
|
||||||
|
tmux rename-session "$(basename "$base_dir" | tr '.:' '--')"
|
||||||
|
|
||||||
|
for dir in "$base_dir"/*/; do
|
||||||
|
[[ -d $dir ]] || continue
|
||||||
|
local dirpath="${dir%/}"
|
||||||
|
|
||||||
|
if $first; then
|
||||||
|
# Reuse the current window for the first project
|
||||||
|
tmux send-keys -t "$TMUX_PANE" "cd '$dirpath' && tdl $ai $ai2" C-m
|
||||||
|
first=false
|
||||||
|
else
|
||||||
|
local pane_id=$(tmux new-window -c "$dirpath" -P -F '#{pane_id}')
|
||||||
|
tmux send-keys -t "$pane_id" "tdl $ai $ai2" C-m
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create a multi-pane swarm layout with the same command started in each pane (great for AI)
|
||||||
|
# Usage: tsl <pane_count> <command>
|
||||||
|
tsl() {
|
||||||
|
[[ -z $1 || -z $2 ]] && { echo "Usage: tsl <pane_count> <command>"; return 1; }
|
||||||
|
[[ -z $TMUX ]] && { echo "You must start tmux to use tsl."; return 1; }
|
||||||
|
|
||||||
|
local count="$1"
|
||||||
|
local cmd="$2"
|
||||||
|
local current_dir="${PWD}"
|
||||||
|
local -a panes
|
||||||
|
|
||||||
|
tmux rename-window -t "$TMUX_PANE" "$(basename "$current_dir")"
|
||||||
|
|
||||||
|
panes+=("$TMUX_PANE")
|
||||||
|
|
||||||
|
while (( ${#panes[@]} < count )); do
|
||||||
|
local new_pane
|
||||||
|
local split_target="${panes[-1]}"
|
||||||
|
new_pane=$(tmux split-window -h -t "$split_target" -c "$current_dir" -P -F '#{pane_id}')
|
||||||
|
panes+=("$new_pane")
|
||||||
|
tmux select-layout -t "${panes[0]}" tiled
|
||||||
|
done
|
||||||
|
|
||||||
|
for pane in "${panes[@]}"; do
|
||||||
|
tmux send-keys -t "$pane" "$cmd" C-m
|
||||||
|
done
|
||||||
|
|
||||||
|
tmux select-pane -t "${panes[0]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Transcode a video to a good-balance 1080p that's great for sharing online
|
||||||
|
transcode-video-1080p() {
|
||||||
|
ffmpeg -i "$1" -vf scale=1920:1080 -c:v libx264 -preset fast -crf 23 -c:a copy "${1%.*}-1080p.mp4"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Transcode a video to a good-balance 4K that's great for sharing online
|
||||||
|
transcode-video-4K() {
|
||||||
|
ffmpeg -i "$1" -c:v libx265 -preset slow -crf 24 -c:a aac -b:a 192k "${1%.*}-optimized.mp4"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Transcode any image to JPG image that's great for shrinking wallpapers
|
||||||
|
img2jpg() {
|
||||||
|
img="$1"
|
||||||
|
shift
|
||||||
|
|
||||||
|
magick "$img" "$@" -quality 95 -strip "${img%.*}-converted.jpg"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Transcode any image to a small JPG (max 1080px wide) that's great for sharing online
|
||||||
|
img2jpg-small() {
|
||||||
|
img="$1"
|
||||||
|
shift
|
||||||
|
|
||||||
|
magick "$img" "$@" -resize 1080x\> -quality 95 -strip "${img%.*}-small.jpg"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Transcode any image to a medium JPG (max 1800px wide) that's great for sharing online
|
||||||
|
img2jpg-medium() {
|
||||||
|
img="$1"
|
||||||
|
shift
|
||||||
|
|
||||||
|
magick "$img" "$@" -resize 1800x\> -quality 95 -strip "${img%.*}-medium.jpg"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Transcode any image to compressed-but-lossless PNG
|
||||||
|
img2png() {
|
||||||
|
img="$1"
|
||||||
|
shift
|
||||||
|
|
||||||
|
magick "$img" "$@" -strip -define png:compression-filter=5 \
|
||||||
|
-define png:compression-level=9 \
|
||||||
|
-define png:compression-strategy=1 \
|
||||||
|
-define png:exclude-chunk=all \
|
||||||
|
"${img%.*}-optimized.png"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Create a new worktree and branch from within current git directory.
|
||||||
|
gwa() {
|
||||||
|
if [[ -z "$1" ]]; then
|
||||||
|
echo "Usage: ga [branch name]"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
local branch="$1"
|
||||||
|
local base="$(basename "$PWD")"
|
||||||
|
local path="../${base}--${branch}"
|
||||||
|
|
||||||
|
git worktree add -b "$branch" "$path"
|
||||||
|
mise trust "$path"
|
||||||
|
cd "$path"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Remove worktree and branch from within active worktree directory.
|
||||||
|
gwd() {
|
||||||
|
if gum confirm "Remove worktree and branch?"; then
|
||||||
|
local cwd base branch root
|
||||||
|
|
||||||
|
cwd="$(pwd)"
|
||||||
|
worktree="$(basename "$cwd")"
|
||||||
|
|
||||||
|
# split on first `--`
|
||||||
|
root="${worktree%%--*}"
|
||||||
|
branch="${worktree#*--}"
|
||||||
|
|
||||||
|
# Protect against accidentially nuking a non-worktree directory
|
||||||
|
if [[ "$root" != "$worktree" ]]; then
|
||||||
|
cd "../$root"
|
||||||
|
git worktree remove "$worktree" --force
|
||||||
|
git branch -D "$branch"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
linkenv() {
|
||||||
|
local env="${1:-dev}"
|
||||||
|
local env_files_directory="$HOME/Tower/.backups/Development/Environments"
|
||||||
|
|
||||||
|
# Fetch the closest git parent or current directory if not
|
||||||
|
local root_dir=$(git rev-parse --show-toplevel 2>/dev/null || pwd)
|
||||||
|
local project_name=$(basename "$root_dir")
|
||||||
|
|
||||||
|
local source_file="$env_files_directory/${project_name}-${env}-env"
|
||||||
|
local target_file="$root_dir/.env"
|
||||||
|
|
||||||
|
if [[ -f "$target_file" ]]; then
|
||||||
|
if gum confirm "Overwrite existing .env file?"; then
|
||||||
|
if [[ -L "$target_file" ]]; then
|
||||||
|
rm "$target_file"
|
||||||
|
else
|
||||||
|
mv "$target_file" "${target_file}.bak"
|
||||||
|
echo "Existing .env backed up to .env.bak"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f "$source_file" ]]; then
|
||||||
|
ln -sf "$source_file" "$target_file"
|
||||||
|
echo "Linked $source_file -> $target_file"
|
||||||
|
else
|
||||||
|
echo "No environment file found for $project_name at $source_file copying example, copying example if exists"
|
||||||
|
|
||||||
|
if [[ -f "$root_dir/.env.example" ]]; then
|
||||||
|
cp "$root_dir/.env.example" "$source_file"
|
||||||
|
ln -sf "$source_file" "$target_file"
|
||||||
|
echo "Copied .env.example to $source_file and linked"
|
||||||
|
else
|
||||||
|
echo "No .env.example found."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
@@ -46,6 +46,8 @@ export ELECTRUMDIR="${XDG_DATA_HOME:-$HOME/.local/share}/electrum"
|
|||||||
export ANDROID_AVD_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/android/avd"
|
export ANDROID_AVD_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/android/avd"
|
||||||
export ANDROID_USER_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/android"
|
export ANDROID_USER_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/android"
|
||||||
export CODEX_HOME="${XDG_CONFIG_HOME:-$HOME/.config}/codex"
|
export CODEX_HOME="${XDG_CONFIG_HOME:-$HOME/.config}/codex"
|
||||||
|
export XCOMPOSEFILE="${XDG_CONFIG_HOME:-$HOME/.config}/xcompose"
|
||||||
|
export GEMINI_CLI_HOME="${XDG_CONFIG_HOME:-$HOME/.config}"
|
||||||
|
|
||||||
# Export OPENAI_API_KEY from GitHub Copilot config
|
# Export OPENAI_API_KEY from GitHub Copilot config
|
||||||
# if [ -f "$HOME/.config/github-copilot/apps.json" ]; then
|
# if [ -f "$HOME/.config/github-copilot/apps.json" ]; then
|
||||||
@@ -55,6 +57,7 @@ export CODEX_HOME="${XDG_CONFIG_HOME:-$HOME/.config}/codex"
|
|||||||
# fi
|
# fi
|
||||||
|
|
||||||
# Other program settings
|
# Other program settings
|
||||||
|
export TRY_PATH="$HOME/Tries"
|
||||||
export DICS="/usr/share/stardicts/dic/"
|
export DICS="/usr/share/stardicts/dic/"
|
||||||
export SUDO_ASKPASS="$HOME/.local/bin/dmenupass"
|
export SUDO_ASKPASS="$HOME/.local/bin/dmenupass"
|
||||||
export FZF_DEFAULT_OPTS="--layout=reverse --height 40%"
|
export FZF_DEFAULT_OPTS="--layout=reverse --height 40%"
|
||||||
@@ -68,12 +71,15 @@ export LESS_TERMCAP_us="$(printf '%b' '\e[1;32m')"
|
|||||||
export LESS_TERMCAP_ue="$(printf '%b' '\e[0m')"
|
export LESS_TERMCAP_ue="$(printf '%b' '\e[0m')"
|
||||||
export LESS_OPEN="| /usr/bin/highlight -O ansi %s 2>/dev/null"
|
export LESS_OPEN="| /usr/bin/highlight -O ansi %s 2>/dev/null"
|
||||||
export QT_QPA_PLATFORMTHEME="gtk2" # Have QT use gtk2 theme.
|
export QT_QPA_PLATFORMTHEME="gtk2" # Have QT use gtk2 theme.
|
||||||
|
# export QT_AUTO_SCREEN_SCALE_FACTOR=1
|
||||||
|
# export QT_SCREEN_SCALE_FACTORS=2
|
||||||
export MOZ_USE_XINPUT2="1" # Mozilla smooth scrolling/touchpads.
|
export MOZ_USE_XINPUT2="1" # Mozilla smooth scrolling/touchpads.
|
||||||
export _JAVA_AWT_WM_NONREPARENTING=1 # Fix for Java applications in dwm
|
export _JAVA_AWT_WM_NONREPARENTING=1 # Fix for Java applications in dwm
|
||||||
|
|
||||||
# Development variables
|
# Development variables
|
||||||
export ANDROID_SDK_ROOT="$HOME/Android/Sdk"
|
export ANDROID_SDK_ROOT="$HOME/.local/share/android/Sdk"
|
||||||
export ANDROID_HOME="$ANDROID_SDK_ROOT"
|
export ANDROID_HOME="$ANDROID_SDK_ROOT"
|
||||||
|
export GRADLE_USER_HOME="${XDG_DATA_HOME:-$HOME/.local/share}/gradle"
|
||||||
|
|
||||||
export PATH="$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/cmdline-tools/bin:$ANDROID_HOME/platform-tools:$ANDROID_AVD_HOME:$ANDROID_HOME/emulator:$XDG_DATA_HOME/cargo/bin"
|
export PATH="$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/cmdline-tools/bin:$ANDROID_HOME/platform-tools:$ANDROID_AVD_HOME:$ANDROID_HOME/emulator:$XDG_DATA_HOME/cargo/bin"
|
||||||
export PATH="$HOME/development/flutter/bin:$PATH"
|
export PATH="$HOME/development/flutter/bin:$PATH"
|
||||||
@@ -172,8 +178,6 @@ export NVM_DIR="$HOME/.config/nvm"
|
|||||||
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
|
||||||
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion
|
||||||
|
|
||||||
source "$HOME/.local/share/../bin/env"
|
|
||||||
|
|
||||||
env_file="$HOME/.config/shell/.env"
|
env_file="$HOME/.config/shell/.env"
|
||||||
if [ -f "$env_file" ]; then
|
if [ -f "$env_file" ]; then
|
||||||
set -a
|
set -a
|
||||||
|
|||||||
28
.config/swayosd/style.css
Normal file
28
.config/swayosd/style.css
Normal file
@@ -0,0 +1,28 @@
|
|||||||
|
@import "../../.cache/wal/colors-waybar.css";
|
||||||
|
|
||||||
|
window {
|
||||||
|
border-radius: 0;
|
||||||
|
opacity: 0.97;
|
||||||
|
border: 2px solid @foreground;
|
||||||
|
|
||||||
|
background-color: @background;
|
||||||
|
}
|
||||||
|
|
||||||
|
label {
|
||||||
|
font-family: 'Fira Code Nerd Font';
|
||||||
|
font-size: 11pt;
|
||||||
|
|
||||||
|
color: @foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
image {
|
||||||
|
color: @foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
progressbar {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
progress {
|
||||||
|
background-color: @foreground;
|
||||||
|
}
|
||||||
@@ -49,13 +49,13 @@ bind-key -T copy-mode-vi 'v' send -X begin-selection
|
|||||||
bind-key -T copy-mode-vi 'y' send -X copy-selection-and-cancel
|
bind-key -T copy-mode-vi 'y' send -X copy-selection-and-cancel
|
||||||
|
|
||||||
# Status bar
|
# Status bar
|
||||||
set -g status-left-length 52
|
# set -g status-left-length 52
|
||||||
set -g status-right-length 451
|
# set -g status-right-length 451
|
||||||
set -g status-style fg="white",bg="colour234"
|
# set -g status-style fg="white",bg="colour234"
|
||||||
set -g window-status-activity-style bold
|
# set -g window-status-activity-style bold
|
||||||
set -g pane-border-style fg="colour245"
|
# set -g pane-border-style fg="colour245"
|
||||||
set -g pane-active-border-style fg="colour39"
|
# set -g pane-active-border-style fg="colour39"
|
||||||
set -g message-style bold,fg="colour16",bg="colour221"
|
# set -g message-style bold,fg="colour16",bg="colour221"
|
||||||
# set -g status-left '#[fg=colour235,bg=colour252,bold] ❐ #S#[fg=colour252,bg=colour238,nobold]⮀#[fg=colour245,bg=colour238,bold] #(hostname)#[fg=colour238,bg=colour234,nobold]⮀'
|
# set -g status-left '#[fg=colour235,bg=colour252,bold] ❐ #S#[fg=colour252,bg=colour238,nobold]⮀#[fg=colour245,bg=colour238,bold] #(hostname)#[fg=colour238,bg=colour234,nobold]⮀'
|
||||||
# set -g status-right "#[fg=colour39, bg=colour234]⮂#[fg=colour234,bg=colour39] 🐳 "
|
# set -g status-right "#[fg=colour39, bg=colour234]⮂#[fg=colour234,bg=colour39] 🐳 "
|
||||||
# set -g window-status-format "#[fg=white,bg=colour234] #I #W "
|
# set -g window-status-format "#[fg=white,bg=colour234] #I #W "
|
||||||
@@ -81,3 +81,84 @@ bind-key -n User0 send-keys C-S-o
|
|||||||
bind-key -n User0 send-keys C-S-y
|
bind-key -n User0 send-keys C-S-y
|
||||||
bind-key -n User0 send-keys C-S-a
|
bind-key -n User0 send-keys C-S-a
|
||||||
|
|
||||||
|
# Prefix
|
||||||
|
set -g prefix C-Space
|
||||||
|
set -g prefix2 C-b
|
||||||
|
bind C-Space send-prefix
|
||||||
|
|
||||||
|
# Reload config
|
||||||
|
bind q source-file ~/.config/tmux/tmux.conf
|
||||||
|
|
||||||
|
# Pane Controls
|
||||||
|
bind x kill-pane
|
||||||
|
|
||||||
|
bind -n C-M-Left select-pane -L
|
||||||
|
bind -n C-M-Right select-pane -R
|
||||||
|
bind -n C-M-Up select-pane -U
|
||||||
|
bind -n C-M-Down select-pane -D
|
||||||
|
|
||||||
|
bind -n C-M-S-Left resize-pane -L 5
|
||||||
|
bind -n C-M-S-Down resize-pane -D 5
|
||||||
|
bind -n C-M-S-Up resize-pane -U 5
|
||||||
|
bind -n C-M-S-Right resize-pane -R 5
|
||||||
|
|
||||||
|
# Window navigation
|
||||||
|
bind r command-prompt -I "#W" "rename-window -- '%%'"
|
||||||
|
bind c new-window -c "#{pane_current_path}"
|
||||||
|
|
||||||
|
bind -n M-1 select-window -t 1
|
||||||
|
bind -n M-2 select-window -t 2
|
||||||
|
bind -n M-3 select-window -t 3
|
||||||
|
bind -n M-4 select-window -t 4
|
||||||
|
bind -n M-5 select-window -t 5
|
||||||
|
bind -n M-6 select-window -t 6
|
||||||
|
bind -n M-7 select-window -t 7
|
||||||
|
bind -n M-8 select-window -t 8
|
||||||
|
bind -n M-9 select-window -t 9
|
||||||
|
|
||||||
|
bind -n M-Left select-window -t -1
|
||||||
|
bind -n M-Right select-window -t +1
|
||||||
|
bind -n M-S-Left swap-window -t -1 \; select-window -t -1
|
||||||
|
bind -n M-S-Right swap-window -t +1 \; select-window -t +1
|
||||||
|
|
||||||
|
# Session controls
|
||||||
|
bind R command-prompt -I "#S" "rename-session -- '%%'"
|
||||||
|
bind C new-session -c "#{pane_current_path}"
|
||||||
|
bind X kill-session
|
||||||
|
bind P switch-client -p
|
||||||
|
bind N switch-client -n
|
||||||
|
|
||||||
|
bind -n M-Up switch-client -p
|
||||||
|
bind -n M-Down switch-client -n
|
||||||
|
|
||||||
|
# General
|
||||||
|
set -g mouse on
|
||||||
|
set -g base-index 1
|
||||||
|
setw -g pane-base-index 1
|
||||||
|
set -g renumber-windows on
|
||||||
|
set -g history-limit 50000
|
||||||
|
set -g focus-events on
|
||||||
|
set -g set-clipboard on
|
||||||
|
set -g allow-passthrough on
|
||||||
|
setw -g aggressive-resize on
|
||||||
|
set -g detach-on-destroy off
|
||||||
|
|
||||||
|
# Status bar
|
||||||
|
set -g status-position top
|
||||||
|
set -g status-interval 5
|
||||||
|
set -g status-left-length 30
|
||||||
|
set -g status-right-length 50
|
||||||
|
set -g window-status-separator ""
|
||||||
|
|
||||||
|
# Theme
|
||||||
|
set -g status-style "bg=default,fg=default"
|
||||||
|
set -g status-left "#[fg=black,bg=blue,bold] #S #[bg=default] "
|
||||||
|
set -g status-right "#[fg=blue]#{?client_prefix,PREFIX ,}#{?window_zoomed_flag,ZOOM ,}#[fg=brightblack]#h "
|
||||||
|
set -g window-status-format "#[fg=brightblack] #I:#W "
|
||||||
|
set -g window-status-current-format "#[fg=blue,bold] #I:#W "
|
||||||
|
set -g pane-border-style "fg=brightblack"
|
||||||
|
set -g pane-active-border-style "fg=blue"
|
||||||
|
set -g message-style "bg=default,fg=blue"
|
||||||
|
set -g message-command-style "bg=default,fg=blue"
|
||||||
|
set -g mode-style "bg=blue,fg=black"
|
||||||
|
setw -g clock-mode-colour blue
|
||||||
|
|||||||
13
.config/uwsm/default
Normal file
13
.config/uwsm/default
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
# Changes require a restart to take effect.
|
||||||
|
|
||||||
|
# Install other terminals via Install > Terminal
|
||||||
|
export TERMINAL=xdg-terminal-exec
|
||||||
|
|
||||||
|
# Use code for VSCode
|
||||||
|
export EDITOR=nvim
|
||||||
|
|
||||||
|
# Use a custom directory for screenshots (remember to make the directory!)
|
||||||
|
# export STATION_SCREENSHOT_DIR="$HOME/Pictures/Screenshots"
|
||||||
|
|
||||||
|
# Use a custom directory for screenrecordings (remember to make the directory!)
|
||||||
|
# export STATION_SCREENRECORD_DIR="$HOME/Videos/Screencasts"
|
||||||
16
.config/uwsm/env
Normal file
16
.config/uwsm/env
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
# Changes require a restart to take effect.
|
||||||
|
|
||||||
|
# Ensure Omarchy bins are in the path
|
||||||
|
export STATION_PATH=$HOME/.local/share/station
|
||||||
|
export PATH=$STATION_PATH/bin:$PATH
|
||||||
|
|
||||||
|
export GDK_SCALE=2
|
||||||
|
# export QT_AUTO_SCALE_FACTOR=1
|
||||||
|
# export QT_ENABLE_HIGHDPI_SCALING=1
|
||||||
|
export QT_SCALE_FACTOR=1.5
|
||||||
|
|
||||||
|
# Set default terminal and editor
|
||||||
|
source ~/.config/uwsm/default
|
||||||
|
|
||||||
|
# Activate mise if present on the system
|
||||||
|
station-cmd-present mise && eval "$(mise activate bash --shims)"
|
||||||
97
.config/voxtype/config.toml
Normal file
97
.config/voxtype/config.toml
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
# Voxtype Configuration
|
||||||
|
#
|
||||||
|
# Location: ~/.config/voxtype/config.toml
|
||||||
|
# All settings can be overridden via CLI flags
|
||||||
|
#
|
||||||
|
# State file for external integrations (Waybar, polybar, etc.)
|
||||||
|
# Use "auto" for default location ($XDG_RUNTIME_DIR/voxtype/state),
|
||||||
|
# a custom path, or "disabled" to turn off. The daemon writes state
|
||||||
|
# ("idle", "recording", "transcribing") to this file whenever it changes.
|
||||||
|
# Required for `voxtype record toggle` and `voxtype status` commands.
|
||||||
|
state_file = "auto"
|
||||||
|
|
||||||
|
[hotkey]
|
||||||
|
# Hotkey is configured in Hyprland. Default is Super + Ctrl + X
|
||||||
|
enabled = false
|
||||||
|
|
||||||
|
[audio]
|
||||||
|
# Audio input device ("default" uses system default)
|
||||||
|
# List devices with: pactl list sources short
|
||||||
|
device = "default"
|
||||||
|
|
||||||
|
# Sample rate in Hz (whisper expects 16000)
|
||||||
|
sample_rate = 16000
|
||||||
|
|
||||||
|
# Maximum recording duration in seconds (safety limit)
|
||||||
|
max_duration_secs = 60
|
||||||
|
|
||||||
|
# [audio.feedback]
|
||||||
|
# Enable audio feedback sounds (beeps when recording starts/stops)
|
||||||
|
# enabled = true
|
||||||
|
#
|
||||||
|
# Sound theme: "default", "subtle", "mechanical", or path to custom theme directory
|
||||||
|
# theme = "default"
|
||||||
|
#
|
||||||
|
# Volume level (0.0 to 1.0)
|
||||||
|
# volume = 0.7
|
||||||
|
|
||||||
|
[whisper]
|
||||||
|
# Model to use for transcription
|
||||||
|
# Options: tiny, tiny.en, base, base.en, small, small.en, medium, medium.en, large-v3, large-v3-turbo
|
||||||
|
# .en models are English-only but faster and more accurate for English
|
||||||
|
# large-v3-turbo is faster than large-v3 with minimal accuracy loss (recommended for GPU)
|
||||||
|
# Or provide absolute path to a custom .bin model file
|
||||||
|
model = "base.en"
|
||||||
|
|
||||||
|
# Language for transcription
|
||||||
|
# Use "en" for English, "auto" for auto-detection
|
||||||
|
# See: https://github.com/openai/whisper#available-models-and-languages
|
||||||
|
language = "en"
|
||||||
|
|
||||||
|
# Translate non-English speech to English
|
||||||
|
translate = false
|
||||||
|
|
||||||
|
# Number of CPU threads for inference (omit for auto-detection)
|
||||||
|
# threads = 4
|
||||||
|
|
||||||
|
[output]
|
||||||
|
# Primary output mode: "type" or "clipboard"
|
||||||
|
# - type: Simulates keyboard input at cursor position (requires ydotool)
|
||||||
|
# - clipboard: Copies text to clipboard (requires wl-copy)
|
||||||
|
mode = "type"
|
||||||
|
|
||||||
|
# Fall back to clipboard if typing fails
|
||||||
|
fallback_to_clipboard = true
|
||||||
|
|
||||||
|
# Delay between typed characters in milliseconds
|
||||||
|
# 0 = fastest possible, increase if characters are dropped
|
||||||
|
type_delay_ms = 1
|
||||||
|
|
||||||
|
# Post-processing command (optional)
|
||||||
|
# Pipe transcribed text through an external command for cleanup before output.
|
||||||
|
# The command receives text on stdin and outputs processed text on stdout.
|
||||||
|
# Useful for LLM-based text cleanup, grammar correction, filler word removal.
|
||||||
|
# On any failure (timeout, error), falls back to original transcription.
|
||||||
|
#
|
||||||
|
# [output.post_process]
|
||||||
|
# command = "ollama run llama3.2:1b 'Clean up this dictation. Fix grammar, remove filler words. Output only the cleaned text:'"
|
||||||
|
# timeout_ms = 30000 # 30 second timeout (generous for LLM)
|
||||||
|
|
||||||
|
[output.notification]
|
||||||
|
# Show notification when recording starts (hotkey pressed)
|
||||||
|
on_recording_start = false
|
||||||
|
|
||||||
|
# Show notification when recording stops (transcription beginning)
|
||||||
|
on_recording_stop = false
|
||||||
|
|
||||||
|
# Show notification with transcribed text after transcription completes
|
||||||
|
on_transcription = false
|
||||||
|
|
||||||
|
# [text]
|
||||||
|
# Text processing options (word replacements, spoken punctuation)
|
||||||
|
#
|
||||||
|
# Enable spoken punctuation conversion (e.g., say "period" to get ".")
|
||||||
|
# spoken_punctuation = false
|
||||||
|
#
|
||||||
|
# Custom word replacements (case-insensitive)
|
||||||
|
# replacements = { "hyperwhisper" = "hyprwhspr" }
|
||||||
49
.config/walker/config.toml
Normal file
49
.config/walker/config.toml
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
force_keyboard_focus = true # forces keyboard focuses to stay in Walker
|
||||||
|
selection_wrap = true # wrap list if at bottom or top
|
||||||
|
theme = "station-default" # theme to use
|
||||||
|
# additional_theme_location = "~/.config/walker/themes/"
|
||||||
|
hide_action_hints = true # globally hide the action hints
|
||||||
|
|
||||||
|
[placeholders]
|
||||||
|
"default" = { input = " Search...", list = "No Results" } # placeholders for input and empty list, key is the providers name, so f.e. "desktopapplications" or "menus:other"
|
||||||
|
|
||||||
|
[keybinds]
|
||||||
|
quick_activate = []
|
||||||
|
|
||||||
|
[columns]
|
||||||
|
symbols = 1 # providers to be queried by default
|
||||||
|
|
||||||
|
[providers]
|
||||||
|
max_results = 256 # 256 should be enough for everyone
|
||||||
|
default = [
|
||||||
|
"desktopapplications",
|
||||||
|
"websearch",
|
||||||
|
]
|
||||||
|
|
||||||
|
[[providers.prefixes]]
|
||||||
|
prefix = "/"
|
||||||
|
provider = "providerlist"
|
||||||
|
|
||||||
|
[[providers.prefixes]]
|
||||||
|
prefix = "."
|
||||||
|
provider = "files"
|
||||||
|
|
||||||
|
[[providers.prefixes]]
|
||||||
|
prefix = ":"
|
||||||
|
provider = "symbols"
|
||||||
|
|
||||||
|
[[providers.prefixes]]
|
||||||
|
prefix = "="
|
||||||
|
provider = "calc"
|
||||||
|
|
||||||
|
[[providers.prefixes]]
|
||||||
|
prefix = "@"
|
||||||
|
provider = "websearch"
|
||||||
|
|
||||||
|
[[providers.prefixes]]
|
||||||
|
prefix = "$"
|
||||||
|
provider = "clipboard"
|
||||||
|
|
||||||
|
[[emergencies]]
|
||||||
|
text = "Restart Walker"
|
||||||
|
command = "omarchy-restart-walker"
|
||||||
156
.config/walker/themes/station-default/layout.xml
Normal file
156
.config/walker/themes/station-default/layout.xml
Normal file
@@ -0,0 +1,156 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<interface>
|
||||||
|
<requires lib="gtk" version="4.0"></requires>
|
||||||
|
<object class="GtkWindow" id="Window">
|
||||||
|
<style>
|
||||||
|
<class name="window"></class>
|
||||||
|
</style>
|
||||||
|
<property name="resizable">true</property>
|
||||||
|
<property name="title">Walker</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="BoxWrapper">
|
||||||
|
<style>
|
||||||
|
<class name="box-wrapper"></class>
|
||||||
|
</style>
|
||||||
|
<property name="width-request">644</property>
|
||||||
|
<property name="overflow">hidden</property>
|
||||||
|
<property name="orientation">horizontal</property>
|
||||||
|
<property name="valign">center</property>
|
||||||
|
<property name="halign">center</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="Box">
|
||||||
|
<style>
|
||||||
|
<class name="box"></class>
|
||||||
|
</style>
|
||||||
|
<property name="orientation">vertical</property>
|
||||||
|
<property name="hexpand-set">true</property>
|
||||||
|
<property name="hexpand">true</property>
|
||||||
|
<property name="spacing">10</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="SearchContainer">
|
||||||
|
<style>
|
||||||
|
<class name="search-container"></class>
|
||||||
|
</style>
|
||||||
|
<property name="overflow">hidden</property>
|
||||||
|
<property name="orientation">horizontal</property>
|
||||||
|
<property name="halign">fill</property>
|
||||||
|
<property name="hexpand-set">true</property>
|
||||||
|
<property name="hexpand">true</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkEntry" id="Input">
|
||||||
|
<style>
|
||||||
|
<class name="input"></class>
|
||||||
|
</style>
|
||||||
|
<property name="halign">fill</property>
|
||||||
|
<property name="hexpand-set">true</property>
|
||||||
|
<property name="hexpand">true</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="ContentContainer">
|
||||||
|
<style>
|
||||||
|
<class name="content-container"></class>
|
||||||
|
</style>
|
||||||
|
<property name="orientation">horizontal</property>
|
||||||
|
<property name="spacing">10</property>
|
||||||
|
<property name="vexpand">true</property>
|
||||||
|
<property name="vexpand-set">true</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="ElephantHint">
|
||||||
|
<style>
|
||||||
|
<class name="elephant-hint"></class>
|
||||||
|
</style>
|
||||||
|
<property name="hexpand">true</property>
|
||||||
|
<property name="height-request">100</property>
|
||||||
|
<property name="label">Waiting for elephant...</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="Placeholder">
|
||||||
|
<style>
|
||||||
|
<class name="placeholder"></class>
|
||||||
|
</style>
|
||||||
|
<property name="label">No Results</property>
|
||||||
|
<property name="yalign">0.0</property>
|
||||||
|
<property name="hexpand">true</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkScrolledWindow" id="Scroll">
|
||||||
|
<style>
|
||||||
|
<class name="scroll"></class>
|
||||||
|
</style>
|
||||||
|
<property name="hexpand">true</property>
|
||||||
|
<property name="can_focus">false</property>
|
||||||
|
<property name="overlay-scrolling">true</property>
|
||||||
|
<property name="max-content-width">600</property>
|
||||||
|
<property name="max-content-height">300</property>
|
||||||
|
<property name="min-content-height">0</property>
|
||||||
|
<property name="propagate-natural-height">true</property>
|
||||||
|
<property name="propagate-natural-width">true</property>
|
||||||
|
<property name="hscrollbar-policy">automatic</property>
|
||||||
|
<property name="vscrollbar-policy">automatic</property>
|
||||||
|
<child>
|
||||||
|
<object class="GtkGridView" id="List">
|
||||||
|
<style>
|
||||||
|
<class name="list"></class>
|
||||||
|
</style>
|
||||||
|
<property name="max_columns">1</property>
|
||||||
|
<property name="can_focus">false</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="Preview">
|
||||||
|
<style>
|
||||||
|
<class name="preview"></class>
|
||||||
|
</style>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="Keybinds">
|
||||||
|
<property name="hexpand">true</property>
|
||||||
|
<property name="margin-top">10</property>
|
||||||
|
<style>
|
||||||
|
<class name="keybinds"></class>
|
||||||
|
</style>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="GlobalKeybinds">
|
||||||
|
<property name="spacing">10</property>
|
||||||
|
<style>
|
||||||
|
<class name="global-keybinds"></class>
|
||||||
|
</style>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkBox" id="ItemKeybinds">
|
||||||
|
<property name="hexpand">true</property>
|
||||||
|
<property name="halign">end</property>
|
||||||
|
<property name="spacing">10</property>
|
||||||
|
<style>
|
||||||
|
<class name="item-keybinds"></class>
|
||||||
|
</style>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
<child>
|
||||||
|
<object class="GtkLabel" id="Error">
|
||||||
|
<style>
|
||||||
|
<class name="error"></class>
|
||||||
|
</style>
|
||||||
|
<property name="xalign">0</property>
|
||||||
|
<property name="visible">false</property>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</child>
|
||||||
|
</object>
|
||||||
|
</interface>
|
||||||
116
.config/walker/themes/station-default/style.css
Normal file
116
.config/walker/themes/station-default/style.css
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
@import "../../../../.cache/wal/colors-waybar.css";
|
||||||
|
|
||||||
|
* {
|
||||||
|
all: unset;
|
||||||
|
}
|
||||||
|
|
||||||
|
* {
|
||||||
|
font-family: monospace;
|
||||||
|
font-size: 18px;
|
||||||
|
color: @foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
scrollbar {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.normal-icons {
|
||||||
|
-gtk-icon-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.large-icons {
|
||||||
|
-gtk-icon-size: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.box-wrapper {
|
||||||
|
background: alpha(@background, 0.95);
|
||||||
|
padding: 20px;
|
||||||
|
border: 2px solid @foreground;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview-box {
|
||||||
|
}
|
||||||
|
|
||||||
|
.box {
|
||||||
|
}
|
||||||
|
|
||||||
|
.search-container {
|
||||||
|
background: @background;
|
||||||
|
padding: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input placeholder {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.input {
|
||||||
|
}
|
||||||
|
|
||||||
|
.input:focus,
|
||||||
|
.input:active {
|
||||||
|
box-shadow: none;
|
||||||
|
outline: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.content-container {
|
||||||
|
}
|
||||||
|
|
||||||
|
.placeholder {
|
||||||
|
}
|
||||||
|
|
||||||
|
.scroll {
|
||||||
|
}
|
||||||
|
|
||||||
|
.list {
|
||||||
|
}
|
||||||
|
|
||||||
|
child,
|
||||||
|
child > * {
|
||||||
|
}
|
||||||
|
|
||||||
|
child:hover .item-box {
|
||||||
|
}
|
||||||
|
|
||||||
|
child:selected .item-box {
|
||||||
|
}
|
||||||
|
|
||||||
|
child:selected .item-box * {
|
||||||
|
color: @color14;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-box {
|
||||||
|
padding-left: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-text-box {
|
||||||
|
all: unset;
|
||||||
|
padding: 14px 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-text {
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-subtext {
|
||||||
|
font-size: 0px;
|
||||||
|
min-height: 0px;
|
||||||
|
margin: 0px;
|
||||||
|
padding: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.item-image {
|
||||||
|
margin-right: 14px;
|
||||||
|
-gtk-icon-transform: scale(0.9);
|
||||||
|
}
|
||||||
|
|
||||||
|
.current {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.keybind-hints {
|
||||||
|
background: @background;
|
||||||
|
padding: 10px;
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.preview {
|
||||||
|
}
|
||||||
@@ -1,80 +1,162 @@
|
|||||||
{
|
{
|
||||||
"layer": "top",
|
"reload_style_on_change": true,
|
||||||
"position": "top",
|
"layer": "top",
|
||||||
"mod": "dock",
|
"position": "top",
|
||||||
"exclusice": true,
|
"spacing": 0,
|
||||||
"passthrough": false,
|
"height": 26,
|
||||||
"gtk-layer-shell": true,
|
"modules-left": ["custom/station", "hyprland/workspaces"],
|
||||||
"height": 0,
|
"modules-center": ["clock", "custom/voxtype", "custom/screenrecording-indicator", "custom/idle-indicator", "custom/notification-silencing-indicator"],
|
||||||
"modules-left": [
|
"modules-right": [
|
||||||
"hyprland/workspaces"
|
"group/tray-expander",
|
||||||
],
|
"bluetooth",
|
||||||
"modules-center": ["hyprland/window"],
|
"network",
|
||||||
"modules-right": [
|
"pulseaudio",
|
||||||
"tray",
|
"cpu",
|
||||||
"custom/updates",
|
"battery"
|
||||||
"hyprland/language",
|
],
|
||||||
"pulseaudio",
|
"hyprland/workspaces": {
|
||||||
"pulseaudio#microphone",
|
"on-click": "activate",
|
||||||
"clock",
|
"format": "{icon}",
|
||||||
"custom/weather"
|
"format-icons": {
|
||||||
],
|
"default": "",
|
||||||
"hyprland/window": {
|
"1": "",
|
||||||
"format": {}
|
"2": "",
|
||||||
},
|
"3": "",
|
||||||
"hyprland/workspaces": {
|
"4": "",
|
||||||
"disable-scroll": true,
|
"5": "",
|
||||||
"all-outputs": true,
|
"6": "",
|
||||||
"on-click": "activate",
|
"7": "",
|
||||||
"persisten_workspaces": {
|
"8": "",
|
||||||
"1": []
|
"9": "",
|
||||||
|
"10": "",
|
||||||
|
},
|
||||||
|
"persistent-workspaces": {
|
||||||
|
"DP-1": [1, 3, 5, 7, 9],
|
||||||
|
"DP-2": [2, 4, 6, 8, 10]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"custom/station": {
|
||||||
|
"format": "<span font='station'>\ueb6a</span>",
|
||||||
|
"on-click": "station-menu",
|
||||||
|
"on-click-right": "xdg-terminal-exec",
|
||||||
|
"tooltip-format": "Station Menu\n\nSuper + Alt + Space"
|
||||||
|
},
|
||||||
|
|
||||||
|
"cpu": {
|
||||||
|
"interval": 5,
|
||||||
|
"format": "",
|
||||||
|
"on-click": "station-launch-or-focus-tui btop",
|
||||||
|
"on-click-right": "ghostty"
|
||||||
|
},
|
||||||
|
"clock": {
|
||||||
|
"format": "{:L%A %H:%M}",
|
||||||
|
"format-alt": "{:L%d %B W%V %Y}",
|
||||||
|
"tooltip": false,
|
||||||
|
"on-click-right": "station-launch-floating-terminal-with-presentation station-tz-select"
|
||||||
|
},
|
||||||
|
"network": {
|
||||||
|
"format-icons": ["", "", "", "", ""],
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-wifi": "{icon}",
|
||||||
|
"format-ethernet": "",
|
||||||
|
"format-disconnected": "",
|
||||||
|
"tooltip-format-wifi": "{essid} ({frequency} GHz)\n⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
|
||||||
|
"tooltip-format-ethernet": "⇣{bandwidthDownBytes} ⇡{bandwidthUpBytes}",
|
||||||
|
"tooltip-format-disconnected": "Disconnected",
|
||||||
|
"interval": 3,
|
||||||
|
"spacing": 1,
|
||||||
|
"on-click": "station-launch-wifi"
|
||||||
|
},
|
||||||
|
"battery": {
|
||||||
|
"format": "{capacity}% {icon}",
|
||||||
|
"format-discharging": "{icon}",
|
||||||
|
"format-charging": "{icon}",
|
||||||
|
"format-plugged": "",
|
||||||
|
"format-icons": {
|
||||||
|
"charging": ["", "", "", "", "", "", "", "", "", ""],
|
||||||
|
"default": ["", "", "", "", "", "", "", "", "", ""]
|
||||||
|
},
|
||||||
|
"format-full": "",
|
||||||
|
"tooltip-format-discharging": "{power:>1.0f}W↓ {capacity}%",
|
||||||
|
"tooltip-format-charging": "{power:>1.0f}W↑ {capacity}%",
|
||||||
|
"interval": 5,
|
||||||
|
"on-click": "station-menu power",
|
||||||
|
"states": {
|
||||||
|
"warning": 20,
|
||||||
|
"critical": 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"bluetooth": {
|
||||||
|
"format": "",
|
||||||
|
"format-off": "",
|
||||||
|
"format-disabled": "",
|
||||||
|
"format-connected": "",
|
||||||
|
"format-no-controller": "",
|
||||||
|
"tooltip-format": "Devices connected: {num_connections}",
|
||||||
|
"on-click": "station-launch-bluetooth"
|
||||||
|
},
|
||||||
|
"pulseaudio": {
|
||||||
|
"format": "{icon}",
|
||||||
|
"on-click": "station-launch-audio",
|
||||||
|
"on-click-right": "pamixer -t",
|
||||||
|
"tooltip-format": "Playing at {volume}%",
|
||||||
|
"scroll-step": 5,
|
||||||
|
"format-muted": "",
|
||||||
|
"format-icons": {
|
||||||
|
"headphone": "",
|
||||||
|
"headset": "",
|
||||||
|
"default": ["", "", ""]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"group/tray-expander": {
|
||||||
|
"orientation": "inherit",
|
||||||
|
"drawer": {
|
||||||
|
"transition-duration": 600,
|
||||||
|
"children-class": "tray-group-item"
|
||||||
|
},
|
||||||
|
"modules": ["custom/expand-icon", "tray"]
|
||||||
|
},
|
||||||
|
"custom/expand-icon": {
|
||||||
|
"format": "",
|
||||||
|
"tooltip": false,
|
||||||
|
"on-scroll-up": "",
|
||||||
|
"on-scroll-down": "",
|
||||||
|
"on-scroll-left": "",
|
||||||
|
"on-scroll-right": ""
|
||||||
|
},
|
||||||
|
"custom/screenrecording-indicator": {
|
||||||
|
"on-click": "station-cmd-screenrecord",
|
||||||
|
"exec": "$HOME/.config/waybar/indicators/screen-recording.sh",
|
||||||
|
"signal": 8,
|
||||||
|
"return-type": "json"
|
||||||
|
},
|
||||||
|
"custom/idle-indicator": {
|
||||||
|
"on-click": "station-toggle-idle",
|
||||||
|
"exec": "$HOME/.config/waybar/indicators/idle.sh",
|
||||||
|
"signal": 9,
|
||||||
|
"return-type": "json"
|
||||||
|
},
|
||||||
|
"custom/notification-silencing-indicator": {
|
||||||
|
"on-click": "station-toggle-notification-silencing",
|
||||||
|
"exec": "$HOME/.config/waybar/indicators/notification-silencing.sh",
|
||||||
|
"signal": 10,
|
||||||
|
"return-type": "json"
|
||||||
|
},
|
||||||
|
"custom/voxtype": {
|
||||||
|
"exec": "station-voxtype-status",
|
||||||
|
"return-type": "json",
|
||||||
|
"format": "{icon}",
|
||||||
|
"format-icons": {
|
||||||
|
"idle": "",
|
||||||
|
"recording": "",
|
||||||
|
"transcribing": ""
|
||||||
|
},
|
||||||
|
"tooltip": true,
|
||||||
|
"on-click-right": "station-voxtype-config",
|
||||||
|
"on-click": "station-voxtype-model"
|
||||||
|
},
|
||||||
|
"tray": {
|
||||||
|
"icon-size": 12,
|
||||||
|
"spacing": 17
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"hyprland/language": {
|
|
||||||
"format": "{}",
|
|
||||||
"format-en": "EN",
|
|
||||||
"format-ro": "RO"
|
|
||||||
},
|
|
||||||
"custom/weather": {
|
|
||||||
"tooltip": true,
|
|
||||||
"format": "{}",
|
|
||||||
"interval": 30,
|
|
||||||
"exec": "~/.config/waybar/scripts/waybar-wttr.py",
|
|
||||||
"return-type": "json"
|
|
||||||
},
|
|
||||||
"tray": {
|
|
||||||
"icon-size": 16,
|
|
||||||
"spacing": 10
|
|
||||||
},
|
|
||||||
"clock": {
|
|
||||||
"format": "{:%R %d%M}",
|
|
||||||
"tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>"
|
|
||||||
},
|
|
||||||
"pulseaudio": {
|
|
||||||
"format": "{icon} {volume}%",
|
|
||||||
"tooltip": false,
|
|
||||||
"format-muted": "Muted",
|
|
||||||
"on-click": "pamixer -t",
|
|
||||||
"on-scroll-up": "pamixer -i 5",
|
|
||||||
"on-scroll-down": "pamixer -d 5",
|
|
||||||
"scroll-step": 5
|
|
||||||
// "format-icons": {
|
|
||||||
// "headphones": "",
|
|
||||||
// "hands-free": "",
|
|
||||||
// "headset": "",
|
|
||||||
// "phone": "",
|
|
||||||
// "portable": "",
|
|
||||||
// "car": "",
|
|
||||||
// "default": ["", "", ""]
|
|
||||||
// }
|
|
||||||
},
|
|
||||||
"pulseaudio#microphone": {
|
|
||||||
"format": "{format_source}",
|
|
||||||
"format-source": "{volume}%",
|
|
||||||
"format-source-muted": "Muted",
|
|
||||||
"on-click": "pamixer --default-source -t",
|
|
||||||
"on-scroll-up": "pamixer --default-source -i 5",
|
|
||||||
"on-scroll-down": "pamixer --default-source -d 5",
|
|
||||||
"scroll-step": 5
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
7
.config/waybar/indicators/idle.sh
Executable file
7
.config/waybar/indicators/idle.sh
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if pgrep -x hypridle >/dev/null; then
|
||||||
|
echo '{"text": ""}'
|
||||||
|
else
|
||||||
|
echo '{"text": "", "tooltip": "Idle lock disabled", "class": "active"}'
|
||||||
|
fi
|
||||||
7
.config/waybar/indicators/notification-silencing.sh
Executable file
7
.config/waybar/indicators/notification-silencing.sh
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if makoctl mode | grep -q 'do-not-disturb'; then
|
||||||
|
echo '{"text": "", "tooltip": "Notifications silenced", "class": "active"}'
|
||||||
|
else
|
||||||
|
echo '{"text": ""}'
|
||||||
|
fi
|
||||||
7
.config/waybar/indicators/screen-recording.sh
Executable file
7
.config/waybar/indicators/screen-recording.sh
Executable file
@@ -0,0 +1,7 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
if pgrep -f "^gpu-screen-recorder" >/dev/null; then
|
||||||
|
echo '{"text": "", "tooltip": "Stop recording", "class": "active"}'
|
||||||
|
else
|
||||||
|
echo '{"text": ""}'
|
||||||
|
fi
|
||||||
@@ -1,124 +0,0 @@
|
|||||||
#!/run/current-system/sw/bin/python
|
|
||||||
|
|
||||||
import json
|
|
||||||
from datetime import datetime
|
|
||||||
|
|
||||||
import requests
|
|
||||||
|
|
||||||
WEATHER_CODES = {
|
|
||||||
"113": "Sunny",
|
|
||||||
"116": "Patchy",
|
|
||||||
"119": "Cloudy",
|
|
||||||
"122": "Cloudy",
|
|
||||||
"143": "Cloudy",
|
|
||||||
"176": "Rain",
|
|
||||||
"179": "Rain",
|
|
||||||
"182": "Rain",
|
|
||||||
"185": "Rain",
|
|
||||||
"200": "Storm",
|
|
||||||
"227": "Rain",
|
|
||||||
"230": "Rain",
|
|
||||||
"248": "Cloudy",
|
|
||||||
"260": "Cloudy",
|
|
||||||
"263": "Rain",
|
|
||||||
"266": "Rain",
|
|
||||||
"281": "Rain",
|
|
||||||
"284": "Rain",
|
|
||||||
"293": "Rain",
|
|
||||||
"296": "Rain",
|
|
||||||
"299": "Rain",
|
|
||||||
"302": "Rain",
|
|
||||||
"305": "Rain",
|
|
||||||
"308": "Rain",
|
|
||||||
"311": "Rain",
|
|
||||||
"314": "Rain",
|
|
||||||
"317": "Rain",
|
|
||||||
"320": "Rain",
|
|
||||||
"323": "Rain",
|
|
||||||
"326": "Rain",
|
|
||||||
"329": "Snow",
|
|
||||||
"332": "Snow",
|
|
||||||
"335": "Snow",
|
|
||||||
"338": "Snow",
|
|
||||||
"350": "Rain",
|
|
||||||
"353": "Rain",
|
|
||||||
"356": "Rain",
|
|
||||||
"359": "Rain",
|
|
||||||
"362": "Rain",
|
|
||||||
"365": "Rain",
|
|
||||||
"368": "Rain",
|
|
||||||
"371": "Snow",
|
|
||||||
"374": "Rain",
|
|
||||||
"377": "Rain",
|
|
||||||
"386": "Rain",
|
|
||||||
"389": "Rain",
|
|
||||||
"392": "Rain",
|
|
||||||
"395": "Snow",
|
|
||||||
}
|
|
||||||
|
|
||||||
data = {}
|
|
||||||
|
|
||||||
weather = request.get("https://wttr.in/?format=j1").json()
|
|
||||||
|
|
||||||
def format_time(time):
|
|
||||||
return time.replace("00", "").zfill(2)
|
|
||||||
|
|
||||||
def format_temp(temp):
|
|
||||||
return(temp["FeelsLikeC"] + "o").ljust(3)
|
|
||||||
|
|
||||||
def format_chances(hour):
|
|
||||||
chances = {
|
|
||||||
"chancesoffog": "Fog",
|
|
||||||
"chancesoffrost": "Frost",
|
|
||||||
"chancesofovercast": "Overcast",
|
|
||||||
"chancesofrain": "Rain",
|
|
||||||
"chancesofsnow": "Snow",
|
|
||||||
"chancesofsunshine": "Sunshine",
|
|
||||||
"chancesofthunder": "Thunder",
|
|
||||||
"chancesofwindy": "Wind",
|
|
||||||
}
|
|
||||||
|
|
||||||
conditions = []
|
|
||||||
for event in chances.keys():
|
|
||||||
if int(hour[event]) > 0:
|
|
||||||
conditions.append(chances[event] + "" + hour[event] + "%")
|
|
||||||
return ", ".join(conditions)
|
|
||||||
|
|
||||||
tempint = int(weather["current_condition"][0]["FeelsLikeC"])
|
|
||||||
extrachar = ""
|
|
||||||
if tempint > 0 and tempint < 10:
|
|
||||||
extrachar = "+"
|
|
||||||
|
|
||||||
data["text"] = (
|
|
||||||
" "
|
|
||||||
+ WEATHER_CODES[weather["current_condition"][0]["weatherCode"]]
|
|
||||||
+ " "
|
|
||||||
+ extrachar
|
|
||||||
+ weather["current_condition"][0]["FeelsLikeC"]
|
|
||||||
+ "o"
|
|
||||||
)
|
|
||||||
|
|
||||||
data["tooltip"] = (
|
|
||||||
f"<b>{weather['current_condition'][0]['weatherDesc'][0]['value']} {weather['current_condition'][0]['temp_C']}o</b>\n"
|
|
||||||
)
|
|
||||||
data["tooltip"] += f"Feels like: {weather['current_condition'][0]['FeelsLikeC']}o\n"
|
|
||||||
data["tooltip"] += f"Wind: {weather['current_condition'][0]['WindspeedKmph']}Km/h\n"
|
|
||||||
data["tooltip"] += f"Humidity: {weather['current_condition'][0]['FeelsLikeC']}%\n"
|
|
||||||
for i, day in enumerate(weather["weather"]):
|
|
||||||
data["tooltip"] += f"\n<b>"
|
|
||||||
if i == 0:
|
|
||||||
data["tooltip"] += "Today, "
|
|
||||||
if i == 1:
|
|
||||||
data["tooltip"] += "Tomorrow, "
|
|
||||||
data["tooltip"] += f"{day['date']}</b>\n"
|
|
||||||
data["tooltip"] += f"Up {day['maxtempC']}o Down {day['mintempC']}o "
|
|
||||||
data["tooltip"] += f"Sunrise {day['astronomy'][0]['sunrise']} Sunset {day['astronomy'][0]['sunset']} \n"
|
|
||||||
|
|
||||||
for hour in day["hourly"]:
|
|
||||||
if i == 0"
|
|
||||||
if int(format_time(hour["time"])) < datetime.now().hour - 2:
|
|
||||||
continue
|
|
||||||
|
|
||||||
data["tooltip"] += f"{format_time(hour['time'])} {WEATHER_CODES[hour['weatherCode']]} {format_temp(hour['FeelsLikeC'])} {hour['weatherDesc'][0]['value']}, {format_chances(hour)}\n"
|
|
||||||
|
|
||||||
print(json.dumps(data))
|
|
||||||
@@ -1,149 +1,111 @@
|
|||||||
|
@import "../../.cache/wal/colors-waybar.css";
|
||||||
|
|
||||||
* {
|
* {
|
||||||
border: none;
|
background-color: @background;
|
||||||
border-radius: 0;
|
color: @foreground;
|
||||||
font-family:
|
|
||||||
JetBrains Mono Nerd Font,
|
border: none;
|
||||||
monospace;
|
border-radius: 0;
|
||||||
font-weight: bold;
|
min-height: 0;
|
||||||
font-size: 14px;
|
font-family: 'Fira Code Nerd Font';
|
||||||
min-height: 0;
|
font-size: 20px;
|
||||||
|
margin: 1px 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
window#waybar {
|
.modules-left {
|
||||||
background: rgba(21, 18, 27, 0);
|
margin-left: 8px;
|
||||||
color: #cdd6f4;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tooltip {
|
.modules-right {
|
||||||
background: #1e1e2e;
|
margin-right: 8px;
|
||||||
border-radius: 10px;
|
|
||||||
border-width: 2px;
|
|
||||||
border-style: solid;
|
|
||||||
border-color: #11111b;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button {
|
|
||||||
padding: 5px;
|
|
||||||
color: #313244;
|
|
||||||
margin-right: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.active {
|
|
||||||
color: #a6adc8;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.focused {
|
|
||||||
color: #a6adc8;
|
|
||||||
background: #eba0ac;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.urgent {
|
|
||||||
color: #11111b;
|
|
||||||
background: #a6e3a1;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#workspaces button.active {
|
|
||||||
color: #11111b;
|
|
||||||
background: #cdd6f4;
|
|
||||||
border-radius: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#language,
|
|
||||||
#custom-updates,
|
|
||||||
#custom-caffeine,
|
|
||||||
#custom-weather,
|
|
||||||
#window,
|
|
||||||
#clock,
|
|
||||||
#battery,
|
|
||||||
#pulseaudio,
|
|
||||||
#network,
|
|
||||||
#workspaces,
|
|
||||||
#tray,
|
|
||||||
#backlight {
|
|
||||||
background: #1e1e2e;
|
|
||||||
padding: 0px 10px;
|
|
||||||
margin: 3px 0px;
|
|
||||||
margin-top: 10px;
|
|
||||||
border: 1px solid #181825;
|
|
||||||
}
|
|
||||||
|
|
||||||
#tray {
|
|
||||||
border-radius: 10px;
|
|
||||||
margin-right: 10px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#workspaces {
|
#workspaces {
|
||||||
background: #1e1e2e;
|
margin-left: 10px;
|
||||||
border-radius: 10px;
|
|
||||||
margin-left: 10px;
|
|
||||||
padding-right: 0px;
|
|
||||||
padding-left: 5px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#custom-caffeine {
|
#workspaces button {
|
||||||
color: #89dceb;
|
all: initial;
|
||||||
border-radius: 10px 0 0 10px;
|
padding: 0 6px;
|
||||||
border-right: 0;
|
margin: 0 1.5px;
|
||||||
margin-left: 10px;
|
margin: 0 5px;
|
||||||
|
min-width: 15px;
|
||||||
|
color: blue;
|
||||||
}
|
}
|
||||||
|
|
||||||
#custom-language {
|
#workspaces button.empty {
|
||||||
color: #f38ba8;
|
opacity: 0.5;
|
||||||
border-right: 0;
|
|
||||||
border-left: 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#custom-updates {
|
#workspaces button.active .workspace-label {
|
||||||
color: #f5c2e7;
|
color: @color13;
|
||||||
border-radius: 10px 0 0 10px;
|
|
||||||
border-left: 0;
|
|
||||||
border-right: 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#window {
|
#cpu,
|
||||||
border-radius: 10px;
|
#battery,
|
||||||
margin-left: 0;
|
#pulseaudio,
|
||||||
margin-right: 0;
|
#custom-omarchy,
|
||||||
|
#custom-update {
|
||||||
|
min-width: 12px;
|
||||||
|
margin: 0 7.5px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#clock {
|
#tray {
|
||||||
color: #fab387;
|
margin-right: 16px;
|
||||||
border-radius: 10px 0 0 10px;
|
}
|
||||||
margin-left: 5px;
|
|
||||||
border-right: 0px;
|
#bluetooth {
|
||||||
|
margin-right: 17px;
|
||||||
}
|
}
|
||||||
|
|
||||||
#network {
|
#network {
|
||||||
color: #f9e2af;
|
margin-right: 13px;
|
||||||
border-left: 0px;
|
|
||||||
border-right: 0px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#pulseaudio {
|
#custom-expand-icon {
|
||||||
color: #89b4fa;
|
margin-right: 18px;
|
||||||
border-left: 0px;
|
|
||||||
border-right: 0px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#pulseaudio.microphone {
|
tooltip {
|
||||||
color: #cba6f7;
|
padding: 2px;
|
||||||
border-radius: 0 10px 10px 0;
|
|
||||||
border-left: 0;
|
|
||||||
border-right: 0;
|
|
||||||
margin-right: 5px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#battery {
|
#custom-update {
|
||||||
color: #a6e3a1;
|
font-size: 10px;
|
||||||
border-radius: 0 10px 10px 0;
|
|
||||||
margin-right: 10px;
|
|
||||||
border-left: 0px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#custom-weather {
|
#clock {
|
||||||
border-radius: 0 10px 10px 0;
|
margin-left: 8.75px;
|
||||||
border-right: 0;
|
}
|
||||||
margin-left: 0;
|
|
||||||
|
.hidden {
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-screenrecording-indicator,
|
||||||
|
#custom-idle-indicator,
|
||||||
|
#custom-notification-silencing-indicator {
|
||||||
|
min-width: 12px;
|
||||||
|
margin-left: 5px;
|
||||||
|
margin-right: 0;
|
||||||
|
font-size: 10px;
|
||||||
|
padding-bottom: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-screenrecording-indicator.active {
|
||||||
|
color: #a55555;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-idle-indicator.active,
|
||||||
|
#custom-notification-silencing-indicator.active {
|
||||||
|
color: #a55555;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-voxtype {
|
||||||
|
min-width: 12px;
|
||||||
|
margin: 0 0 0 7.5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#custom-voxtype.recording {
|
||||||
|
color: #a55555;
|
||||||
}
|
}
|
||||||
|
|||||||
5
.config/wiremix/wiremix.toml
Normal file
5
.config/wiremix/wiremix.toml
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# overwrites default wiremix configuration
|
||||||
|
# defaults: https://github.com/tsowell/wiremix/blob/main/wiremix.toml
|
||||||
|
|
||||||
|
[char_sets.default]
|
||||||
|
default_device = "⮞"
|
||||||
35
.config/xcompose
Normal file
35
.config/xcompose
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
# Run station-restart-xcompose to apply changes
|
||||||
|
|
||||||
|
include "%L"
|
||||||
|
|
||||||
|
# Emoji
|
||||||
|
<Multi_key> <m> <s> : "😄" # smile
|
||||||
|
<Multi_key> <m> <c> : "😂" # cry
|
||||||
|
<Multi_key> <m> <l> : "😍" # love
|
||||||
|
<Multi_key> <m> <v> : "✌️" # victory
|
||||||
|
<Multi_key> <m> <h> : "❤️" # heart
|
||||||
|
<Multi_key> <m> <y> : "👍" # yes
|
||||||
|
<Multi_key> <m> <n> : "👎" # no
|
||||||
|
<Multi_key> <m> <f> : "🖕" # fuck
|
||||||
|
<Multi_key> <m> <w> : "🤞" # wish
|
||||||
|
<Multi_key> <m> <r> : "🤘" # rock
|
||||||
|
<Multi_key> <m> <k> : "😘" # kiss
|
||||||
|
<Multi_key> <m> <e> : "🙄" # eyeroll
|
||||||
|
<Multi_key> <m> <d> : "🤤" # droll
|
||||||
|
<Multi_key> <m> <m> : "💰" # money
|
||||||
|
<Multi_key> <m> <x> : "🎉" # xellebrate
|
||||||
|
<Multi_key> <m> <1> : "💯" # 100%
|
||||||
|
<Multi_key> <m> <t> : "🥂" # toast
|
||||||
|
<Multi_key> <m> <p> : "🙏" # pray
|
||||||
|
<Multi_key> <m> <i> : "😉" # wink
|
||||||
|
<Multi_key> <m> <o> : "👌" # OK
|
||||||
|
<Multi_key> <m> <g> : "👋" # greeting
|
||||||
|
<Multi_key> <m> <a> : "💪" # arm
|
||||||
|
<Multi_key> <m> <b> : "🤯" # blowing
|
||||||
|
|
||||||
|
# Typography
|
||||||
|
<Multi_key> <space> <space> : "—"
|
||||||
|
|
||||||
|
# Identification
|
||||||
|
<Multi_key> <space> <n> : "chris"
|
||||||
|
<Multi_key> <space> <e> : "stofflees@gmail.com"
|
||||||
268
.config/xournalpp/settings.xml
Normal file
268
.config/xournalpp/settings.xml
Normal file
@@ -0,0 +1,268 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--The Xournal++ settings file. Do not edit this file! Most settings are available in the Settings dialog, the others are commented in this file, but handle with care!-->
|
||||||
|
<settings>
|
||||||
|
<property name="pressureSensitivity" value="true"/>
|
||||||
|
<property name="minimumPressure" value="0.05"/>
|
||||||
|
<property name="pressureMultiplier" value="1"/>
|
||||||
|
<property name="zoomGesturesEnabled" value="true"/>
|
||||||
|
<property name="selectedToolbar" value="Portrait"/>
|
||||||
|
<property name="lastSavePath" value="/home/dhh/Downloads"/>
|
||||||
|
<property name="lastOpenPath" value=""/>
|
||||||
|
<property name="lastImagePath" value="/home/dhh/Dropbox/Images"/>
|
||||||
|
<property name="edgePanSpeed" value="20"/>
|
||||||
|
<property name="edgePanMaxMult" value="5"/>
|
||||||
|
<property name="zoomStep" value="10"/>
|
||||||
|
<property name="zoomStepScroll" value="2"/>
|
||||||
|
<property name="displayDpi" value="72"/>
|
||||||
|
<property name="mainWndWidth" value="800"/>
|
||||||
|
<property name="mainWndHeight" value="600"/>
|
||||||
|
<property name="maximized" value="true"/>
|
||||||
|
<property name="showToolbar" value="true"/>
|
||||||
|
<property name="showSidebar" value="true"/>
|
||||||
|
<property name="sidebarWidth" value="150"/>
|
||||||
|
<property name="sidebarNumberingStyle" value="1"/>
|
||||||
|
<property name="sidebarOnRight" value="false"/>
|
||||||
|
<property name="scrollbarOnLeft" value="false"/>
|
||||||
|
<property name="menubarVisible" value="true"/>
|
||||||
|
<property name="filepathShownInTitlebar" value="false"/>
|
||||||
|
<property name="numColumns" value="1"/>
|
||||||
|
<property name="numRows" value="1"/>
|
||||||
|
<property name="viewFixedRows" value="false"/>
|
||||||
|
<property name="showPairedPages" value="false"/>
|
||||||
|
<property name="layoutVertical" value="false"/>
|
||||||
|
<property name="layoutRightToLeft" value="false"/>
|
||||||
|
<property name="layoutBottomToTop" value="false"/>
|
||||||
|
<property name="numPairsOffset" value="1"/>
|
||||||
|
<!--The icon theme, allowed values are "disabled", "onDrawOfLastPage", and "onScrollOfLastPage"-->
|
||||||
|
<property name="emptyLastPageAppend" value="disabled"/>
|
||||||
|
<property name="presentationMode" value="false"/>
|
||||||
|
<!--Which GUI elements are shown in default view mode, separated by a colon (,)-->
|
||||||
|
<property name="defaultViewModeAttributes" value="showMenubar,showToolbar,showSidebar"/>
|
||||||
|
<!--Which GUI elements are shown in fullscreen view mode, separated by a colon (,)-->
|
||||||
|
<property name="fullscreenViewModeAttributes" value="goFullscren,showToolbar,showSidebar"/>
|
||||||
|
<!--Which GUI elements are shown in presentation view mode, separated by a colon (,)-->
|
||||||
|
<property name="presentationViewModeAttributes" value="goFullscren,showToolbar"/>
|
||||||
|
<!--The cursor icon used with a stylus, allowed values are "none", "dot", "big", "arrow"-->
|
||||||
|
<property name="stylusCursorType" value="dot"/>
|
||||||
|
<!--The eraser cursor visibility used with a stylus, allowed values are "never", "always", "hover", "touch"-->
|
||||||
|
<property name="eraserVisibility" value="always"/>
|
||||||
|
<!--The icon theme, allowed values are "iconsColor", "iconsLucide"-->
|
||||||
|
<property name="iconTheme" value="iconsColor"/>
|
||||||
|
<!--Dark/light mode, allowed values are "useSystem", "forceLight", "forceDark"-->
|
||||||
|
<property name="themeVariant" value="forceDark"/>
|
||||||
|
<property name="highlightPosition" value="false"/>
|
||||||
|
<property name="cursorHighlightColor" value="2164260608"/>
|
||||||
|
<property name="cursorHighlightBorderColor" value="2147483903"/>
|
||||||
|
<property name="cursorHighlightRadius" value="30"/>
|
||||||
|
<property name="cursorHighlightBorderWidth" value="0"/>
|
||||||
|
<property name="useStockIcons" value="false"/>
|
||||||
|
<property name="disableScrollbarFadeout" value="false"/>
|
||||||
|
<property name="disableAudio" value="false"/>
|
||||||
|
<!--Hides scroolbars in the main window, allowed values: "none", "horizontal", "vertical", "both"-->
|
||||||
|
<property name="scrollbarHideType" value="none"/>
|
||||||
|
<property name="autoloadMostRecent" value="false"/>
|
||||||
|
<property name="autoloadPdfXoj" value="true"/>
|
||||||
|
<property name="defaultSaveName" value="%F-Note-%H-%M"/>
|
||||||
|
<property name="defaultPdfExportName" value="%{name}_annotated"/>
|
||||||
|
<property name="autosaveEnabled" value="true"/>
|
||||||
|
<property name="autosaveTimeout" value="3"/>
|
||||||
|
<property name="addHorizontalSpace" value="false"/>
|
||||||
|
<property name="addHorizontalSpaceAmount" value="150"/>
|
||||||
|
<property name="addVerticalSpace" value="false"/>
|
||||||
|
<property name="addVerticalSpaceAmount" value="150"/>
|
||||||
|
<property name="drawDirModsEnabled" value="false"/>
|
||||||
|
<property name="drawDirModsRadius" value="50"/>
|
||||||
|
<property name="snapRotation" value="true"/>
|
||||||
|
<property name="snapRotationTolerance" value="0.3"/>
|
||||||
|
<property name="snapGrid" value="true"/>
|
||||||
|
<property name="snapGridTolerance" value="0.5"/>
|
||||||
|
<property name="snapGridSize" value="14.17"/>
|
||||||
|
<property name="strokeRecognizerMinSize" value="40"/>
|
||||||
|
<property name="touchDrawing" value="false"/>
|
||||||
|
<property name="gtkTouchInertialScrolling" value="true"/>
|
||||||
|
<property name="pressureGuessing" value="false"/>
|
||||||
|
<property name="selectionBorderColor" value="4294901760"/>
|
||||||
|
<property name="backgroundColor" value="4292664021"/>
|
||||||
|
<property name="selectionMarkerColor" value="4285702095"/>
|
||||||
|
<property name="touchZoomStartThreshold" value="0"/>
|
||||||
|
<property name="pageRerenderThreshold" value="5"/>
|
||||||
|
<!--The count of rendered PDF pages which will be cached.-->
|
||||||
|
<property name="pdfPageCacheSize" value="10"/>
|
||||||
|
<property name="preloadPagesBefore" value="3"/>
|
||||||
|
<property name="preloadPagesAfter" value="5"/>
|
||||||
|
<property name="eagerPageCleanup" value="true"/>
|
||||||
|
<!--Config for new pages-->
|
||||||
|
<property name="pageTemplate" value="xoj/template copyLastPageSettings=true size=595.275591x841.889764 backgroundType=lined backgroundColor=#ffffff "/>
|
||||||
|
<property name="sizeUnit" value=""/>
|
||||||
|
<property name="audioFolder" value=""/>
|
||||||
|
<property name="audioInputDevice" value="-1"/>
|
||||||
|
<property name="audioOutputDevice" value="-1"/>
|
||||||
|
<property name="audioSampleRate" value="44100"/>
|
||||||
|
<property name="audioGain" value="1"/>
|
||||||
|
<property name="defaultSeekTime" value="5"/>
|
||||||
|
<property name="pluginEnabled" value=""/>
|
||||||
|
<property name="pluginDisabled" value=""/>
|
||||||
|
<property name="strokeFilterIgnoreTime" value="150"/>
|
||||||
|
<property name="strokeFilterIgnoreLength" value="1"/>
|
||||||
|
<property name="strokeFilterSuccessiveTime" value="500"/>
|
||||||
|
<property name="strokeFilterEnabled" value="false"/>
|
||||||
|
<property name="doActionOnStrokeFiltered" value="false"/>
|
||||||
|
<property name="trySelectOnStrokeFiltered" value="false"/>
|
||||||
|
<property name="snapRecognizedShapesEnabled" value="false"/>
|
||||||
|
<property name="restoreLineWidthEnabled" value="false"/>
|
||||||
|
<property name="numIgnoredStylusEvents" value="0"/>
|
||||||
|
<property name="inputSystemTPCButton" value="false"/>
|
||||||
|
<property name="inputSystemDrawOutsideWindow" value="true"/>
|
||||||
|
<property name="preferredLocale" value=""/>
|
||||||
|
<property name="stabilizerAveragingMethod" value="0"/>
|
||||||
|
<property name="stabilizerPreprocessor" value="0"/>
|
||||||
|
<property name="stabilizerBuffersize" value="20"/>
|
||||||
|
<property name="stabilizerSigma" value="0.5"/>
|
||||||
|
<property name="stabilizerDeadzoneRadius" value="1.3"/>
|
||||||
|
<property name="stabilizerDrag" value="0.4"/>
|
||||||
|
<property name="stabilizerMass" value="5"/>
|
||||||
|
<property name="stabilizerCuspDetection" value="true"/>
|
||||||
|
<property name="stabilizerFinalizeStroke" value="true"/>
|
||||||
|
<property name="latexSettings.autoCheckDependencies" value="true"/>
|
||||||
|
<property name="latexSettings.defaultText" value="x^2"/>
|
||||||
|
<property name="latexSettings.globalTemplatePath" value="/usr/share/xournalpp/resources/default_template.tex"/>
|
||||||
|
<property name="latexSettings.genCmd" value="pdflatex -halt-on-error -interaction=nonstopmode '{}'"/>
|
||||||
|
<property name="latexSettings.sourceViewThemeId" value=""/>
|
||||||
|
<property name="latexSettings.editorFont" value="Monospace 12"/>
|
||||||
|
<property name="latexSettings.useCustomEditorFont" value="false"/>
|
||||||
|
<property name="latexSettings.editorWordWrap" value="true"/>
|
||||||
|
<property name="latexSettings.sourceViewAutoIndent" value="true"/>
|
||||||
|
<property name="latexSettings.sourceViewSyntaxHighlight" value="true"/>
|
||||||
|
<property name="latexSettings.sourceViewShowLineNumbers" value="false"/>
|
||||||
|
<property name="font" font="Sans" size="12"/>
|
||||||
|
<data name="buttonConfig">
|
||||||
|
<data name="default">
|
||||||
|
<attribute name="color" type="hex" value="ff000000"/>
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
<attribute name="size" type="string" value="thin"/>
|
||||||
|
<attribute name="tool" type="string" value="pen"/>
|
||||||
|
</data>
|
||||||
|
<data name="eraser">
|
||||||
|
<attribute name="eraserMode" type="string" value="none"/>
|
||||||
|
<attribute name="size" type="string" value="none"/>
|
||||||
|
<attribute name="tool" type="string" value="eraser"/>
|
||||||
|
</data>
|
||||||
|
<data name="middle">
|
||||||
|
<attribute name="tool" type="string" value="hand"/>
|
||||||
|
</data>
|
||||||
|
<data name="right">
|
||||||
|
<attribute name="tool" type="string" value="none"/>
|
||||||
|
</data>
|
||||||
|
<data name="stylus">
|
||||||
|
<attribute name="tool" type="string" value="none"/>
|
||||||
|
</data>
|
||||||
|
<data name="stylus2">
|
||||||
|
<attribute name="tool" type="string" value="none"/>
|
||||||
|
</data>
|
||||||
|
<data name="touch">
|
||||||
|
<attribute name="device" type="string" value=""/>
|
||||||
|
<attribute name="disableDrawing" type="boolean" value="false"/>
|
||||||
|
<attribute name="tool" type="string" value="none"/>
|
||||||
|
</data>
|
||||||
|
</data>
|
||||||
|
<data name="deviceClasses">
|
||||||
|
<data name="Wayland Finger Scrolling">
|
||||||
|
<attribute name="deviceClass" type="int" value="1"/>
|
||||||
|
<attribute name="deviceSource" type="int" value="6"/>
|
||||||
|
</data>
|
||||||
|
<data name="Wayland Pointer">
|
||||||
|
<attribute name="deviceClass" type="int" value="1"/>
|
||||||
|
<attribute name="deviceSource" type="int" value="0"/>
|
||||||
|
</data>
|
||||||
|
</data>
|
||||||
|
<data name="tools">
|
||||||
|
<attribute name="current" type="string" value="text"/>
|
||||||
|
<data name="drawArrow">
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
</data>
|
||||||
|
<data name="drawCoordinateSystem">
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
</data>
|
||||||
|
<data name="drawDoubleArrow">
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
</data>
|
||||||
|
<data name="drawEllipse">
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
</data>
|
||||||
|
<data name="drawRect">
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
</data>
|
||||||
|
<data name="drawSpline">
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
</data>
|
||||||
|
<data name="eraser">
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
<attribute name="size" type="string" value="MEDIUM"/>
|
||||||
|
<attribute name="type" type="string" value="default"/>
|
||||||
|
</data>
|
||||||
|
<data name="hand">
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
</data>
|
||||||
|
<data name="highlighter">
|
||||||
|
<attribute name="color" type="hex" value="ffffff00"/>
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
<attribute name="fill" type="int" value="0"/>
|
||||||
|
<attribute name="fillAlpha" type="int" value="128"/>
|
||||||
|
<attribute name="size" type="string" value="MEDIUM"/>
|
||||||
|
</data>
|
||||||
|
<data name="image">
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
</data>
|
||||||
|
<data name="pen">
|
||||||
|
<attribute name="color" type="hex" value="ff3333cc"/>
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
<attribute name="fill" type="int" value="0"/>
|
||||||
|
<attribute name="fillAlpha" type="int" value="128"/>
|
||||||
|
<attribute name="size" type="string" value="MEDIUM"/>
|
||||||
|
<attribute name="style" type="string" value="plain"/>
|
||||||
|
</data>
|
||||||
|
<data name="playObject">
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
</data>
|
||||||
|
<data name="selectMultiLayerRect">
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
</data>
|
||||||
|
<data name="selectMultiLayerRegion">
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
</data>
|
||||||
|
<data name="selectObject">
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
</data>
|
||||||
|
<data name="selectPdfTextLinear">
|
||||||
|
<attribute name="color" type="hex" value="ff000000"/>
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
</data>
|
||||||
|
<data name="selectPdfTextRect">
|
||||||
|
<attribute name="color" type="hex" value="ff000000"/>
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
</data>
|
||||||
|
<data name="selectRect">
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
</data>
|
||||||
|
<data name="selectRegion">
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
</data>
|
||||||
|
<data name="showFloatingToolbox">
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
</data>
|
||||||
|
<data name="text">
|
||||||
|
<attribute name="color" type="hex" value="ff000000"/>
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
</data>
|
||||||
|
<data name="verticalSpace">
|
||||||
|
<attribute name="drawingType" type="string" value="default"/>
|
||||||
|
</data>
|
||||||
|
</data>
|
||||||
|
<data name="touch">
|
||||||
|
<attribute name="cmdDisable" type="string" value=""/>
|
||||||
|
<attribute name="cmdEnable" type="string" value=""/>
|
||||||
|
<attribute name="disableTouch" type="boolean" value="false"/>
|
||||||
|
<attribute name="method" type="string" value="auto"/>
|
||||||
|
<attribute name="timeout" type="int" value="1000"/>
|
||||||
|
</data>
|
||||||
|
</settings>
|
||||||
@@ -183,8 +183,12 @@ set -o ignoreeof # Stop CTRL-D from quitting
|
|||||||
# Load syntax highlighting; should be last.
|
# Load syntax highlighting; should be last.
|
||||||
source /usr/share/zsh/plugins/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh 2>/dev/null
|
source /usr/share/zsh/plugins/fast-syntax-highlighting/fast-syntax-highlighting.plugin.zsh 2>/dev/null
|
||||||
|
|
||||||
[[ -s /etc/profile.d/autojump.sh ]] && source /etc/profile.d/autojump.sh
|
|
||||||
|
|
||||||
. "$HOME/.local/share/../bin/env"
|
|
||||||
|
|
||||||
eval "$(zoxide init --cmd cd zsh)"
|
eval "$(zoxide init --cmd cd zsh)"
|
||||||
|
|
||||||
|
eval "$(try init ~/src/tries)"
|
||||||
|
|
||||||
|
eval "$(direnv hook zsh)"
|
||||||
|
|
||||||
|
[ -f ~/.cache/wal/sequences ] && \cat ~/.cache/wal/sequences
|
||||||
|
|
||||||
|
[ -f ~/.cache/wal/colors-tty.sh ] && source ~/.cache/wal/colors-tty.sh
|
||||||
|
|||||||
@@ -1,57 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# This script will compile or run another finishing operation on a document. I
|
|
||||||
# have this script run via vim.
|
|
||||||
#
|
|
||||||
# Compiles .tex. groff (.mom, .ms), .rmd, .md, .org. Opens .sent files as sent
|
|
||||||
# presentations. Runs scripts based on extention or shebang.
|
|
||||||
#
|
|
||||||
# Note that .tex files which you wish to compile with XeLaTeX should have the
|
|
||||||
# string "xelatex" somewhere in a comment/command in the first 5 lines.
|
|
||||||
|
|
||||||
file=$(readlink -f "$1")
|
|
||||||
dir=${file%/*}
|
|
||||||
base="${file%.*}"
|
|
||||||
ext="${file##*.}"
|
|
||||||
|
|
||||||
cd "$dir" || exit 1
|
|
||||||
|
|
||||||
textype() { \
|
|
||||||
command="pdflatex"
|
|
||||||
( head -n5 "$file" | grep -qi 'xelatex' ) && command="xelatex"
|
|
||||||
$command --output-directory="$dir" "$base" &&
|
|
||||||
grep -qi addbibresource "$file" &&
|
|
||||||
biber --input-directory "$dir" "$base" &&
|
|
||||||
$command --output-directory="$dir" "$base" &&
|
|
||||||
$command --output-directory="$dir" "$base"
|
|
||||||
}
|
|
||||||
|
|
||||||
case "$ext" in
|
|
||||||
# Try to keep these cases in alphabetical order.
|
|
||||||
[0-9]) preconv "$file" | refer -PS -e | groff -mandoc -T pdf > "$base".pdf ;;
|
|
||||||
c) cc "$file" -o "$base" && "$base" ;;
|
|
||||||
cpp) g++ "$file" -o "$base" && "$base" ;;
|
|
||||||
cs) mcs "$file" && mono "$base".exe ;;
|
|
||||||
go) go run "$file" ;;
|
|
||||||
h) sudo make install ;;
|
|
||||||
java) javac -d classes "$file" && java -cp classes "${1%.*}" ;;
|
|
||||||
m) octave "$file" ;;
|
|
||||||
md) if [ -x "$(command -v lowdown)" ]; then
|
|
||||||
lowdown -d nointem -e super "$file" -Tms | groff -mpdfmark -ms -kept > "$base".pdf
|
|
||||||
elif [ -x "$(command -v groffdown)" ]; then
|
|
||||||
groffdown -i "$file" | groff > "$base.pdf"
|
|
||||||
else
|
|
||||||
pandoc -t ms --highlight-style=kate -s -o "$base".pdf "$file"
|
|
||||||
fi ; ;;
|
|
||||||
mom) preconv "$file" | refer -PS -e | groff -mom -kept -T pdf > "$base".pdf ;;
|
|
||||||
ms) preconv "$file" | refer -PS -e | groff -me -ms -kept -T pdf > "$base".pdf ;;
|
|
||||||
org) emacs "$file" --batch -u "$USER" -f org-latex-export-to-pdf ;;
|
|
||||||
py) python "$file" ;;
|
|
||||||
[rR]md) Rscript -e "rmarkdown::render('$file', quiet=TRUE)" ;;
|
|
||||||
rs) cargo build ;;
|
|
||||||
sass) sassc -a "$file" "$base.css" ;;
|
|
||||||
scad) openscad -o "$base".stl "$file" ;;
|
|
||||||
sent) setsid -f sent "$file" 2>/dev/null ;;
|
|
||||||
tex) textype "$file" ;;
|
|
||||||
*) head -n1 "$file" | grep "^#!/" | sed "s/^#!//" | xargs -r -I % "$file" ;;
|
|
||||||
esac
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# Syncs repositories and downloads updates, meant to be run as a cronjob.
|
|
||||||
|
|
||||||
notify-send " Repository Sync" "Checking for package updates..."
|
|
||||||
|
|
||||||
sudo yay -Syyuw --noconfirm || notify-send "Error downloading updates.
|
|
||||||
Check your internet connection, if pacman is already running, or run update manually to see errors."
|
|
||||||
pkill -RTMIN+8 "${STATUSBAR:-dwmblocks}"
|
|
||||||
|
|
||||||
if pacman -Qu | grep -v "\[ignored\]"
|
|
||||||
then
|
|
||||||
notify-send " Repository Sync" "Updates available. Click statusbar icon () for update."
|
|
||||||
else
|
|
||||||
notify-send " Repository Sync" "Sync complete. No new packages for update."
|
|
||||||
fi
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# Toggles all cronjobs off/on.
|
|
||||||
# Stores disabled crontabs in ~/.consaved until restored.
|
|
||||||
|
|
||||||
([ -f "${XDG_CONFIG_HOME:-$HOME/.config}"/cronsaved ] && crontab - < "${XDG_CONFIG_HOME:-$HOME/.config}"/cronsaved && rm "${XDG_CONFIG_HOME:-$HOME/.config}"/cronsaved && notify-send "🕓 Cronjobs re-enabled.") || ( crontab -l > "${XDG_CONFIG_HOME:-$HOME/.config}"/cronsaved && crontab -r && notify-send "🕓 Cronjobs saved and disabled.")
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# Set as a cron job to check for new RSS entries for newsboat.
|
|
||||||
# If newsboat is open, sends it an "R" key to refresh.
|
|
||||||
|
|
||||||
/usr/bin/notify-send "📰 Updating RSS feeds..."
|
|
||||||
|
|
||||||
pgrep -f newsboat$ && /usr/bin/xdotool key --window "$(/usr/bin/xdotool search --name newsboat)" R && exit
|
|
||||||
|
|
||||||
echo > /tmp/newsupdate
|
|
||||||
pkill -RTMIN+6 "${STATUSBAR:-dwmblocks}"
|
|
||||||
/usr/bin/newsboat -x reload
|
|
||||||
rm -f /tmp/newsupdate
|
|
||||||
pkill -RTMIN+6 "${STATUSBAR:-dwmblocks}"
|
|
||||||
/usr/bin/notify-send "📰 RSS feed update complete."
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# Feed this script a link and it will give dmenu
|
|
||||||
# some choice programs to use to open it.
|
|
||||||
feed="${1:-$(printf "%s" | dmenu -p 'Paste URL or file path')}"
|
|
||||||
|
|
||||||
case "$(printf "Copy URL\\nsxiv\\nsetbg\\nPDF\\nbrowser\\nlynx\\nvim\\nmpv\\nmpv loop\\nmpv float\\nqueue download\\nqueue yt-dl\\nqueue yt-dl audio" | dmenu -i -p "Open it with?")" in
|
|
||||||
"copy url") echo "$feed" | xclip -selection clipboard ;;
|
|
||||||
mpv) setsid -f mpv -quiet "$feed" >/dev/null 2>&1 ;;
|
|
||||||
"mpv loop") setsid -f mpv -quiet --loop "$feed" >/dev/null 2>&1 ;;
|
|
||||||
"mpv float") setsid -f "$TERMINAL" -e mpv --geometry=+0-0 --autofit=30% --title="mpvfloat" "$feed" >/dev/null 2>&1 ;;
|
|
||||||
"queue yt-dl") qndl "$feed" >/dev/null 2>&1 ;;
|
|
||||||
"queue yt-dl audio") qndl "$feed" 'youtube-dl --add-metadata -icx -f bestaudio/best' >/dev/null 2>&1 ;;
|
|
||||||
"queue download") qndl "$feed" 'curl -LO' >/dev/null 2>&1 ;;
|
|
||||||
PDF) curl -sL "$feed" > "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" && zathura "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 ;;
|
|
||||||
sxiv) curl -sL "$feed" > "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" && sxiv -a "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 ;;
|
|
||||||
vim) curl -sL "$feed" > "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" && setsid -f "$TERMINAL" -e "$EDITOR" "/tmp/$(echo "$feed" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 ;;
|
|
||||||
setbg) curl -L "$feed" > $XDG_CACHE_HOME/pic ; xwallpaper --zoom $XDG_CACHE_HOME/pic >/dev/null 2>&1 ;;
|
|
||||||
browser) setsid -f "$BROWSER" "$feed" >/dev/null 2>&1 ;;
|
|
||||||
lynx) lynx "$feed" >/dev/null 2>&1 ;;
|
|
||||||
esac
|
|
||||||
@@ -1,16 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
files="$(find -L "$HOME/Tower/Library" -name '*.pdf' -or -name '*.epub')"
|
|
||||||
|
|
||||||
options=$(echo "$files" | xargs --delimiter="\n" basename -a)
|
|
||||||
|
|
||||||
chosen=$(echo "$options" | dmenu -i -ix -c -l 30)
|
|
||||||
|
|
||||||
[ -z "$chosen" ] && exit
|
|
||||||
|
|
||||||
line="$(($chosen + 1))"
|
|
||||||
|
|
||||||
file="$(echo "$files" | sed "${line}q;d")"
|
|
||||||
|
|
||||||
zathura "$file"
|
|
||||||
|
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# Gives a dmenu prompt to mount unmounted drives and Android phones. If
|
|
||||||
# they're in /etc/fstab, they'll be mounted automatically. Otherwise, you'll
|
|
||||||
# be prompted to give a mountpoint from already existsing directories. If you
|
|
||||||
# input a novel directory, it will prompt you to create that directory.
|
|
||||||
|
|
||||||
getmount() { \
|
|
||||||
[ -z "$chosen" ] && exit 1
|
|
||||||
# shellcheck disable=SC2086
|
|
||||||
mp="$(find $1 2>/dev/null | dmenu -i -p "Type in mount point.")" || exit 1
|
|
||||||
[ "$mp" = "" ] && exit 1
|
|
||||||
if [ ! -d "$mp" ]; then
|
|
||||||
mkdiryn=$(printf "No\\nYes" | dmenu -i -p "$mp does not exist. Create it?") || exit 1
|
|
||||||
[ "$mkdiryn" = "Yes" ] && (mkdir -p "$mp" || sudo -A mkdir -p "$mp")
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
mountusb() { \
|
|
||||||
chosen="$(echo "$usbdrives" | dmenu -i -p "Mount which drive?")" || exit 1
|
|
||||||
chosen="$(echo "$chosen" | awk '{print $1}')"
|
|
||||||
sudo -A mount "$chosen" 2>/dev/null && notify-send "💻 USB mounting" "$chosen mounted." && exit 0
|
|
||||||
alreadymounted=$(lsblk -nrpo "name,type,mountpoint" | awk '$3!~/\/boot|\/home$|SWAP/&&length($3)>1{printf "-not ( -path *%s -prune ) ",$3}')
|
|
||||||
getmount "/mnt /media /mount /home -maxdepth 5 -type d $alreadymounted"
|
|
||||||
partitiontype="$(lsblk -no "fstype" "$chosen")"
|
|
||||||
case "$partitiontype" in
|
|
||||||
"vfat") sudo -A mount -t vfat "$chosen" "$mp" -o rw,umask=0000;;
|
|
||||||
"exfat") sudo -A mount "$chosen" "$mp" -o uid="$(id -u)",gid="$(id -g)";;
|
|
||||||
*) sudo -A mount "$chosen" "$mp"; user="$(whoami)"; ug="$(groups | awk '{print $1}')"; sudo -A chown "$user":"$ug" "$mp";;
|
|
||||||
esac
|
|
||||||
notify-send "💻 USB mounting" "$chosen mounted to $mp."
|
|
||||||
}
|
|
||||||
|
|
||||||
mountandroid() { \
|
|
||||||
chosen="$(echo "$anddrives" | dmenu -i -p "Which Android device?")" || exit 1
|
|
||||||
chosen="$(echo "$chosen" | cut -d : -f 1)"
|
|
||||||
getmount "$HOME -maxdepth 3 -type d"
|
|
||||||
simple-mtpfs --device "$chosen" "$mp"
|
|
||||||
echo "OK" | dmenu -i -p "Tap Allow on your phone if it asks for permission and then press enter" || exit 1
|
|
||||||
simple-mtpfs --device "$chosen" "$mp"
|
|
||||||
notify-send "🤖 Android Mounting" "Android device mounted to $mp."
|
|
||||||
}
|
|
||||||
|
|
||||||
asktype() { \
|
|
||||||
choice="$(printf "USB\\nAndroid" | dmenu -i -p "Mount a USB drive or Android device?")" || exit 1
|
|
||||||
case $choice in
|
|
||||||
USB) mountusb ;;
|
|
||||||
Android) mountandroid ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
anddrives=$(simple-mtpfs -l 2>/dev/null)
|
|
||||||
usbdrives="$(lsblk -rpo "name,type,size,mountpoint" | grep 'part\|rom' | awk '$4==""{printf "%s (%s)\n",$1,$3}')"
|
|
||||||
|
|
||||||
if [ -z "$usbdrives" ]; then
|
|
||||||
[ -z "$anddrives" ] && echo "No USB drive or Android device detected" && exit
|
|
||||||
echo "Android device(s) detected."
|
|
||||||
mountandroid
|
|
||||||
else
|
|
||||||
if [ -z "$anddrives" ]; then
|
|
||||||
echo "USB drive(s) detected."
|
|
||||||
mountusb
|
|
||||||
else
|
|
||||||
echo "Mountable USB drive(s) and Android device(s) detected."
|
|
||||||
asktype
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# This script is the SUDO_ASKPASS variable, meaning that it will be used as a
|
|
||||||
# password prompt if needed.
|
|
||||||
|
|
||||||
dmenu -P -p "$1" <&- && echo
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# A dmenu prompt to unmount drives.
|
|
||||||
# Provides you with mounted partitions, select one to unmount.
|
|
||||||
# Drives mounted at /, /boot and /home will not be options to unmount.
|
|
||||||
|
|
||||||
unmountusb() {
|
|
||||||
[ -z "$drives" ] && exit
|
|
||||||
chosen="$(echo "$drives" | dmenu -i -p "Unmount which drive?")" || exit 1
|
|
||||||
chosen="$(echo "$chosen" | awk '{print $1}')"
|
|
||||||
[ -z "$chosen" ] && exit
|
|
||||||
sudo -A umount "$chosen" && notify-send "💻 USB unmounting" "$chosen unmounted."
|
|
||||||
}
|
|
||||||
|
|
||||||
unmountandroid() { \
|
|
||||||
chosen="$(awk '/simple-mtpfs/ {print $2}' /etc/mtab | dmenu -i -p "Unmount which device?")" || exit 1
|
|
||||||
[ -z "$chosen" ] && exit
|
|
||||||
sudo -A umount -l "$chosen" && notify-send "🤖 Android unmounting" "$chosen unmounted."
|
|
||||||
}
|
|
||||||
|
|
||||||
asktype() { \
|
|
||||||
choice="$(printf "USB\\nAndroid" | dmenu -i -p "Unmount a USB drive or Android device?")" || exit 1
|
|
||||||
case "$choice" in
|
|
||||||
USB) unmountusb ;;
|
|
||||||
Android) unmountandroid ;;
|
|
||||||
esac
|
|
||||||
}
|
|
||||||
|
|
||||||
drives=$(lsblk -nrpo "name,type,size,mountpoint" | awk '$4!~/\/boot|\/home$|SWAP/&&length($4)>1{printf "%s (%s)\n",$4,$3}')
|
|
||||||
|
|
||||||
if ! grep simple-mtpfs /etc/mtab; then
|
|
||||||
[ -z "$drives" ] && echo "No drives to unmount." && exit
|
|
||||||
echo "Unmountable USB drive detected."
|
|
||||||
unmountusb
|
|
||||||
else
|
|
||||||
if [ -z "$drives" ]
|
|
||||||
then
|
|
||||||
echo "Unmountable Android device detected."
|
|
||||||
unmountandroid
|
|
||||||
else
|
|
||||||
echo "Unmountable USB drive(s) and Android device(s) detected."
|
|
||||||
asktype
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# The famous "get a menu of emojis to copy" script.
|
|
||||||
|
|
||||||
# Get user selection via dmenu from emoji file.
|
|
||||||
chosen=$(cut -d ';' -f1 ~/.local/share/emojis | dmenu -i -l 30 | sed "s/ .*//")
|
|
||||||
|
|
||||||
# Exit if none chosen.
|
|
||||||
[ -z "$chosen" ] && exit
|
|
||||||
|
|
||||||
# If you run this command with an argument, it will automatically insert the
|
|
||||||
# character. Otherwise, show a message that the emoji has been copied.
|
|
||||||
if [ -n "$1" ]; then
|
|
||||||
xdotool type "$chosen"
|
|
||||||
else
|
|
||||||
printf "$chosen" | xclip -selection clipboard
|
|
||||||
notify-send "'$chosen' copied to clipboard." &
|
|
||||||
fi
|
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
echo "starting"
|
|
||||||
echo "$1"
|
|
||||||
|
|
||||||
file="${1:-$HOME/Downloads}"
|
|
||||||
|
|
||||||
[ -d "$file" ] && file="$file/$(ls -Art "$file" | tail -n 1)"
|
|
||||||
|
|
||||||
echo "continuing"
|
|
||||||
echo "$file"
|
|
||||||
|
|
||||||
case "$file" in
|
|
||||||
*ergodox*.hex)
|
|
||||||
wally-cli "$file" ;;
|
|
||||||
# *png|*jpg|*jpe|*jpeg|*gif)
|
|
||||||
# curl -sL "$1" > "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" && sxiv -a "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
|
|
||||||
# *pdf|*cbz|*cbr)
|
|
||||||
# curl -sL "$1" > "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" && zathura "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
|
|
||||||
# *mp3|*flac|*opus|*mp3?source*)
|
|
||||||
# qndl "$1" 'curl -LO' >/dev/null 2>&1 ;;
|
|
||||||
# *)
|
|
||||||
# [ -f "$1" ] && setsid -f "$TERMINAL" -e "$EDITOR" "$1" >/dev/null 2>&1 || setsid -f "$BROWSER" "$1" >/dev/null 2>&1
|
|
||||||
esac
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
# add binaries to PATH if they aren't added yet
|
|
||||||
# affix colons on either side of $PATH to simplify matching
|
|
||||||
case ":${PATH}:" in
|
|
||||||
*:"$HOME/.local/share/../bin":*)
|
|
||||||
;;
|
|
||||||
*)
|
|
||||||
# Prepending path in case a system-installed binary needs to be overridden
|
|
||||||
export PATH="$HOME/.local/share/../bin:$PATH"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# A general, all-purpose extraction script. Not all extraction programs here
|
|
||||||
# are installed by LARBS automatically.
|
|
||||||
#
|
|
||||||
# Default behavior: Extract archive into new directory
|
|
||||||
# Behavior with `-c` option: Extract contents into current directory
|
|
||||||
|
|
||||||
while getopts "hc" o; do case "${o}" in
|
|
||||||
c) extracthere="True" ;;
|
|
||||||
*) printf "Options:\\n -c: Extract archive into current directory rather than a new one.\\n" && exit 1 ;;
|
|
||||||
esac done
|
|
||||||
|
|
||||||
if [ -z "$extracthere" ]; then
|
|
||||||
archive="$(readlink -f "$*")" &&
|
|
||||||
directory="$(echo "$archive" | sed 's/\.[^\/.]*$//')" &&
|
|
||||||
mkdir -p "$directory" &&
|
|
||||||
cd "$directory" || exit 1
|
|
||||||
else
|
|
||||||
archive="$(readlink -f "$(echo "$*" | cut -d' ' -f2)" 2>/dev/null)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
[ -z "$archive" ] && printf "Give archive to extract as argument.\\n" && exit 1
|
|
||||||
|
|
||||||
if [ -f "$archive" ] ; then
|
|
||||||
case "$archive" in
|
|
||||||
*.tar.bz2|*.tbz2) tar xvjf "$archive" ;;
|
|
||||||
*.tar.xz) tar -xf "$archive" ;;
|
|
||||||
*.tar.gz|*.tgz) tar xvzf "$archive" ;;
|
|
||||||
*.tar.zst) tar -I zstd -xf "$archive" ;;
|
|
||||||
*.lzma) unlzma "$archive" ;;
|
|
||||||
*.bz2) bunzip2 "$archive" ;;
|
|
||||||
*.rar) unrar x -ad "$archive" ;;
|
|
||||||
*.gz) gunzip "$archive" ;;
|
|
||||||
*.tar) tar xvf "$archive" ;;
|
|
||||||
*.zip) unzip "$archive" ;;
|
|
||||||
*.Z) uncompress "$archive" ;;
|
|
||||||
*.7z) 7z x "$archive" ;;
|
|
||||||
*.xz) unxz "$archive" ;;
|
|
||||||
*.exe) cabextract "$archive" ;;
|
|
||||||
*) printf "extract: '%s' - unknown archive method\\n" "$archive" ;;
|
|
||||||
esac
|
|
||||||
else
|
|
||||||
printf "File \"%s\" not found.\\n" "$archive"
|
|
||||||
fi
|
|
||||||
@@ -1,94 +0,0 @@
|
|||||||
const fs = require('fs');
|
|
||||||
|
|
||||||
const input = fs.readFileSync('./Chris S. Coaching Tracker - Weekly Tracker.csv', 'utf8');
|
|
||||||
|
|
||||||
const rows = [];
|
|
||||||
|
|
||||||
const week = {
|
|
||||||
'Chest': null,
|
|
||||||
'Right thigh': null,
|
|
||||||
'Left thigh': null,
|
|
||||||
'Waist': null,
|
|
||||||
'Left biceps': null,
|
|
||||||
'Right biceps': null,
|
|
||||||
}
|
|
||||||
|
|
||||||
let year = 2023;
|
|
||||||
|
|
||||||
input.split("\n").forEach((line) => {
|
|
||||||
if (line.includes(' 1 Jan')) {
|
|
||||||
year++;
|
|
||||||
}
|
|
||||||
const map = {
|
|
||||||
'R Arm': 'Right biceps',
|
|
||||||
'L Arm': 'Left biceps',
|
|
||||||
'Navel': 'Waist',
|
|
||||||
'Chest': 'Chest',
|
|
||||||
'R Leg': 'Right thigh',
|
|
||||||
'L Leg': 'Left thigh',
|
|
||||||
}
|
|
||||||
for (let key in map) {
|
|
||||||
const val = map[key];
|
|
||||||
const match = line.match(new RegExp(`${key},([^,]+)`));
|
|
||||||
if (match) {
|
|
||||||
week[val] = (1*match[1]).toPrecision(3);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (line.startsWith('"Sun')) {
|
|
||||||
const match = line.match(/^"(Sun[^"]+)\s*"/)[1];
|
|
||||||
const date = new Date(`${match} UTC`);
|
|
||||||
date.setFullYear(year);
|
|
||||||
|
|
||||||
for (let key in week) {
|
|
||||||
const val = week[key];
|
|
||||||
rows.push(`BODYMEASURE,${date.toJSON().split('T')[0]},${key},${val},cm`);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
['Weight', 'Weight(1)', 'Weight(2)', 'Weight(3)'].forEach((name) => {
|
|
||||||
const weightInput = fs.readFileSync(`./${name}.csv`, 'utf8').split("\n");
|
|
||||||
|
|
||||||
weightInput.shift();
|
|
||||||
for (let i = 0; i < weightInput.length;) {
|
|
||||||
if (!weightInput[i] || !weightInput[i + 1]) {
|
|
||||||
i++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
const date = new Date(`${weightInput[i].substring(2, weightInput[i].length - 2)} UTC`);
|
|
||||||
const [time, weight, change, bmi, fat, muscle, bone, water] = weightInput[i + 1].split(',')
|
|
||||||
|
|
||||||
if (weight && weight !== '--') {
|
|
||||||
const [kg, units] = weight.split(' ');
|
|
||||||
rows.push(`BODYMEASURE,${date.toJSON().split('T')[0]},Weight,${kg},${units}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (fat && fat !== '--') {
|
|
||||||
const [perc, units] = fat.split(' ');
|
|
||||||
rows.push(`BODYMEASURE,${date.toJSON().split('T')[0]},Fat,${perc},${units}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (muscle && muscle !== '--' && weight && weight !== '--') {
|
|
||||||
const [kg, units] = muscle.split(' ');
|
|
||||||
const weightKg = weight.split(' ')[0];
|
|
||||||
const perc = (100 * kg / weightKg).toPrecision(3);
|
|
||||||
rows.push(`BODYMEASURE,${date.toJSON().split('T')[0]},Muscles,${perc},%`);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (water && water !== '--') {
|
|
||||||
const [perc, units] = water.split(' ');
|
|
||||||
rows.push(`BODYMEASURE,${date.toJSON().split('T')[0]},Water,${perc},${units}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
i++;
|
|
||||||
while (weightInput[i] && weightInput[i][0] !== '"') {
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
rows.sort();
|
|
||||||
|
|
||||||
rows.unshift('TABLE,DATE,BODYPART_NAME,MEASURE,UNIT');
|
|
||||||
|
|
||||||
fs.writeFileSync('./fnfImport.csv', rows.join("\n"));
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
#! bash
|
|
||||||
|
|
||||||
echo "Creating development directories"
|
|
||||||
|
|
||||||
mkdir "$HOME/Code"
|
|
||||||
mkdir "$HOME/Code/DevOps" # For server and computer admin
|
|
||||||
mkdir "$HOME/Code/FSharp"
|
|
||||||
mkdir "$HOME/Code/JavaScript"
|
|
||||||
mkdir "$HOME/Code/Scala"
|
|
||||||
mkdir "$HOME/Code/Rust"
|
|
||||||
mkdir "$HOME/Code/PHP"
|
|
||||||
mkdir "$HOME/Code/Tutorials" # For doing tutorials/courses
|
|
||||||
mkdir "$HOME/Code/Sites" # Websites in any language
|
|
||||||
mkdir "$HOME/Code/MobileApps" # Mobile apps in any language
|
|
||||||
mkdir "$HOME/Code/Tests" # Small test files/scripts
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
#! zsh
|
|
||||||
|
|
||||||
enpass-cli -vault="$HOME/.local/share/Enpass/Enpass/Vaults/primary" -sort copy "Firefox"
|
|
||||||
|
|
||||||
firefox "https://accounts.firefox.com/signin?action=email&service=sync" &
|
|
||||||
|
|
||||||
read -s -k $'?Press enter when you have synced Firefox...\n'
|
|
||||||
|
|
||||||
echo "" | wl-copy
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
#! bash
|
|
||||||
|
|
||||||
"$HOME/.local/bin/install/password.sh"
|
|
||||||
"$HOME/.local/bin/install/ssh.sh"
|
|
||||||
"$HOME/.local/bin/install/dev.sh"
|
|
||||||
"$HOME/.local/bin/install/firefox.sh"
|
|
||||||
"$HOME/.local/bin/install/nextcloud.sh"
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
#! zsh
|
|
||||||
|
|
||||||
mkdir -p "$HOME/Tower"
|
|
||||||
|
|
||||||
nextcloud &
|
|
||||||
|
|
||||||
enpasscli -vault="$HOME/.local/share/Enpass/Enpass/Vaults/primary" -sort copy "Scarif: Tower"
|
|
||||||
|
|
||||||
read -s -k $'?Press enter when you have synced Nextcloud... \n'
|
|
||||||
|
|
||||||
wl-copy --clear
|
|
||||||
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
#! /bin/bash
|
|
||||||
|
|
||||||
doas tee /etc/udev/rules/90-backlight.rules <<HRD
|
|
||||||
SUBSYSTEM=="backlight", ACTION=="add" \
|
|
||||||
RUN+="/bin/chgrp video /sys/class/backlight/%k/brightness", \
|
|
||||||
RUN+="/bin/chmod g+w /sys/class/backlight/%k/brightness"
|
|
||||||
HRD
|
|
||||||
|
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
#! /bin/bash
|
|
||||||
|
|
||||||
sudo pacman --noconfirm --needed -S python-pyqt5 hplip nss-mdns
|
|
||||||
|
|
||||||
sudo sed -i 's/hosts: files mymachines myhostname resolve [!UNAVAIL=return] dns/hosts: files mymachines myhostname mdns_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns/' /etc/nsswitch.conf
|
|
||||||
|
|
||||||
sudo systemctl enable --now avahi-daemon
|
|
||||||
|
|
||||||
hp-setup -i 192.168.2.77
|
|
||||||
|
|
||||||
lpoptions -d DeskJet_3700
|
|
||||||
|
|
||||||
lpoptions -o PageSize=A4
|
|
||||||
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
#! /bin/bash
|
|
||||||
|
|
||||||
doas tee /etc/NetworkManager/conf.d <<HRD
|
|
||||||
[main]
|
|
||||||
dhcpd=dhclient
|
|
||||||
HRD
|
|
||||||
|
|
||||||
doas tee /etc/iwd/main.conf <<HRD
|
|
||||||
[Network]
|
|
||||||
EnableNetworkConfiguration=True
|
|
||||||
EnableIPv6=True
|
|
||||||
HRD
|
|
||||||
|
|
||||||
doas systemctl enable --now iwd
|
|
||||||
doas systemctl enable --now NetworkManager
|
|
||||||
|
|
||||||
nmtui
|
|
||||||
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
#! bash
|
|
||||||
|
|
||||||
export MASTERPW=$(gum input --header="Master password" --password)
|
|
||||||
|
|
||||||
Enpass &
|
|
||||||
|
|
||||||
echo "$MASTERPW" | wl-copy
|
|
||||||
|
|
||||||
read -n 1 -r -s -p $'Press enter when you have synced enpass...\n'
|
|
||||||
|
|
||||||
wl-copy --clear
|
|
||||||
|
|
||||||
CHECKPW=$(enpass-cli -vault="$HOME/.local/share/Enpass/Enpass/Vaults/primary" -sort list 2>&1)
|
|
||||||
|
|
||||||
while [[ "$CHECKPW" == *level=fatal* ]]; do
|
|
||||||
export MASTERPW=$(zenity --password)
|
|
||||||
CHECKPW=$(enpass-cli -vault="$HOME/.local/share/Enpass/Enpass/Vaults/primary" -sort list)
|
|
||||||
done
|
|
||||||
|
|
||||||
echo "Password set successfuly"
|
|
||||||
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
#! bash
|
|
||||||
|
|
||||||
sudo systemctl enable --now expressvpn.service
|
|
||||||
|
|
||||||
VPN=$(enpasscli -vault="$HOME/Documents/Enpass/Vaults/primary" -sort show "ExpressVPN Activation Code" 2>&1)
|
|
||||||
VPNPW=$(echo "$LABS" | grep -Po "(?<=pass : ).+(?=\")")
|
|
||||||
|
|
||||||
echo "$VPNPW" | xclip -selection clipboard -i
|
|
||||||
|
|
||||||
expressvpn activate
|
|
||||||
|
|
||||||
expressvpn autoconnect true
|
|
||||||
|
|
||||||
expressvpn connect smart
|
|
||||||
|
|
||||||
echo "" | xclip -selection clipboard -i
|
|
||||||
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# Feed script a url or file location.
|
|
||||||
# If an image, it will view in sxiv,
|
|
||||||
# if a video or gif, it will view in mpv
|
|
||||||
# if a music file or pdf, it will download,
|
|
||||||
# otherwise it opens link in browser.
|
|
||||||
|
|
||||||
# If no url given. Opens browser. For using script as $BROWSER.
|
|
||||||
[ -z "$1" ] && { "$BROWSER"; exit; }
|
|
||||||
|
|
||||||
case "$1" in
|
|
||||||
*mkv|*webm|*mp4|*youtube.com/watch*|*youtube.com/playlist*|*youtu.be*|*hooktube.com*|*bitchute.com*|*videos.lukesmith.xyz*)
|
|
||||||
setsid -f mpv -quiet "$1" >/dev/null 2>&1 ;;
|
|
||||||
*png|*jpg|*jpe|*jpeg|*gif)
|
|
||||||
curl -sL "$1" > "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" && sxiv -a "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
|
|
||||||
*pdf|*cbz|*cbr)
|
|
||||||
curl -sL "$1" > "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" && zathura "/tmp/$(echo "$1" | sed "s/.*\///;s/%20/ /g")" >/dev/null 2>&1 & ;;
|
|
||||||
*mp3|*flac|*opus|*mp3?source*)
|
|
||||||
qndl "$1" 'curl -LO' >/dev/null 2>&1 ;;
|
|
||||||
*)
|
|
||||||
[ -f "$1" ] && setsid -f "$TERMINAL" -e "$EDITOR" "$1" >/dev/null 2>&1 || setsid -f "$BROWSER" "$1" >/dev/null 2>&1
|
|
||||||
esac
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# opout: "open output": A general handler for opening a file's intended output,
|
|
||||||
# usually the pdf of a compiled document. I find this useful especially
|
|
||||||
# running from vim.
|
|
||||||
|
|
||||||
basename="$(echo "${*}" | sed 's/\.[^\/.]*$//')"
|
|
||||||
|
|
||||||
case "${*}" in
|
|
||||||
*.tex|*.m[dse]|*.[rR]md|*.mom|*.[0-9]) setsid -f xdg-open "$basename".pdf >/dev/null 2>&1 ;;
|
|
||||||
*.html) setsid -f "$BROWSER" "$basename".html >/dev/null 2>&1 ;;
|
|
||||||
*.sent) setsid -f sent "$1" >/dev/null 2>&1 ;;
|
|
||||||
esac
|
|
||||||
@@ -1,44 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
|
|
||||||
# This script does the following:
|
|
||||||
# Run by itself, set the wallpaper (at X start).
|
|
||||||
# If given a file, set that as the new wallpaper.
|
|
||||||
# If given a directory, choose random file in it.
|
|
||||||
# If wal is installed, also generates a colorscheme.
|
|
||||||
|
|
||||||
# Location of link to wallpaper link.
|
|
||||||
bgloc="${XDG_DATA_HOME:-$HOME/.local/share/}/bg"
|
|
||||||
|
|
||||||
trueloc="$(readlink -f "$1")" &&
|
|
||||||
case "$(file --mime-type -b "$trueloc")" in
|
|
||||||
image/* ) ln -sf "$(readlink -f "$1")" "$bgloc" ;;
|
|
||||||
inode/directory ) trueloc=$(find "$trueloc" -iregex '.*.\(jpg\|jpeg\|png\|gif\)' -type f | shuf -n 1) && ln -sf "$trueloc" "$bgloc" ;;
|
|
||||||
*) notify-send "Error" "Not a valid image." ; exit 1;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
[ -z "$trueloc" ] && trueloc="$(readlink -f "$bgloc")"
|
|
||||||
|
|
||||||
# If pywal is installed, use it.
|
|
||||||
# command -v wal >/dev/null 2>&1 &&
|
|
||||||
# wal -i "$trueloc" -n -o "${XDG_CONFIG_HOME:-$HOME/.config}/wal/postrun" >/dev/null 2>&1 &&
|
|
||||||
# dwmc xrdb
|
|
||||||
|
|
||||||
xwallpaper --no-randr --zoom "$bgloc"
|
|
||||||
|
|
||||||
parent_dir=$(dirname "$trueloc")
|
|
||||||
filename=$(basename "$trueloc")
|
|
||||||
filename_without_extension=${filename%.*}
|
|
||||||
split_dir="${parent_dir}_split"
|
|
||||||
left_image="${split_dir}/${filename_without_extension}_left.jpg"
|
|
||||||
right_image="${split_dir}/${filename_without_extension}_right.jpg"
|
|
||||||
|
|
||||||
# Check if left and right images exist
|
|
||||||
if [ -e "$left_image" ] && [ -e "$right_image" ]; then
|
|
||||||
kwriteconfig5 --file "$HOME/.config/plasma-org.kde.plasma.desktop-appletsrc" \
|
|
||||||
--group 'Containments' --group '127' --group 'Wallpaper' --group 'org.kde.image' \
|
|
||||||
--group 'General' --key 'Image' "$left_image"
|
|
||||||
|
|
||||||
kwriteconfig5 --file "$HOME/.config/plasma-org.kde.plasma.desktop-appletsrc" \
|
|
||||||
--group 'Containments' --group '94' --group 'Wallpaper' --group 'org.kde.image' \
|
|
||||||
--group 'General' --key 'Image' "$right_image"
|
|
||||||
fi
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
sudo tee /etc/modprobes.d/r8169.conf <<HRD
|
|
||||||
# Do not load the r819 realtek module to force it to use r8168 instead for
|
|
||||||
# better reliability
|
|
||||||
# https://wiki.archlinux.org/title/Network_configuration/Ethernet#Troubleshooting
|
|
||||||
blacklist r8169
|
|
||||||
HRD
|
|
||||||
|
|
||||||
# Rebuild kernel modules
|
|
||||||
sudo mkinitcpio -p linux
|
|
||||||
|
|
||||||
echo "Please restart your computer to update kernel modules"
|
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user