Configs
This commit is contained in:
commit
463a18b5ec
22
GIMP/2.10/action-history
Normal file
22
GIMP/2.10/action-history
Normal file
@ -0,0 +1,22 @@
|
||||
# GIMP action-history
|
||||
|
||||
(history-item "file-open-as-layers" 1)
|
||||
(history-item "edit-clear" 3)
|
||||
(history-item "file-export-as" 0)
|
||||
(history-item "file-quit" 1)
|
||||
(history-item "file-open" 1)
|
||||
(history-item "image-new" 3)
|
||||
(history-item "tools-opacity-decrease-skip" 0)
|
||||
(history-item "file-save-as" 1)
|
||||
(history-item "layers-edit" 1)
|
||||
(history-item "tools-free-select" 0)
|
||||
(history-item "tools-scale" 0)
|
||||
(history-item "layers-mask-add" 0)
|
||||
(history-item "tools-iscissors" 0)
|
||||
(history-item "tools-cage" 0)
|
||||
(history-item "tools-dodge-burn" 0)
|
||||
(history-item "file-save-and-close" 0)
|
||||
(history-item "select-all" 0)
|
||||
(history-item "file-export" 1)
|
||||
|
||||
# end of action-history
|
||||
26
GIMP/2.10/colorrc
Normal file
26
GIMP/2.10/colorrc
Normal file
@ -0,0 +1,26 @@
|
||||
# GIMP colorrc
|
||||
#
|
||||
# This file holds a list of recently used colors.
|
||||
|
||||
(color-history
|
||||
(color-rgba 0 0 0 1)
|
||||
(color-rgba 1 1 1 1)
|
||||
(color-rgba 1 1 1 6.9151532261950661e-310)
|
||||
(color-rgba 0 1 0.25339366515837103 1)
|
||||
(color-rgba 1 0 0 0)
|
||||
(color-rgba 0 1 0.25490196078431371 6.9347311184141981e-310)
|
||||
(color-rgba 0 0 0 6.9159840079784323e-310)
|
||||
(color-rgba 1 0.84313725490196079 0 6.8994728715619521e-310)
|
||||
(color-rgba 1 0.87058823529411766 0 6.8994728715619521e-310)
|
||||
(color-rgba 1 0.94901960784313721 0 6.8994728715619521e-310)
|
||||
(color-rgba 1 0.89411764705882357 0 6.8994728715619521e-310)
|
||||
(color-rgba 0.070588235294117646 1 0 0)
|
||||
(color-rgba 0.072398190045249056 1 0 1)
|
||||
(color-rgba 0.039215686274509803 0.19607843137254902 0.96470588235294119 6.8994728715619521e-310)
|
||||
(color-rgba 1 0.92307692307692313 0 1)
|
||||
(color-rgba 1 0 0 1)
|
||||
(color-rgba 0.58823529411764675 0 1 1)
|
||||
(color-rgba 0 1 0.0078431372549019607 6.8994728715619521e-310)
|
||||
(color-rgba 0 0.0078431372549019607 1 6.8994728715619521e-310))
|
||||
|
||||
# end of colorrc
|
||||
14
GIMP/2.10/contextrc
Normal file
14
GIMP/2.10/contextrc
Normal file
@ -0,0 +1,14 @@
|
||||
# GIMP user context
|
||||
|
||||
(tool "gimp-scale-tool")
|
||||
(paint-info "gimp-paintbrush")
|
||||
(brush "2. Hardness 050")
|
||||
(dynamics "Dynamics Off")
|
||||
(mybrush "100% Opaque")
|
||||
(pattern "Pine")
|
||||
(gradient "FG to BG (RGB)")
|
||||
(palette "Color History")
|
||||
(font "Sans-serif")
|
||||
(tool-preset "Core Pointer")
|
||||
|
||||
# end of user context
|
||||
40
GIMP/2.10/controllerrc
Normal file
40
GIMP/2.10/controllerrc
Normal file
@ -0,0 +1,40 @@
|
||||
# GIMP controllerrc
|
||||
#
|
||||
# This file will be entirely rewritten each time you exit.
|
||||
|
||||
(GimpControllerInfo "Main Mouse Wheel"
|
||||
(icon-name "gimp-controller-wheel")
|
||||
(enabled yes)
|
||||
(debug-events no)
|
||||
(controller "GimpControllerWheel")
|
||||
(mapping
|
||||
(map "scroll-down-shift-primary" "tools-aspect-decrease")
|
||||
(map "scroll-up-shift-alt" "tools-angle-increase")
|
||||
(map "scroll-up-alt" "tools-opacity-increase")
|
||||
(map "scroll-down-shift-alt" "tools-angle-decrease")
|
||||
(map "scroll-down-primary-alt" "tools-size-decrease")
|
||||
(map "scroll-up-shift-primary-alt" "tools-spacing-increase")
|
||||
(map "scroll-down-alt" "tools-opacity-decrease")
|
||||
(map "scroll-up-primary-alt" "tools-size-increase")
|
||||
(map "scroll-up-shift-primary" "tools-aspect-increase")
|
||||
(map "scroll-down-shift-primary-alt" "tools-spacing-decrease")))
|
||||
(GimpControllerInfo "Main Keyboard"
|
||||
(icon-name "gimp-controller-keyboard")
|
||||
(enabled yes)
|
||||
(debug-events no)
|
||||
(controller "GimpControllerKeyboard")
|
||||
(mapping
|
||||
(map "cursor-right-alt" "tools-size-increase")
|
||||
(map "cursor-left-shift" "view-scroll-page-left")
|
||||
(map "cursor-right-shift" "view-scroll-page-right")
|
||||
(map "cursor-up-shift" "view-scroll-page-up")
|
||||
(map "cursor-up-primary" "view-scroll-top-border")
|
||||
(map "cursor-down-primary" "view-scroll-bottom-border")
|
||||
(map "cursor-up-alt" "tools-size-increase-skip")
|
||||
(map "cursor-left-alt" "tools-size-decrease")
|
||||
(map "cursor-down-shift" "view-scroll-page-down")
|
||||
(map "cursor-right-primary" "view-scroll-right-border")
|
||||
(map "cursor-left-primary" "view-scroll-left-border")
|
||||
(map "cursor-down-alt" "tools-size-decrease-skip")))
|
||||
|
||||
# end of controllerrc
|
||||
180
GIMP/2.10/devicerc
Normal file
180
GIMP/2.10/devicerc
Normal file
File diff suppressed because one or more lines are too long
4
GIMP/2.10/dockrc
Normal file
4
GIMP/2.10/dockrc
Normal file
@ -0,0 +1,4 @@
|
||||
# recently closed docks
|
||||
|
||||
|
||||
# end of recently closed docks
|
||||
33
GIMP/2.10/gimprc
Normal file
33
GIMP/2.10/gimprc
Normal file
@ -0,0 +1,33 @@
|
||||
# GIMP gimprc
|
||||
#
|
||||
# This is your personal gimprc file. Any variable defined in this file takes
|
||||
# precedence over the value defined in the system-wide gimprc:
|
||||
# /etc/gimp/2.0/gimprc
|
||||
# Most values can be set within GIMP by changing some options in the
|
||||
# Preferences dialog.
|
||||
|
||||
(import-raw-plug-in "${gimp_plug_in_dir}/plug-ins/file-raw-placeholder/file-raw-placeholder")
|
||||
(monitor-xresolution 65024)
|
||||
(monitor-yresolution 36576)
|
||||
(fill-options
|
||||
(style solid)
|
||||
(antialias yes)
|
||||
(feather no)
|
||||
(feather-radius 10))
|
||||
(stroke-options
|
||||
(style solid)
|
||||
(antialias yes)
|
||||
(feather no)
|
||||
(feather-radius 10)
|
||||
(method line)
|
||||
(width 6)
|
||||
(unit pixels)
|
||||
(cap-style butt)
|
||||
(join-style miter)
|
||||
(miter-limit 10)
|
||||
(dash-offset 0)
|
||||
(dash-info 0)
|
||||
(emulate-brush-dynamics no))
|
||||
|
||||
|
||||
# end of gimprc
|
||||
4
GIMP/2.10/internal-data/custom.ggr
Normal file
4
GIMP/2.10/internal-data/custom.ggr
Normal file
@ -0,0 +1,4 @@
|
||||
GIMP Gradient
|
||||
Name: Custom
|
||||
1
|
||||
0 0.5 1 0 0 0 1 1 1 1 1 0 0 1 3
|
||||
1311
GIMP/2.10/menurc
Normal file
1311
GIMP/2.10/menurc
Normal file
File diff suppressed because it is too large
Load Diff
6
GIMP/2.10/parasiterc
Normal file
6
GIMP/2.10/parasiterc
Normal file
@ -0,0 +1,6 @@
|
||||
# GIMP parasiterc
|
||||
#
|
||||
# This file will be entirely rewritten each time you exit.
|
||||
|
||||
|
||||
# end of parasiterc
|
||||
4463
GIMP/2.10/pluginrc
Normal file
4463
GIMP/2.10/pluginrc
Normal file
File diff suppressed because it is too large
Load Diff
4
GIMP/2.10/profilerc
Normal file
4
GIMP/2.10/profilerc
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP color profile history
|
||||
|
||||
|
||||
# end of color profile history
|
||||
109
GIMP/2.10/sessionrc
Normal file
109
GIMP/2.10/sessionrc
Normal file
@ -0,0 +1,109 @@
|
||||
# GIMP sessionrc
|
||||
#
|
||||
# This file takes session-specific info (that is info, you want to keep
|
||||
# between two GIMP sessions). You are not supposed to edit it manually, but
|
||||
# of course you can do. The sessionrc will be entirely rewritten every time
|
||||
# you quit GIMP. If this file isn't found, defaults are used.
|
||||
|
||||
(session-info "toplevel"
|
||||
(factory-entry "gimp-empty-image-window")
|
||||
(position 200 100)
|
||||
(size 640 480))
|
||||
(session-info "toplevel"
|
||||
(factory-entry "gimp-single-image-window")
|
||||
(position 30 31)
|
||||
(size 2494 1393)
|
||||
(open-on-exit)
|
||||
(aux-info
|
||||
(left-docks-width "207")
|
||||
(right-docks-width "202")
|
||||
(maximized "no"))
|
||||
(gimp-toolbox
|
||||
(side left)
|
||||
(book
|
||||
(current-page 0)
|
||||
(dockable "gimp-tool-options"
|
||||
(tab-style automatic)
|
||||
(aux-info
|
||||
(show-button-bar "true")))
|
||||
(dockable "gimp-device-status"
|
||||
(tab-style automatic)
|
||||
(aux-info
|
||||
(show-button-bar "true")))
|
||||
(dockable "gimp-undo-history"
|
||||
(tab-style automatic)
|
||||
(aux-info
|
||||
(show-button-bar "true")))
|
||||
(dockable "gimp-image-list"
|
||||
(tab-style automatic)
|
||||
(aux-info
|
||||
(show-button-bar "true")))))
|
||||
(gimp-dock
|
||||
(side right)
|
||||
(book
|
||||
(current-page 0)
|
||||
(dockable "gimp-brush-grid"
|
||||
(tab-style automatic)
|
||||
(aux-info
|
||||
(show-button-bar "true")))
|
||||
(dockable "gimp-pattern-grid"
|
||||
(tab-style automatic)
|
||||
(aux-info
|
||||
(show-button-bar "true")))
|
||||
(dockable "gimp-font-list"
|
||||
(tab-style automatic)
|
||||
(aux-info
|
||||
(show-button-bar "true")))
|
||||
(dockable "gimp-document-list"
|
||||
(tab-style automatic)
|
||||
(aux-info
|
||||
(show-button-bar "true"))))
|
||||
(book
|
||||
(position 336)
|
||||
(current-page 0)
|
||||
(dockable "gimp-layer-list"
|
||||
(tab-style automatic)
|
||||
(preview-size 32)
|
||||
(aux-info
|
||||
(show-button-bar "true")))
|
||||
(dockable "gimp-channel-list"
|
||||
(tab-style automatic)
|
||||
(preview-size 32)
|
||||
(aux-info
|
||||
(show-button-bar "true")))
|
||||
(dockable "gimp-vectors-list"
|
||||
(tab-style automatic)
|
||||
(preview-size 32)
|
||||
(aux-info
|
||||
(show-button-bar "true"))))))
|
||||
(session-info "toplevel"
|
||||
(factory-entry "gimp-file-open-dialog")
|
||||
(position 803 361)
|
||||
(size 948 712))
|
||||
(session-info "toplevel"
|
||||
(factory-entry "gimp-file-export-dialog")
|
||||
(position 803 361)
|
||||
(size 948 712))
|
||||
(session-info "toplevel"
|
||||
(factory-entry "gimp-image-new-dialog")
|
||||
(position 1086 586))
|
||||
(session-info "toplevel"
|
||||
(factory-entry "gimp-toolbox-color-dialog")
|
||||
(position 1073 534))
|
||||
(session-info "toplevel"
|
||||
(factory-entry "gimp-file-save-dialog")
|
||||
(position 803 361)
|
||||
(size 948 712))
|
||||
(session-info "toplevel"
|
||||
(factory-entry "gimp-text-tool-dialog")
|
||||
(position 798 415)
|
||||
(size 318 244)
|
||||
(monitor 0))
|
||||
|
||||
(hide-docks no)
|
||||
(single-window-mode yes)
|
||||
(show-tabs yes)
|
||||
(tabs-position 0)
|
||||
(last-tip-shown 0)
|
||||
|
||||
# end of sessionrc
|
||||
3921
GIMP/2.10/tags.xml
Normal file
3921
GIMP/2.10/tags.xml
Normal file
File diff suppressed because it is too large
Load Diff
500
GIMP/2.10/templaterc
Normal file
500
GIMP/2.10/templaterc
Normal file
@ -0,0 +1,500 @@
|
||||
# GIMP templaterc
|
||||
#
|
||||
# This file will be entirely rewritten each time you exit.
|
||||
|
||||
(GimpTemplate "A0 (300 ppi)"
|
||||
(width 9933)
|
||||
(height 14043)
|
||||
(unit millimeters)
|
||||
(xresolution 300)
|
||||
(yresolution 300)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "A1 (300 ppi)"
|
||||
(width 7016)
|
||||
(height 9933)
|
||||
(unit millimeters)
|
||||
(xresolution 300)
|
||||
(yresolution 300)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "A2 (300 ppi)"
|
||||
(width 4960)
|
||||
(height 7016)
|
||||
(unit millimeters)
|
||||
(xresolution 300)
|
||||
(yresolution 300)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "A3 (300 ppi)"
|
||||
(width 3508)
|
||||
(height 4960)
|
||||
(unit millimeters)
|
||||
(xresolution 300)
|
||||
(yresolution 300)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "A4 (300 ppi)"
|
||||
(width 2480)
|
||||
(height 3508)
|
||||
(unit millimeters)
|
||||
(xresolution 300)
|
||||
(yresolution 300)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "A5 (300 ppi)"
|
||||
(width 1748)
|
||||
(height 2480)
|
||||
(unit millimeters)
|
||||
(xresolution 300)
|
||||
(yresolution 300)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "A6 (300 ppi)"
|
||||
(width 1240)
|
||||
(height 1748)
|
||||
(unit millimeters)
|
||||
(xresolution 300)
|
||||
(yresolution 300)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "A7 (300 ppi)"
|
||||
(width 874)
|
||||
(height 1240)
|
||||
(unit millimeters)
|
||||
(xresolution 300)
|
||||
(yresolution 300)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "B4 (300 ppi)"
|
||||
(width 2953)
|
||||
(height 4169)
|
||||
(unit millimeters)
|
||||
(xresolution 300)
|
||||
(yresolution 300)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "B5 (300 ppi)"
|
||||
(width 2079)
|
||||
(height 2953)
|
||||
(unit millimeters)
|
||||
(xresolution 300)
|
||||
(yresolution 300)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "B5-Japan (300 ppi)"
|
||||
(width 2150)
|
||||
(height 3035)
|
||||
(unit millimeters)
|
||||
(xresolution 300)
|
||||
(yresolution 300)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "US Letter (300 ppi)"
|
||||
(width 2550)
|
||||
(height 3300)
|
||||
(unit inches)
|
||||
(xresolution 300)
|
||||
(yresolution 300)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "US Legal (300 ppi)"
|
||||
(width 2550)
|
||||
(height 4200)
|
||||
(unit inches)
|
||||
(xresolution 300)
|
||||
(yresolution 300)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "88.9×50.8 US Business Card"
|
||||
(icon-name "gimp-business-card")
|
||||
(width 1050)
|
||||
(height 600)
|
||||
(unit millimeters)
|
||||
(xresolution 300)
|
||||
(yresolution 300)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "85×55 Western Europe Business Card"
|
||||
(icon-name "gimp-business-card")
|
||||
(width 1004)
|
||||
(height 650)
|
||||
(unit millimeters)
|
||||
(xresolution 300)
|
||||
(yresolution 300)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "90×50 Eastern Europe Business Card"
|
||||
(icon-name "gimp-business-card")
|
||||
(width 1063)
|
||||
(height 591)
|
||||
(unit millimeters)
|
||||
(xresolution 300)
|
||||
(yresolution 300)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "90×55 Business Card (AU, IN etc.)"
|
||||
(icon-name "gimp-business-card")
|
||||
(width 1063)
|
||||
(height 650)
|
||||
(unit millimeters)
|
||||
(xresolution 300)
|
||||
(yresolution 300)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "87×49 Vistaprint Business Card"
|
||||
(icon-name "gimp-business-card")
|
||||
(width 1028)
|
||||
(height 579)
|
||||
(unit millimeters)
|
||||
(xresolution 300)
|
||||
(yresolution 300)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "Toilet paper (US, 300 ppi)"
|
||||
(icon-name "gimp-toilet-paper")
|
||||
(width 1350)
|
||||
(height 1350)
|
||||
(unit inches)
|
||||
(xresolution 300)
|
||||
(yresolution 300)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "CD cover (300 ppi)"
|
||||
(icon-name "media-optical")
|
||||
(width 1429)
|
||||
(height 1417)
|
||||
(unit millimeters)
|
||||
(xresolution 300)
|
||||
(yresolution 300)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "Web banner leaderboard 728x90"
|
||||
(icon-name "gimp-web")
|
||||
(width 728)
|
||||
(height 90)
|
||||
(unit pixels)
|
||||
(xresolution 72)
|
||||
(yresolution 72)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "Web banner large rectangle 336×280"
|
||||
(icon-name "gimp-web")
|
||||
(width 336)
|
||||
(height 280)
|
||||
(unit pixels)
|
||||
(xresolution 72)
|
||||
(yresolution 72)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "Web banner medium rectangle 300×250"
|
||||
(icon-name "gimp-web")
|
||||
(width 300)
|
||||
(height 250)
|
||||
(unit pixels)
|
||||
(xresolution 72)
|
||||
(yresolution 72)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "Web banner large mobile 320×100"
|
||||
(icon-name "gimp-web")
|
||||
(width 320)
|
||||
(height 100)
|
||||
(unit pixels)
|
||||
(xresolution 72)
|
||||
(yresolution 72)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "Web banner large skyscraper 300×600"
|
||||
(icon-name "gimp-web")
|
||||
(width 300)
|
||||
(height 600)
|
||||
(unit pixels)
|
||||
(xresolution 72)
|
||||
(yresolution 72)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "1280×720 (HD 720p)"
|
||||
(icon-name "gimp-video")
|
||||
(width 1280)
|
||||
(height 720)
|
||||
(unit pixels)
|
||||
(xresolution 72)
|
||||
(yresolution 72)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "1920×1080 (Full HD 1080p)"
|
||||
(icon-name "gimp-video")
|
||||
(width 1920)
|
||||
(height 1080)
|
||||
(unit pixels)
|
||||
(xresolution 72)
|
||||
(yresolution 72)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "3840x2160 (4K UHD)"
|
||||
(icon-name "gimp-video")
|
||||
(width 3840)
|
||||
(height 2160)
|
||||
(unit pixels)
|
||||
(xresolution 72)
|
||||
(yresolution 72)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "4096×2160 (Digital Cinema Initiatives 4K)"
|
||||
(icon-name "gimp-video")
|
||||
(width 4096)
|
||||
(height 2160)
|
||||
(unit pixels)
|
||||
(xresolution 72)
|
||||
(yresolution 72)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "1366×768 HD"
|
||||
(icon-name "gimp-display")
|
||||
(width 1366)
|
||||
(height 768)
|
||||
(unit pixels)
|
||||
(xresolution 72)
|
||||
(yresolution 72)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "1920×1200 WUXGA"
|
||||
(icon-name "gimp-display")
|
||||
(width 1920)
|
||||
(height 1200)
|
||||
(unit pixels)
|
||||
(xresolution 72)
|
||||
(yresolution 72)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "2560x1600 WQXGA"
|
||||
(icon-name "gimp-display")
|
||||
(width 2560)
|
||||
(height 1600)
|
||||
(unit pixels)
|
||||
(xresolution 72)
|
||||
(yresolution 72)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "3840×2160 4K UHD"
|
||||
(icon-name "gimp-display")
|
||||
(width 3840)
|
||||
(height 2160)
|
||||
(unit pixels)
|
||||
(xresolution 72)
|
||||
(yresolution 72)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "Apple iPhone 6/7"
|
||||
(icon-name "gimp-smartphone")
|
||||
(width 750)
|
||||
(height 1334)
|
||||
(unit millimeters)
|
||||
(xresolution 326)
|
||||
(yresolution 326)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "Apple iPhone 5"
|
||||
(icon-name "gimp-smartphone")
|
||||
(width 640)
|
||||
(height 1136)
|
||||
(unit millimeters)
|
||||
(xresolution 326)
|
||||
(yresolution 326)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "Apple iPad 3&4, Air"
|
||||
(icon-name "gimp-smartphone")
|
||||
(width 2048)
|
||||
(height 2732)
|
||||
(unit millimeters)
|
||||
(xresolution 264)
|
||||
(yresolution 264)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "Samsung Galaxy S6"
|
||||
(icon-name "gimp-smartphone")
|
||||
(width 1440)
|
||||
(height 2560)
|
||||
(unit millimeters)
|
||||
(xresolution 577)
|
||||
(yresolution 577)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "Samsung Galaxy S5"
|
||||
(icon-name "gimp-smartphone")
|
||||
(width 1080)
|
||||
(height 1920)
|
||||
(unit millimeters)
|
||||
(xresolution 360)
|
||||
(yresolution 360)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
(GimpTemplate "Samsung Galaxy Tab 2&3 10,1 inch"
|
||||
(icon-name "gimp-smartphone")
|
||||
(width 800)
|
||||
(height 1280)
|
||||
(unit millimeters)
|
||||
(xresolution 149)
|
||||
(yresolution 149)
|
||||
(resolution-unit inches)
|
||||
(image-type rgb)
|
||||
(precision u8-gamma)
|
||||
(color-managed yes)
|
||||
(color-profile NULL)
|
||||
(fill-type background))
|
||||
|
||||
# end of templaterc
|
||||
17
GIMP/2.10/themerc
Normal file
17
GIMP/2.10/themerc
Normal file
@ -0,0 +1,17 @@
|
||||
# GIMP themerc
|
||||
#
|
||||
# This file is written on GIMP startup and on every theme change.
|
||||
# It is NOT supposed to be edited manually. Edit your personal
|
||||
# gtkrc file instead (/home/victor/.config/GIMP/2.10/gtkrc).
|
||||
|
||||
style "gimp-spin-scale-style"
|
||||
{
|
||||
GimpSpinScale::compact = 1
|
||||
}
|
||||
|
||||
class "GimpSpinScale" style "gimp-spin-scale-style"
|
||||
|
||||
include "/usr/share/gimp/2.0/themes/Dark/gtkrc"
|
||||
include "/etc/gimp/2.0/gtkrc"
|
||||
|
||||
# end of themerc
|
||||
10
GIMP/2.10/tool-options/gimp-airbrush-tool
Normal file
10
GIMP/2.10/tool-options/gimp-airbrush-tool
Normal file
@ -0,0 +1,10 @@
|
||||
# GIMP gimp-airbrush-tool options
|
||||
|
||||
(brush "2. Hardness 050")
|
||||
(dynamics "Dynamics Off")
|
||||
(gradient "FG to BG (RGB)")
|
||||
(palette "Color History")
|
||||
(brush-size 12)
|
||||
(brush-hardness 0.5)
|
||||
|
||||
# end of gimp-airbrush-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-align-tool
Normal file
4
GIMP/2.10/tool-options/gimp-align-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-align-tool options
|
||||
|
||||
|
||||
# end of gimp-align-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-brightness-contrast-tool
Normal file
4
GIMP/2.10/tool-options/gimp-brightness-contrast-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-brightness-contrast-tool options
|
||||
|
||||
|
||||
# end of gimp-brightness-contrast-tool options
|
||||
8
GIMP/2.10/tool-options/gimp-bucket-fill-tool
Normal file
8
GIMP/2.10/tool-options/gimp-bucket-fill-tool
Normal file
@ -0,0 +1,8 @@
|
||||
# GIMP gimp-bucket-fill-tool options
|
||||
|
||||
(pattern "Pine")
|
||||
(brush-size 51)
|
||||
(brush-hardness 0.5)
|
||||
(fill-criterion r)
|
||||
|
||||
# end of gimp-bucket-fill-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-by-color-select-tool
Normal file
4
GIMP/2.10/tool-options/gimp-by-color-select-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-by-color-select-tool options
|
||||
|
||||
|
||||
# end of gimp-by-color-select-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-cage-tool
Normal file
4
GIMP/2.10/tool-options/gimp-cage-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-cage-tool options
|
||||
|
||||
|
||||
# end of gimp-cage-tool options
|
||||
10
GIMP/2.10/tool-options/gimp-clone-tool
Normal file
10
GIMP/2.10/tool-options/gimp-clone-tool
Normal file
@ -0,0 +1,10 @@
|
||||
# GIMP gimp-clone-tool options
|
||||
|
||||
(brush "2. Hardness 050")
|
||||
(dynamics "Dynamics Off")
|
||||
(pattern "Pine")
|
||||
(palette "Color History")
|
||||
(brush-size 12)
|
||||
(brush-hardness 0.5)
|
||||
|
||||
# end of gimp-clone-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-color-picker-tool
Normal file
4
GIMP/2.10/tool-options/gimp-color-picker-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-color-picker-tool options
|
||||
|
||||
|
||||
# end of gimp-color-picker-tool options
|
||||
9
GIMP/2.10/tool-options/gimp-convolve-tool
Normal file
9
GIMP/2.10/tool-options/gimp-convolve-tool
Normal file
@ -0,0 +1,9 @@
|
||||
# GIMP gimp-convolve-tool options
|
||||
|
||||
(brush "2. Hardness 050")
|
||||
(dynamics "Dynamics Off")
|
||||
(palette "Color History")
|
||||
(brush-size 12)
|
||||
(brush-hardness 0.5)
|
||||
|
||||
# end of gimp-convolve-tool options
|
||||
8
GIMP/2.10/tool-options/gimp-crop-tool
Normal file
8
GIMP/2.10/tool-options/gimp-crop-tool
Normal file
@ -0,0 +1,8 @@
|
||||
# GIMP gimp-crop-tool options
|
||||
|
||||
(aspect-denominator 334)
|
||||
(aspect-numerator 259)
|
||||
(overridden-fixed-aspect yes)
|
||||
(pattern "Pine")
|
||||
|
||||
# end of gimp-crop-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-curves-tool
Normal file
4
GIMP/2.10/tool-options/gimp-curves-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-curves-tool options
|
||||
|
||||
|
||||
# end of gimp-curves-tool options
|
||||
9
GIMP/2.10/tool-options/gimp-dodge-burn-tool
Normal file
9
GIMP/2.10/tool-options/gimp-dodge-burn-tool
Normal file
@ -0,0 +1,9 @@
|
||||
# GIMP gimp-dodge-burn-tool options
|
||||
|
||||
(brush "2. Hardness 050")
|
||||
(dynamics "Dynamics Off")
|
||||
(palette "Color History")
|
||||
(brush-size 12)
|
||||
(brush-hardness 0.5)
|
||||
|
||||
# end of gimp-dodge-burn-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-ellipse-select-tool
Normal file
4
GIMP/2.10/tool-options/gimp-ellipse-select-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-ellipse-select-tool options
|
||||
|
||||
|
||||
# end of gimp-ellipse-select-tool options
|
||||
9
GIMP/2.10/tool-options/gimp-eraser-tool
Normal file
9
GIMP/2.10/tool-options/gimp-eraser-tool
Normal file
@ -0,0 +1,9 @@
|
||||
# GIMP gimp-eraser-tool options
|
||||
|
||||
(brush "2. Hardness 050")
|
||||
(dynamics "Dynamics Off")
|
||||
(palette "Color History")
|
||||
(brush-size 12)
|
||||
(brush-hardness 0.5)
|
||||
|
||||
# end of gimp-eraser-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-flip-tool
Normal file
4
GIMP/2.10/tool-options/gimp-flip-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-flip-tool options
|
||||
|
||||
|
||||
# end of gimp-flip-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-foreground-select-tool
Normal file
4
GIMP/2.10/tool-options/gimp-foreground-select-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-foreground-select-tool options
|
||||
|
||||
|
||||
# end of gimp-foreground-select-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-free-select-tool
Normal file
4
GIMP/2.10/tool-options/gimp-free-select-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-free-select-tool options
|
||||
|
||||
|
||||
# end of gimp-free-select-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-fuzzy-select-tool
Normal file
4
GIMP/2.10/tool-options/gimp-fuzzy-select-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-fuzzy-select-tool options
|
||||
|
||||
|
||||
# end of gimp-fuzzy-select-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-gegl-tool
Normal file
4
GIMP/2.10/tool-options/gimp-gegl-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-gegl-tool options
|
||||
|
||||
|
||||
# end of gimp-gegl-tool options
|
||||
7
GIMP/2.10/tool-options/gimp-gradient-tool
Normal file
7
GIMP/2.10/tool-options/gimp-gradient-tool
Normal file
@ -0,0 +1,7 @@
|
||||
# GIMP gimp-gradient-tool options
|
||||
|
||||
(gradient "FG to BG (RGB)")
|
||||
(brush-size 51)
|
||||
(brush-hardness 0.5)
|
||||
|
||||
# end of gimp-gradient-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-handle-transform-tool
Normal file
4
GIMP/2.10/tool-options/gimp-handle-transform-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-handle-transform-tool options
|
||||
|
||||
|
||||
# end of gimp-handle-transform-tool options
|
||||
9
GIMP/2.10/tool-options/gimp-heal-tool
Normal file
9
GIMP/2.10/tool-options/gimp-heal-tool
Normal file
@ -0,0 +1,9 @@
|
||||
# GIMP gimp-heal-tool options
|
||||
|
||||
(brush "2. Hardness 050")
|
||||
(dynamics "Dynamics Off")
|
||||
(palette "Color History")
|
||||
(brush-size 12)
|
||||
(brush-hardness 0.5)
|
||||
|
||||
# end of gimp-heal-tool options
|
||||
6
GIMP/2.10/tool-options/gimp-ink-tool
Normal file
6
GIMP/2.10/tool-options/gimp-ink-tool
Normal file
@ -0,0 +1,6 @@
|
||||
# GIMP gimp-ink-tool options
|
||||
|
||||
(brush-size 51)
|
||||
(brush-hardness 0.5)
|
||||
|
||||
# end of gimp-ink-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-iscissors-tool
Normal file
4
GIMP/2.10/tool-options/gimp-iscissors-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-iscissors-tool options
|
||||
|
||||
|
||||
# end of gimp-iscissors-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-levels-tool
Normal file
4
GIMP/2.10/tool-options/gimp-levels-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-levels-tool options
|
||||
|
||||
|
||||
# end of gimp-levels-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-measure-tool
Normal file
4
GIMP/2.10/tool-options/gimp-measure-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-measure-tool options
|
||||
|
||||
|
||||
# end of gimp-measure-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-move-tool
Normal file
4
GIMP/2.10/tool-options/gimp-move-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-move-tool options
|
||||
|
||||
|
||||
# end of gimp-move-tool options
|
||||
9
GIMP/2.10/tool-options/gimp-mypaint-brush-tool
Normal file
9
GIMP/2.10/tool-options/gimp-mypaint-brush-tool
Normal file
@ -0,0 +1,9 @@
|
||||
# GIMP gimp-mypaint-brush-tool options
|
||||
|
||||
(mybrush "100% Opaque")
|
||||
(brush-size 51)
|
||||
(brush-hardness 0.5)
|
||||
(radius 3.0099999904632568)
|
||||
(hardness 0.94999998807907104)
|
||||
|
||||
# end of gimp-mypaint-brush-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-offset-tool
Normal file
4
GIMP/2.10/tool-options/gimp-offset-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-offset-tool options
|
||||
|
||||
|
||||
# end of gimp-offset-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-operation-tool
Normal file
4
GIMP/2.10/tool-options/gimp-operation-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-operation-tool options
|
||||
|
||||
|
||||
# end of gimp-operation-tool options
|
||||
10
GIMP/2.10/tool-options/gimp-paintbrush-tool
Normal file
10
GIMP/2.10/tool-options/gimp-paintbrush-tool
Normal file
@ -0,0 +1,10 @@
|
||||
# GIMP gimp-paintbrush-tool options
|
||||
|
||||
(brush "2. Hardness 050")
|
||||
(dynamics "Dynamics Off")
|
||||
(gradient "FG to BG (RGB)")
|
||||
(palette "Color History")
|
||||
(brush-size 12)
|
||||
(brush-hardness 0.5)
|
||||
|
||||
# end of gimp-paintbrush-tool options
|
||||
10
GIMP/2.10/tool-options/gimp-pencil-tool
Normal file
10
GIMP/2.10/tool-options/gimp-pencil-tool
Normal file
@ -0,0 +1,10 @@
|
||||
# GIMP gimp-pencil-tool options
|
||||
|
||||
(brush "2. Hardness 050")
|
||||
(dynamics "Dynamics Off")
|
||||
(gradient "FG to BG (RGB)")
|
||||
(palette "Color History")
|
||||
(brush-size 12)
|
||||
(brush-hardness 0.5)
|
||||
|
||||
# end of gimp-pencil-tool options
|
||||
10
GIMP/2.10/tool-options/gimp-perspective-clone-tool
Normal file
10
GIMP/2.10/tool-options/gimp-perspective-clone-tool
Normal file
@ -0,0 +1,10 @@
|
||||
# GIMP gimp-perspective-clone-tool options
|
||||
|
||||
(brush "2. Hardness 050")
|
||||
(dynamics "Dynamics Off")
|
||||
(pattern "Pine")
|
||||
(palette "Color History")
|
||||
(brush-size 12)
|
||||
(brush-hardness 0.5)
|
||||
|
||||
# end of gimp-perspective-clone-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-perspective-tool
Normal file
4
GIMP/2.10/tool-options/gimp-perspective-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-perspective-tool options
|
||||
|
||||
|
||||
# end of gimp-perspective-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-rect-select-tool
Normal file
4
GIMP/2.10/tool-options/gimp-rect-select-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-rect-select-tool options
|
||||
|
||||
|
||||
# end of gimp-rect-select-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-rotate-tool
Normal file
4
GIMP/2.10/tool-options/gimp-rotate-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-rotate-tool options
|
||||
|
||||
|
||||
# end of gimp-rotate-tool options
|
||||
6
GIMP/2.10/tool-options/gimp-scale-tool
Normal file
6
GIMP/2.10/tool-options/gimp-scale-tool
Normal file
@ -0,0 +1,6 @@
|
||||
# GIMP gimp-scale-tool options
|
||||
|
||||
(interpolation linear)
|
||||
(preview-opacity 0)
|
||||
|
||||
# end of gimp-scale-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-shear-tool
Normal file
4
GIMP/2.10/tool-options/gimp-shear-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-shear-tool options
|
||||
|
||||
|
||||
# end of gimp-shear-tool options
|
||||
10
GIMP/2.10/tool-options/gimp-smudge-tool
Normal file
10
GIMP/2.10/tool-options/gimp-smudge-tool
Normal file
@ -0,0 +1,10 @@
|
||||
# GIMP gimp-smudge-tool options
|
||||
|
||||
(brush "2. Hardness 050")
|
||||
(dynamics "Dynamics Off")
|
||||
(gradient "FG to BG (RGB)")
|
||||
(palette "Color History")
|
||||
(brush-size 12)
|
||||
(brush-hardness 0.5)
|
||||
|
||||
# end of gimp-smudge-tool options
|
||||
7
GIMP/2.10/tool-options/gimp-text-tool
Normal file
7
GIMP/2.10/tool-options/gimp-text-tool
Normal file
@ -0,0 +1,7 @@
|
||||
# GIMP gimp-text-tool options
|
||||
|
||||
(palette "Color History")
|
||||
(font "Sans-serif")
|
||||
(hint-style full)
|
||||
|
||||
# end of gimp-text-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-threshold-tool
Normal file
4
GIMP/2.10/tool-options/gimp-threshold-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-threshold-tool options
|
||||
|
||||
|
||||
# end of gimp-threshold-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-transform-3d-tool
Normal file
4
GIMP/2.10/tool-options/gimp-transform-3d-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-transform-3d-tool options
|
||||
|
||||
|
||||
# end of gimp-transform-3d-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-unified-transform-tool
Normal file
4
GIMP/2.10/tool-options/gimp-unified-transform-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-unified-transform-tool options
|
||||
|
||||
|
||||
# end of gimp-unified-transform-tool options
|
||||
9
GIMP/2.10/tool-options/gimp-vector-tool
Normal file
9
GIMP/2.10/tool-options/gimp-vector-tool
Normal file
@ -0,0 +1,9 @@
|
||||
# GIMP gimp-vector-tool options
|
||||
|
||||
(brush "2. Hardness 050")
|
||||
(dynamics "Dynamics Off")
|
||||
(pattern "Pine")
|
||||
(gradient "FG to BG (RGB)")
|
||||
(palette "Color History")
|
||||
|
||||
# end of gimp-vector-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-warp-tool
Normal file
4
GIMP/2.10/tool-options/gimp-warp-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-warp-tool options
|
||||
|
||||
|
||||
# end of gimp-warp-tool options
|
||||
4
GIMP/2.10/tool-options/gimp-zoom-tool
Normal file
4
GIMP/2.10/tool-options/gimp-zoom-tool
Normal file
@ -0,0 +1,4 @@
|
||||
# GIMP gimp-zoom-tool options
|
||||
|
||||
|
||||
# end of gimp-zoom-tool options
|
||||
185
GIMP/2.10/toolrc
Normal file
185
GIMP/2.10/toolrc
Normal file
@ -0,0 +1,185 @@
|
||||
# GIMP toolrc
|
||||
|
||||
(file-version 1)
|
||||
|
||||
(GimpToolGroup "tool group"
|
||||
(visible yes)
|
||||
(active-tool "gimp-move-tool")
|
||||
(children
|
||||
(GimpToolInfo "gimp-move-tool"
|
||||
(icon-name "gimp-tool-move")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-align-tool"
|
||||
(icon-name "gimp-tool-align")
|
||||
(visible yes))))
|
||||
(GimpToolGroup "tool group"
|
||||
(visible yes)
|
||||
(active-tool "gimp-rect-select-tool")
|
||||
(children
|
||||
(GimpToolInfo "gimp-rect-select-tool"
|
||||
(icon-name "gimp-tool-rect-select")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-ellipse-select-tool"
|
||||
(icon-name "gimp-tool-ellipse-select")
|
||||
(visible yes))))
|
||||
(GimpToolGroup "tool group"
|
||||
(visible yes)
|
||||
(active-tool "gimp-iscissors-tool")
|
||||
(children
|
||||
(GimpToolInfo "gimp-free-select-tool"
|
||||
(icon-name "gimp-tool-free-select")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-iscissors-tool"
|
||||
(icon-name "gimp-tool-iscissors")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-foreground-select-tool"
|
||||
(icon-name "gimp-tool-foreground-select")
|
||||
(visible yes))))
|
||||
(GimpToolGroup "tool group"
|
||||
(visible yes)
|
||||
(active-tool "gimp-fuzzy-select-tool")
|
||||
(children
|
||||
(GimpToolInfo "gimp-fuzzy-select-tool"
|
||||
(icon-name "gimp-tool-fuzzy-select")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-by-color-select-tool"
|
||||
(icon-name "gimp-tool-by-color-select")
|
||||
(visible yes))))
|
||||
(GimpToolInfo "gimp-crop-tool"
|
||||
(icon-name "gimp-tool-crop")
|
||||
(visible yes))
|
||||
(GimpToolGroup "tool group"
|
||||
(visible yes)
|
||||
(active-tool "gimp-scale-tool")
|
||||
(children
|
||||
(GimpToolInfo "gimp-unified-transform-tool"
|
||||
(icon-name "gimp-tool-unified-transform")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-rotate-tool"
|
||||
(icon-name "gimp-tool-rotate")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-scale-tool"
|
||||
(icon-name "gimp-tool-scale")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-shear-tool"
|
||||
(icon-name "gimp-tool-shear")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-flip-tool"
|
||||
(icon-name "gimp-tool-flip")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-perspective-tool"
|
||||
(icon-name "gimp-tool-perspective")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-transform-3d-tool"
|
||||
(icon-name "gimp-tool-transform-3d")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-handle-transform-tool"
|
||||
(icon-name "gimp-tool-handle-transform")
|
||||
(visible yes))))
|
||||
(GimpToolGroup "tool group"
|
||||
(visible yes)
|
||||
(active-tool "gimp-cage-tool")
|
||||
(children
|
||||
(GimpToolInfo "gimp-warp-tool"
|
||||
(icon-name "gimp-tool-warp")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-cage-tool"
|
||||
(icon-name "gimp-tool-cage")
|
||||
(visible yes))))
|
||||
(GimpToolGroup "tool group"
|
||||
(visible yes)
|
||||
(active-tool "gimp-bucket-fill-tool")
|
||||
(children
|
||||
(GimpToolInfo "gimp-bucket-fill-tool"
|
||||
(icon-name "gimp-tool-bucket-fill")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-gradient-tool"
|
||||
(icon-name "gimp-tool-gradient")
|
||||
(visible yes))))
|
||||
(GimpToolGroup "tool group"
|
||||
(visible yes)
|
||||
(active-tool "gimp-paintbrush-tool")
|
||||
(children
|
||||
(GimpToolInfo "gimp-paintbrush-tool"
|
||||
(icon-name "gimp-tool-paintbrush")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-pencil-tool"
|
||||
(icon-name "gimp-tool-pencil")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-airbrush-tool"
|
||||
(icon-name "gimp-tool-airbrush")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-ink-tool"
|
||||
(icon-name "gimp-tool-ink")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-mypaint-brush-tool"
|
||||
(icon-name "gimp-tool-mypaint-brush")
|
||||
(visible yes))))
|
||||
(GimpToolInfo "gimp-eraser-tool"
|
||||
(icon-name "gimp-tool-eraser")
|
||||
(visible yes))
|
||||
(GimpToolGroup "tool group"
|
||||
(visible yes)
|
||||
(active-tool "gimp-clone-tool")
|
||||
(children
|
||||
(GimpToolInfo "gimp-clone-tool"
|
||||
(icon-name "gimp-tool-clone")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-perspective-clone-tool"
|
||||
(icon-name "gimp-tool-perspective-clone")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-heal-tool"
|
||||
(icon-name "gimp-tool-heal")
|
||||
(visible yes))))
|
||||
(GimpToolGroup "tool group"
|
||||
(visible yes)
|
||||
(active-tool "gimp-dodge-burn-tool")
|
||||
(children
|
||||
(GimpToolInfo "gimp-smudge-tool"
|
||||
(icon-name "gimp-tool-smudge")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-convolve-tool"
|
||||
(icon-name "gimp-tool-blur")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-dodge-burn-tool"
|
||||
(icon-name "gimp-tool-dodge")
|
||||
(visible yes))))
|
||||
(GimpToolInfo "gimp-vector-tool"
|
||||
(icon-name "gimp-tool-path")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-text-tool"
|
||||
(icon-name "gimp-tool-text")
|
||||
(visible yes))
|
||||
(GimpToolGroup "tool group"
|
||||
(visible yes)
|
||||
(active-tool "gimp-color-picker-tool")
|
||||
(children
|
||||
(GimpToolInfo "gimp-color-picker-tool"
|
||||
(icon-name "gimp-tool-color-picker")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-measure-tool"
|
||||
(icon-name "gimp-tool-measure")
|
||||
(visible yes))))
|
||||
(GimpToolInfo "gimp-zoom-tool"
|
||||
(icon-name "gimp-tool-zoom")
|
||||
(visible yes))
|
||||
(GimpToolInfo "gimp-brightness-contrast-tool"
|
||||
(icon-name "gimp-tool-brightness-contrast")
|
||||
(visible no))
|
||||
(GimpToolInfo "gimp-threshold-tool"
|
||||
(icon-name "gimp-tool-threshold")
|
||||
(visible no))
|
||||
(GimpToolInfo "gimp-levels-tool"
|
||||
(icon-name "gimp-tool-levels")
|
||||
(visible no))
|
||||
(GimpToolInfo "gimp-curves-tool"
|
||||
(icon-name "gimp-tool-curves")
|
||||
(visible no))
|
||||
(GimpToolInfo "gimp-offset-tool"
|
||||
(icon-name "gimp-tool-offset")
|
||||
(visible no))
|
||||
(GimpToolInfo "gimp-gegl-tool"
|
||||
(icon-name "gimp-gegl")
|
||||
(visible no))
|
||||
|
||||
# end of toolrc
|
||||
51
GIMP/2.10/unitrc
Normal file
51
GIMP/2.10/unitrc
Normal file
@ -0,0 +1,51 @@
|
||||
# GIMP units
|
||||
#
|
||||
# This file contains the user unit database. You can edit this list with the
|
||||
# unit editor. You are not supposed to edit it manually, but of course you
|
||||
# can do.
|
||||
# This file will be entirely rewritten each time you exit.
|
||||
|
||||
(unit-info "centimeters"
|
||||
(factor 2.54)
|
||||
(digits 2)
|
||||
(symbol "cm")
|
||||
(abbreviation "cm")
|
||||
(singular "centimeter")
|
||||
(plural "centimeters"))
|
||||
(unit-info "meters"
|
||||
(factor 0.025399999999999999)
|
||||
(digits 4)
|
||||
(symbol "m")
|
||||
(abbreviation "m")
|
||||
(singular "meter")
|
||||
(plural "meters"))
|
||||
(unit-info "feet"
|
||||
(factor 0.083333000000000004)
|
||||
(digits 4)
|
||||
(symbol "'")
|
||||
(abbreviation "ft")
|
||||
(singular "foot")
|
||||
(plural "feet"))
|
||||
(unit-info "yards"
|
||||
(factor 0.027778000000000001)
|
||||
(digits 4)
|
||||
(symbol "yd")
|
||||
(abbreviation "yd")
|
||||
(singular "yard")
|
||||
(plural "yards"))
|
||||
(unit-info "typogr. points"
|
||||
(factor 72.269999999999996)
|
||||
(digits 0)
|
||||
(symbol "tpt")
|
||||
(abbreviation "tpt")
|
||||
(singular "typogr. point")
|
||||
(plural "typogr. points"))
|
||||
(unit-info "typogr. picas"
|
||||
(factor 6.0225)
|
||||
(digits 1)
|
||||
(symbol "tpc")
|
||||
(abbreviation "tpc")
|
||||
(singular "typogr. pica")
|
||||
(plural "typogr. picas"))
|
||||
|
||||
# end of units
|
||||
27
dunst/dunstrc
Normal file
27
dunst/dunstrc
Normal file
@ -0,0 +1,27 @@
|
||||
[global]
|
||||
monitor = 0
|
||||
follow = keyboard
|
||||
width = 370
|
||||
height = 350
|
||||
offset = 0x19
|
||||
padding = 2
|
||||
horizontal_padding = 2
|
||||
transparency = 25
|
||||
font = Monospace 12
|
||||
format = "<b>%s</b>\n%b"
|
||||
|
||||
[urgency_low]
|
||||
background = "#1d2021"
|
||||
foreground = "#928374"
|
||||
timeout = 3
|
||||
|
||||
[urgency_normal]
|
||||
foreground = "#ebdbb2"
|
||||
background = "#458588"
|
||||
timeout = 5
|
||||
|
||||
[urgency_critical]
|
||||
background = "#1cc24d"
|
||||
foreground = "#ebdbb2"
|
||||
frame_color = "#fabd2f"
|
||||
timeout = 10
|
||||
3
fancontrol-gui
Normal file
3
fancontrol-gui
Normal file
@ -0,0 +1,3 @@
|
||||
[window]
|
||||
DP-4 DP-2 Height 2560x1440=1393
|
||||
DP-4 DP-2 Width 2560x1440=1363
|
||||
36
fontconfig/fonts.conf
Executable file
36
fontconfig/fonts.conf
Executable file
@ -0,0 +1,36 @@
|
||||
<?xml version='1.0'?>
|
||||
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
|
||||
<fontconfig>
|
||||
<alias>
|
||||
<family>serif</family>
|
||||
<prefer>
|
||||
<family>Linux Libertine</family>
|
||||
<family>Joy Pixels</family>
|
||||
<family>Noto Color Emoji</family>
|
||||
</prefer>
|
||||
</alias>
|
||||
<alias>
|
||||
<family>sans-serif</family>
|
||||
<prefer>
|
||||
<family>Linux Biolinum</family>
|
||||
<family>Joy Pixels</family>
|
||||
<family>Noto Color Emoji</family>
|
||||
</prefer>
|
||||
</alias>
|
||||
<alias>
|
||||
<family>sans</family>
|
||||
<prefer>
|
||||
<family>Linux Biolinum</family>
|
||||
<family>Joy Pixels</family>
|
||||
<family>Noto Color Emoji</family>
|
||||
</prefer>
|
||||
</alias>
|
||||
<alias>
|
||||
<family>monospace</family>
|
||||
<prefer>
|
||||
<family>Noto Sans Mono</family>
|
||||
<family>Liberation Mono</family>
|
||||
<family>Braille</family>
|
||||
</prefer>
|
||||
</alias>
|
||||
</fontconfig>
|
||||
11
gtk-2.0/gtkfilechooser.ini
Normal file
11
gtk-2.0/gtkfilechooser.ini
Normal file
@ -0,0 +1,11 @@
|
||||
[Filechooser Settings]
|
||||
LocationMode=path-bar
|
||||
ShowHidden=false
|
||||
ShowSizeColumn=true
|
||||
GeometryX=2726
|
||||
GeometryY=374
|
||||
GeometryWidth=948
|
||||
GeometryHeight=712
|
||||
SortColumn=name
|
||||
SortOrder=ascending
|
||||
StartupMode=recent
|
||||
20
gtk-2.0/gtkrc-2.0
Normal file
20
gtk-2.0/gtkrc-2.0
Normal file
@ -0,0 +1,20 @@
|
||||
# DO NOT EDIT! This file will be overwritten by LXAppearance.
|
||||
# Any customization should be done in ~/.gtkrc-2.0.mine instead.
|
||||
|
||||
include "/home/victor/.gtkrc-2.0.mine"
|
||||
gtk-theme-name="Arc-Gruvbox"
|
||||
gtk-icon-theme-name="ePapirus"
|
||||
gtk-font-name="Sans 10"
|
||||
gtk-cursor-theme-name="capitaine-cursors"
|
||||
gtk-cursor-theme-size=0
|
||||
gtk-toolbar-style=GTK_TOOLBAR_TEXT
|
||||
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
|
||||
gtk-button-images=0
|
||||
gtk-menu-images=1
|
||||
gtk-enable-event-sounds=1
|
||||
gtk-enable-input-feedback-sounds=1
|
||||
gtk-xft-antialias=1
|
||||
gtk-xft-hinting=1
|
||||
gtk-xft-hintstyle="hintfull"
|
||||
gtk-xft-rgba="rgb"
|
||||
gtk-modules="gail:atk-bridge"
|
||||
7
gtk-3.0/bookmarks
Normal file
7
gtk-3.0/bookmarks
Normal file
@ -0,0 +1,7 @@
|
||||
file:///home/victor/pix/1memes
|
||||
file:///home/victor/pix/screenshots
|
||||
file:///home/victor/vids
|
||||
file:///home/victor/down
|
||||
file:///home/victor/dox
|
||||
file:///mnt/ssd250
|
||||
file:///mnt/USB
|
||||
84
gtk-3.0/colors.css
Normal file
84
gtk-3.0/colors.css
Normal file
@ -0,0 +1,84 @@
|
||||
@define-color borders_breeze #bcbebf;
|
||||
@define-color content_view_bg_breeze #ffffff;
|
||||
@define-color error_color_backdrop_breeze #da4453;
|
||||
@define-color error_color_breeze #da4453;
|
||||
@define-color error_color_insensitive_backdrop_breeze #f0b1b8;
|
||||
@define-color error_color_insensitive_breeze #f0b1b8;
|
||||
@define-color insensitive_base_color_breeze #f3f3f3;
|
||||
@define-color insensitive_base_fg_color_breeze #aaabac;
|
||||
@define-color insensitive_bg_color_breeze #e3e5e7;
|
||||
@define-color insensitive_borders_breeze #d2d4d6;
|
||||
@define-color insensitive_fg_color_breeze #a0a1a3;
|
||||
@define-color insensitive_selected_bg_color_breeze #e3e5e7;
|
||||
@define-color insensitive_selected_fg_color_breeze #a0a1a3;
|
||||
@define-color insensitive_unfocused_bg_color_breeze #e3e5e7;
|
||||
@define-color insensitive_unfocused_fg_color_breeze #a0a1a3;
|
||||
@define-color insensitive_unfocused_selected_bg_color_breeze #e3e5e7;
|
||||
@define-color insensitive_unfocused_selected_fg_color_breeze #a0a1a3;
|
||||
@define-color link_color_breeze #2980b9;
|
||||
@define-color link_visited_color_breeze #9b59b6;
|
||||
@define-color success_color_backdrop_breeze #27ae60;
|
||||
@define-color success_color_breeze #27ae60;
|
||||
@define-color success_color_insensitive_backdrop_breeze #abd8be;
|
||||
@define-color success_color_insensitive_breeze #abd8be;
|
||||
@define-color theme_base_color_breeze #ffffff;
|
||||
@define-color theme_bg_color_breeze #eff0f1;
|
||||
@define-color theme_button_background_backdrop_breeze #fcfcfc;
|
||||
@define-color theme_button_background_backdrop_insensitive_breeze #f0f0f0;
|
||||
@define-color theme_button_background_insensitive_breeze #f0f0f0;
|
||||
@define-color theme_button_background_normal_breeze #fcfcfc;
|
||||
@define-color theme_button_decoration_focus_backdrop_breeze #3daee9;
|
||||
@define-color theme_button_decoration_focus_backdrop_insensitive_breeze #a2d8f3;
|
||||
@define-color theme_button_decoration_focus_breeze #3daee9;
|
||||
@define-color theme_button_decoration_focus_insensitive_breeze #a2d8f3;
|
||||
@define-color theme_button_decoration_hover_backdrop_breeze #3daee9;
|
||||
@define-color theme_button_decoration_hover_backdrop_insensitive_breeze #a2d8f3;
|
||||
@define-color theme_button_decoration_hover_breeze #3daee9;
|
||||
@define-color theme_button_decoration_hover_insensitive_breeze #a2d8f3;
|
||||
@define-color theme_button_foreground_active_backdrop_breeze #232629;
|
||||
@define-color theme_button_foreground_active_backdrop_insensitive_breeze #a0a1a3;
|
||||
@define-color theme_button_foreground_active_breeze #ffffff;
|
||||
@define-color theme_button_foreground_active_insensitive_breeze #a0a1a3;
|
||||
@define-color theme_button_foreground_backdrop_breeze #232629;
|
||||
@define-color theme_button_foreground_backdrop_insensitive_breeze #a8a9aa;
|
||||
@define-color theme_button_foreground_insensitive_breeze #a8a9aa;
|
||||
@define-color theme_button_foreground_normal_breeze #232629;
|
||||
@define-color theme_fg_color_breeze #232629;
|
||||
@define-color theme_header_background_backdrop_breeze #eff0f1;
|
||||
@define-color theme_header_background_breeze #dee0e2;
|
||||
@define-color theme_header_background_light_breeze #eff0f1;
|
||||
@define-color theme_header_foreground_backdrop_breeze #232629;
|
||||
@define-color theme_header_foreground_breeze #232629;
|
||||
@define-color theme_header_foreground_insensitive_backdrop_breeze #232629;
|
||||
@define-color theme_header_foreground_insensitive_breeze #232629;
|
||||
@define-color theme_hovering_selected_bg_color_breeze #3daee9;
|
||||
@define-color theme_selected_bg_color_breeze #3daee9;
|
||||
@define-color theme_selected_fg_color_breeze #ffffff;
|
||||
@define-color theme_text_color_breeze #232629;
|
||||
@define-color theme_titlebar_background_backdrop_breeze #eff0f1;
|
||||
@define-color theme_titlebar_background_breeze #dee0e2;
|
||||
@define-color theme_titlebar_background_light_breeze #eff0f1;
|
||||
@define-color theme_titlebar_foreground_backdrop_breeze #232629;
|
||||
@define-color theme_titlebar_foreground_breeze #232629;
|
||||
@define-color theme_titlebar_foreground_insensitive_backdrop_breeze #232629;
|
||||
@define-color theme_titlebar_foreground_insensitive_breeze #232629;
|
||||
@define-color theme_unfocused_base_color_breeze #ffffff;
|
||||
@define-color theme_unfocused_bg_color_breeze #eff0f1;
|
||||
@define-color theme_unfocused_fg_color_breeze #232629;
|
||||
@define-color theme_unfocused_selected_bg_color_alt_breeze #c2e0f5;
|
||||
@define-color theme_unfocused_selected_bg_color_breeze #c2e0f5;
|
||||
@define-color theme_unfocused_selected_fg_color_breeze #232629;
|
||||
@define-color theme_unfocused_text_color_breeze #232629;
|
||||
@define-color theme_unfocused_view_bg_color_breeze #f3f3f3;
|
||||
@define-color theme_unfocused_view_text_color_breeze #aaabac;
|
||||
@define-color theme_view_active_decoration_color_breeze #3daee9;
|
||||
@define-color theme_view_hover_decoration_color_breeze #3daee9;
|
||||
@define-color tooltip_background_breeze #f7f7f7;
|
||||
@define-color tooltip_border_breeze #c2c3c3;
|
||||
@define-color tooltip_text_breeze #232629;
|
||||
@define-color unfocused_borders_breeze #bcbebf;
|
||||
@define-color unfocused_insensitive_borders_breeze #d2d4d6;
|
||||
@define-color warning_color_backdrop_breeze #f67400;
|
||||
@define-color warning_color_breeze #f67400;
|
||||
@define-color warning_color_insensitive_backdrop_breeze #fbc289;
|
||||
@define-color warning_color_insensitive_breeze #fbc289;
|
||||
1
gtk-3.0/gtk.css
Normal file
1
gtk-3.0/gtk.css
Normal file
@ -0,0 +1 @@
|
||||
@import 'colors.css';
|
||||
21
gtk-3.0/settings.ini
Normal file
21
gtk-3.0/settings.ini
Normal file
@ -0,0 +1,21 @@
|
||||
[Settings]
|
||||
gtk-application-prefer-dark-theme=false
|
||||
gtk-button-images=0
|
||||
gtk-cursor-theme-name=capitaine-cursors
|
||||
gtk-cursor-theme-size=0
|
||||
gtk-decoration-layout=icon:minimize,maximize,close
|
||||
gtk-enable-animations=true
|
||||
gtk-enable-event-sounds=1
|
||||
gtk-enable-input-feedback-sounds=1
|
||||
gtk-font-name=Sans 10
|
||||
gtk-icon-theme-name=ePapirus
|
||||
gtk-menu-images=1
|
||||
gtk-primary-button-warps-slider=false
|
||||
gtk-theme-name=Arc-Gruvbox
|
||||
gtk-toolbar-icon-size=GTK_ICON_SIZE_LARGE_TOOLBAR
|
||||
gtk-toolbar-style=GTK_TOOLBAR_TEXT
|
||||
gtk-xft-antialias=1
|
||||
gtk-xft-hinting=1
|
||||
gtk-xft-hintstyle=hintfull
|
||||
gtk-xft-rgba=rgb
|
||||
gtk-modules=gail:atk-bridge
|
||||
9
gtk-4.0/settings.ini
Normal file
9
gtk-4.0/settings.ini
Normal file
@ -0,0 +1,9 @@
|
||||
[Settings]
|
||||
gtk-application-prefer-dark-theme=false
|
||||
gtk-cursor-theme-name=breeze_cursors
|
||||
gtk-cursor-theme-size=24
|
||||
gtk-decoration-layout=icon:minimize,maximize,close
|
||||
gtk-enable-animations=true
|
||||
gtk-font-name=Noto Sans, 10
|
||||
gtk-icon-theme-name=breeze
|
||||
gtk-primary-button-warps-slider=false
|
||||
5
gtkrc-2.0
Normal file
5
gtkrc-2.0
Normal file
@ -0,0 +1,5 @@
|
||||
# created by KDE Plasma, Sun Aug 14 14:02:50 2022
|
||||
#
|
||||
|
||||
gtk-alternative-button-order = 1
|
||||
|
||||
63
htop/htoprc
Normal file
63
htop/htoprc
Normal file
@ -0,0 +1,63 @@
|
||||
# Beware! This file is rewritten by htop when settings are changed in the interface.
|
||||
# The parser is also very primitive, and not human-friendly.
|
||||
htop_version=3.2.2
|
||||
config_reader_min_version=3
|
||||
fields=0 48 17 18 38 39 40 2 46 47 49 1
|
||||
hide_kernel_threads=1
|
||||
hide_userland_threads=1
|
||||
hide_running_in_container=0
|
||||
shadow_other_users=0
|
||||
show_thread_names=1
|
||||
show_program_path=1
|
||||
highlight_base_name=0
|
||||
highlight_deleted_exe=1
|
||||
shadow_distribution_path_prefix=0
|
||||
highlight_megabytes=1
|
||||
highlight_threads=1
|
||||
highlight_changes=0
|
||||
highlight_changes_delay_secs=5
|
||||
find_comm_in_cmdline=1
|
||||
strip_exe_from_cmdline=1
|
||||
show_merged_command=0
|
||||
header_margin=1
|
||||
screen_tabs=1
|
||||
detailed_cpu_time=0
|
||||
cpu_count_from_one=0
|
||||
show_cpu_usage=1
|
||||
show_cpu_frequency=0
|
||||
show_cpu_temperature=0
|
||||
degree_fahrenheit=0
|
||||
update_process_names=0
|
||||
account_guest_in_cpu_meter=0
|
||||
color_scheme=0
|
||||
enable_mouse=1
|
||||
delay=15
|
||||
hide_function_bar=0
|
||||
header_layout=two_50_50
|
||||
column_meters_0=CPU LeftCPUs2 Memory Swap
|
||||
column_meter_modes_0=1 1 1 1
|
||||
column_meters_1=RightCPUs2 Tasks LoadAverage Uptime NetworkIO
|
||||
column_meter_modes_1=1 2 2 2 2
|
||||
tree_view=1
|
||||
sort_key=46
|
||||
tree_sort_key=47
|
||||
sort_direction=-1
|
||||
tree_sort_direction=-1
|
||||
tree_view_always_by_pid=0
|
||||
all_branches_collapsed=0
|
||||
screen:Main=PID USER PRIORITY NICE M_VIRT M_RESIDENT M_SHARE STATE PERCENT_CPU PERCENT_MEM TIME Command
|
||||
.sort_key=PERCENT_CPU
|
||||
.tree_sort_key=PERCENT_MEM
|
||||
.tree_view=1
|
||||
.tree_view_always_by_pid=0
|
||||
.sort_direction=-1
|
||||
.tree_sort_direction=-1
|
||||
.all_branches_collapsed=0
|
||||
screen:I/O=PID USER IO_PRIORITY IO_RATE IO_READ_RATE IO_WRITE_RATE PERCENT_SWAP_DELAY PERCENT_IO_DELAY Command
|
||||
.sort_key=IO_RATE
|
||||
.tree_sort_key=PID
|
||||
.tree_view=0
|
||||
.tree_view_always_by_pid=0
|
||||
.sort_direction=-1
|
||||
.tree_sort_direction=1
|
||||
.all_branches_collapsed=0
|
||||
4
lf/cleaner
Executable file
4
lf/cleaner
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
if [ -n "$FIFO_UEBERZUG" ]; then
|
||||
printf '{"action": "remove", "identifier": "PREVIEW"}\n' > "$FIFO_UEBERZUG"
|
||||
fi
|
||||
78
lf/icons
Normal file
78
lf/icons
Normal file
@ -0,0 +1,78 @@
|
||||
di 📁
|
||||
fi 📃
|
||||
tw 🤝
|
||||
ow 📂
|
||||
ln ⛓
|
||||
or ❌
|
||||
ex 🎯
|
||||
*.txt ✍
|
||||
*.mom ✍
|
||||
*.me ✍
|
||||
*.ms ✍
|
||||
*.avif 🖼
|
||||
*.png 🖼
|
||||
*.webp 🖼
|
||||
*.ico 🖼
|
||||
*.jpg 📸
|
||||
*.jpe 📸
|
||||
*.jpeg 📸
|
||||
*.gif 🖼
|
||||
*.svg 🗺
|
||||
*.tif 🖼
|
||||
*.tiff 🖼
|
||||
*.xcf 🖌
|
||||
*.html 🌎
|
||||
*.xml 📰
|
||||
*.gpg 🔒
|
||||
*.css 🎨
|
||||
*.pdf 📚
|
||||
*.djvu 📚
|
||||
*.epub 📚
|
||||
*.csv 📓
|
||||
*.xlsx 📓
|
||||
*.tex 📜
|
||||
*.md 📘
|
||||
*.r 📊
|
||||
*.R 📊
|
||||
*.rmd 📊
|
||||
*.Rmd 📊
|
||||
*.m 📊
|
||||
*.py 🐍
|
||||
*.mp3 🎵
|
||||
*.opus 🎵
|
||||
*.ogg 🎵
|
||||
*.m4a 🎵
|
||||
*.flac 🎼
|
||||
*.wav 🎼
|
||||
*.mkv 🎥
|
||||
*.mp4 🎥
|
||||
*.webm 🎥
|
||||
*.mpeg 🎥
|
||||
*.avi 🎥
|
||||
*.mov 🎥
|
||||
*.mpg 🎥
|
||||
*.wmv 🎥
|
||||
*.m4b 🎥
|
||||
*.flv 🎥
|
||||
*.zip 📦
|
||||
*.rar 📦
|
||||
*.7z 📦
|
||||
*.tar 📦
|
||||
*.z64 🎮
|
||||
*.v64 🎮
|
||||
*.n64 🎮
|
||||
*.gba 🎮
|
||||
*.nes 🎮
|
||||
*.gdi 🎮
|
||||
*.1 ℹ
|
||||
*.nfo ℹ
|
||||
*.info ℹ
|
||||
*.log 📙
|
||||
*.iso 📀
|
||||
*.img 📀
|
||||
*.bib 🎓
|
||||
*.ged 👪
|
||||
*.part 💔
|
||||
*.torrent 🔽
|
||||
*.jar ♨
|
||||
*.java ♨
|
||||
138
lf/lfrc
Normal file
138
lf/lfrc
Normal file
@ -0,0 +1,138 @@
|
||||
# Luke's lf settings
|
||||
|
||||
|
||||
# Note on Image Previews
|
||||
# For those wanting image previews, like this system, there are four steps to
|
||||
# set it up. These are done automatically for LARBS users, but I will state
|
||||
# them here for others doing it manually.
|
||||
#
|
||||
# 1. ueberzug must be installed.
|
||||
# 2. The scope file (~/.config/lf/scope for me), must have a command similar to
|
||||
# mine to generate ueberzug images.
|
||||
# 3. A `set cleaner` line as below is a cleaner script.
|
||||
# 4. lf should be started through a wrapper script (~/.local/bin/lfub for me)
|
||||
# that creates the environment for ueberzug. This command can be be aliased
|
||||
# in your shellrc (`alias lf="lfub") or if set to a binding, should be
|
||||
# called directly instead of normal lf.
|
||||
|
||||
# Basic vars
|
||||
set shellopts '-eu'
|
||||
set ifs "\n"
|
||||
set scrolloff 10
|
||||
set icons
|
||||
set period 1
|
||||
set hiddenfiles ".*:*.aux:*.log:*.bbl:*.bcf:*.blg:*.run.xml"
|
||||
set cleaner '~/.config/lf/cleaner'
|
||||
set previewer '~/.config/lf/scope'
|
||||
set autoquit on
|
||||
|
||||
# cmds/functions
|
||||
cmd open ${{
|
||||
case $(file --mime-type "$(readlink -f $f)" -b) in
|
||||
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet) localc $fx ;;
|
||||
image/vnd.djvu|application/pdf|application/octet-stream|application/postscript) setsid -f zathura $fx >/dev/null 2>&1 ;;
|
||||
text/*|application/json|inode/x-empty|application/x-subrip) $EDITOR $fx;;
|
||||
image/x-xcf) setsid -f gimp $f >/dev/null 2>&1 ;;
|
||||
image/svg+xml) display -- $f ;;
|
||||
image/*) rotdir $f | grep -i "\.\(png\|jpg\|jpeg\|gif\|avif\|webp\|tif\|ico\)\(_large\)*$" |
|
||||
setsid -f sxiv -aio 2>/dev/null | while read -r file; do
|
||||
[ -z "$file" ] && continue
|
||||
lf -remote "send select \"$file\""
|
||||
lf -remote "send toggle"
|
||||
done &
|
||||
;;
|
||||
audio/*|video/x-ms-asf) mpv --audio-display=no $f ;;
|
||||
video/*) setsid -f mpv $f -quiet >/dev/null 2>&1 ;;
|
||||
application/pdf|application/vnd.djvu|application/epub*) setsid -f zathura $fx >/dev/null 2>&1 ;;
|
||||
application/pgp-encrypted) $EDITOR $fx ;;
|
||||
application/vnd.openxmlformats-officedocument.wordprocessingml.document|application/vnd.oasis.opendocument.text) setsid -f lowriter $fx >/dev/null 2>&1 ;;
|
||||
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet|application/octet-stream|application/vnd.oasis.opendocument.spreadsheet|application/vnd.oasis.opendocument.spreadsheet-template) setsid -f localc $fx >/dev/null 2>&1 ;;
|
||||
application/vnd.openxmlformats-officedocument.presentationml.presentation|application/vnd.oasis.opendocument.presentation-template|application/vnd.oasis.opendocument.presentation|application/vnd.ms-powerpoint) setsid -f loimpress $fx >/dev/null 2>&1 ;;
|
||||
application/vnd.oasis.opendocument.graphics|application/vnd.oasis.opendocument.graphics-template) setsid -f lodraw $fx >/dev/null 2>&1 ;;
|
||||
application/vnd.oasis.opendocument.formula) setsid -f lomath $fx >/dev/null 2>&1 ;;
|
||||
application/vnd.oasis.opendocument.database) setsid -f lobase $fx >/dev/null 2>&1 ;;
|
||||
*) for f in $fx; do setsid -f $OPENER $f >/dev/null 2>&1; done;;
|
||||
esac
|
||||
}}
|
||||
|
||||
cmd mkdir $mkdir -p "$(echo $* | tr ' ' '\ ')"
|
||||
|
||||
cmd extract ${{
|
||||
clear; tput cup $(($(tput lines)/3)); tput bold
|
||||
set -f
|
||||
printf "%s\n\t" "$fx"
|
||||
printf "extract?[y/N]"
|
||||
read ans
|
||||
[ $ans = "y" ] && aunpack $fx
|
||||
}}
|
||||
|
||||
cmd delete ${{
|
||||
clear; tput cup $(($(tput lines)/3)); tput bold
|
||||
set -f
|
||||
printf "%s\n\t" "$fx"
|
||||
printf "delete?[y/N]"
|
||||
read ans
|
||||
[ $ans = "y" ] && rm -rf -- $fx
|
||||
}}
|
||||
|
||||
cmd moveto ${{
|
||||
clear; tput cup $(($(tput lines)/3)); tput bold
|
||||
set -f
|
||||
clear; echo "Move to where?"
|
||||
dest="$(sed -e 's/\s*#.*//' -e '/^$/d' -e 's/^\S*\s*//' ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf | sed 's|~|$HOME|')" &&
|
||||
for x in $fx; do
|
||||
eval mv -iv \"$x\" \"$dest\"
|
||||
done &&
|
||||
notify-send "🚚 File(s) moved." "File(s) moved to $dest."
|
||||
}}
|
||||
|
||||
cmd copyto ${{
|
||||
clear; tput cup $(($(tput lines)/3)); tput bold
|
||||
set -f
|
||||
clear; echo "Copy to where?"
|
||||
dest="$(sed -e 's/\s*#.*//' -e '/^$/d' -e 's/^\S*\s*//' ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf | sed 's|~|$HOME|')" &&
|
||||
for x in $fx; do
|
||||
eval cp -ivr \"$x\" \"$dest\"
|
||||
done &&
|
||||
notify-send "📋 File(s) copied." "File(s) copies to $dest."
|
||||
}}
|
||||
|
||||
cmd setbg "$1"
|
||||
cmd bulkrename $vidir
|
||||
|
||||
# Bindings
|
||||
map <c-f> $lf -remote "send $id select \"$(fzf)\""
|
||||
map J $lf -remote "send $id cd $(sed -e 's/\s*#.*//' -e '/^$/d' -e 's/^\S*\s*//' ${XDG_CONFIG_HOME:-$HOME/.config}/shell/bm-dirs | fzf)"
|
||||
map gh
|
||||
map g top
|
||||
map D delete
|
||||
map E extract
|
||||
map C copyto
|
||||
map M moveto
|
||||
map <c-n> push :mkdir<space>
|
||||
map <c-r> reload
|
||||
map <c-s> set hidden!
|
||||
map <enter> shell
|
||||
map x $$f
|
||||
map X !$f
|
||||
map o &mimeopen "$f"
|
||||
map O $mimeopen --ask "$f"
|
||||
|
||||
map A rename # at the very end
|
||||
map c push A<c-u> # new rename
|
||||
map I push A<c-a> # at the very beginning
|
||||
map i push A<a-b><a-b><a-f> # before extension
|
||||
map a push A<a-b> # after extension
|
||||
map B bulkrename
|
||||
map b $setbg $f
|
||||
|
||||
map <c-e> down
|
||||
map <c-y> up
|
||||
map V push :!nvim<space>
|
||||
|
||||
map W $setsid -f $TERMINAL >/dev/null 2>&1
|
||||
|
||||
map Y $printf "%s" "$fx" | xclip -selection clipboard
|
||||
|
||||
# Source Bookmarks
|
||||
source "~/.config/lf/shortcutrc"
|
||||
53
lf/scope
Executable file
53
lf/scope
Executable file
@ -0,0 +1,53 @@
|
||||
#!/bin/sh
|
||||
|
||||
# File preview handler for lf.
|
||||
|
||||
set -C -f
|
||||
IFS="$(printf '%b_' '\n')"; IFS="${IFS%_}"
|
||||
|
||||
image() {
|
||||
if [ -f "$1" ] && [ -n "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ] && command -V ueberzug >/dev/null 2>&1; then
|
||||
printf '{"action": "add", "identifier": "PREVIEW", "x": "%s", "y": "%s", "width": "%s", "height": "%s", "scaler": "contain", "path": "%s"}\n' "$4" "$5" "$(($2-1))" "$(($3-1))" "$1" > "$FIFO_UEBERZUG"
|
||||
else
|
||||
mediainfo "$6"
|
||||
fi
|
||||
}
|
||||
|
||||
ifub() {
|
||||
[ -n "$DISPLAY" ] && [ -z "$WAYLAND_DISPLAY" ] && command -V ueberzug >/dev/null 2>&1
|
||||
}
|
||||
|
||||
# Note that the cache file name is a function of file information, meaning if
|
||||
# an image appears in multiple places across the machine, it will not have to
|
||||
# be regenerated once seen.
|
||||
|
||||
case "$(file --dereference --brief --mime-type -- "$1")" in
|
||||
image/avif) CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
|
||||
[ ! -f "$CACHE" ] && convert "$1" "$CACHE.jpg"
|
||||
image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1" ;;
|
||||
|
||||
image/*) image "$1" "$2" "$3" "$4" "$5" "$1" ;;
|
||||
text/html) lynx -width="$4" -display_charset=utf-8 -dump "$1" ;;
|
||||
text/troff) man ./ "$1" | col -b ;;
|
||||
text/* | */xml | application/json) bat --terminal-width "$(($4-2))" -f "$1" ;;
|
||||
audio/* | application/octet-stream) mediainfo "$1" || exit 1 ;;
|
||||
video/* )
|
||||
CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
|
||||
[ ! -f "$CACHE" ] && ffmpegthumbnailer -i "$1" -o "$CACHE" -s 0
|
||||
image "$CACHE" "$2" "$3" "$4" "$5" "$1"
|
||||
;;
|
||||
*/pdf)
|
||||
CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
|
||||
[ ! -f "$CACHE.jpg" ] && pdftoppm -jpeg -f 1 -singlefile "$1" "$CACHE"
|
||||
image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1"
|
||||
;;
|
||||
*/epub+zip|*/mobi*)
|
||||
CACHE="${XDG_CACHE_HOME:-$HOME/.cache}/lf/thumb.$(stat --printf '%n\0%i\0%F\0%s\0%W\0%Y' -- "$(readlink -f "$1")" | sha256sum | cut -d' ' -f1)"
|
||||
[ ! -f "$CACHE.jpg" ] && gnome-epub-thumbnailer "$1" "$CACHE.jpg"
|
||||
image "$CACHE.jpg" "$2" "$3" "$4" "$5" "$1"
|
||||
;;
|
||||
application/*zip) atool --list -- "$1" ;;
|
||||
*opendocument*) odt2txt "$1" ;;
|
||||
application/pgp-encrypted) gpg -d -- "$1" ;;
|
||||
esac
|
||||
exit 1
|
||||
35
lf/shortcutrc
Normal file
35
lf/shortcutrc
Normal file
@ -0,0 +1,35 @@
|
||||
map Ccac cd "/home/victor/.cache"
|
||||
map Ccf cd "/home/victor/.config"
|
||||
map CD cd "/home/victor/down"
|
||||
map Cd cd "/home/victor/dox"
|
||||
map Cdt cd "/home/victor/.local/share"
|
||||
map Crr cd "/home/victor/.local/src"
|
||||
map Ch cd "/home/victor"
|
||||
map Cm cd "/home/victor/music"
|
||||
map Cmn cd "/mnt"
|
||||
map Cpp cd "/home/victor/pix"
|
||||
map Csc cd "/home/victor/.local/bin"
|
||||
map Csrc cd "/home/victor/.local/src"
|
||||
map Cvv cd "/home/victor/vids"
|
||||
map Cssd cd "/mnt/ssd250/"
|
||||
map Cnvme cd "/mnt/nvme/"
|
||||
map Cbsd cd "/home/victor/bsd"
|
||||
map Cpub cd "/home/victor/Public"
|
||||
map Cmemes cd "/home/victor/Pictures/1memes"
|
||||
map Cweb cd "/home/victor/web"
|
||||
map Ebf $$EDITOR "/home/victor/.config/shell/bm-files"
|
||||
map Ebd $$EDITOR "/home/victor/.config/shell/bm-dirs"
|
||||
map Ecfx $$EDITOR "/home/victor/.config/x11/xresources"
|
||||
map Ecfb $$EDITOR "~/.local/src/dwmblocks/config.h"
|
||||
map Ecfv $$EDITOR "/home/victor/.config/nvim/init.vim"
|
||||
map Ecfz $$EDITOR "/home/victor/.config/zsh/.zshrc"
|
||||
map Ecfa $$EDITOR "/home/victor/.config/shell/aliasrc"
|
||||
map Ecfp $$EDITOR "/home/victor/.config/shell/profile"
|
||||
map Ecfm $$EDITOR "/home/victor/.config/mutt/muttrc"
|
||||
map Ecfn $$EDITOR "/home/victor/.config/newsboat/config"
|
||||
map Ecfu $$EDITOR "/home/victor/.config/newsboat/urls"
|
||||
map Ecfmb $$EDITOR "/home/victor/.config/ncmpcpp/bindings"
|
||||
map Ecfmc $$EDITOR "/home/victor/.config/ncmpcpp/config"
|
||||
map Ecfl $$EDITOR "/home/victor/.config/lf/lfrc"
|
||||
map EcfL $$EDITOR "/home/victor/.config/lf/scope"
|
||||
map EcfX $$EDITOR "/home/victor/.config/sxiv/exec/key-handler"
|
||||
55
mimeapps.list
Normal file
55
mimeapps.list
Normal file
@ -0,0 +1,55 @@
|
||||
[Default Applications]
|
||||
text/x-shellscript=text.desktop;
|
||||
x-scheme-handler/magnet=torrent.desktop;
|
||||
application/x-bittorrent=torrent.desktop;
|
||||
x-scheme-handler/mailto=userapp-Thunderbird-ELFTO1.desktop
|
||||
text/plain=text.desktop;
|
||||
application/postscript=pdf.desktop;
|
||||
application/pdf=pdf.desktop;
|
||||
image/png=img.desktop;
|
||||
image/jpeg=img.desktop;
|
||||
image/gif=img.desktop;
|
||||
application/rss+xml=rss.desktop
|
||||
video/x-matroska=video.desktop
|
||||
x-scheme-handler/lbry=lbry.desktop
|
||||
inode/directory=file.desktop
|
||||
x-scheme-handler/http=firefox.desktop
|
||||
x-scheme-handler/https=firefox.desktop
|
||||
x-scheme-handler/chrome=firefox.desktop
|
||||
text/html=firefox.desktop
|
||||
application/x-extension-htm=firefox.desktop
|
||||
application/x-extension-html=firefox.desktop
|
||||
application/x-extension-shtml=firefox.desktop
|
||||
application/xhtml+xml=firefox.desktop
|
||||
application/x-extension-xhtml=firefox.desktop
|
||||
application/x-extension-xht=firefox.desktop
|
||||
message/rfc822=userapp-Thunderbird-ELFTO1.desktop
|
||||
x-scheme-handler/mid=userapp-Thunderbird-ELFTO1.desktop
|
||||
x-scheme-handler/tg=userapp-Telegram Desktop-KTC7V1.desktop
|
||||
video/mp4=mpv.desktop
|
||||
audio/flac=mpv.desktop
|
||||
application/gzip=unityhub.desktop
|
||||
|
||||
[Added Associations]
|
||||
x-scheme-handler/http=firefox.desktop;
|
||||
x-scheme-handler/https=firefox.desktop;
|
||||
x-scheme-handler/chrome=firefox.desktop;
|
||||
text/html=firefox.desktop;
|
||||
application/x-extension-htm=firefox.desktop;
|
||||
application/x-extension-html=firefox.desktop;
|
||||
application/x-extension-shtml=firefox.desktop;
|
||||
application/xhtml+xml=firefox.desktop;
|
||||
application/x-extension-xhtml=firefox.desktop;
|
||||
application/x-extension-xht=firefox.desktop;
|
||||
x-scheme-handler/mailto=userapp-Thunderbird-ELFTO1.desktop;
|
||||
x-scheme-handler/mid=userapp-Thunderbird-ELFTO1.desktop;
|
||||
x-scheme-handler/tg=userapp-Telegram Desktop-UY5IQ1.desktop;userapp-Telegram Desktop-KTC7V1.desktop;
|
||||
video/mp4=vlc.desktop;mpv.desktop;
|
||||
application/x-xpinstall=org.kde.ark.desktop;
|
||||
application/javascript=codium.desktop;
|
||||
audio/x-opus+ogg=org.gnome.Rhythmbox3.desktop;mpv.desktop;
|
||||
video/webm=mpv.desktop;org.kde.kdenlive.desktop;
|
||||
application/zip=org.kde.ark.desktop;
|
||||
image/png=sxiv.desktop;org.kde.ark.desktop;
|
||||
audio/flac=mpv.desktop;
|
||||
application/gzip=unityhub.desktop;
|
||||
21
mpd/mpd.conf
Normal file
21
mpd/mpd.conf
Normal file
@ -0,0 +1,21 @@
|
||||
music_directory "~/music"
|
||||
playlist_directory "~/.config/mpd/playlists"
|
||||
|
||||
auto_update "yes"
|
||||
bind_to_address "127.0.0.1"
|
||||
restore_paused "yes"
|
||||
max_output_buffer_size "16384"
|
||||
|
||||
audio_output {
|
||||
type "pulse"
|
||||
name "pulse"
|
||||
#type "alsa"
|
||||
#name "ALSA"
|
||||
}
|
||||
|
||||
audio_output {
|
||||
type "fifo"
|
||||
name "Visualizer feed"
|
||||
path "/tmp/mpd.fifo"
|
||||
format "44100:16:2"
|
||||
}
|
||||
5
mpv/input.conf
Normal file
5
mpv/input.conf
Normal file
@ -0,0 +1,5 @@
|
||||
l seek 5
|
||||
h seek -5
|
||||
j seek -60
|
||||
k seek 60
|
||||
S cycle sub
|
||||
25
mpv/mpv.conf
Normal file
25
mpv/mpv.conf
Normal file
@ -0,0 +1,25 @@
|
||||
# Misc
|
||||
osc=no
|
||||
save-position-on-quit
|
||||
stop-screensaver=yes
|
||||
fullscreen
|
||||
ytdl-format=bestvideo[height<=?1080][fps<=?30]+bestaudio/best
|
||||
#Hardware acceleration
|
||||
vo=gpu
|
||||
gpu-api=vulkan
|
||||
hwdec=nvdec
|
||||
# Choose a gpu api other than vulkan
|
||||
cscale=bilinear
|
||||
# Look
|
||||
border=no
|
||||
cursor-autohide=1000
|
||||
# Cache
|
||||
cache=yes
|
||||
cache-default=999999
|
||||
demuxer-max-bytes=2147483648
|
||||
demuxer-max-back-bytes=2147483648
|
||||
# Audio
|
||||
volume=100
|
||||
[extension.webm]
|
||||
loop-file=inf
|
||||
no-resume-playback
|
||||
21
mpv/script_modules/mpvSockets/LICENSE
Normal file
21
mpv/script_modules/mpvSockets/LICENSE
Normal file
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2019 Wis
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
76
mpv/script_modules/mpvSockets/README.md
Normal file
76
mpv/script_modules/mpvSockets/README.md
Normal file
@ -0,0 +1,76 @@
|
||||
# mpvSockets
|
||||
create one sockets per mpv instance (with the instance's process **ID** (PID), (**unique**)), instead of one socket for the last started instance
|
||||
|
||||
dangling sockets for crashed or killed instances is an issue,
|
||||
not sure if this script should handle/remove them or the clients/users, or both.
|
||||
|
||||
# Installation
|
||||
Download the single script file to your mpv-scripts-directory
|
||||
## Linux / unixes:
|
||||
``` bash
|
||||
curl "https://raw.githubusercontent.com/wis/mpvSockets/master/mpvSockets.lua" --create-dirs -o "$Your_Mpv_Scripts_Directory_Location/mpvSockets.lua"
|
||||
```
|
||||
if you're on Linux, most likely the location is `~/.config/mpv/scripts`, so run this before:
|
||||
``` bash
|
||||
$Your_Mpv_Scripts_Directory_Location=$HOME/config/mpv/scripts
|
||||
```
|
||||
## Windows (untested)
|
||||
powershell:
|
||||
``` powershell
|
||||
Invoke-WebRequest -OutFile "$env:LOCALAPPDATA\mpv\scripts\mpvSockets.lua" "https://raw.githubusercontent.com/wis/mpvSockets/master/mpvSockets.lua"
|
||||
```
|
||||
|
||||
# Usage, with Mpv's [JSON IPC](https://github.com/mpv-player/mpv/blob/master/DOCS/man/ipc.rst)
|
||||
## Linux / unixes (unix sockets):
|
||||
a script that pauses all running mpv instances:
|
||||
bash:
|
||||
``` bash
|
||||
#!/bin/bash
|
||||
for i in $(ls /tmp/mpvSockets/*); do
|
||||
echo '{ "command": ["set_property", "pause", true] }' | socat - "$i";
|
||||
done
|
||||
# Socat is a command line based utility that establishes two bidirec-tional byte streams and transfers data between them.
|
||||
# available on Linux and FreeBSD, propably most unixes. you can also use
|
||||
```
|
||||
|
||||
## Windows (named pipes):
|
||||
quote from https://mpv.io/manual/stable/#command-prompt-example
|
||||
> Unfortunately, it's not as easy to test the IPC protocol on Windows, since Windows ports of socat (in Cygwin and MSYS2) don't understand named pipes. In the absence of a simple tool to send and receive from bidirectional pipes, the echo command can be used to send commands, but not receive replies from the command prompt.
|
||||
>
|
||||
> Assuming mpv was started with:
|
||||
>
|
||||
> `mpv file.mkv --input-ipc-server=\\.\pipe\mpvsocket`
|
||||
> You can send commands from a command prompt:
|
||||
>
|
||||
> `echo show-text ${playback-time} >\\.\pipe\mpvsocket`
|
||||
To be able to simultaneously read and write from the IPC pipe, like on Linux, it's necessary to write an external program that uses overlapped file I/O (or some wrapper like .NET's NamedPipeClientStream.)
|
||||
|
||||
powershell client writer and reader (untested):
|
||||
``` powershell
|
||||
# socat.ps1
|
||||
# usage: socat.ps1 <Pipe-name> <Message>
|
||||
$sockedName = args[0]
|
||||
$message = args[1]
|
||||
|
||||
$npipeClient = new-object System.IO.Pipes.NamedPipeClientStream('.', $socketName, [System.IO.Pipes.PipeDirection]::InOut, [System.IO.Pipes.PipeOptions]::None, [System.Security.Principal.TokenImpersonationLevel]::Impersonation)
|
||||
|
||||
$pipeReader = $pipeWriter = $null
|
||||
try {
|
||||
$npipeClient.Connect()
|
||||
$pipeReader = new-object System.IO.StreamReader($npipeClient)
|
||||
$pipeWriter = new-object System.IO.StreamWriter($npipeClient)
|
||||
$pipeWriter.AutoFlush = $true
|
||||
|
||||
$pipeWriter.WriteLine($message)
|
||||
|
||||
while (($data = $pipeReader.ReadLine()) -ne $null) {
|
||||
$data
|
||||
}
|
||||
}
|
||||
catch {
|
||||
"An error occurred that could not be resolved."
|
||||
}
|
||||
finally {
|
||||
$npipeClient.Dispose()
|
||||
}
|
||||
```
|
||||
36
mpv/script_modules/mpvSockets/mpvSockets.lua
Normal file
36
mpv/script_modules/mpvSockets/mpvSockets.lua
Normal file
@ -0,0 +1,36 @@
|
||||
-- mpvSockets, one socket per instance, removes socket on exit
|
||||
|
||||
local utils = require 'mp.utils'
|
||||
|
||||
local function get_temp_path()
|
||||
local directory_seperator = package.config:match("([^\n]*)\n?")
|
||||
local example_temp_file_path = os.tmpname()
|
||||
|
||||
-- remove generated temp file
|
||||
pcall(os.remove, example_temp_file_path)
|
||||
|
||||
local seperator_idx = example_temp_file_path:reverse():find(directory_seperator)
|
||||
local temp_path_length = #example_temp_file_path - seperator_idx
|
||||
|
||||
return example_temp_file_path:sub(1, temp_path_length)
|
||||
end
|
||||
|
||||
tempDir = get_temp_path()
|
||||
|
||||
function join_paths(...)
|
||||
local arg={...}
|
||||
path = ""
|
||||
for i,v in ipairs(arg) do
|
||||
path = utils.join_path(path, tostring(v))
|
||||
end
|
||||
return path;
|
||||
end
|
||||
|
||||
ppid = utils.getpid()
|
||||
os.execute("mkdir " .. join_paths(tempDir, "mpvSockets") .. " 2>/dev/null")
|
||||
mp.set_property("options/input-ipc-server", join_paths(tempDir, "mpvSockets", ppid))
|
||||
|
||||
function shutdown_handler()
|
||||
os.remove(join_paths(tempDir, "mpvSockets", ppid))
|
||||
end
|
||||
mp.register_event("shutdown", shutdown_handler)
|
||||
78
mpv/scripts/blacklist-extensions.lua
Normal file
78
mpv/scripts/blacklist-extensions.lua
Normal file
@ -0,0 +1,78 @@
|
||||
opts = {
|
||||
blacklist="",
|
||||
whitelist="",
|
||||
remove_files_without_extension = false,
|
||||
oneshot = true,
|
||||
}
|
||||
(require 'mp.options').read_options(opts)
|
||||
local msg = require 'mp.msg'
|
||||
|
||||
function split(input)
|
||||
local ret = {}
|
||||
for str in string.gmatch(input, "([^,]+)") do
|
||||
ret[#ret + 1] = str
|
||||
end
|
||||
return ret
|
||||
end
|
||||
|
||||
opts.blacklist = split(opts.blacklist)
|
||||
opts.whitelist = split(opts.whitelist)
|
||||
|
||||
local exclude
|
||||
if #opts.whitelist > 0 then
|
||||
exclude = function(extension)
|
||||
for _, ext in pairs(opts.whitelist) do
|
||||
if extension == ext then
|
||||
return false
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
elseif #opts.blacklist > 0 then
|
||||
exclude = function(extension)
|
||||
for _, ext in pairs(opts.blacklist) do
|
||||
if extension == ext then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
else
|
||||
return
|
||||
end
|
||||
|
||||
function should_remove(filename)
|
||||
if string.find(filename, "://") then
|
||||
return false
|
||||
end
|
||||
local extension = string.match(filename, "%.([^./]+)$")
|
||||
if not extension and opts.remove_file_without_extension then
|
||||
return true
|
||||
end
|
||||
if extension and exclude(string.lower(extension)) then
|
||||
return true
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
function process(playlist_count)
|
||||
if playlist_count < 2 then return end
|
||||
if opts.oneshot then
|
||||
mp.unobserve_property(observe)
|
||||
end
|
||||
local playlist = mp.get_property_native("playlist")
|
||||
local removed = 0
|
||||
for i = #playlist, 1, -1 do
|
||||
if should_remove(playlist[i].filename) then
|
||||
mp.commandv("playlist-remove", i-1)
|
||||
removed = removed + 1
|
||||
end
|
||||
end
|
||||
if removed == #playlist then
|
||||
msg.warn("Removed eveything from the playlist")
|
||||
end
|
||||
end
|
||||
|
||||
function observe(k,v) process(v) end
|
||||
|
||||
mp.observe_property("playlist-count", "number", observe)
|
||||
87
mpv/scripts/misc.lua
Normal file
87
mpv/scripts/misc.lua
Normal file
@ -0,0 +1,87 @@
|
||||
function rotate(inc)
|
||||
if (360 + inc) % 90 ~= 0 then
|
||||
return
|
||||
end
|
||||
local vf_table = mp.get_property_native("vf")
|
||||
local previous_angle = 0
|
||||
local rotation_index = #vf_table + 1
|
||||
if #vf_table ~= 0 and vf_table[#vf_table]["name"] == "rotate" then
|
||||
rotation_index = #vf_table
|
||||
previous_angle = vf_table[#vf_table]["params"]["angle"]
|
||||
end
|
||||
local new_angle = (previous_angle + 360 + inc) % 360
|
||||
if new_angle == 0 then
|
||||
vf_table[rotation_index] = nil
|
||||
else
|
||||
vf_table[rotation_index] = {
|
||||
name = "rotate",
|
||||
params = { angle = tostring(new_angle) }
|
||||
}
|
||||
end
|
||||
mp.set_property_native("vf", vf_table)
|
||||
end
|
||||
|
||||
function toggle(filter)
|
||||
local vf_table = mp.get_property_native("vf")
|
||||
if #vf_table ~= 0 and vf_table[#vf_table]["name"] == filter then
|
||||
vf_table[#vf_table] = nil
|
||||
else
|
||||
vf_table[#vf_table + 1] = { name = filter }
|
||||
end
|
||||
mp.set_property_native("vf", vf_table)
|
||||
end
|
||||
|
||||
local filters_undo_stack = {}
|
||||
|
||||
function remove_last_filter()
|
||||
local vf_table = mp.get_property_native("vf")
|
||||
if #vf_table == 0 then
|
||||
return
|
||||
end
|
||||
filters_undo_stack[#filters_undo_stack + 1] = vf_table[#vf_table]
|
||||
vf_table[#vf_table] = nil
|
||||
mp.set_property_native("vf", vf_table)
|
||||
end
|
||||
|
||||
function undo_filter_removal()
|
||||
if #filters_undo_stack == 0 then
|
||||
return
|
||||
end
|
||||
local vf_table = mp.get_property_native("vf")
|
||||
vf_table[#vf_table + 1] = filters_undo_stack[#filters_undo_stack]
|
||||
filters_undo_stack[#filters_undo_stack] = nil
|
||||
mp.set_property_native("vf", vf_table)
|
||||
end
|
||||
|
||||
function clear_filters()
|
||||
local vf_table = mp.get_property_native("vf")
|
||||
if #vf_table == 0 then
|
||||
return
|
||||
end
|
||||
for i = 1, #vf_table do
|
||||
filters_undo_stack[#filters_undo_stack + 1] = vf_table[#vf_table + 1 - i]
|
||||
end
|
||||
mp.set_property_native("vf", {})
|
||||
end
|
||||
|
||||
function ab_loop(operation, timestamp)
|
||||
if not mp.get_property("seekable") then return end
|
||||
if timestamp ~= "a" and timestamp ~= "b" then return end
|
||||
timestamp = "ab-loop-" .. timestamp
|
||||
if operation == "set" then
|
||||
mp.set_property_number(timestamp, mp.get_property_number("time-pos"))
|
||||
elseif operation == "jump" then
|
||||
local t = tonumber(mp.get_property(timestamp))
|
||||
if t then mp.set_property_number("time-pos", t) end
|
||||
elseif operation == "clear" then
|
||||
mp.set_property(timestamp, "no")
|
||||
end
|
||||
end
|
||||
|
||||
mp.add_key_binding(nil, "rotate", rotate)
|
||||
mp.add_key_binding(nil, "toggle-filter", toggle)
|
||||
mp.add_key_binding(nil, "clear-filters", clear_filters)
|
||||
mp.add_key_binding(nil, "remove-last-filter", remove_last_filter)
|
||||
mp.add_key_binding(nil, "undo-filter-removal", undo_filter_removal)
|
||||
mp.add_key_binding(nil, "ab-loop", ab_loop)
|
||||
|
||||
3
mpv/scripts/modules.lua
Normal file
3
mpv/scripts/modules.lua
Normal file
@ -0,0 +1,3 @@
|
||||
local mpv_config_dir_path = require("mp").command_native({"expand-path", "~~/"})
|
||||
function load(relative_path) dofile(mpv_config_dir_path .. "/script_modules/" .. relative_path) end
|
||||
load("mpvSockets/mpvSockets.lua")
|
||||
3886
mpv/scripts/mpv_thumbnail_script_client_osc.lua
Normal file
3886
mpv/scripts/mpv_thumbnail_script_client_osc.lua
Normal file
File diff suppressed because it is too large
Load Diff
736
mpv/scripts/mpv_thumbnail_script_server.lua
Normal file
736
mpv/scripts/mpv_thumbnail_script_server.lua
Normal file
@ -0,0 +1,736 @@
|
||||
--[[
|
||||
Copyright (C) 2017 AMM
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
]]--
|
||||
--[[
|
||||
mpv_thumbnail_script.lua 0.4.2 - commit 682becf (branch master)
|
||||
https://github.com/TheAMM/mpv_thumbnail_script
|
||||
Built on 2022-08-30 16:27:14
|
||||
]]--
|
||||
local assdraw = require 'mp.assdraw'
|
||||
local msg = require 'mp.msg'
|
||||
local opt = require 'mp.options'
|
||||
local utils = require 'mp.utils'
|
||||
|
||||
-- Determine platform --
|
||||
ON_WINDOWS = (package.config:sub(1,1) ~= '/')
|
||||
|
||||
-- Some helper functions needed to parse the options --
|
||||
function isempty(v) return (v == false) or (v == nil) or (v == "") or (v == 0) or (type(v) == "table" and next(v) == nil) end
|
||||
|
||||
function divmod (a, b)
|
||||
return math.floor(a / b), a % b
|
||||
end
|
||||
|
||||
-- Better modulo
|
||||
function bmod( i, N )
|
||||
return (i % N + N) % N
|
||||
end
|
||||
|
||||
function join_paths(...)
|
||||
local sep = ON_WINDOWS and "\\" or "/"
|
||||
local result = "";
|
||||
for i, p in pairs({...}) do
|
||||
if p ~= "" then
|
||||
if is_absolute_path(p) then
|
||||
result = p
|
||||
else
|
||||
result = (result ~= "") and (result:gsub("[\\"..sep.."]*$", "") .. sep .. p) or p
|
||||
end
|
||||
end
|
||||
end
|
||||
return result:gsub("[\\"..sep.."]*$", "")
|
||||
end
|
||||
|
||||
-- /some/path/file.ext -> /some/path, file.ext
|
||||
function split_path( path )
|
||||
local sep = ON_WINDOWS and "\\" or "/"
|
||||
local first_index, last_index = path:find('^.*' .. sep)
|
||||
|
||||
if last_index == nil then
|
||||
return "", path
|
||||
else
|
||||
local dir = path:sub(0, last_index-1)
|
||||
local file = path:sub(last_index+1, -1)
|
||||
|
||||
return dir, file
|
||||
end
|
||||
end
|
||||
|
||||
function is_absolute_path( path )
|
||||
local tmp, is_win = path:gsub("^[A-Z]:\\", "")
|
||||
local tmp, is_unix = path:gsub("^/", "")
|
||||
return (is_win > 0) or (is_unix > 0)
|
||||
end
|
||||
|
||||
function Set(source)
|
||||
local set = {}
|
||||
for _, l in ipairs(source) do set[l] = true end
|
||||
return set
|
||||
end
|
||||
|
||||
---------------------------
|
||||
-- More helper functions --
|
||||
---------------------------
|
||||
|
||||
-- Removes all keys from a table, without destroying the reference to it
|
||||
function clear_table(target)
|
||||
for key, value in pairs(target) do
|
||||
target[key] = nil
|
||||
end
|
||||
end
|
||||
function shallow_copy(target)
|
||||
local copy = {}
|
||||
for k, v in pairs(target) do
|
||||
copy[k] = v
|
||||
end
|
||||
return copy
|
||||
end
|
||||
|
||||
-- Rounds to given decimals. eg. round_dec(3.145, 0) => 3
|
||||
function round_dec(num, idp)
|
||||
local mult = 10^(idp or 0)
|
||||
return math.floor(num * mult + 0.5) / mult
|
||||
end
|
||||
|
||||
function file_exists(name)
|
||||
local f = io.open(name, "rb")
|
||||
if f ~= nil then
|
||||
local ok, err, code = f:read(1)
|
||||
io.close(f)
|
||||
return code == nil
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
function path_exists(name)
|
||||
local f = io.open(name, "rb")
|
||||
if f ~= nil then
|
||||
io.close(f)
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
function create_directories(path)
|
||||
local cmd
|
||||
if ON_WINDOWS then
|
||||
cmd = { args = {"cmd", "/c", "mkdir", path} }
|
||||
else
|
||||
cmd = { args = {"mkdir", "-p", path} }
|
||||
end
|
||||
utils.subprocess(cmd)
|
||||
end
|
||||
|
||||
-- Find an executable in PATH or CWD with the given name
|
||||
function find_executable(name)
|
||||
local delim = ON_WINDOWS and ";" or ":"
|
||||
|
||||
local pwd = os.getenv("PWD") or utils.getcwd()
|
||||
local path = os.getenv("PATH")
|
||||
|
||||
local env_path = pwd .. delim .. path -- Check CWD first
|
||||
|
||||
local result, filename
|
||||
for path_dir in env_path:gmatch("[^"..delim.."]+") do
|
||||
filename = join_paths(path_dir, name)
|
||||
if file_exists(filename) then
|
||||
result = filename
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
return result
|
||||
end
|
||||
|
||||
local ExecutableFinder = { path_cache = {} }
|
||||
-- Searches for an executable and caches the result if any
|
||||
function ExecutableFinder:get_executable_path( name, raw_name )
|
||||
name = ON_WINDOWS and not raw_name and (name .. ".exe") or name
|
||||
|
||||
if self.path_cache[name] == nil then
|
||||
self.path_cache[name] = find_executable(name) or false
|
||||
end
|
||||
return self.path_cache[name]
|
||||
end
|
||||
|
||||
-- Format seconds to HH.MM.SS.sss
|
||||
function format_time(seconds, sep, decimals)
|
||||
decimals = decimals == nil and 3 or decimals
|
||||
sep = sep and sep or "."
|
||||
local s = seconds
|
||||
local h, s = divmod(s, 60*60)
|
||||
local m, s = divmod(s, 60)
|
||||
|
||||
local second_format = string.format("%%0%d.%df", 2+(decimals > 0 and decimals+1 or 0), decimals)
|
||||
|
||||
return string.format("%02d"..sep.."%02d"..sep..second_format, h, m, s)
|
||||
end
|
||||
|
||||
-- Format seconds to 1h 2m 3.4s
|
||||
function format_time_hms(seconds, sep, decimals, force_full)
|
||||
decimals = decimals == nil and 1 or decimals
|
||||
sep = sep ~= nil and sep or " "
|
||||
|
||||
local s = seconds
|
||||
local h, s = divmod(s, 60*60)
|
||||
local m, s = divmod(s, 60)
|
||||
|
||||
if force_full or h > 0 then
|
||||
return string.format("%dh"..sep.."%dm"..sep.."%." .. tostring(decimals) .. "fs", h, m, s)
|
||||
elseif m > 0 then
|
||||
return string.format("%dm"..sep.."%." .. tostring(decimals) .. "fs", m, s)
|
||||
else
|
||||
return string.format("%." .. tostring(decimals) .. "fs", s)
|
||||
end
|
||||
end
|
||||
|
||||
-- Writes text on OSD and console
|
||||
function log_info(txt, timeout)
|
||||
timeout = timeout or 1.5
|
||||
msg.info(txt)
|
||||
mp.osd_message(txt, timeout)
|
||||
end
|
||||
|
||||
-- Join table items, ala ({"a", "b", "c"}, "=", "-", ", ") => "=a-, =b-, =c-"
|
||||
function join_table(source, before, after, sep)
|
||||
before = before or ""
|
||||
after = after or ""
|
||||
sep = sep or ", "
|
||||
local result = ""
|
||||
for i, v in pairs(source) do
|
||||
if not isempty(v) then
|
||||
local part = before .. v .. after
|
||||
if i == 1 then
|
||||
result = part
|
||||
else
|
||||
result = result .. sep .. part
|
||||
end
|
||||
end
|
||||
end
|
||||
return result
|
||||
end
|
||||
|
||||
function wrap(s, char)
|
||||
char = char or "'"
|
||||
return char .. s .. char
|
||||
end
|
||||
-- Wraps given string into 'string' and escapes any 's in it
|
||||
function escape_and_wrap(s, char, replacement)
|
||||
char = char or "'"
|
||||
replacement = replacement or "\\" .. char
|
||||
return wrap(string.gsub(s, char, replacement), char)
|
||||
end
|
||||
-- Escapes single quotes in a string and wraps the input in single quotes
|
||||
function escape_single_bash(s)
|
||||
return escape_and_wrap(s, "'", "'\\''")
|
||||
end
|
||||
|
||||
-- Returns (a .. b) if b is not empty or nil
|
||||
function joined_or_nil(a, b)
|
||||
return not isempty(b) and (a .. b) or nil
|
||||
end
|
||||
|
||||
-- Put items from one table into another
|
||||
function extend_table(target, source)
|
||||
for i, v in pairs(source) do
|
||||
table.insert(target, v)
|
||||
end
|
||||
end
|
||||
|
||||
-- Creates a handle and filename for a temporary random file (in current directory)
|
||||
function create_temporary_file(base, mode, suffix)
|
||||
local handle, filename
|
||||
suffix = suffix or ""
|
||||
while true do
|
||||
filename = base .. tostring(math.random(1, 5000)) .. suffix
|
||||
handle = io.open(filename, "r")
|
||||
if not handle then
|
||||
handle = io.open(filename, mode)
|
||||
break
|
||||
end
|
||||
io.close(handle)
|
||||
end
|
||||
return handle, filename
|
||||
end
|
||||
|
||||
|
||||
function get_processor_count()
|
||||
local proc_count
|
||||
|
||||
if ON_WINDOWS then
|
||||
proc_count = tonumber(os.getenv("NUMBER_OF_PROCESSORS"))
|
||||
else
|
||||
local cpuinfo_handle = io.open("/proc/cpuinfo")
|
||||
if cpuinfo_handle ~= nil then
|
||||
local cpuinfo_contents = cpuinfo_handle:read("*a")
|
||||
local _, replace_count = cpuinfo_contents:gsub('processor', '')
|
||||
proc_count = replace_count
|
||||
end
|
||||
end
|
||||
|
||||
if proc_count and proc_count > 0 then
|
||||
return proc_count
|
||||
else
|
||||
return nil
|
||||
end
|
||||
end
|
||||
|
||||
function substitute_values(string, values)
|
||||
local substitutor = function(match)
|
||||
if match == "%" then
|
||||
return "%"
|
||||
else
|
||||
-- nil is discarded by gsub
|
||||
return values[match]
|
||||
end
|
||||
end
|
||||
|
||||
local substituted = string:gsub('%%(.)', substitutor)
|
||||
return substituted
|
||||
end
|
||||
|
||||
-- ASS HELPERS --
|
||||
function round_rect_top( ass, x0, y0, x1, y1, r )
|
||||
local c = 0.551915024494 * r -- circle approximation
|
||||
ass:move_to(x0 + r, y0)
|
||||
ass:line_to(x1 - r, y0) -- top line
|
||||
if r > 0 then
|
||||
ass:bezier_curve(x1 - r + c, y0, x1, y0 + r - c, x1, y0 + r) -- top right corner
|
||||
end
|
||||
ass:line_to(x1, y1) -- right line
|
||||
ass:line_to(x0, y1) -- bottom line
|
||||
ass:line_to(x0, y0 + r) -- left line
|
||||
if r > 0 then
|
||||
ass:bezier_curve(x0, y0 + r - c, x0 + r - c, y0, x0 + r, y0) -- top left corner
|
||||
end
|
||||
end
|
||||
|
||||
function round_rect(ass, x0, y0, x1, y1, rtl, rtr, rbr, rbl)
|
||||
local c = 0.551915024494
|
||||
ass:move_to(x0 + rtl, y0)
|
||||
ass:line_to(x1 - rtr, y0) -- top line
|
||||
if rtr > 0 then
|
||||
ass:bezier_curve(x1 - rtr + rtr*c, y0, x1, y0 + rtr - rtr*c, x1, y0 + rtr) -- top right corner
|
||||
end
|
||||
ass:line_to(x1, y1 - rbr) -- right line
|
||||
if rbr > 0 then
|
||||
ass:bezier_curve(x1, y1 - rbr + rbr*c, x1 - rbr + rbr*c, y1, x1 - rbr, y1) -- bottom right corner
|
||||
end
|
||||
ass:line_to(x0 + rbl, y1) -- bottom line
|
||||
if rbl > 0 then
|
||||
ass:bezier_curve(x0 + rbl - rbl*c, y1, x0, y1 - rbl + rbl*c, x0, y1 - rbl) -- bottom left corner
|
||||
end
|
||||
ass:line_to(x0, y0 + rtl) -- left line
|
||||
if rtl > 0 then
|
||||
ass:bezier_curve(x0, y0 + rtl - rtl*c, x0 + rtl - rtl*c, y0, x0 + rtl, y0) -- top left corner
|
||||
end
|
||||
end
|
||||
local SCRIPT_NAME = "mpv_thumbnail_script"
|
||||
|
||||
local default_cache_base = ON_WINDOWS and os.getenv("TEMP") or "/tmp/"
|
||||
|
||||
local thumbnailer_options = {
|
||||
-- The thumbnail directory
|
||||
cache_directory = join_paths(default_cache_base, "mpv_thumbs_cache"),
|
||||
|
||||
------------------------
|
||||
-- Generation options --
|
||||
------------------------
|
||||
|
||||
-- Automatically generate the thumbnails on video load, without a keypress
|
||||
autogenerate = true,
|
||||
|
||||
-- Only automatically thumbnail videos shorter than this (seconds)
|
||||
autogenerate_max_duration = 3600, -- 1 hour
|
||||
|
||||
-- SHA1-sum filenames over this length
|
||||
-- It's nice to know what files the thumbnails are (hence directory names)
|
||||
-- but long URLs may approach filesystem limits.
|
||||
hash_filename_length = 128,
|
||||
|
||||
-- Use mpv to generate thumbnail even if ffmpeg is found in PATH
|
||||
-- ffmpeg does not handle ordered chapters (MKVs which rely on other MKVs)!
|
||||
-- mpv is a bit slower, but has better support overall (eg. subtitles in the previews)
|
||||
prefer_mpv = true,
|
||||
|
||||
-- Explicitly disable subtitles on the mpv sub-calls
|
||||
mpv_no_sub = false,
|
||||
-- Add a "--no-config" to the mpv sub-call arguments
|
||||
mpv_no_config = false,
|
||||
-- Add a "--profile=<mpv_profile>" to the mpv sub-call arguments
|
||||
-- Use "" to disable
|
||||
mpv_profile = "",
|
||||
-- Output debug logs to <thumbnail_path>.log, ala <cache_directory>/<video_filename>/000000.bgra.log
|
||||
-- The logs are removed after successful encodes, unless you set mpv_keep_logs below
|
||||
mpv_logs = true,
|
||||
-- Keep all mpv logs, even the succesfull ones
|
||||
mpv_keep_logs = false,
|
||||
|
||||
-- Disable the built-in keybind ("T") to add your own
|
||||
disable_keybinds = false,
|
||||
|
||||
---------------------
|
||||
-- Display options --
|
||||
---------------------
|
||||
|
||||
-- Move the thumbnail up or down
|
||||
-- For example:
|
||||
-- topbar/bottombar: 24
|
||||
-- rest: 0
|
||||
vertical_offset = 24,
|
||||
|
||||
-- Adjust background padding
|
||||
-- Examples:
|
||||
-- topbar: 0, 10, 10, 10
|
||||
-- bottombar: 10, 0, 10, 10
|
||||
-- slimbox/box: 10, 10, 10, 10
|
||||
pad_top = 10,
|
||||
pad_bot = 0,
|
||||
pad_left = 10,
|
||||
pad_right = 10,
|
||||
|
||||
-- If true, pad values are screen-pixels. If false, video-pixels.
|
||||
pad_in_screenspace = true,
|
||||
-- Calculate pad into the offset
|
||||
offset_by_pad = true,
|
||||
|
||||
-- Background color in BBGGRR
|
||||
background_color = "000000",
|
||||
-- Alpha: 0 - fully opaque, 255 - transparent
|
||||
background_alpha = 80,
|
||||
|
||||
-- Keep thumbnail on the screen near left or right side
|
||||
constrain_to_screen = true,
|
||||
|
||||
-- Do not display the thumbnailing progress
|
||||
hide_progress = false,
|
||||
|
||||
-----------------------
|
||||
-- Thumbnail options --
|
||||
-----------------------
|
||||
|
||||
-- The maximum dimensions of the thumbnails (pixels)
|
||||
thumbnail_width = 200,
|
||||
thumbnail_height = 200,
|
||||
|
||||
-- The thumbnail count target
|
||||
-- (This will result in a thumbnail every ~10 seconds for a 25 minute video)
|
||||
thumbnail_count = 150,
|
||||
|
||||
-- The above target count will be adjusted by the minimum and
|
||||
-- maximum time difference between thumbnails.
|
||||
-- The thumbnail_count will be used to calculate a target separation,
|
||||
-- and min/max_delta will be used to constrict it.
|
||||
|
||||
-- In other words, thumbnails will be:
|
||||
-- at least min_delta seconds apart (limiting the amount)
|
||||
-- at most max_delta seconds apart (raising the amount if needed)
|
||||
min_delta = 5,
|
||||
-- 120 seconds aka 2 minutes will add more thumbnails when the video is over 5 hours!
|
||||
max_delta = 90,
|
||||
|
||||
|
||||
-- Overrides for remote urls (you generally want less thumbnails!)
|
||||
-- Thumbnailing network paths will be done with mpv
|
||||
|
||||
-- Allow thumbnailing network paths (naive check for "://")
|
||||
thumbnail_network = false,
|
||||
-- Override thumbnail count, min/max delta
|
||||
remote_thumbnail_count = 60,
|
||||
remote_min_delta = 15,
|
||||
remote_max_delta = 120,
|
||||
|
||||
-- Try to grab the raw stream and disable ytdl for the mpv subcalls
|
||||
-- Much faster than passing the url to ytdl again, but may cause problems with some sites
|
||||
remote_direct_stream = true,
|
||||
}
|
||||
|
||||
read_options(thumbnailer_options, SCRIPT_NAME)
|
||||
function skip_nil(tbl)
|
||||
local n = {}
|
||||
for k, v in pairs(tbl) do
|
||||
table.insert(n, v)
|
||||
end
|
||||
return n
|
||||
end
|
||||
|
||||
function create_thumbnail_mpv(file_path, timestamp, size, output_path, options)
|
||||
options = options or {}
|
||||
|
||||
local ytdl_disabled = not options.enable_ytdl and (mp.get_property_native("ytdl") == false
|
||||
or thumbnailer_options.remote_direct_stream)
|
||||
|
||||
local header_fields_arg = nil
|
||||
local header_fields = mp.get_property_native("http-header-fields")
|
||||
if #header_fields > 0 then
|
||||
-- We can't escape the headers, mpv won't parse "--http-header-fields='Name: value'" properly
|
||||
header_fields_arg = "--http-header-fields=" .. table.concat(header_fields, ",")
|
||||
end
|
||||
|
||||
local profile_arg = nil
|
||||
if thumbnailer_options.mpv_profile ~= "" then
|
||||
profile_arg = "--profile=" .. thumbnailer_options.mpv_profile
|
||||
end
|
||||
|
||||
local log_arg = "--log-file=" .. output_path .. ".log"
|
||||
|
||||
local mpv_command = skip_nil({
|
||||
"mpv",
|
||||
-- Hide console output
|
||||
"--msg-level=all=no",
|
||||
|
||||
-- Disable ytdl
|
||||
(ytdl_disabled and "--no-ytdl" or nil),
|
||||
-- Pass HTTP headers from current instance
|
||||
header_fields_arg,
|
||||
-- Pass User-Agent and Referer - should do no harm even with ytdl active
|
||||
"--user-agent=" .. mp.get_property_native("user-agent"),
|
||||
"--referrer=" .. mp.get_property_native("referrer"),
|
||||
-- Disable hardware decoding
|
||||
"--hwdec=no",
|
||||
|
||||
-- Insert --no-config, --profile=... and --log-file if enabled
|
||||
(thumbnailer_options.mpv_no_config and "--no-config" or nil),
|
||||
profile_arg,
|
||||
(thumbnailer_options.mpv_logs and log_arg or nil),
|
||||
|
||||
file_path,
|
||||
|
||||
"--start=" .. tostring(timestamp),
|
||||
"--frames=1",
|
||||
"--hr-seek=yes",
|
||||
"--no-audio",
|
||||
-- Optionally disable subtitles
|
||||
(thumbnailer_options.mpv_no_sub and "--no-sub" or nil),
|
||||
|
||||
("--vf=scale=%d:%d"):format(size.w, size.h),
|
||||
"--vf-add=format=bgra",
|
||||
"--of=rawvideo",
|
||||
"--ovc=rawvideo",
|
||||
"--o=" .. output_path
|
||||
})
|
||||
return utils.subprocess({args=mpv_command})
|
||||
end
|
||||
|
||||
|
||||
function create_thumbnail_ffmpeg(file_path, timestamp, size, output_path)
|
||||
local ffmpeg_command = {
|
||||
"ffmpeg",
|
||||
"-loglevel", "quiet",
|
||||
"-noaccurate_seek",
|
||||
"-ss", format_time(timestamp, ":"),
|
||||
"-i", file_path,
|
||||
|
||||
"-frames:v", "1",
|
||||
"-an",
|
||||
|
||||
"-vf", ("scale=%d:%d"):format(size.w, size.h),
|
||||
"-c:v", "rawvideo",
|
||||
"-pix_fmt", "bgra",
|
||||
"-f", "rawvideo",
|
||||
|
||||
"-y", output_path
|
||||
}
|
||||
return utils.subprocess({args=ffmpeg_command})
|
||||
end
|
||||
|
||||
|
||||
function check_output(ret, output_path, is_mpv)
|
||||
local log_path = output_path .. ".log"
|
||||
local success = true
|
||||
|
||||
if ret.killed_by_us then
|
||||
return nil
|
||||
else
|
||||
if ret.error or ret.status ~= 0 then
|
||||
msg.error("Thumbnailing command failed!")
|
||||
msg.error("mpv process error:", ret.error)
|
||||
msg.error("Process stdout:", ret.stdout)
|
||||
if is_mpv then
|
||||
msg.error("Debug log:", log_path)
|
||||
end
|
||||
|
||||
success = false
|
||||
end
|
||||
|
||||
if not file_exists(output_path) then
|
||||
msg.error("Output file missing!", output_path)
|
||||
success = false
|
||||
end
|
||||
end
|
||||
|
||||
if is_mpv and not thumbnailer_options.mpv_keep_logs then
|
||||
-- Remove successful debug logs
|
||||
if success and file_exists(log_path) then
|
||||
os.remove(log_path)
|
||||
end
|
||||
end
|
||||
|
||||
return success
|
||||
end
|
||||
|
||||
|
||||
function do_worker_job(state_json_string, frames_json_string)
|
||||
msg.debug("Handling given job")
|
||||
local thumb_state, err = utils.parse_json(state_json_string)
|
||||
if err then
|
||||
msg.error("Failed to parse state JSON")
|
||||
return
|
||||
end
|
||||
|
||||
local thumbnail_indexes, err = utils.parse_json(frames_json_string)
|
||||
if err then
|
||||
msg.error("Failed to parse thumbnail frame indexes")
|
||||
return
|
||||
end
|
||||
|
||||
local thumbnail_func = create_thumbnail_mpv
|
||||
if not thumbnailer_options.prefer_mpv then
|
||||
if ExecutableFinder:get_executable_path("ffmpeg") then
|
||||
thumbnail_func = create_thumbnail_ffmpeg
|
||||
else
|
||||
msg.warn("Could not find ffmpeg in PATH! Falling back on mpv.")
|
||||
end
|
||||
end
|
||||
|
||||
local file_duration = mp.get_property_native("duration")
|
||||
local file_path = thumb_state.worker_input_path
|
||||
|
||||
if thumb_state.is_remote then
|
||||
if (thumbnail_func == create_thumbnail_ffmpeg) then
|
||||
msg.warn("Thumbnailing remote path, falling back on mpv.")
|
||||
end
|
||||
thumbnail_func = create_thumbnail_mpv
|
||||
end
|
||||
|
||||
local generate_thumbnail_for_index = function(thumbnail_index)
|
||||
-- Given a 1-based thumbnail index, generate a thumbnail for it based on the thumbnailer state
|
||||
local thumb_idx = thumbnail_index - 1
|
||||
msg.debug("Starting work on thumbnail", thumb_idx)
|
||||
|
||||
local thumbnail_path = thumb_state.thumbnail_template:format(thumb_idx)
|
||||
-- Grab the "middle" of the thumbnail duration instead of the very start, and leave some margin in the end
|
||||
local timestamp = math.min(file_duration - 0.25, (thumb_idx + 0.5) * thumb_state.thumbnail_delta)
|
||||
|
||||
mp.commandv("script-message", "mpv_thumbnail_script-progress", tostring(thumbnail_index))
|
||||
|
||||
-- The expected size (raw BGRA image)
|
||||
local thumbnail_raw_size = (thumb_state.thumbnail_size.w * thumb_state.thumbnail_size.h * 4)
|
||||
|
||||
local need_thumbnail_generation = false
|
||||
|
||||
-- Check if the thumbnail already exists and is the correct size
|
||||
local thumbnail_file = io.open(thumbnail_path, "rb")
|
||||
if thumbnail_file == nil then
|
||||
need_thumbnail_generation = true
|
||||
else
|
||||
local existing_thumbnail_filesize = thumbnail_file:seek("end")
|
||||
if existing_thumbnail_filesize ~= thumbnail_raw_size then
|
||||
-- Size doesn't match, so (re)generate
|
||||
msg.warn("Thumbnail", thumb_idx, "did not match expected size, regenerating")
|
||||
need_thumbnail_generation = true
|
||||
end
|
||||
thumbnail_file:close()
|
||||
end
|
||||
|
||||
if need_thumbnail_generation then
|
||||
local ret = thumbnail_func(file_path, timestamp, thumb_state.thumbnail_size, thumbnail_path, thumb_state.worker_extra)
|
||||
local success = check_output(ret, thumbnail_path, thumbnail_func == create_thumbnail_mpv)
|
||||
|
||||
if success == nil then
|
||||
-- Killed by us, changing files, ignore
|
||||
msg.debug("Changing files, subprocess killed")
|
||||
return true
|
||||
elseif not success then
|
||||
-- Real failure
|
||||
mp.osd_message("Thumbnailing failed, check console for details", 3.5)
|
||||
return true
|
||||
end
|
||||
else
|
||||
msg.debug("Thumbnail", thumb_idx, "already done!")
|
||||
end
|
||||
|
||||
-- Verify thumbnail size
|
||||
-- Sometimes ffmpeg will output an empty file when seeking to a "bad" section (usually the end)
|
||||
thumbnail_file = io.open(thumbnail_path, "rb")
|
||||
|
||||
-- Bail if we can't read the file (it should really exist by now, we checked this in check_output!)
|
||||
if thumbnail_file == nil then
|
||||
msg.error("Thumbnail suddenly disappeared!")
|
||||
return true
|
||||
end
|
||||
|
||||
-- Check the size of the generated file
|
||||
local thumbnail_file_size = thumbnail_file:seek("end")
|
||||
thumbnail_file:close()
|
||||
|
||||
-- Check if the file is big enough
|
||||
local missing_bytes = math.max(0, thumbnail_raw_size - thumbnail_file_size)
|
||||
if missing_bytes > 0 then
|
||||
msg.warn(("Thumbnail missing %d bytes (expected %d, had %d), padding %s"):format(
|
||||
missing_bytes, thumbnail_raw_size, thumbnail_file_size, thumbnail_path
|
||||
))
|
||||
-- Pad the file if it's missing content (eg. ffmpeg seek to file end)
|
||||
thumbnail_file = io.open(thumbnail_path, "ab")
|
||||
thumbnail_file:write(string.rep(string.char(0), missing_bytes))
|
||||
thumbnail_file:close()
|
||||
end
|
||||
|
||||
msg.debug("Finished work on thumbnail", thumb_idx)
|
||||
mp.commandv("script-message", "mpv_thumbnail_script-ready", tostring(thumbnail_index), thumbnail_path)
|
||||
end
|
||||
|
||||
msg.debug(("Generating %d thumbnails @ %dx%d for %q"):format(
|
||||
#thumbnail_indexes,
|
||||
thumb_state.thumbnail_size.w,
|
||||
thumb_state.thumbnail_size.h,
|
||||
file_path))
|
||||
|
||||
for i, thumbnail_index in ipairs(thumbnail_indexes) do
|
||||
local bail = generate_thumbnail_for_index(thumbnail_index)
|
||||
if bail then return end
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
-- Set up listeners and keybinds
|
||||
|
||||
-- Job listener
|
||||
mp.register_script_message("mpv_thumbnail_script-job", do_worker_job)
|
||||
|
||||
|
||||
-- Register this worker with the master script
|
||||
local register_timer = nil
|
||||
local register_timeout = mp.get_time() + 1.5
|
||||
|
||||
local register_function = function()
|
||||
if mp.get_time() > register_timeout and register_timer then
|
||||
msg.error("Thumbnail worker registering timed out")
|
||||
register_timer:stop()
|
||||
else
|
||||
msg.debug("Announcing self to master...")
|
||||
mp.commandv("script-message", "mpv_thumbnail_script-worker", mp.get_script_name())
|
||||
end
|
||||
end
|
||||
|
||||
register_timer = mp.add_periodic_timer(0.1, register_function)
|
||||
|
||||
mp.register_script_message("mpv_thumbnail_script-slaved", function()
|
||||
msg.debug("Successfully registered with master")
|
||||
register_timer:stop()
|
||||
end)
|
||||
157
mpv/scripts/seek-to.lua
Normal file
157
mpv/scripts/seek-to.lua
Normal file
@ -0,0 +1,157 @@
|
||||
local assdraw = require 'mp.assdraw'
|
||||
local active = false
|
||||
local cursor_position = 1
|
||||
local time_scale = {60*60*10, 60*60, 60*10, 60, 10, 1, 0.1, 0.01, 0.001}
|
||||
|
||||
local ass_begin = mp.get_property("osd-ass-cc/0")
|
||||
local ass_end = mp.get_property("osd-ass-cc/1")
|
||||
|
||||
local history = { {} }
|
||||
for i = 1, 9 do
|
||||
history[1][i] = 0
|
||||
end
|
||||
local history_position = 1
|
||||
|
||||
-- timer to redraw periodically the message
|
||||
-- to avoid leaving bindings when the seeker disappears for whatever reason
|
||||
-- pretty hacky tbh
|
||||
local timer = nil
|
||||
local timer_duration = 3
|
||||
|
||||
function show_seeker()
|
||||
local prepend_char = {'','',':','',':','','.','',''}
|
||||
local str = ''
|
||||
for i = 1, 9 do
|
||||
str = str .. prepend_char[i]
|
||||
if i == cursor_position then
|
||||
str = str .. '{\\b1}' .. history[history_position][i] .. '{\\r}'
|
||||
else
|
||||
str = str .. history[history_position][i]
|
||||
end
|
||||
end
|
||||
mp.osd_message("Seek to: " .. ass_begin .. str .. ass_end, timer_duration)
|
||||
end
|
||||
|
||||
function copy_history_to_last()
|
||||
if history_position ~= #history then
|
||||
for i = 1, 9 do
|
||||
history[#history][i] = history[history_position][i]
|
||||
end
|
||||
history_position = #history
|
||||
end
|
||||
end
|
||||
|
||||
function change_number(i)
|
||||
-- can't set above 60 minutes or seconds
|
||||
if (cursor_position == 3 or cursor_position == 5) and i >= 6 then
|
||||
return
|
||||
end
|
||||
if history[history_position][cursor_position] ~= i then
|
||||
copy_history_to_last()
|
||||
history[#history][cursor_position] = i
|
||||
end
|
||||
shift_cursor(false)
|
||||
end
|
||||
|
||||
function shift_cursor(left)
|
||||
if left then
|
||||
cursor_position = math.max(1, cursor_position - 1)
|
||||
else
|
||||
cursor_position = math.min(cursor_position + 1, 9)
|
||||
end
|
||||
end
|
||||
|
||||
function current_time_as_sec(time)
|
||||
local sec = 0
|
||||
for i = 1, 9 do
|
||||
sec = sec + time_scale[i] * time[i]
|
||||
end
|
||||
return sec
|
||||
end
|
||||
|
||||
function time_equal(lhs, rhs)
|
||||
for i = 1, 9 do
|
||||
if lhs[i] ~= rhs[i] then
|
||||
return false
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
function seek_to()
|
||||
copy_history_to_last()
|
||||
mp.commandv("osd-bar", "seek", current_time_as_sec(history[history_position]), "absolute")
|
||||
--deduplicate consecutive timestamps
|
||||
if #history == 1 or not time_equal(history[history_position], history[#history - 1]) then
|
||||
history[#history + 1] = {}
|
||||
history_position = #history
|
||||
end
|
||||
for i = 1, 9 do
|
||||
history[#history][i] = 0
|
||||
end
|
||||
end
|
||||
|
||||
function backspace()
|
||||
if cursor_position ~= 9 or current_time[9] == 0 then
|
||||
shift_cursor(true)
|
||||
end
|
||||
if history[history_position][cursor_position] ~= 0 then
|
||||
copy_history_to_last()
|
||||
history[#history][cursor_position] = 0
|
||||
end
|
||||
end
|
||||
|
||||
function history_move(up)
|
||||
if up then
|
||||
history_position = math.max(1, history_position - 1)
|
||||
else
|
||||
history_position = math.min(history_position + 1, #history)
|
||||
end
|
||||
end
|
||||
|
||||
local key_mappings = {
|
||||
LEFT = function() shift_cursor(true) show_seeker() end,
|
||||
RIGHT = function() shift_cursor(false) show_seeker() end,
|
||||
UP = function() history_move(true) show_seeker() end,
|
||||
DOWN = function() history_move(false) show_seeker() end,
|
||||
BS = function() backspace() show_seeker() end,
|
||||
ESC = function() set_inactive() end,
|
||||
ENTER = function() seek_to() set_inactive() end
|
||||
}
|
||||
for i = 0, 9 do
|
||||
local func = function() change_number(i) show_seeker() end
|
||||
key_mappings[string.format("KP%d", i)] = func
|
||||
key_mappings[string.format("%d", i)] = func
|
||||
end
|
||||
|
||||
function set_active()
|
||||
if not mp.get_property("seekable") then return end
|
||||
-- find duration of the video and set cursor position accordingly
|
||||
local duration = mp.get_property_number("duration")
|
||||
if duration ~= nil then
|
||||
for i = 1, 9 do
|
||||
if duration > time_scale[i] then
|
||||
cursor_position = i
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
for key, func in pairs(key_mappings) do
|
||||
mp.add_forced_key_binding(key, "seek-to-"..key, func)
|
||||
end
|
||||
show_seeker()
|
||||
timer = mp.add_periodic_timer(timer_duration, show_seeker)
|
||||
active = true
|
||||
end
|
||||
|
||||
function set_inactive()
|
||||
mp.osd_message("")
|
||||
for key, _ in pairs(key_mappings) do
|
||||
mp.remove_key_binding("seek-to-"..key)
|
||||
end
|
||||
timer:kill()
|
||||
active = false
|
||||
end
|
||||
|
||||
mp.add_key_binding(nil, "toggle-seeker", function() if active then set_inactive() else set_active() end end)
|
||||
|
||||
1
mpv/scripts/sponsorblock
Submodule
1
mpv/scripts/sponsorblock
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 4120b5afc0578ce00fbede01bc9e0b8c5fc31adf
|
||||
3
nautilus/search-metadata
Normal file
3
nautilus/search-metadata
Normal file
@ -0,0 +1,3 @@
|
||||
[directory]
|
||||
nautilus-icon-view-sort-by=search_relevance
|
||||
nautilus-icon-view-sort-reversed=true
|
||||
479
ncmpcpp/bindings
Normal file
479
ncmpcpp/bindings
Normal file
@ -0,0 +1,479 @@
|
||||
##############################################################
|
||||
## This is the example bindings file. Copy it to ##
|
||||
## ~/.ncmpcpp/bindings or $XDG_CONFIG_HOME/ncmpcpp/bindings ##
|
||||
## and set up your preferences ##
|
||||
##############################################################
|
||||
#
|
||||
#def_key "mouse"
|
||||
# mouse_event
|
||||
#
|
||||
#def_key "up"
|
||||
# scroll_up
|
||||
#
|
||||
#def_key "shift-up"
|
||||
# select_item
|
||||
# scroll_up
|
||||
#
|
||||
#def_key "down"
|
||||
# scroll_down
|
||||
#
|
||||
#def_key "shift-down"
|
||||
# select_item
|
||||
# scroll_down
|
||||
#
|
||||
#def_key "["
|
||||
# scroll_up_album
|
||||
#
|
||||
#def_key "]"
|
||||
# scroll_down_album
|
||||
#
|
||||
#def_key "{"
|
||||
# scroll_up_artist
|
||||
#
|
||||
#def_key "}"
|
||||
# scroll_down_artist
|
||||
#
|
||||
#def_key "page_up"
|
||||
# page_up
|
||||
#
|
||||
#def_key "page_down"
|
||||
# page_down
|
||||
#
|
||||
#def_key "home"
|
||||
# move_home
|
||||
#
|
||||
#def_key "end"
|
||||
# move_end
|
||||
#
|
||||
#def_key "insert"
|
||||
# select_item
|
||||
#
|
||||
#def_key "enter"
|
||||
# enter_directory
|
||||
#
|
||||
#def_key "enter"
|
||||
# toggle_output
|
||||
#
|
||||
#def_key "enter"
|
||||
# run_action
|
||||
#
|
||||
#def_key "enter"
|
||||
# play_item
|
||||
#
|
||||
#def_key "space"
|
||||
# add_item_to_playlist
|
||||
#
|
||||
#def_key "space"
|
||||
# toggle_lyrics_update_on_song_change
|
||||
#
|
||||
#def_key "space"
|
||||
# toggle_visualization_type
|
||||
#
|
||||
#def_key "delete"
|
||||
# delete_playlist_items
|
||||
#
|
||||
#def_key "delete"
|
||||
# delete_browser_items
|
||||
#
|
||||
#def_key "delete"
|
||||
# delete_stored_playlist
|
||||
#
|
||||
#def_key "right"
|
||||
# next_column
|
||||
#
|
||||
#def_key "right"
|
||||
# slave_screen
|
||||
#
|
||||
#def_key "right"
|
||||
# volume_up
|
||||
#
|
||||
#def_key "+"
|
||||
# volume_up
|
||||
#
|
||||
#def_key "left"
|
||||
# previous_column
|
||||
#
|
||||
#def_key "left"
|
||||
# master_screen
|
||||
#
|
||||
#def_key "left"
|
||||
# volume_down
|
||||
#
|
||||
#def_key "-"
|
||||
# volume_down
|
||||
#
|
||||
#def_key ":"
|
||||
# execute_command
|
||||
#
|
||||
#def_key "tab"
|
||||
# next_screen
|
||||
#
|
||||
#def_key "shift-tab"
|
||||
# previous_screen
|
||||
#
|
||||
#def_key "f1"
|
||||
# show_help
|
||||
#
|
||||
#def_key "1"
|
||||
# show_playlist
|
||||
#
|
||||
#def_key "2"
|
||||
# show_browser
|
||||
#
|
||||
#def_key "2"
|
||||
# change_browse_mode
|
||||
#
|
||||
#def_key "3"
|
||||
# show_search_engine
|
||||
#
|
||||
#def_key "3"
|
||||
# reset_search_engine
|
||||
#
|
||||
#def_key "4"
|
||||
# show_media_library
|
||||
#
|
||||
#def_key "4"
|
||||
# toggle_media_library_columns_mode
|
||||
#
|
||||
#def_key "5"
|
||||
# show_playlist_editor
|
||||
#
|
||||
#def_key "6"
|
||||
# show_tag_editor
|
||||
#
|
||||
#def_key "7"
|
||||
# show_outputs
|
||||
#
|
||||
#def_key "8"
|
||||
# show_visualizer
|
||||
#
|
||||
#def_key "="
|
||||
# show_clock
|
||||
#
|
||||
#def_key "@"
|
||||
# show_server_info
|
||||
#
|
||||
#def_key "s"
|
||||
# stop
|
||||
#
|
||||
#def_key "p"
|
||||
# pause
|
||||
#
|
||||
#def_key ">"
|
||||
# next
|
||||
#
|
||||
#def_key "<"
|
||||
# previous
|
||||
#
|
||||
#def_key "ctrl-h"
|
||||
# jump_to_parent_directory
|
||||
#
|
||||
#def_key "ctrl-h"
|
||||
# replay_song
|
||||
#
|
||||
#def_key "backspace"
|
||||
# jump_to_parent_directory
|
||||
#
|
||||
#def_key "backspace"
|
||||
# replay_song
|
||||
#
|
||||
#def_key "f"
|
||||
# seek_forward
|
||||
#
|
||||
#def_key "b"
|
||||
# seek_backward
|
||||
#
|
||||
#def_key "r"
|
||||
# toggle_repeat
|
||||
#
|
||||
#def_key "z"
|
||||
# toggle_random
|
||||
#
|
||||
#def_key "y"
|
||||
# save_tag_changes
|
||||
#
|
||||
#def_key "y"
|
||||
# start_searching
|
||||
#
|
||||
#def_key "y"
|
||||
# toggle_single
|
||||
#
|
||||
#def_key "R"
|
||||
# toggle_consume
|
||||
#
|
||||
#def_key "Y"
|
||||
# toggle_replay_gain_mode
|
||||
#
|
||||
#def_key "T"
|
||||
# toggle_add_mode
|
||||
#
|
||||
#def_key "|"
|
||||
# toggle_mouse
|
||||
#
|
||||
#def_key "#"
|
||||
# toggle_bitrate_visibility
|
||||
#
|
||||
#def_key "Z"
|
||||
# shuffle
|
||||
#
|
||||
#def_key "x"
|
||||
# toggle_crossfade
|
||||
#
|
||||
#def_key "X"
|
||||
# set_crossfade
|
||||
#
|
||||
#def_key "u"
|
||||
# update_database
|
||||
#
|
||||
#def_key "ctrl-s"
|
||||
# sort_playlist
|
||||
#
|
||||
#def_key "ctrl-s"
|
||||
# toggle_browser_sort_mode
|
||||
#
|
||||
#def_key "ctrl-s"
|
||||
# toggle_media_library_sort_mode
|
||||
#
|
||||
#def_key "ctrl-r"
|
||||
# reverse_playlist
|
||||
#
|
||||
#def_key "ctrl-f"
|
||||
# apply_filter
|
||||
#
|
||||
#def_key "ctrl-_"
|
||||
# select_found_items
|
||||
#
|
||||
#def_key "/"
|
||||
# find
|
||||
#
|
||||
#def_key "/"
|
||||
# find_item_forward
|
||||
#
|
||||
#def_key "?"
|
||||
# find
|
||||
#
|
||||
#def_key "?"
|
||||
# find_item_backward
|
||||
#
|
||||
#def_key "."
|
||||
# next_found_item
|
||||
#
|
||||
#def_key ","
|
||||
# previous_found_item
|
||||
#
|
||||
#def_key "w"
|
||||
# toggle_find_mode
|
||||
#
|
||||
#def_key "e"
|
||||
# edit_song
|
||||
#
|
||||
#def_key "e"
|
||||
# edit_library_tag
|
||||
#
|
||||
#def_key "e"
|
||||
# edit_library_album
|
||||
#
|
||||
#def_key "e"
|
||||
# edit_directory_name
|
||||
#
|
||||
#def_key "e"
|
||||
# edit_playlist_name
|
||||
#
|
||||
#def_key "e"
|
||||
# edit_lyrics
|
||||
#
|
||||
#def_key "i"
|
||||
# show_song_info
|
||||
#
|
||||
#def_key "I"
|
||||
# show_artist_info
|
||||
#
|
||||
#def_key "g"
|
||||
# jump_to_position_in_song
|
||||
#
|
||||
#def_key "l"
|
||||
# show_lyrics
|
||||
#
|
||||
#def_key "ctrl-v"
|
||||
# select_range
|
||||
#
|
||||
#def_key "v"
|
||||
# reverse_selection
|
||||
#
|
||||
#def_key "V"
|
||||
# remove_selection
|
||||
#
|
||||
#def_key "B"
|
||||
# select_album
|
||||
#
|
||||
#def_key "a"
|
||||
# add_selected_items
|
||||
#
|
||||
#def_key "c"
|
||||
# clear_playlist
|
||||
#
|
||||
#def_key "c"
|
||||
# clear_main_playlist
|
||||
#
|
||||
#def_key "C"
|
||||
# crop_playlist
|
||||
#
|
||||
#def_key "C"
|
||||
# crop_main_playlist
|
||||
#
|
||||
#def_key "m"
|
||||
# move_sort_order_up
|
||||
#
|
||||
#def_key "m"
|
||||
# move_selected_items_up
|
||||
#
|
||||
#def_key "n"
|
||||
# move_sort_order_down
|
||||
#
|
||||
#def_key "n"
|
||||
# move_selected_items_down
|
||||
#
|
||||
#def_key "M"
|
||||
# move_selected_items_to
|
||||
#
|
||||
#def_key "A"
|
||||
# add
|
||||
#
|
||||
#def_key "S"
|
||||
# save_playlist
|
||||
#
|
||||
#def_key "o"
|
||||
# jump_to_playing_song
|
||||
#
|
||||
#def_key "G"
|
||||
# jump_to_browser
|
||||
#
|
||||
#def_key "G"
|
||||
# jump_to_playlist_editor
|
||||
#
|
||||
#def_key "~"
|
||||
# jump_to_media_library
|
||||
#
|
||||
#def_key "E"
|
||||
# jump_to_tag_editor
|
||||
#
|
||||
#def_key "U"
|
||||
# toggle_playing_song_centering
|
||||
#
|
||||
#def_key "P"
|
||||
# toggle_display_mode
|
||||
#
|
||||
#def_key "\\"
|
||||
# toggle_interface
|
||||
#
|
||||
#def_key "!"
|
||||
# toggle_separators_between_albums
|
||||
#
|
||||
#def_key "L"
|
||||
# toggle_lyrics_fetcher
|
||||
#
|
||||
#def_key "F"
|
||||
# fetch_lyrics_in_background
|
||||
#
|
||||
#def_key "alt-l"
|
||||
# toggle_fetching_lyrics_in_background
|
||||
#
|
||||
#def_key "ctrl-l"
|
||||
# toggle_screen_lock
|
||||
#
|
||||
#def_key "`"
|
||||
# toggle_library_tag_type
|
||||
#
|
||||
#def_key "`"
|
||||
# refetch_lyrics
|
||||
#
|
||||
#def_key "`"
|
||||
# add_random_items
|
||||
#
|
||||
#def_key "ctrl-p"
|
||||
# set_selected_items_priority
|
||||
#
|
||||
#def_key "q"
|
||||
# quit
|
||||
#
|
||||
#
|
||||
#def_key "f"
|
||||
# find
|
||||
#def_key "f"
|
||||
# find_item_forward
|
||||
|
||||
def_key "+"
|
||||
show_clock
|
||||
def_key "="
|
||||
volume_up
|
||||
|
||||
def_key "j"
|
||||
scroll_down
|
||||
def_key "k"
|
||||
scroll_up
|
||||
|
||||
def_key "ctrl-u"
|
||||
page_up
|
||||
#push_characters "kkkkkkkkkkkkkkk"
|
||||
def_key "ctrl-d"
|
||||
page_down
|
||||
#push_characters "jjjjjjjjjjjjjjj"
|
||||
def_key "u"
|
||||
page_up
|
||||
#push_characters "kkkkkkkkkkkkkkk"
|
||||
def_key "d"
|
||||
page_down
|
||||
#push_characters "jjjjjjjjjjjjjjj"
|
||||
def_key "h"
|
||||
previous_column
|
||||
def_key "l"
|
||||
next_column
|
||||
|
||||
def_key "."
|
||||
show_lyrics
|
||||
|
||||
def_key "n"
|
||||
next_found_item
|
||||
def_key "N"
|
||||
previous_found_item
|
||||
|
||||
# not used but bound
|
||||
def_key "J"
|
||||
move_sort_order_down
|
||||
def_key "K"
|
||||
move_sort_order_up
|
||||
def_key "h"
|
||||
jump_to_parent_directory
|
||||
def_key "l"
|
||||
enter_directory
|
||||
def_key "l"
|
||||
run_action
|
||||
def_key "l"
|
||||
play_item
|
||||
def_key "m"
|
||||
show_media_library
|
||||
def_key "m"
|
||||
toggle_media_library_columns_mode
|
||||
def_key "t"
|
||||
show_tag_editor
|
||||
def_key "v"
|
||||
show_visualizer
|
||||
def_key "G"
|
||||
move_end
|
||||
def_key "g"
|
||||
move_home
|
||||
#jump_to_position_in_song
|
||||
def_key "U"
|
||||
update_database
|
||||
def_key "s"
|
||||
reset_search_engine
|
||||
def_key "s"
|
||||
show_search_engine
|
||||
def_key "f"
|
||||
show_browser
|
||||
def_key "f"
|
||||
change_browse_mode
|
||||
def_key "x"
|
||||
delete_playlist_items
|
||||
def_key "P"
|
||||
show_playlist
|
||||
32
ncmpcpp/config
Normal file
32
ncmpcpp/config
Normal file
@ -0,0 +1,32 @@
|
||||
# vim: filetype=conf
|
||||
|
||||
ncmpcpp_directory = "~/.config/ncmpcpp"
|
||||
lyrics_directory = "~/.local/share/lyrics"
|
||||
mpd_music_dir = "~/Music"
|
||||
message_delay_time = "1"
|
||||
visualizer_type = "spectrum"
|
||||
song_list_format = {$4%a - }{%t}|{$8%f$9}$R{$3(%l)$9}
|
||||
song_status_format = $b{{$8"%t"}} $3by {$4%a{ $3in $7%b{ (%y)}} $3}|{$8%f}
|
||||
song_library_format = {%n - }{%t}|{%f}
|
||||
alternative_header_first_line_format = $b$1$aqqu$/a$9 {%t}|{%f} $1$atqq$/a$9$/b
|
||||
alternative_header_second_line_format = {{$4$b%a$/b$9}{ - $7%b$9}{ ($4%y$9)}}|{%D}
|
||||
current_item_prefix = $(cyan)$r$b
|
||||
current_item_suffix = $/r$(end)$/b
|
||||
current_item_inactive_column_prefix = $(magenta)$r
|
||||
current_item_inactive_column_suffix = $/r$(end)
|
||||
playlist_display_mode = columns
|
||||
browser_display_mode = columns
|
||||
progressbar_look = ->
|
||||
media_library_primary_tag = album_artist
|
||||
media_library_albums_split_by_date = no
|
||||
startup_screen = "media_library"
|
||||
display_volume_level = no
|
||||
ignore_leading_the = yes
|
||||
external_editor = nvim
|
||||
use_console_editor = yes
|
||||
empty_tag_color = magenta
|
||||
main_window_color = white
|
||||
progressbar_color = black:b
|
||||
progressbar_elapsed_color = blue:b
|
||||
statusbar_color = red
|
||||
statusbar_time_color = cyan:b
|
||||
0
ncmpcpp/error.log
Normal file
0
ncmpcpp/error.log
Normal file
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user